Doka avatar

Журнал Эмбеддед-Инженера

О микроэлектронике, радиотехнике и хобби

Dmitry Murzinov

3 минут чтения

Сборка и установка

Устанавливаем зависимости:

sudo yum install -y  qt-devel qt5-qttools-devel qt5-qhelpgenerator

Скачиваем и собираем:

$ wget https://netcologne.dl.sourceforge.net/project/kactus2/kactus2-3.4.0.tar.gz
$ tar xzf kactus2-3.4.0.tar.gz
$ cd kactus2-3.4.0
$ ./configure
Configuring Kactus2...

Generating compressed help files...
./configure: line 21: qhelpgenerator: command not found
./configure: line 22: qcollectiongenerator: command not found
Qmake not found. Please set variable QTBIN_PATH to Qt binary files.

Долго не мог понять в чём же дело, прописал все переменные:

export QTDIR=/usr/lib64/qt5
export QTINC=/usr/lib64/qt5/include
export QTLIB=/usr/lib64/qt5/lib
export QTBIN_PATH=/usr/lib64/qt5/bin

Однако по-прежнему не собиралось с тем же анамнезом, дело оказалось в том, что configure - простой баш-скрипт и там надо (для CentOS7) прописать вместо QTBIN_PATH="" →  QTBIN_PATH="/usr/lib64/qt5/bin/" (последний слэш обязателен!). Теперь собираем еще раз:

./configure
make
sudo make install
sudo ldconfig

Запускаем из CLI:

Kactus2

либо из меню Applications → Programming:  

Использование

Основное использование Kactus2 мной - это набивка такой вот регистровой карты в xml:

CAN FD bus IP-core CSR-map description

Ниже некоторые рецепты и гайдлайны по заполнению регистровой карты согласно IEEE1685:

Для заполнения регистров полезно использовать следующие поля:

  • Name - имя регистра
  • Description - описание регистра
  • Size - размерность регистра
  • Offset - фактический адрес регистра в адресном пространстве СФ-блока
  • Access - способ доступа к регистру
  • Volatile - модифицируемость регистра со стороны СФ-блока (смысл схож с квалификатором volatile в эмбеддед-Си)

Совет

Даже если у регистра всего одно поле - оно должно быть заведено как поле

Для заполнения полей регистров полезно использовать следующие ключи:

  • Name - имя поля
  • Description - описание поля
  • Width - размер поля
  • Offset - значение младшего разряда поля по отношению к регистру (LSB поля)
  • ! Access - способ доступа к полю: чтение/запись/чтение+запись (RW по умолчанию)
  • ! Volatile - модифицируемость поля со стороны СФ-блока: да/нет (нет по умолчанию); смысл этого флага: может ли модифицироваться со стороны СФ-блока значение поля между двумя произвольными чтениями?
  • ! Reset Value - значение по сбросу
  • ! Modified Write Value (если применим) - указываем для поля, если запись 0/1 сбрасывает/устанавливает/переключает_на_противоположное биты поля, либо если любая запись приводит к сбросу/установке битов поля (всего 8 вариантов)
  • ! Read Action (если применим) - указываем для поля, если операция чтения сбрасывает либо устанавливает биты поля

Внимание!

Выделенное надо очень аккуратно и тщательно переносить из программной модели, в будущем это упростит и автогенерацию RTL и верификацию (по факту для полей описаны готовые ассершены).

В следующих частях опишу какой инструментарий я применяю для получения различных описаний из подготовленного таким способом xml согласно стандарта “IEEE-1685: Standard for IP-XACT, Standard Structure for Packaging, Integrating and Re-Using IP Within Tool-Flows”.

Ссылки

Последние записи

Разделы