Наконец то у нас дошли руки до нашей отладочной платы VE-LCMXO27000HC. По традиции в первой части проекта мы создадим USB CDC устройство на основе микроконтроллера MK20DN32 компании NXP. Когда мы задумывали проект по продвижению отладочных плат с FPGA и ARM процессором на борту, данный контроллер производился компанией FreeScale. Кто бы мог подумать что и она, вслед за Motorola перестанет существовать?
Среду разработки Eclipse мы уже настроили в нашей прошлой статье первый проект для ve-ep4ce10e часть 1. Поэтому сразу приступим к созданию проекта, у нас он называется usb_mk20_rom:
Оставляем две стандартные конфигурации Release и Debug:
Тулчейн выбираем, настроены ранее:
На этом шаге нужно скачать наш проект (ссылка ниже). Распаковать содержимое архива в папку созданного проекта, в вашей директории workspace. И нажав на созданном проекте правую клавишу мыши, выбрать пункт меню Refresh.
Структура проекта должна выглядеть так:
Далее настроим проект, сначала выберем тип процессора, тут все стандартно:
В препроцессоре добавим предопределенный символ:
TWR_K20X128
Это дефайн определяет тип отладочной платы. Наш пример взят из комплекта к отладочной плате TWR_K20X128.
Настройка путей поиска заголовочных файлов:
Настройка линкера:
Далее создадим конфигурацию отладчика. Для этого выберем пункт меню Run->External tools->External Tools->External Tools Configurations. Назовем нашу конфигурацию jlink-swd mk20dn32, в поле Locations пропишем путь к GDB серверу: D:\Program Files (x86)\SEGGER\JLink_V600i\JLinkGDBServerCL.exe. В качестве аргументов передадим строку -select USB -device MK20DN32xxx5 -if SWD -speed auto.
На вкладке Common поставим галку на пункт External Tools, после чего наша конфигурация появится в меню быстрого доступа.
Далее выберем пункт Run->Debug Configurations:
На вкладке Debugger прописываем путь до нашего отладчика, у нас это D:\dev\ARM_toolchain\arm_gcc\bin\arm-none-eabi-gdb.exe. Параметры соединения показаны ниже:
На вкладке Startup прописываем команды инициализации:
Code:
monitor speed auto monitor endian little monitor flash device = MK20DN32xxx5 monitor flash download = 1 monitor flash breakpoints = 1
На вкладке Common добавляем нашу конфигурацию в меню отладки.
Изменим функцию static void Virtual_Com_App(void). Добавим Слово "Символ=" в возвращаемом пакете:
C++ Code:
/****************************************************************************** * * @name Virtual_Com_App * * @brief Implements Loopback COM Port * * @param None * * @return None * ***************************************************************************** * Receives data from USB Host and transmits back to the Host *****************************************************************************/ static void Virtual_Com_App(void) { static uint_8 status = 0; /* Loopback Application Code */ if(g_recv_size) { /* Copy Received Buffer to Send Buffer */ for (status = 0; status < g_recv_size; status++) { g_curr_send_buf[0]='С'; g_curr_send_buf[1]='и'; g_curr_send_buf[2]='м'; g_curr_send_buf[3]='в'; g_curr_send_buf[4]='о'; g_curr_send_buf[5]='л'; g_curr_send_buf[6]='='; g_curr_send_buf[status+7] = g_curr_recv_buf[status]; } g_curr_send_buf[status+7]='\r'; g_curr_send_buf[status+8]='\n'; g_send_size = g_recv_size+9; g_recv_size = 0; } if(g_send_size) { /* Send Data to USB Host*/ uint_8 size = g_send_size; g_send_size = 0; status = USB_Class_CDC_Interface_DIC_Send_Data(CONTROLLER_ID, g_curr_send_buf,size); if(status != USB_OK) { /* Send Data Error Handling Code goes here */ } } return; }
Компилируем наш проект:
Code:
Invoking: Cross ARM GNU Print Size arm-none-eabi-size --format=berkeley "ve_k20_usb_cdc.elf" text data bss dec hex filename 14652 392 2832 17876 45d4 ve_k20_usb_cdc.elf Finished building: ve_k20_usb_cdc.siz 00:04:22 Build Finished (took 451 ms)
В меню Run->External Tools выбираем созданный нами пункт jlink-swd mk20dn32 после этого мы должны подключиться к нашей плате:
Запускаем отладку нажав на значок с зеленым пауком ))) и выбрав там пункт usb_mk20_rom Debug :
В результате мы получили USB CDC устройство, которым можно управлять с помощью утилиты Putty:
Исходные файлы проекта: usb_mk20_rom.zip