39 lines
1.2 KiB
PowerShell
39 lines
1.2 KiB
PowerShell
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$ProjectDir,
|
|
[string]$FsFile = "",
|
|
[ValidateSet(2, 4, 5, 6)]
|
|
[int]$Operation = 2,
|
|
[string]$GowinRoot = ""
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
if (-not $GowinRoot) {
|
|
$GowinRoot = "C:\Users\Administrator\Documents\fpga\tool-chain\Gowin\Gowin_V1.9.11.03_Education_x64"
|
|
}
|
|
|
|
$ProjectDir = (Resolve-Path $ProjectDir).Path
|
|
$cli = Join-Path $GowinRoot "Programmer\bin\programmer_cli.exe"
|
|
if (-not (Test-Path $cli)) { throw "programmer_cli.exe not found: $cli" }
|
|
|
|
$env:PATH = "$(Join-Path $GowinRoot 'Programmer\bin');$env:PATH"
|
|
|
|
Write-Host "Scanning cables..."
|
|
& $cli --scan
|
|
if ($LASTEXITCODE -ne 0) { throw "scan failed; check USB cable and board power" }
|
|
|
|
if (-not $FsFile) {
|
|
$fs = Get-ChildItem (Join-Path $ProjectDir "impl\pnr\*.fs") |
|
|
Sort-Object LastWriteTime -Descending | Select-Object -First 1
|
|
if (-not $fs) { throw "No .fs found; build first" }
|
|
$FsFile = $fs.FullName
|
|
} else {
|
|
$FsFile = (Resolve-Path $FsFile).Path
|
|
}
|
|
|
|
Write-Host "Programming GW5A-25A op=$Operation file=$FsFile"
|
|
& $cli -d GW5A-25A --fsFile $FsFile -r $Operation
|
|
if ($LASTEXITCODE -ne 0) { throw "program failed" }
|
|
Write-Host "Download finished."
|