======Создаем проект в среде CodeMaster-ARM======
CodeMaster-ARM интегрированная среда разработки (IDE), содержащая набор программных средств для редактирования, компиляции и отладки приложений для встроенных микроконтроллеров с ядром ARM7, ARM9, Cortex-M0, Cortex-M1, Cortex-M3. Данная среда выпускается компанией [[http://www.phyton.ru/|Фитон]]. Обратившись к нашей [[doc:doclist:workprogs|таблице]] совместимости средств разработки и программаторов, делаем вывод, что среда CodeMaster-ARM совместима с собственным программатором фирмы "Фитон" //"JEM-ARM-V2//" и также поддерживается всё тот же //"JLink".//
Миландр предоставляет файлы поддержки своих микроконтроллеров для CodeMaster-ARM. В этой статье мы научимся создавать проект в данной среде, выполним его настройку, подключим SPL, и по традиции помигаем светодиодом [[prog:start:helloword|"Hello Word"]]. Распаковщик SPL для CodeMaster-ARM можно скачать по [[https://drive.google.com/uc?authuser=0&id=1_E9cqKILL4O_kgjMWPY27lYTyzVRKtCu&export=download|ссылке]]
=====Установка CodeMaster-ARM=====
Скачать архив среды можно с сайта фирмы [[http://www.phyton.ru/downloads|Фитон]] в разделе загрузке во вкладке ARM & Cortex. Мы будем будем использовать [[http://www.phyton.ru/files/SFX/codemaster-arm_demo.exe|демо-версию]], которая имеет ограничение по размеру кода 8192 байта, что для реализации нашего проекта более чем достаточно.
После распаковки архива и его инсталляции, при первом запуске среды будет предложено выбрать один из готовых уже проектов. Поскольку мы создаем свой новый проект, данное окно можно смело закрывать.
{{prog:start:arm_start.png}}
=====Создание нового проекта=====
Приступим к созданию нового проекта. Для этого перейдём в вкладку //Project->New//. В открывшемся окне в разделе General Properties необходимо указать //Project Name// и //Project Folder//.
{{prog:start:proj_arm1.png}}
Project name(no path): "HelloWorld" - имя проекта
Project folder: "HelloWorld" - это имя заранее созданной папки.
После создания проекта выполним некоторые настройки.Переходим в Debug-> Debug Options и на вкладке Target выбираем микроконтроллер, с которым будем работать. В нашем случае это 1986ВЕ92.
{{prog:spec:proj_options1.png}}
Следующим шагом нам нужно выбрать программатор. Переходим в //Debug-> Choose debugger//. Режим //Simulator// - это симулятор системы команд CodeMaster - программно логическая модель ядра микроконтроллера ARM. При этом периферийные устройства не симулируются. Нас интересует режим //J-Link JTAG Debugger//. Но его можно выбрать только при подключенном к компьютеру программаторе. Если //J-Link// не подключен, то в этом случае выбираем режим //Simulator//.
{{prog:spec:debugger.png}}
=====Организация папок проекта и SPL=====
При организации папок проекта будем придерживаться определённого стиля, аналогично тому, как это по умолчанию делает Keil, и как это описано в статье [[prog:spec:proj_iar|Создаем проект в среде IAR]].
Особенностью CodeMaster-ARM, в отличие от Keil’a или IAR’a, является то, что изменять структуру папок в окне проекта разработчиками не предусмотрено, поэтому все файлы, не зависимо от того, являются ли они библиотечными или это наш основной файл, складываются в папку «C Sources». Реальную структуру директорий на диске мы всё же сохраним, чтобы потом было удобнее во всём этом разбираться.
{{prog:spec:proj.png}}
Подключим библиотеки SPL, позволяющие работать с периферией микроконтроллера. Библиотеку к микроконтроллерам компании «Миландр» скачиваем с официального сайта по [[http://ic.milandr.ru/upload/iblock/4c0/4c05fec706112f5b21f73eaf2e68fd51.rar|ссылке]].
Для автоматической распаковки файлов библиотеки SPL можно воспользоваться установщиком в [[#Создаем проект в среде CodeMaster-ARM|начале статьи]].
Организация директорий и файлов, которые будут использоваться в нашем проекте, приведена ниже.
ARM_CODE\ - Общая папка с проектами в CodeMaster-ARM
1986BE9x\ - папка проектов под 1986BE9x
MDR32F9Qx_board.h - файл выбора МК и ревизии
HelloWorld - папка проекта
SPL\ - папка SPL
MDR32F9Qx_config.h - файл прочих настроек
CMSIS\
CM3\
CoreSupport - поддержка ядра
DeviceSupport\MDR32F9Qx\ - startup файлы
inc
startup\cmc
MDR32F9Qx_StdPeriph_Driver\ - driver файлы
inc
src
Чтобы получилась такая раскладка, вот что нужно скопировать из архива SPL:
В папку ARM_CODE\SPL:
исходные файлы SPL
lib\MDR32F9_2013\lib\Libraries\все содержимое
файлы с настройкой SPL под конкретный микроконтроллер
lib\MDR32F9_2013\lib\Examples\MDR1986VE9x\MDR32F9Q3_EVAL\MDR32F9Qx_config.h
в папку ARM_CODE\1986BE9x:
lib\MDR32F9_2013\lib\Examples\MDR1986VE9x\MDR32F9Q3_EVAL\MDR32F9Qx_board.h
Чтобы среда CodeMaster-ARM могла находить файлы SPL в нашей раскладке необходимо указать ей пути для поиска при сборке. Для этого выбираем «Project – Options» и в открывшемся окне выбираем вкладку «Folders». В строке «Include-files» прописываем через запятую относительные пути для файлов библиотеки.
{{prog:spec:spl2.png}}
Их можно скопировать прямо отсюда:
..\..\SPL\MDR32F9Qx_StdPeriph_Driver\inc;..\..\SPL\CMSIS\CM3\CoreSupport;..\..\SPL\CMSIS\CM3\DeviceSupport\MDR32F9Qx\inc;..\..\SPL\CMSIS\CM3\DeviceSupport\MDR32F9Qx\startup\cmc;..\..\SPL;..\
Нажимаем на кнопку «…» слева от строки «Include-files», здесь прописаны все наши указанные пути. Должно получиться так
{{prog:spec:proj1.png}}
Теперь необходимо подключить к проекту библиотечные файлы для работы с периферией. В нашем проекте для работы со светодиодами через порты GPIO (общие порты ввода-вывода), нам понадобятся функции задания тактирования и работы с портами. В окне проекта кликаем правой кнопкой мышки на папку «C Sources» и выбираем пункт «Add file to project…». В открывшемся окне переходим в добавленную нами папку SPL, и далее по адресу «…\MDR32F9Qx_StdPeriph_Driver\src» выбираем файлы MDR32F9Qx_port.c и MDR32F9Qx_rst_clk.c. Здесь также предусмотрена опция копировать добавляемые файлы в директорию проекта. Мы не будем придерживаться этого стиля структурирования и уберём галочку внизу окна с пункта «Copy files to the project directory».
{{prog:spec:spl4.png}}
После нажатия кнопки «Открыть» в окне проекта в папке «C Sources» должны появиться файлы MDR32F9Qx_port.c и MDR32F9Qx_rst_clk.c.
{{prog:spec:spl5.png}}
Теперь таким же образом добавляем Startup файл, но уже в папку "Asm Source". Для нашего микроконтроллера 1986ВЕ92 startup расположен по пути: …\SPL\CMSIS\CM3\DeviceSupport\MDR32F9Qx\startup\cmc - файл startup_MDR32F9Qx.mca.
{{prog:spec:proj2.png}}
=====Переходим к созданию main.c=====
В директории проекта я создал папку src, в которую будут помещаться все создаваемые си-файлы, в нашем проекте это только main.c. Чтобы создать файл, где мы будем писать код, необходимо нажать соответствующую кнопку в тулбаре, либо через меню «File – New».
{{prog:spec:spl6.png}}
В открывшееся окно вставляем код мигания светодиодом из проекта [[prog:start:helloword|«Hello World - светодиод»]]. Сохраняем файл в созданную нами папку src под именем main.c. Теперь необходимо добавить нашу программу в проект. Для этого в окне проекта кликаем правой кнопкой мышки на папку «C Sources» и выбираем пункт «Add file to project…». В открывшемся окне выбираем наш файл main.c. Проверяем чтобы галочка «Copy files to the project directory» была снята. После нажатия кнопки «Открыть» в окне проекта в папке «C Sources» должен появиться файл main.c, расположенный в директории src.
{{prog:spec:spl7.png}}
Теперь всё готово к запуску. Чтобы скомпилировать проект кликаем на соответствующую кнопку в тулбаре, либо нажимаем клавишу F7, либо через меню «Project – Make».
{{prog:start:arm_make.jpg}}
В открывшемся окне выводится результат компиляции, если возникли какие-то ошибки и предупреждения, они отражены здесь. У нас ошибок нет. Следовательно, программу можно загружать в микроконтроллер. Это можно сделать через соответствующую кнопку тулбаре, либо сочетанием клавиш Shift+F7, либо через меню «Project – Make and start debugging». Сразу же после начала прошивки появится окно с предупреждением, что будет произведено программирование Flash памяти и это приведёт к потери текущего состояния микроконтроллера. Соглашаемся и нажимаем кнопку «Yes».
{{prog:start:arm_warning.jpg}}
После загрузки программы в микроконтроллер запускается режим отладчика. Для управления режимом отладки в тулбаре предусмотрена группа кнопок, определяющих запуск кода и шаги его выполнения. Чтобы начать выполнение программы нажимаем центральную кнопку с красной стрелочкой или F5.
{{prog:start:arm_toolbar.jpg}}