Перейти к содержанию
    

GOWIN JTAG программирование из МК

Добавлю в старую тему, на будущее кому-то, может, понадобится. Сделал тоже прошивку через JTAG, благо тому, что микроконтроллер быстрый, не было проблем в том, что бы запустить автомат полностью на 1.3 МГц (формирование TCK с этой частотой таймером, а прием с TDO и формирование TDI/TMS в прерывани). Просто реализовал SVF-плеер.

 

Могу добавить, наверное, полезного - ПЛИС у меня GW1NS[R]-4C, то есть с ARM. Для прошивки оного девайса нужно сначала сформировать SVF-файл, содержащий и конфигурацию ПЛИС, и код для ARM. Для этого в программаторе говина надо сначала зайти в "Tools – Gowin files management", и там объединить конфигурацию ПЛИС .fs и фирмвейр арма .bin. Затем, сделать SVF файл в режиме прошивки "Embedded flash mode" с этим комбинированным .fs файлом. Ну и этот SVF "проиграть". Эта вся функциональность на сегодня доступна только в "бетах" говинного софта - то есть в этих бетах они не только отлаживают GW5, а и делают что-то для старых семейств. Спасибо, как всегда,  Stewart Little

 

Что заметил - для GW1NS[R]4, в документации для которого минимальная частота JTAG заявлена 1 МГц. Конвертер SVF файлов не дает дать её ниже 1.3 МГц. Если я работаю на 1 МГц, с файлом, сделанным для 1.3 МГц, то часто (не всегда) получаю в конце в статусе 0x39020 вместо 0x1F020 - некое недокументированное состояние. А на правильных 1.3 МГц проблем нет никаких.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 часов назад, SM сказал:

Сделал тоже прошивку через JTAG, благо тому, что микроконтроллер быстрый, не было проблем в том, что бы запустить автомат полностью на 1.3 МГц (формирование TCK с этой частотой таймером, а прием с TDO и формирование TDI/TMS в прерывани). Просто реализовал SVF-плеер.

Удивительно. У меня на GW1N9 этот номер не прошел ни через OpenOCD, ни через мою прошивку для МК. При этом, судя по осциллографу, Gowinовский программатор делает не то же самое, что порождаемый им SVF, а в документации описано вообще нечто средне между этими двумя.

Может генераторы SVF отличаются для разных ПЛИС одного семейства? Вы не сравнивали ваш SVF с описанием процесса программирования в документации?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 10/7/2022 at 12:16 PM, Realking said:

Сделано и работает. bin файл из папки \impl\pnr

 

On 10/7/2022 at 2:27 PM, Realking said:

GW1N-9

но я программирую не флэш, а саму ПЛИС.

Каким инструментом пользовались для программирования чипа ? Я юзаю OpenFPGALoader и он матом ругается на bin-файл, пишет про неверный формат файла. В исходнике gowin.cpp в комментарии пишется что "non fs file is only allowed with external flash". В китайской документации об этом вообще ни слова нигде не сказано. Штатный программатор тоже как-то не дружит с bin-файлами при внутреннем программировании ПЛИСины. Где тут собака порылась - ХЗ ... 🙄

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 минут назад, okela сказал:

Я юзаю OpenFPGALoader и он матом ругается на bin-файл, пишет про неверный формат файла.

Потому что ему нужен FS файл из директории pnr, а не bin.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 minutes ago, makc said:

Потому что ему нужен FS файл из директории pnr, а не bin.

Это я уже понял. Меня интересует вопрос: gowin-ПЛИС в принципе для внутреннего программирования переваривают bin-файлы или нет ?

Судя по докам китайцев, никаких препятствий тут быть не должно, а на деле - засада. Да и в этой теме писали что bin-файл заливали внутрь ПЛИСины.  Что мне может помешать если я изменю код файла gowin.cpp таким образом, чтобы он нормально переваривал bin-файл и получал с него нормальный поток данных для программирования ?

 

photo_2023-10-17_18-05-38.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, okela сказал:

Меня интересует вопрос: gowin-ПЛИС в принципе для внутреннего программирования переваривают bin-файлы или нет ? Судя по докам китайцев, никаких препятствий тут быть не должно, а на деле - засада.

Нет, они работают со своим форматом FS:
 

Цитата

$ /opt/Gowin_V1.9.9Beta-5/Programmer/bin/programmer_cli --help
usage: programmer_cli [-h] [--device <GWxx-x>] [--operation_index <int>]
                      [--chain_index <int>] [--chain_size <int>]
                      [--chain_ir <string>] [--frequency <string>]
                      [--fsFile bitstream.fs] [--acFile ac.bin]
                      [--csrFile csr.bin] [--mcuFile mcu.bin]
                      [--fiFile userflash.fi] [--spiaddr 0x000000]
                      [--output output.txt]
                      [--key 00000000-00000000-00000000-00000000] [--keyread]
                      [--keywrite] [--keylock] [--mfgiref data[9:0]]
                      [--svfcreate] [--vme] [--svf_frequency <float>]
                      [--channel <int>] [--location <int>] [--uid UID]
                      [--lpt_address <int>] [--cable "Gowin USB CableFT2CH"]
                      [--cable-index <int>] [--scan-cables] [--scan]
                      [--filestransform <int>] [--files <string>]
                      [--read-otp-addr] [--save-otp-addr] [--i2c-addr 1010000]

 

bin они используют для прошивки флеша встроенного МК и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, makc said:

Нет, они работают со своим форматом FS:
 

bin они используют для прошивки флеша встроенного МК и т.п.

Т.е. получается никак нельзя ему подсунуть сгенерированный bin-файл для заливки самой ПЛИС ? Просто проблема в большом размере этого бестолкового fs-формата, есть нехватка ресурсов памяти в системе и хочется сэкономить на размере прошивки.

В fs-формате она занимает 3,5 Мбайта. А это овер-дофига.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, okela сказал:

Т.е. получается никак нельзя ему подсунуть сгенерированный bin-файл для заливки самой ПЛИС ?

Нет, он так не умеет - http://cdn.gowinsemi.com.cn/SUG502E.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, okela сказал:

Меня интересует вопрос: gowin-ПЛИС в принципе для внутреннего программирования переваривают bin-файлы или нет ?

Если Вы имеете ввиду в данном вопросе, какие данные передаются непосредственно по JTAG (или другому загрузочному интерфейсу) в ПЛИС, то передается содержимое как раз bin-файла. fs-файл - это по сути просто представление битов bin-файла в текстовом виде (ASCII-символ на бит) с дополнительной информацией в виде комментариев вначале. По интерфейсу ASCII-коды не передаются, поэтому если программа принимает fs-файл на входе, то на каком-то уровне она по идее должна преобразовать его в бинарные данные, соответствующие .bin-файлу. fs-файл позволяет сделать дополнительные проверки на основе комментариев вначале (вроде типа устройства, для которого скомпилирован файл, до записи файла, или узнать USERCODE из файла и проверить после записи и т.п.), но непосредственно для прошивки принципиально содержимого .bin файла достаточно.

OpenFPGALoader не пользовался, не знаю, почему они реализовали прием только fs-файлов (возможно как-то используют дополнительную информацию из начала). 

При этом родной Gowin Programmer вполне умеет записывать .bin файлы (хотя явно в документации это действительно не указано). В Gui-версии просто при выборе файла можно сменить фильтр с .fs файла на все файлы и выбрать .bin, а в cli-версии можно в опции --fsFile (несмотря на ее название) указать .bin-файл, и он его запишет. По крайней мере так было в той версии, что я пользовался (тогда была 1.9.8.07/1.9.8.10). В свое время, когда писал свою реализацию прошивки Gowin с контроллера, как раз сравнивал поведение своей программы и Gowin Programmer именно на разных .bin файлах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 часов назад, okela сказал:

Т.е. получается никак нельзя ему подсунуть сгенерированный bin-файл для заливки самой ПЛИС ? Просто проблема в большом размере этого бестолкового fs-формата, есть нехватка ресурсов памяти в системе и хочется сэкономить на размере прошивки.

В fs-формате она занимает 3,5 Мбайта. А это овер-дофига.

Может сам подход к задаче не совсем правильный. Мы у себя тоже практикуем подключение с заливкой от МК в ПЛИС без использования внутреннего FLASH-а, в основном для реализации возможности удаленного обновления. Используем штатную загрузку ПЛИС по SPI используя как раз bin-файл, который внутри контроллера можно хранить еще и в сжатом виде. Использование же JTAG представляется излишне сложным, а хранение на борту контроллера таких объемов загрузочной информации совершенно не оправданным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 17.10.2023 в 18:24, makc сказал:

Нет, он так не умеет - http://cdn.gowinsemi.com.cn/SUG502E.pdf

Разве???

gw_bin_prog.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, StewartLittle сказал:

Разве???

В документации про это ничего нет. 😞 А CLI может так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 18.10.2023 в 10:38, makc сказал:

В документации про это ничего нет. 😞 А CLI может так?

Может:

gw_bin_prog_cli.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 минут назад, StewartLittle сказал:

Может:

В общем китайской документации верить нельзя ни в чём:

  --fsFile bitstream.fs, --fs bitstream.fs, -f bitstream.fs
                        Define the .fs file path.

С другой стороны непонятно, как он в случае bin проверяет соответствие между тем что и куда шьёт, ведь в заголовке bin эта информация отсутствует.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 18.10.2023 в 11:10, makc сказал:

В общем китайской документации верить нельзя ни в чём:

https://www.youtube.com/watch?v=pgYKbfBkK8k

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...