реклама на сайте
подробности

 
 
> Xilinx SDK, Peripheral Register View
dxp
сообщение Feb 19 2017, 11:02
Сообщение #1


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Всем привет!

Простой вопрос: как в Xilinx SDK получить вид с регистрами периферии? Пока что могу видеть только регистры процессора и его окружения (SCU, кэши, сопроцессоры). Пробовал задать Hardware Platform (втянуть *.hdf файл), но ничего не появилось.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dxp
сообщение Apr 28 2017, 13:33
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



В общем, "если гора не идёт к Магомеду..."...

На основе официального мануала ug585-Zynq-7000-TRM.pdf создан набор заголовочных файлов с описаниями memory-mapped registers (MMRs). Регистры и описания их битовых полей распределены по файлам на основе модулей. Zynq7000 содержит 31 тип модулей, соответственно создан 31 файл с описаниями регистров. Плюс к этому добавлены ещё два файла: один просто включает в себя для удобства все остальные (ps7mmrs.h), и один содержит адреса модулей (ps7modmap.h), он используется в других файлах.

Взять можно тут.

Подробности.

Набор файлов не один, а три - в разных стилях, на основе :
  • констант (const int, const uintptr);
  • перечислений (enum);
  • макросов (#define), это традиционный стиль.

Тут уж кому что больше нравится.

Описания регистров в комментариях содержат полную справочную информацию из оригинального документа, т.е. открыв тот или иной заголовочный файл, нет необходимости смотреть pdf - вся информация доступна по месту.

Вообще, в pdf'нике описание сделано по единому формату - зачёт редактору документа, но вот описания модулей делались, очевидно, разными людьми, тут полный разнобой и по стилям, по объёму информации, и по именованию регистров/полей, и т.д. и т.п. Из-за этого пришлось поредактировать.

Итого:
  • Все имена приведены к единому стилю - в верхнем регистре с символами подчёркивания в качестве разделителей.
  • Имена регистров выполнены по формату <MODULE_NAME>_<REGISTER_NAME>_REG. Исключение составляют регистры контроллера прерываний - GIC, там именование достаточно традиционное, почти все имена заканчиваются на R, что означает "регистр", поэтому суффикса _REG к ним не добавлено.
  • Если модуль имеет два или более экземпляров, то после суффикса _REG в имени регистра следует ещё суффикс экземпляра модуля - например, регистры управления UART'ов имеют вид UART_CTRL_REG0 и UART_CTRL_REG1.
  • Для каждого битового поля введены два макроса в формате <BITFIELD_NAME>_MASK (маска) <BITFIELD_NAME>_BPOS (позиция битового поля).
  • Исходные имена, которые были в CaMeL стиле приведены к виду CA_ME_L.
  • Немало было мест, где имена регистров и особенно битовых полей были идентичными.
  • У некоторых битовых полей имён вообще не было, пришлось добавить.
  • Отдельные имена регистров были очень длинными - фактически состояли из строки, описывающей все поля регистра, - заменены более короткими.
  • В именах регистров и их полей общеупотребительные CONTROL, STATUS, INTERRUPT заменены на более короткие CTRL, STS, INT соответственно.
  • Ну, и ещё кое-что по мелочи.

Соответственно, имена в документации не имеют точного соответствия реальным программным именам - тут, чтобы использовать имя регистра, нужно смотреть в заголовочный файл. Но этот процесс достаточно простой. Порядок описания соответствует документации.

В общем, пока "первый блин". Но компилятор не ругается, т.е. синтаксически всё нормально и конфликта имён тоже нету.

Надеюсь, ещё кому-нибудь будет полезно. Замечания приветствуются.

Статистика ( Per Mod - количество регистров в модуле, Total - всего регистров в модулях данного типа, Bit Fields - количество битовых полей в регистрах модуля, внизу сумма):
CODE
--------------------------------------------------------------------------------
#   Module          Per Mod    Total     Bit Fields
--------------------------------------------------------------------------------
1   AXI_HP           10          40          35
2   CAN              33          66          179
3   DDRC             113         113         343
4   CTI              55          220         71
5   CORTEXA9_PMU     21          42          21
6   PTM              77          154         186
7   DAP              28          28          63
8   ETB              37          37          72
9   FTM              43          43          72
10   FUNNEL          26          26          57
11   ITM             62          62          79
12   TPIU            39          39          100
13   DEVCFG          20          20          172
14   DMAC            92          184         390
15   GEM             97          194         366
16   GPIO            52          52          61
17   QOS301          9           27          19
18   GPV_TRUSTZONE   2           2           2
19   I2C             11          22          69
20   L2CACHE         47          47          198
21   MPCORE          125         125         335
22   OCM             4           4           17
23   QSPI            19          19          92
24   SDIO            25          50          191
25   SLCR            162         162         1237
26   SMCC            27          27          170
27   SPI             13          26          59
28   SWDT            4           4           13
29   TTC             33          66          81
30   UART            16          32          119
31   USB             51          102         273
--------------------------------------------------------------------------------
Summary:           1353        2035        5142
********************************************************************************






--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- dxp   Xilinx SDK   Feb 19 2017, 11:02
- - 0xFFFF   вы это имеете ввиду? когда делаете в vivado exp...   Feb 19 2017, 11:28
|- - dxp   QUOTE (0xFFFF @ Feb 19 2017, 18:28) когда...   Feb 19 2017, 15:07
- - 0xFFFF   а как выглядят "регистрами периферии" у ...   Feb 19 2017, 17:16
|- - dxp   QUOTE (0xFFFF @ Feb 20 2017, 00:16) а как...   Feb 20 2017, 06:57
- - doom13   Похоже, в Xilinx SDK это невозможно , всегда польз...   Feb 20 2017, 14:46
- - dxp   Чтобы не создавать новую тему, тут спрошу. Речь о...   Apr 13 2017, 11:17
- - sonycman   dxp Прошу прощения, что не по теме, интересуюсь пр...   Apr 13 2017, 13:05
|- - dxp   QUOTE (sonycman @ Apr 13 2017, 20:05) dxp...   Apr 14 2017, 05:10
|- - sonycman   dxp Понятно, спасибо. Альтеровская HWlib, кстати, ...   Apr 14 2017, 06:39
|- - dxp   QUOTE (sonycman @ Apr 14 2017, 13:39) dxp...   Apr 14 2017, 07:30
|- - sonycman   Цитата(dxp @ Apr 14 2017, 11:30) Не могу ...   Apr 14 2017, 08:58
|- - dxp   QUOTE (sonycman @ Apr 14 2017, 15:58) То,...   Apr 14 2017, 09:29
|- - sonycman   Цитата(dxp @ Apr 14 2017, 13:29) Я бы не ...   Apr 14 2017, 11:09
|- - dxp   QUOTE (sonycman @ Apr 14 2017, 18:09) Пон...   Apr 14 2017, 12:48
- - sonycman   dxp Спасибо за столь развёрнутый ответ, было очень...   Apr 14 2017, 14:00
|- - dxp   QUOTE (sonycman @ Apr 14 2017, 21:00) Zyn...   Apr 14 2017, 14:23


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 12:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01414 секунд с 7
ELECTRONIX ©2004-2016