Русский
Русский
English
Статистика
Реклама

Cortex-m1

Знакомство с GOWIN. Отладочная плата DK-START-GW1N4GW1N9

15.06.2020 16:10:07 | Автор: admin
Недавно ко мне в руки попала китайская ПЛИС, а именно отладочная плата GW1N DK-START-GW1N4, на которой по факту стоит чип GW1N-LV9LQ144C6/I5 (Flash-based FPGA, 8640 LUT4, User flash:608Kb,B-SRAM:468Kb, S-SRAM:17280bit). GOWIN предоставляет много разных вариантов комплектации своих FPGA со встроенным Cortex M3, BluetothFPGA, System-in-Package(SoC + RAM), SecureFPGA
GW1N-9 представитель базового варианта ПЛИС с наименьшим количеством наворотов и по этому привлекательна демократичной ценой в ~3.5$/1kQty.




Доступность отладочных плат к сожалению пока низкая, найти их для личного пользования не помогает даже Aliexpress. На данный момент покупка доступна юридическим лицам в АОВосток, там же мне помогли с бесплатной на год лицензией разработчика, да и в целом поддержка отличная!

Лицензионных файла три на каждый поставляемый продукт (Gowin EDA YunYuan + Gowin SynplifyPro + Gowin MCU Designer), они привязываются к NIC-ID (MAC адресу сетевой карты). Windows: Win+R >> cmd.exe >> getmac /v /fo list вводить без кавычек. Можно настроить сервер-лицензий Gowin License Server For Windows
  • Gowin EDA YunYuan IDE для синтеза проектов как на Gowin Synthesis, так и
    Synplify Pro. В качестве инструментов: Programmer, IP Core Generator, Gowin Analysis Oscilloscope etc.
  • Gowin SynplifyPro by Synopsys Унифицированное средство синтеза для FPGA
  • Gowin MCU Designer IDE на базе Eclipse для создания прошивок как к синтезированным ядрам, так и для SoC. Также c Gowin удобно работать через Keil MDK



Скачав с официального сайта всё необходимое и разобравшись лицензиями, собираем первый пробный проект мигания светодиодами в GOWIN EDA.
Тут впервые замечаю, что на плате хоть и написано GW1N-4, а сам чип GW1N-9. Соответственно для GW1N-9 и качаем blink-project с сайта. Накидал побольше базовых примеров у себя в GitHub .
В левом окне расположены вкладки:
  • Design отвечает за редактирование и хранение файлов проекта, конфигураций.

  • Process генерирует и синтезирует выходной файл прошивки. А ниже переход в утилиту загрузки на плату.

Не стану заострять внимание на интерфейсе, о нём достаточно подробно описано в документации.


Важно на данном этапе обратить внимание на переключатели SW3/SW2 на плате у разъема питания, отвечающие за выбор памяти, куда будет загружен проект:
SW3[1]/SW2[0] SRAM mode
SW3[0]/SW2[0] Embeded flash mode

1. Открываем проект GOWIN EDA
2. Во вкладке Design проверяем, что выбранный чип соответствует надписи на кристалле, а также содержимое файла .cst похоже на распиновку из даташита.
3. Заходим в Process и правой клавишей мыши > Run активируем сборку.
4. После успешной сборки переходим в Program Device, выбираем SRAM Mode/SRAM Program и прошиваем.


На данный момент светодиоды мигают, первый шаг сделан, а дальше уже можно плясать в сторону более крупных проектов на HDL, но меня привлек инструмент Tools > IP Core Generator, где лежат два синтезированных ядра ARM Cortex M1 и picoRV32.
picoRV32 сжатая по размеру открытая архитектура RISC-V. Интересный зверь, но уж больно экзотический!
ARM Cortex M1 тот самый старый добрый ARM, его то мы и потрогаем!
GOWIN свои сборки ядер зашифровал, но picoRV32 вполне можно собрать под ПЛИС самому.


Запуск проекта с синтезированным ядром состоит из нескольких этапов:
1. Берём за основу проект из архива, что предоставляет нам GOWIN Arm DesignStart FPGA Program, дабы ручками не настраивать Verilog файлы от внутренней периферии к внешней.
2. Собираем проект для MCU: из скомпилированного в Keil .bin файла с помощью GOWIN скрипта make_hex.exe нарезаем четыре itcm файла (itcm0, itcm1, itcm2, itcm3).
NOTE: При компиляции очень важно проверить в файле .ld или настройках линкера: правильность конфигурации начальных адресов RAM/ROM памяти. В документации про это не нашел где почитать, а сам не сразу додумался в файлы линкера посмотреть.
3. Из проекта выпиливаем все файлы синтеза ядра (src\gowin_empu_m1), дабы собрать своё.
5. Средствами GOWIN IP Core Generator собирается ядро и периферия, с указанием path файлов itcm из 2-го пункта.
6. По завершению генерации ядра, добавляем его в проект и собираем проект целиком.
7. Прошиваем в RAM. Видимо как побежали светодиодики. Если хочется прошить во flash нашего ПЛИС, выставляем скорость порта пониже(например 2.5Mhz), выбираем Embedded flash mode.


Пришлось немного помучиться, так как сначала установил Gowin EDA не в директорию по умолчанию. Проект не увидел свои внутренние зависимости, переустановка в C:/Gowin помогла.

ARM Cortex M1 с GPIO занимает ~4k/9k LUT. Т.е в ПЛИСе остается место под задачи обработки данных.
Следующим шагом будет запуск периферии: UART, I2C, SPI Ну и конечно же начну изучать RISC-V, раз уж он так ловко попал ко мне в руки. Надеюсь, данный пост поможет кому-нибудь сэкономить пару вечеров и перейти сразу к реализации проекта.
P.S. Данная пост родился из моего телеграмм канала t.me/difarobot, где делюсь своими мыслями в мире embedded. Присоединяйтесь!
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru