======Создаем проект в среде 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}}