Инструменты пользователя

Инструменты сайта


prog:spec:proj_codemaster-lynx

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
prog:spec:proj_codemaster-lynx [2019/09/09 11:11]
ilya
prog:spec:proj_codemaster-lynx [2020/01/15 17:52] (текущий)
vova [Создание и настройка проекта на примере 1967ВН028]
Строка 39: Строка 39:
 {{:​prog:​cmlynx:​2.png}} {{:​prog:​cmlynx:​2.png}}
  
- В окне Select Configurations оставляем выбранными поля Debug и Release и выбираем ​Finish.+В окне Select Configurations оставляем выбранными поля Debug и Release. По умолчанию проект настроен для работы с процессором 1967ВН044. Чтобы изменить проект для работы с другим процессором ​выбираем ​пункт "​Advanced settings..."​. В открывшемся окне в пункте "​Processor"​ выбираем процессор 1967ВН028.
  
-{{:​prog:​cmlynx:​3.png}}+{{:​prog:​cmlynx:​config_proc.png}} 
 + 
 +Далее в окне создания проекта нажимаем кнопку "​Finish"​.
  
 На предложение "​связать с перспективой C/C++" соглашаемся. ​ На предложение "​связать с перспективой C/C++" соглашаемся. ​
 +
 <note tip>В версиях CM-LYNX, начиная с 1.05.17, перспектива C/C++ выбирается автоматически.</​note>​ <note tip>В версиях CM-LYNX, начиная с 1.05.17, перспектива C/C++ выбирается автоматически.</​note>​
  
Строка 131: Строка 134:
 Здесь значение int reg берётся из библиотеки sysreg.h. Unsigned int value, как понятно из названия,​ - беззнаковое целое число, записываемое в выбранный регистр. Здесь значение int reg берётся из библиотеки sysreg.h. Unsigned int value, как понятно из названия,​ - беззнаковое целое число, записываемое в выбранный регистр.
  
-Регистр FLAGREG – 32-битный регистр,​ который контролирует направление выводов FLAG0-FLAG3 (вход (0) или выход (1)) и обеспечивает значение (1 или 0), когда выводы сконфигурированы как выход. Направление выводов FLAG0-FLAG3 задаётся в первых 4 битах регистра (3:0), за значение флагов при выдаче отвечают биты 7:4. Таким образом,​ чтобы настроить FLAG0 на выход, при этом чтобы он выдавал логическую 1, в регистр FLAGREG необходимо прописать значение 0x11 (0001_0001b). Однако непосредственно в регистр FLAGREG записывать значения нельзя! Для этого существуют два отдельных регистра FLAGREGST и FLAGREGCL. FLAGREGST позволяет записывать 1 (установка бит) в регистр FLAGREG. FLAGREGCL позволяет записывать 0 (сброс бит) в регистр FLAGREG.+Регистр FLAGREG – 32-битный регистр,​ который контролирует направление выводов FLAG0-FLAG3 (вход (0) или выход (1)) и обеспечивает значение (1 или 0), когда выводы сконфигурированы как выход. Направление выводов FLAG0-FLAG3 задаётся в первых 4 битах регистра (3:0), за значение флагов при выдаче отвечают биты 7:4. Таким образом,​ чтобы настроить FLAG0 на выход, при этом чтобы он выдавал логическую 1, в регистр FLAGREG необходимо прописать значение 0x11 (8'​b0001_0001). Однако непосредственно в регистр FLAGREG записывать значения нельзя! Для этого существуют два отдельных регистра FLAGREGST и FLAGREGCL. FLAGREGST позволяет записывать 1 (установка бит) в регистр FLAGREG. FLAGREGCL позволяет записывать 0 (сброс бит) в регистр FLAGREG.
  
-Стоит также обратить внимание,​ что ​для ​зажигания ​светодиода мы используем код, который ​устанавливает вывод FLAG0 на выходподавая на него логический 0!+Обратите внимание,​ чтобы зажечь ​светодиод ​нам необходимо установить вывод FLAG0 на выход ​(FLAGREG[3:​0] = 4'​b0001) и при этом вывести на вывод значение логического ​(FLAGREG[7:​4] = 4'​b0000)!
 <​code>​ <​code>​
 __builtin_sysreg_write(__FLAGREGST,​ 0x01); // зажигаем светодиод FLAG0 __builtin_sysreg_write(__FLAGREGST,​ 0x01); // зажигаем светодиод FLAG0
Строка 153: Строка 156:
  
 =====Режим Debug ===== =====Режим Debug =====
- 
-<note important>​Во время компиляции,​ а также при запуске режима отладки могут возникать разнообразные ошибки,​ поэтому рекомендуем ознакомиться с разделом [[#​Возможные трудности]] </​note>​ 
  
 Чтобы посмотреть,​ как исполняется разобранная нами программа,​ запустим проект в режиме <​del>​жука</​del>​ отладки (debug). Чтобы посмотреть,​ как исполняется разобранная нами программа,​ запустим проект в режиме <​del>​жука</​del>​ отладки (debug).
Строка 167: Строка 168:
 Теперь приступим к созданию конфигурации режима отладки. Для этого нажимаем на стрелку у значка жука и переходим в Debug configurations. Теперь приступим к созданию конфигурации режима отладки. Для этого нажимаем на стрелку у значка жука и переходим в Debug configurations.
  
-{{:​prog:​cmlynx:​9-1.png}}+{{:​prog:​cmlynx:​deb_conf.png}}
  
-В открывшемся окне слева выбираем тип Milandr ​Application (LLVM) ​и выбираем иконку "​New"​.+В открывшемся окне слева выбираем тип ​"Milandr ​DSP 1967 LLDB" ​и выбираем иконку "​New"​.
  
-{{:​prog:​cmlynx:​10-1.png}}+<note important>​Отладочную конфигурацию необходимо создавать только после сборки проекта,​ иначе исполняемый файл *.dxe придётся добавлять в отладочную конфигурацию вручную.</​note>​
  
-Создастся конфигурация Project1 Debug. Это имя нас устраивает,​ оставляем его. Во вкладке main убеждаемся,​ что в поле C/C++ Application указан путь к файлу с расширением .dxe с названием нашего проекта+{{:​prog:​cmlynx:​deb_conf_1.png}}
  
-{{:​prog:​cmlynx:​10.png}}+Создастся конфигурация Project1 Debug. Это имя нас устраивает,​ оставляем его. В поле "DSP cores" указываем количество процессоров,​ объединённых в JTAG цепочку. На отладочной плате у нас 2 процессора 1967ВН028,​ поэтому выбираем "DSP cores = 2".
  
 +<note tip>​Можно также воспользоваться автоматическим определением процессоров в JTAG цепочке с помощью кнопки "​Autodetect",​ однако,​ перед её нажатием к плате необходимо подключить отладчик,​ после чего подать на плату питание.</​note>​
  
-Переходим ко вкладке Debugger. +{{:​prog:​cmlynx:​deb_conf_2.png}}
-Выбираем наш отладчик JEM и переходим в настройки.+
  
-{{:prog:cmlynx:11.png}}+Теперь мы можем выбрать с каким именно процессором на отладочной плате мы хотим работатьс первым,​ со вторым,​ или с двумя сразу. Здесь мы рассмотрим отладку только одного процессора,​ описание многопроцессорной отладки описано в статье [[https://​startmilandr.ru/​doku.php/​prog:spec:multicore_debug_new|Запускаем отладку многопроцессорной системы]]. Чтобы выбрать необходимый нам процессор,​ оставляем напротив него в столбце "​Core"​ галочку,​ все остальные галочки убираем.
  
-Оставляем всё по умолчанию. Debugger Jem-Shark, частота не более 5.2 МГц нас устраивает. Использовать вывод RESET не нужно. Позиция MPU в цепи JTAGможно выбрать автоопределение. Но поскольку у нас в наличии плата, на которой 2 процессора и к каждому свой ряд светодиодов,​ то можно использовать каждый чип по отдельности.+{{:prog:​cmlynx:​deb_conf_3.png}}
  
-{{:prog:​cmlynx:​7.png}}+Переходим во вкладку "​Debugger"​. Здесь в поле "​Debugger"​ мы можем выбрать как будет осуществляться отладкас помощью отладчика на процессоре,​ либо с помощью симулятора. Так как мы работаем с отладочной платой,​ выбираем "​JEM",​ а остальные параметры оставляем по умолчанию.
  
-Таким образом,​ если в поле позиция MPU в цепи JTAG выбрано автоопределение,​ то на плате работает тот чип, который расположен со стороны выводов для отладчика. +{{:prog:​cmlynx:​deb_conf_4.png}}
-Если выбрано "​вручную",​ то становятся доступными для редактирования поля "​Количество процессоров 1967VC",​ "​Общее количество JTAG устройств",​ "​Номер TAP" и "​Предшествующая длина"​. +
-Первые два поля оставляем неизменные (везде 1) +
-В оставшихся полях при установки настроек:+
  
-MPU 0: 0 IR 0: 0 будет работать тот же чипчто и при автоопределении+Переходим во вкладку "​Control"​. Здесь можно настроить действиявыполняемые ​при ​запуске и завершении режима отладки. Оставим все параметры по умолчанию. 
  
-MPU 0: 1 IR 0: 5 будет работать процессор, расположенный ​с другой стороны платы.+<note tip>Подробное описание всех режимов отладочной конфигурации ​приводится в документе "​ML_ЦППО_GUI_Руководство_пользователя_R_V1.6.0",​ пункт "​6.10.1. Настройка конфигурации и запуск отладки"​.</​note>​
  
-{{:​prog:​cmlynx:​copmare.png}}+{{:​prog:​cmlynx:​deb_conf_5.png}}
  
-Определившись с какой стороны зажигаем диоды, нажимаем OK и запускаем режим ​<​del>​жука</​del> ​Debug.+На этом настройка конфигурации и запуска отладки завершена. Подключаем ​к плате отладчик, подаём питание на плату и нажимаем кнопку "Debug".
  
 Среда предложит нам открыть перспективу Debug режима. Соглашаемся. Здесь мы можем поставить breakpoints,​ открыть Dissassemblery,​ посмотреть значение регистров. Среда предложит нам открыть перспективу Debug режима. Соглашаемся. Здесь мы можем поставить breakpoints,​ открыть Dissassemblery,​ посмотреть значение регистров.
Строка 229: Строка 227:
 **2.** В случае возникновения ошибки:​ //"​Error stoping at main" процессор не готов принимать инструкции по JTAG.// **помогает отключить,​ а затем включить питание на плате.** **2.** В случае возникновения ошибки:​ //"​Error stoping at main" процессор не готов принимать инструкции по JTAG.// **помогает отключить,​ а затем включить питание на плате.**
  
-**3.** При запуске режима отладки может возникнуть подобная проблема +**3.** Иногда проект может не собираться,​ хотя подключены все библиотеки.
- +
-{{:​prog:​cmlynx:​problem2.png}} +
- +
-Она решается переходом в Debug Configurations->​Debugger->​Setting. В открывшемся окне настроек аппаратуры отладчика ничего не изменяем и жмём OK. +
- +
-{{:​prog:​cmlynx:​problem2.1.png}} +
- +
-**4.** Иногда проект может не собираться,​ хотя подключены все библиотеки.+
  
 <note warning>​Fatal[C1697]:​ cannot open source file "​C:​\work\projects\cmlynx-project\library\FLASH":​ Permission denied</​note>​ <note warning>​Fatal[C1697]:​ cannot open source file "​C:​\work\projects\cmlynx-project\library\FLASH":​ Permission denied</​note>​
prog/spec/proj_codemaster-lynx.1568013111.txt.gz · Последние изменения: 2019/09/09 11:11 — ilya