1 Commits
Author SHA1 Message Date
Gromov_IA 928b3c5359 Релиз из пяти файлов: веб-форма Gitea больше не принимает
- make_release.ps1: образы BL616 (прошивка моста, загрузчик и штатная
  прошивка Sipeed) и настройки BLFlashCommand с путями к соседним файлам
  собираются в один архив bl616_bridge_firmware-v<версия>.zip с памяткой
  bin/release_readme.txt;
- make_portable.ps1, make_release.ps1: zip через ZipFile с '/' в путях —
  Compress-Archive из PowerShell 5.1 пишет '\', и распаковщики кроме
  Проводника считают его частью имени файла;
- make_portable.ps1: без файлов, которые BLFlashCommand оставляет в chips\
  после прошивки (img_create\, eflash_loader_cfg.ini);
- README, CHANGELOG: новый состав релиза.
2026-10-02 15:17:58 +03:00
5 changed files with 68 additions and 16 deletions
+2
View File
@@ -21,6 +21,8 @@
Пишется вместе с загрузчиком Sipeed: `bl616_bootloader_0x20000_nano20k_signed.bin`
по адресу `0x0`, прошивка моста по адресу `0x20000`. Откат —
`bl616_fpga_partner_25kDock.bin` (штатная Sipeed 2025030317) по адресу `0x0`.
Все три образа и настройки BLFlashCommand — в `bl616_bridge_firmware-v1.0.0.zip`;
проще прошивать программой TangProgrammer (вкладка «Прошивка моста»).
**Программатор TangProgrammer** (Windows 10/11 x64, .NET Framework 4)
+7 -6
View File
@@ -19,9 +19,7 @@ USB-устройством из двух независимых функций:
|---|---|
| `TangProgrammer-<версия>-win64.zip` | **программатор с окном** — распаковать и запустить, внутри всё нужное (openFPGALoader, BLFlashCommand, прошивки моста) |
| `TangProgrammer.exe` | только программа — для клона этого репозитория (рядом должна быть папка `tools\`) |
| `tang25k_debugger_bl616.bin` | прошивка моста, пишется по адресу `0x20000` |
| `bl616_bootloader_0x20000_nano20k_signed.bin` | загрузчик Sipeed, пишется по адресу `0x0` вместе с прошивкой моста |
| `bl616_fpga_partner_25kDock.bin` | штатная прошивка Sipeed (`0x0`) — для отката |
| `bl616_bridge_firmware-<версия>.zip` | образы BL616 для ручной прошивки: прошивка моста `tang25k_debugger_bl616.bin` (адрес `0x20000`), загрузчик Sipeed `bl616_bootloader_0x20000_nano20k_signed.bin` (`0x0`), штатная прошивка Sipeed `bl616_fpga_partner_25kDock.bin` (`0x0`, для отката), настройки BLFlashCommand и памятка |
| `fpga_test_bitstreams-GW5A-25.zip` | тестовые битстримы `loopback.fs` и `stream.fs` для проверки UART |
| `SHA256SUMS.txt` | контрольные суммы |
@@ -95,9 +93,11 @@ USB-устройством из двух независимых функций:
```
*(пишет загрузчик Sipeed из `bin\` и собранную прошивку моста
`build\build_out\tang25k_debugger_bl616.bin`)*;
* вручную, BouffaloLabDevCube или BLFlashCommand: файлы из релиза,
* вручную, BouffaloLabDevCube или BLFlashCommand: архив
`bl616_bridge_firmware-…zip` из релиза,
`bl616_bootloader_0x20000_nano20k_signed.bin` по адресу `0x0` и
`tang25k_debugger_bl616.bin` по адресу `0x20000`.
`tang25k_debugger_bl616.bin` по адресу `0x20000` (команда — в `README.txt`
архива).
5. Переподключите USB. Появятся «DirtyJTAG» и новый COM-порт.
Перед первой прошивкой стоит сохранить полный дамп флеш-памяти BL616
@@ -249,7 +249,8 @@ python tests\uart_stream_test.py --port COM14 --seconds 30 --switches 10
.\scripts\publish_release.ps1
```
Или вручную: «Релизы» → «Новый релиз» → тег, текст из `CHANGELOG.md`,
файлы из `dist\release\v<версия>\`.
файлы из `dist\release\v<версия>\`. Веб-форма Gitea на этом сервере
принимает не больше 5 файлов — поэтому релиз и собирается ровно из пяти.
## Ограничения
+24
View File
@@ -0,0 +1,24 @@
Прошивка моста BL616 для Tang Primer 25K Dock
=============================================
tang25k_debugger_bl616.bin прошивка моста (DirtyJTAG + UART),
адрес 0x20000
bl616_bootloader_0x20000_nano20k_signed.bin загрузчик Sipeed, адрес 0x0 -
пишется вместе с прошивкой моста
bl616_fpga_partner_25kDock.bin штатная прошивка Sipeed, адрес 0x0 -
для отката
flash_prog_cfg.ini, restore_prog_cfg.ini настройки BLFlashCommand для этих файлов
Проще всего прошивать программой TangProgrammer из того же релиза: вкладка
«Прошивка моста (BL616)».
Вручную (BLFlashCommand из Bouffalo SDK или из TangProgrammer, папка
tools\bouffalo_flash_cube):
1. Отключите USB, замкните тестовые точки TDO и 3V3 (нижняя сторона платы),
подключите USB, разомкните. Появится COM-порт «Bouffalo CDC DEMO».
2. Из этой папки:
...\BLFlashCommand.exe --interface=uart --baudrate=2000000 --port=COMxx --chipname=bl616 --cpu_id= --config=flash_prog_cfg.ini
Для отката на штатную прошивку: --config=restore_prog_cfg.ini
3. Переподключите USB.
В BouffaloLabDevCube: два файла по адресам выше, режим UART, 2000000 бод.
+9 -1
View File
@@ -26,6 +26,9 @@ if (Test-Path (Join-Path $cube 'BLFlashCommand.exe')) {
New-Item -ItemType Directory -Force $dst | Out-Null
Copy-Item (Join-Path $cube 'BLFlashCommand.exe') $dst
Copy-Item -Recurse (Join-Path $cube 'chips') $dst
# what earlier flashing left in the SDK copy (ignored by its .gitignore)
Get-ChildItem (Join-Path $dst 'chips\*\img_create') -Directory -ErrorAction SilentlyContinue | Remove-Item -Recurse -Force
Get-ChildItem (Join-Path $dst 'chips\*\eflash_loader\eflash_loader_cfg.ini') -ErrorAction SilentlyContinue | Remove-Item -Force
} else {
Write-Warning 'Bouffalo SDK is not installed (scripts\setup.ps1): the bridge firmware tab will not work in the copy'
}
@@ -75,6 +78,11 @@ Copy-Item (Join-Path $root 'gui\portable_readme.txt') (Join-Path $out 'README.tx
$zip = Join-Path $dist 'TangProgrammer.zip'
if (Test-Path $zip) { Remove-Item -Force $zip }
Compress-Archive -Path $out -DestinationPath $zip
# not Compress-Archive: in Windows PowerShell 5.1 it writes '\' into the entry
# names, and unzip tools other than Explorer take them for part of the file
# name. ZipFile does the same unless told otherwise (.NET 4.6.1 compat switch).
[AppContext]::SetSwitch('Switch.System.IO.Compression.ZipFile.UseBackslash', $false)
Add-Type -AssemblyName System.IO.Compression.FileSystem
[IO.Compression.ZipFile]::CreateFromDirectory($out, $zip, [IO.Compression.CompressionLevel]::Optimal, $true)
$size = (Get-ChildItem -Recurse $out | Measure-Object -Sum Length).Sum
Write-Host ("OK: {0} ({1:N1} MB), {2} ({3:N1} MB)" -f $out, ($size / 1MB), $zip, ((Get-Item $zip).Length / 1MB)) -ForegroundColor Green
+26 -9
View File
@@ -1,13 +1,16 @@
# Collect the files of a release into dist\release\v<version>\:
#
# TangProgrammer-v<version>-win64.zip portable programmer (make_portable.ps1)
# TangProgrammer.exe the program alone
# tang25k_debugger_bl616.bin bridge firmware, @0x20000
# bl616_bootloader_0x20000_nano20k_signed.bin Sipeed loader, @0x0
# bl616_fpga_partner_25kDock.bin original Sipeed firmware, @0x0
# fpga_test_bitstreams-GW5A-25.zip fpga_test\*\impl\pnr\*.fs, if built
# TangProgrammer-v<version>-win64.zip portable programmer (make_portable.ps1)
# TangProgrammer.exe the program alone
# bl616_bridge_firmware-v<version>.zip bridge firmware (@0x20000), Sipeed loader
# (@0x0), original Sipeed firmware, configs
# for BLFlashCommand
# fpga_test_bitstreams-GW5A-25.zip fpga_test\*\impl\pnr\*.fs, if built
# SHA256SUMS.txt
#
# Five files at most: the Gitea web form takes no more than that ([attachment]
# MAX_FILES on gitea.vector.ru), publish_release.ps1 has no such limit.
#
# .\scripts\build.ps1
# .\scripts\make_release.ps1 version from FW_VERSION_STR in src\sys.h
param([string]$Version)
@@ -35,9 +38,23 @@ New-Item -ItemType Directory -Force $out | Out-Null
Copy-Item (Join-Path $root 'dist\TangProgrammer.zip') (Join-Path $out "TangProgrammer-$tag-win64.zip")
Copy-Item (Join-Path $root 'dist\TangProgrammer\TangProgrammer.exe') $out
Copy-Item $bridgeFw $out
Copy-Item (Join-Path $root 'bin\bl616_bootloader_0x20000_nano20k_signed.bin') $out
Copy-Item (Join-Path $root 'bin\bl616_fpga_partner_25kDock.bin') $out
# the bridge images with the flash configs of the project root, pointing next to themselves
$fw = Join-Path $out "bl616_bridge_firmware-$tag"
New-Item -ItemType Directory -Force $fw | Out-Null
Copy-Item $bridgeFw $fw
Copy-Item (Join-Path $root 'bin\bl616_bootloader_0x20000_nano20k_signed.bin') $fw
Copy-Item (Join-Path $root 'bin\bl616_fpga_partner_25kDock.bin') $fw
foreach ($ini in 'flash_prog_cfg.ini', 'restore_prog_cfg.ini') {
$text = [IO.File]::ReadAllText((Join-Path $root $ini))
$text = $text.Replace('./build/build_out/', './').Replace('./bin/', './').Replace('$(CHIPNAME)', 'bl616')
[IO.File]::WriteAllText((Join-Path $fw $ini), $text)
}
Copy-Item (Join-Path $root 'bin\release_readme.txt') (Join-Path $fw 'README.txt')
# not Compress-Archive, see make_portable.ps1
[AppContext]::SetSwitch('Switch.System.IO.Compression.ZipFile.UseBackslash', $false)
Add-Type -AssemblyName System.IO.Compression.FileSystem
[IO.Compression.ZipFile]::CreateFromDirectory($fw, "$fw.zip", [IO.Compression.CompressionLevel]::Optimal, $true)
Remove-Item -Recurse -Force $fw
$fs = @(Get-ChildItem (Join-Path $root 'fpga_test\*\impl\pnr\*.fs') -ErrorAction SilentlyContinue)
if ($fs.Count) {