Pull to refresh

Как я тестировал IDE компании «Мультиклет»

Reading time4 min
Views7.4K
В качестве среды разработки компанией «Мультиклет» был выбран текстовый редактор Geany с основными функциями интегрированной среды разработки. Для поддержки необходимых для отладки инструментов разработчиками компании «Мультиклет» был написан плагин MC-DBG, о тестировании возможностей которого пойдет речь в данной статье.

Начнём с установки предложенной среды разработки в операционной системе Windows, для чего согласно документации необходимо выполнить следующие шаги:

  1. Скачать geany-1.23.1_nogtk_setup.exe и установить его.
  2. Скачать GTK+ 2.24 all-in-one bundle и распаковать его в папку с Geany.
  3. Установить MSYS 1.0.11 и добавить путь к утилите make.exe в переменную Path.
  4. Скачать плагин с сайта Multiclet и распаковать его в папку с Geany.
  5. Запустить Geany.
  6. Во вкладке «Инструменты/Менеджер модулей» активировать модуль MC-DBG.


После активации модуля MC-DBG в боковом окне появится вкладка MC-Files, в окне сообщений вкладка MC-DBG, дополнительные элементы меню во вкладе «Проект» главного меню, как изображено на рисунке ниже.

image

Перед тем, как приступить к непосредственному тестированию плагина, рассмотрим его основные функции:
  1. Конфигурация проекта.
  2. Генерация файла сборки и сборка проекта.
  3. Навигация по списку возникших ошибок во время сборки проекта.
  4. Выполнение собранного проекта на функциональной модели.
  5. Отладка проекта по параграфам.
  6. Установка точек останова в памяти программ.
  7. Принудительная установка адреса следующего выполняемого параграфа.
  8. Чтение из памяти данных и регистров в процессе отладки.
  9. Запись значений в память данных и регистры в процессе отладки.


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

Теперь, мы готовы приступить собственно к тестированию. Напишем на ассемблере простейший эхо сервер, работающий через Uart. В качестве клиентской стороны будем использовать tcp_client.exe из стандартного набора разработчика компании Мультиклет.
Для начала создадим новый файл EXO.s стандартными средствами Geany. Запишем в него код эхо сервера, написанный на базе примера uart0_inv.asm, доступного в архиве. Код приведен ниже:

.include "HDL50001_pcf.inc" 
.alias Get_byte 2 

.text 

start: 
	jmp initUART0 
	getl 0x00000300 
	wrl @1, GPIOB_BPS 
	getl 0x00000104 
	wrl @1, UART0_BDR 
complete 

;;;;; Configurate Uart ;;;;; 
initUART0: 
	jmp MainLoop 
	getl 0x0000000A 
	wrl @1, UART0_DATA 
	getl 0x00000003 
	wrl @1, UART0_CR 
complete 

;RXD handler 
Rxd_int: 
    jmp buf_TXD 
	rdl UART0_DATA 
	setl #Get_byte, @1 
complete 

;test FIFO on full 
buf_TXD: 
	rdl UART0_ST 
	getl 0x00000200 
	and @2 
	jne @1, buf_TXD 
	je @2, Send_byte 
complete 

;Send inverse byte 
Send_byte: 
	jmp MainLoop 
	getl #Get_byte 
	wrl @1, UART0_DATA 
complete 

;;Loop 
MainLoop: 
	rdl UART0_ST 
	getl 0x00000001 
	and @2,@1 
	je @1, MainLoop 
	jne @2, Rxd_int 
complete


Создаем новый проект EXOProject. Данное действие возможно выполнить либо через вызов контекстного меню списка текущих проектов и выбора пункта «New», либо через главное меню «Проект/New MC-Project». Откроется диалоговое окно, в котором требуется указать имя нового файла проекта. После успешного создания проекта его имя отобразятся в окне MC-Files.

Добавляем файл EXO.s в наш проект при помощи кнопки «Add File» контекстного меню проекта в окне MC-Files. В результате получаем:

image

Затем необходимо настроить проект. Вызываем «Проект/MC-Project Properties» и добавляем к «Files/Include directories» папку с HDL50001_pcf.inc. У меня это С:\MultiClet\SDK\include\MCp0411100101. Остальные настройки я оставил по умолчанию.

Теперь можно попробовать собрать проект. Для этого нажимаем кнопку Make:

image

Устранение ошибок в процессе компиляции:

image
В 34 строке команда and должна иметь 2 аргумента. Заменим «and @2» на «and @1, @2»

Когда все ошибки устранены, заново собираем проект:

image

Теперь, когда сборка прошла успешно мы можем приступить к отладке. Выполняем программу по параграфам кнопкой Step. Зеленым подсвечивается первая команда следующего параграфа.

image

Видим, что программа зациклилась на параграфе MainLoop до тех пор, пока на Uart не поступят новые данные. Запускаем tcp_client.exe и отправляем по Uart 0x1.

image

Возвращаемся в Geany. Ставим точку останова на первую команду параграфа Send_byte и нажимаем Continue. Выполнение программы прекращается перед параграфом Send_byte. Во второй регистр записано полученное по Uart значение. Для того чтобы получить его значение вводим #2 в левое поле Watches (# обозначает регистр, для чтения из DM вводится просто адрес например 2 или 0x2).
Важное замечание.

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

image

Теперь запишем во второй регистр число 5 средствами отладчика. Для этого заменим число 1 на число 5 в правом поле и нажмем кнопку Set (на ней нарисована стрелка влево).

image

Вновь нажмем Continue (выполнение программы продолжится). В tcp_client.exe получим закономерный результат.

image

Остановим отладку кнопкой Stop.

Вместо заключения


Таким образом, несмотря на простоту реализации, предлагаемого функционала вполне достаточно для полноценной отладки даже больших и сложных проектов. Обновленный функционал инструментального пакета позволяет значительно увеличить скорость разработки за счет предоставления интуитивно понятного и удобного интерфейса. Можно много говорить о преимуществах одной IDE над другой, но все они, по большому счету, предоставляют одни и те же возможности. Вопрос их выбора – дело привычки и вкуса. В будущем хотелось бы пожелать компании «Мультиклет» развить возможность отладки программ через JTAG на железе, а не только на функциональной модели.
Tags:
Hubs:
Total votes 16: ↑9 and ↓7+2
Comments0

Articles