Cortex m3 руководство по программированию

Параметрический поиск по микроконтроллерам с ядром Cortex M3. Обновлено 8 дней назад.

Низкопотребляющий CORTEX-M3 ARM с отладчиком !

STM32L-Discovery — новейший н абор для быстрого старта

Верхняя часть платы — полноценный отлачик ST-LINK

ЖКИ дисплей и внизу емкостные
датчики в виде слайдера регулятора.

STM32L-Discovery лучший способ познакомится с микроконтроллерами STM32L на ядре Cortex-M3, которые отличаются ультранизким энергопотреблением — 270 нА в спящем режиме .

STM32L-Discovery полноценный инструментарий, включающий в себя оценочную плату, программатор и отладчик с поддержкой самых популярных программных средств разработки от таких фирм как IAR, Keil и Atollic.

На плате STM32L-Discovery установлен мощный 32 битный микроконтроллер STM32L152RBT6 с 128 KБ Flash, 16 KБ RAM и 4 KБ EEPROM.

Встроенный программатор–отладчик ST-LINK позволяет начать разработку собственных приложений без дополнительных затрат. Сигналы встроенного ST-LINK выведены на внешний разъем, что позволяет в дальнейшем использовать STM32L-Discovery в качестве программатора-отладчика для своих собственных разработок.

Микроконтроллер STM32L152RBT6 Ядро Cortex-M3, 128 KB Flash, 16 KB RAM, 4 KB EEPROM
Интерфейсы USB 2.0 FS, 3xUSART, 2xSPI, 2xI2C, 8 таймеров
24-канальный 12-бит АЦП 1мкс, компараторы, 2х12-бит ЦАП
Полноценные часы реального времени
Встроенный контроллер LCD 8х40

Программатор отладчик ST-Link с возможностью программировать другие STM32.
LCD дисплей 24х8 в форм-факторе DIP28
Возможность измерения потребляемого тока
Четыре светодиода:
LD1 (красный/зеленый) для сигнализации обмена данных по USB
LD2 (красный) для питания 3.3В
Два пользовательских диода LD3 (зеленый) и LD4 (синий)
Две кнопки (user и reset)
Сенсорная клавиатура (четыре сенсорных кнопки или один слайдер)
Выводы STM32L152RBT6 выведены на контакты — можно использовать на беспаячной макетной плате.

STM32VLDISCOVERY супер-пупер штучка ! очень недорого

Ниже есть р уководство на русском языке по STM32 Cortex-M3 .

недорогой отладочный комплект для начала работы с популярным семейством микроконтроллеров STM32F1x на основе ядра ARM Cortex – M3 от STMicroelectronics.

П олноценный инструментарий, включающий в себе оценочную плату, программатор , отладчик с поддержкой самых популярных программных средств разработки от IAR, Keil и Atollic.

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

В основе STM32VLDISCOVERY заложен 24МГц микроконтроллер STM32F100RBT6B "Value Line" с 8Кб SRAM, 128Кб flash, многофункциональными таймерами, аналоговой периферией и разнообразными последовательными интерфейсами обмена данных. Наличие встроенного программатора – отладчика ST-LINK позволяет начать разработку собственных приложений без дополнительных затрат.

Сигналы встроенного ST-LINK выведены на внешний разъем, что позволяет в дальнейшем использовать STM32VLDISCOVERY в качестве программатора-отладчика для своих собственных разработок. На сайте STMicroelectronics вы можете найти всю необходимую информацию по данному продукту – руководства, примеры программного обеспечения, документацию.

MSP430 быстрый старт с набором MSP-EXP430G2 Это отладочное средство для программирования и отладки MSP430 , в которое входит все необходимое для начала разработки – панелька для микроконтроллеров msp430 в 14/20-выводном DIP-корпусе ? интегрированный отладчик/программатор, позволяющий работать с МК по USB через интерфейс Spy Bi-Wire (2-wire JTAG). В комплект входит 2 запрограммированных МК MSP430G2211IN14 и MSP430G2231IN14. Их можно перепрограмировать и отлаживать прямо в плате по USB. очень недорого

Комплект MSP-EXP430G2 (LaunchPad) совместим с любым микроконтроллером MSP430 Value Line, существующими отладочными платами eZ430 и устройствами MSP430, способными поддерживать интерфейс Spy-Bi-Wire. Бесплатно загружаются с www.Ti.com компиляторы и отладчики без ограничения функциональности, в том числе Code Composer Studio и IAR Embedded Workbench, поддерживающие комплексную среду разработки программного обеспечения. Краткое руководство со схемой платы и «бысрый старт» .

LPCXpresso Board макетная плата для ARM LPC 1114 LPC 1343
( камушки LPC 1114 всего 65 рублей ) вместе с JTAG отладчиком -программатром и к ней прилагается среда разработки, библиотеки и все такое — http://www.nxp.com/lpcxpresso/ Платка разделяется на две части, а в часть с процессором можно впаять два ряда штырей PLS — после этого она прекрасно сядет в макетку без пайки . http://mkpochtoi.narod.ru/LPCXpresso.png LPC1 343 110 рублей в розницу . очень недорого

Статья на русском — быстрый старт с LPCXpresso

LPCXpresso Board for LPC1768 (OM13000) отладочная плата для разработки и отладки систем на базе микроконтроллера с ядром Cortex-M3 серии LPC1768, производства NXP с интегрированным JTAG отладчиком. нет в наличии.

Макетная плата универсальная от QFP-40 до QFP-208 шаг 0.5 мм 120 рублей подойдет для LPC 1114 LPC 1343 LPC 1768

LPC 1114 FBD48 65 руб LPC 1343 FBD48 120 руб LPC 1768 FBD100 260 руб

Книга почтой «Микроконтроллеры фирмы STMicroelectronics на базе ядра Cortex-M3. Серия STM32.»

Книга «Микроконтроллеры фирмы STMicroelectronics на базе ядра Cortex-M3. Серия STM32.» является обзорным курсом по архитектуре микроконтроллерного ядра Cortex-M3, на базе которого компанией STMicroelectronics создана популярная серия STM32.

Это практическое пособие будет полезно как разработчикам микроконтроллерных устройств, так и студентам и аспирантам высших технических учебных заведений, изучающих микроконтроллерную тематику.

Книга содержит следующие основные главы:

Обзор Cortex
Включение микроконтроллера
Системная архитектура STM32
Периферийные устройства
Режимы снижения энергопотребления
Обеспечение надежности
Модуль FLASH-памяти
Средства отладки

Полный набор всех деталей для сборки FCL метр и генератор конструкции
Буевского 16 99 рублей ( измеритель индуктивности и емкости с автокалибровкой и частотмер и ГЕНРАТОР ! ) с фирменной платой,
прошитым контроллером — 100 % рабочая разводка. плата СУПЕР качественная ! Гламурный глянец и все такое. Можно купить отдельно:
— плату для сборки FCL G всего за 250 рублей ( фото в архиве )
— прошитый для прибора PIC16F628 A за 150 рублей
— делитель частоты MC12080 150 рубле й. Д о 1100 МГц
В архиве Фото плат, собран н ой платы, собра нн ого устройства в корпусе, прошивка и инструкции к прибору : http://mkpochtoi.narod.ru/fcl.rar
Пластиковый корпус в подарок.

ЛЮБЫЕ ТОВАРЫ из Москвы по почте и в Москве .

Оплата лично, в Сбербанк, WebMoney , Яндекс деньги. Легко и просто!

http://mkpochtoi.narod.ru/ Основной e-mail — mkpochtoi@yandex.ru

резервный e-mail — mkpochtoi@mail.ru ( сохраняет письма и автоматом пересылает на mkpochtoi@yandex.ru )

Прайс лист — цены на электронные компоненты в наличии у Семенова Михаила .

В Москве можно купить лично без предоплаты и почти без выходных и 24 часа , либо с предоплатой получить в Москве и Питере курьером EMS. А почтой по предоплате можно заказать куда угодно. Если вы не хотите связываться с почтой и предоплатой — попросите вашего знакомого в Москве приобрести нужные вам радиодетали с оплатой при получении .

Сегодня мы начнём учиться программировать ARM-контроллеры STM32 на ядре Cortex-M3. Эти камни уже гораздо серьёзнее, чем восьмибитные пики и атмелы, поэтому для полного использования всех их возможностей без языка высокого уровня нам при программировании не обойтись (если мы конечно не мазохисты), но для лучшего понимания происходящего, начнём мы всё же с ассемблера, а потом уже подмешаем Си (тем более, что до полного использования возможностей этих камней нам пока как до Луны пешком).

Сред разработки под ARM-ы в настоящее время существует достаточно много, мы будем пользоваться одной из таких сред (кстати, одной из самых популярных), которая называется Keil uVision.

Первое, что нужно сделать — это скачать с официального сайта Keil и установить себе на компьютер пакет MDK-ARM. В настоящее время в его состав входит Keil uVision версии 5.11. Бесплатная версия, естественно, урезана и позволяет скомпилить максимум 32 Кбайта кода, но нам, простым радиохламерам, для любительских нужд этого более чем достаточно (ну, а если недостаточно, то, я думаю, все знают что делать).

Помимо пакета MDK-ARM нужно скачать и установить пакет для работы с контроллерами STM32, который называется Keil.STM32F1xx_DFP.1.0.5.pack. После установки этого пакета в среде uVision появится база данных контроллеров STM.

Всё, после выполнения этих двух действий можно приступать к разработке программ.

Итак, запускаем Keil uVision и выбираем пункт меню «New uVision Project…»

В появившемся окне проводника выбираем папку, в которой проект будет расположен, придумываем ему какое-нибудь имя и жмём кнопку «Сохранить».

После этого появится база различных контроллеров STM32, в которой нужно будет выбрать свой камень (в моём случае это stm32F103C8) и нажать «Ok».

Дальше нам предложат подключить к нашему проекту различные готовые куски кода и библиотеки драйверов. Достаточно поставить напротив соответствующего компонента галочку и он будет включен в наш проект. Это очень сильно облегчает жизнь программиста, но мы пока не будем этим пользоваться. Пока мы ставим перед собой цель разобраться как это всё работает и нас интересует проект на асме с чистого листа, поэтому не ставим никакие галочки, а просто жмём кнопку «OK».

Проект создан и окно uVision теперь выглядит вот так:

Слева расположен многофункциональный менеджер проекта, в котором в зависимости от выбранной внизу вкладки открывается либо структура проекта (вкладка Project), либо библиотека документации (вкладка Books), либо список используемых в проекте функций (вкладка Functions), либо шаблоны для часто используемых структур (вкладка Templates). Пользоваться менеджером просто и удобно, — когда мы выбираем камень, в библиотеку документации автоматически добавляются нужные книжки, список используемых в проекте функций также составляется автоматически. В области справа показывается содержимое открытых файлов проекта.

Добавим в наш проект asm-файл, в котором мы будем писать код. Щёлкаем по Source Group 1 правой кнопкой мыши и выбираем пункт Add New Item to Group ‘Source Group 1’…

После этого появится окошко, в котором нам предложат выбрать тип добавляемого файла и попросят этот файл как-нибудь назвать. Выбираем тип файла Asm File, назовём его, скажем, Proga1 и жмём кнопку Add. В менеджере проекта появляется наш файл. Если по нему два раза щёлкнуть мышкой — он откроется в окошке справа.

Пока этот файл пустой, но прежде чем писать в него какой-либо код, давайте вернёмся ещё раз к менеджеру проекта. Если щёлкнуть правой кнопкой мыши на Target1 и выбрать пункт меню Options for Target ‘Target1’, то откроется окошко с настройками нашего проекта. Кое-какие из этих настроек нам придётся подправить, а кое-какие просто интересно посмотреть.

На вкладке Device можно поменять модель контроллера.

На вкладке Target указаны начальные адреса и размеры используемых областей памяти. В случае с нашим STM32F103C8 мы имеем внутри кристалла 64 кБ (0x10000) flash-памяти (IROM1 — internal ROM), которая расположена по адресам, начиная с 0x08000000, а также 20 кБ (0x5000) ОЗУ (IRAM — internal RAM), которая расположена по адресам, начиная с 0x20000000. Эти данные устанавливаются автоматически при выборе контроллера, но если вдруг они случайно испортились, то их всегда можно подглядеть в доке на камень, открыв карту памяти (memory map).

На вкладке Output нужно не забыть поставить галочку напротив пункта Create HEX File. Здесь же можно выбрать отдельную папку для сохранения всяких вспомогательных файлов, создающихся при компиляции проекта. (кнопка Select Folder for Objects…)

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

На вкладке User можно настроить запуск различных пользовательских программ и скриптов в процессе построения проекта

Вкладки С/С++ и Asm предназначены для настройки процедур препроцессинга и ассемблирования и пока нам не интересны.

На вкладке Linker настраивается линковщик. Здесь возможны три варианта:

1) Ничего не менять. В этом случае стартовые адреса областей памяти (flash и RAM) будут взяты те, что прописаны на вкладке Linker напротив пунктов R/O Base, R/W Base. Кроме того, линковщик захочет чтобы точка входа была обозначена меткой Reset_Handler, а начало таблицы прерываний — меткой __Vectors. Это можно увидеть в командной строке линковщика (Linker Control String). Запись —entry Reset_Handler говорит о том, что метку Reset_Handler нужно считать точкой входа, а запись —first __Vectors — о том, что секцию с именем __Vectors нужно расположить в памяти первой. Соответственно, если наши названия не будут совпадать с теми, которые ожидает линковщик, — мы при компиляции получим ошибки и ворнинги. Кроме того, мы должны экспортировать эти метки, директивой EXPORT.

2) Поставить галочку напротив Use Memory Layout from Target Dialog. Если посмотреть в командную строку линковщика, то можно увидеть, что теперь набор команд выглядит по другому. В таком варианте линковщик будет использовать адреса областей памяти, указанные на вкладке Target. Причём он сначала на основе этих данных автоматически создаёт так-называемый scatter-файл (файл с расширением .sct), а потом компилит проект на основе scatter-файла. Если мы откроем scatter-файл в блокноте, то увидим, что теперь компилер хочет, чтобы секция, помещаемая в самое начало flash-памяти (там должна размещаться таблица векторов прерываний, но об этом позже) называлась RESET. Но в этом случае линковщику уже не нужно чтобы мы что-то куда-то экспортировали и не обязательно, чтобы метка, обозначающая точку входа, называлась именно Reset_Handle. Зато теперь нам нужно либо в программе обозначить точку входа директивой ENTRY, либо на вкладке Linker в окошке Misc controls добавить директиву —first, указав после неё имя нашей метки, отмечающей точку входа. Кроме того, теперь линковщик выдаёт при компиляции ворнинг из-за того, что хочет найти секции, обозначенные как InRoot$$Sections. Но у нас таких секций и нет, поэтому на этот ворнинг можно смело забить (а чтоб не надоедал — можно выключить его, добавив в строку Disable Warnings на вкладке Linker).

3) Ну и наконец, последний вариант — можно самому создать этот самый scatter-файл, который расскажет линковщику где какие области располагать. Для этого галочка Use Memory Layout from Target Dialog должна быть снята, а в папке с проектом нужно создать файл с раширением sct. Подробно о том, чем этот файл заполнять и как использовать описано в пятой главе мануала RealView Compilation Tools, а нам для простейшей программы хватит и вот такого:

Здесь ROM_Start_Address — адрес начала flash-памяти (в нашем случае 0x08000000), ROM_Size — размер flash-памяти (в нашем случае 0x10000), RAM_Start_Address — адрес начала оперативы нашего камня (в нашем случае 0x20000000), RAM_Size — размер оперативы (в нашем случае 0x10000).

Директива *.o (First_Section_Name, +First) в секции ER_IROM1 означает, что надо во всех объектных файлах поискать область с именем First_Section_Name и разместить её самой первой в секции ER_IROM1. Для контроллеров STM32 первой во flash-памяти должна быть область с адресом вершины стека и таблицей адресов прерываний.

Директива .ANY (+RO) означает, что далее в этой секции будут размещены все остальные области, помеченные в исходнике как READONLY, причём без разницы в каком порядке.

Директива .ANY (+RW +ZI) в секции RW_IRAM1 означает, что в этой секции будут размещены все области, помеченные в исходнике как READWRITE, причём без разницы в каком порядке.

После того, как файл создан и заполнен нужно на вкладке Linker, в строке Scatter File указать путь к этому файлу. Для удобства, справа есть кнопочка «…» при нажатии на которую откроется проводник и вам останется только выбрать этот файл в проводнике.

Обратите внимание, что после выбора scatter-файла набор команд в строке Linker control string изменится. Оттуда пропадут команды, размечающие области памяти и распределяющие различные секции по этим областям, поскольку теперь предполагается, что это сделано в scatter-файле.

На вкладке Debug нужно выбрать как вы будете отлаживать свой проект. Если у вас есть отладочная плата, то нужно поставить флажок, напротив пункта Use: и далее выбрать из выпадающего списка свою отладочную плату. Если отладочной платы у вас нет, то нужно поставить флажок напротив пункта Use Simulator. Это даст возможность пользоваться для отладки встроенным в IDE симулятором.

Последняя вкладка, Utilites, предназначена для настройки программирования чипа из IDE, и, соответственно, при отсутствии одного из поддерживаемых этой IDE программаторов также не сильно нам интересна.

Полную информацию по настройкам компилятора, ассемблера и прочим можно узнать, почитав литературу из раздела Tools Users Guide на вкладке Books в менеджере проекта, а с минимальными настройками мы только что разобрались. На этом пока всё, а в следующий раз давайте попробуем написать в созданном ранее asm-файле какую-нибудь маленькую программулинку.

Сегодня мы начнём учиться программировать ARM-контроллеры STM32 на ядре Cortex-M3. Эти камни уже гораздо серьёзнее, чем восьмибитные пики и атмелы, поэтому для полного использования всех их возможностей без языка высокого уровня нам при программировании не обойтись (если мы конечно не мазохисты), но для лучшего понимания происходящего, начнём мы всё же с ассемблера, а потом уже подмешаем Си (тем более, что до полного использования возможностей этих камней нам пока как до Луны пешком).

Сред разработки под ARM-ы в настоящее время существует достаточно много, мы будем пользоваться одной из таких сред (кстати, одной из самых популярных), которая называется Keil uVision.

Первое, что нужно сделать — это скачать с официального сайта Keil и установить себе на компьютер пакет MDK-ARM. В настоящее время в его состав входит Keil uVision версии 5.11. Бесплатная версия, естественно, урезана и позволяет скомпилить максимум 32 Кбайта кода, но нам, простым радиохламерам, для любительских нужд этого более чем достаточно (ну, а если недостаточно, то, я думаю, все знают что делать).

Помимо пакета MDK-ARM нужно скачать и установить пакет для работы с контроллерами STM32, который называется Keil.STM32F1xx_DFP.1.0.5.pack. После установки этого пакета в среде uVision появится база данных контроллеров STM.

Всё, после выполнения этих двух действий можно приступать к разработке программ.

Итак, запускаем Keil uVision и выбираем пункт меню «New uVision Project…»

В появившемся окне проводника выбираем папку, в которой проект будет расположен, придумываем ему какое-нибудь имя и жмём кнопку «Сохранить».

После этого появится база различных контроллеров STM32, в которой нужно будет выбрать свой камень (в моём случае это stm32F103C8) и нажать «Ok».

Дальше нам предложат подключить к нашему проекту различные готовые куски кода и библиотеки драйверов. Достаточно поставить напротив соответствующего компонента галочку и он будет включен в наш проект. Это очень сильно облегчает жизнь программиста, но мы пока не будем этим пользоваться. Пока мы ставим перед собой цель разобраться как это всё работает и нас интересует проект на асме с чистого листа, поэтому не ставим никакие галочки, а просто жмём кнопку «OK».

Проект создан и окно uVision теперь выглядит вот так:

Слева расположен многофункциональный менеджер проекта, в котором в зависимости от выбранной внизу вкладки открывается либо структура проекта (вкладка Project), либо библиотека документации (вкладка Books), либо список используемых в проекте функций (вкладка Functions), либо шаблоны для часто используемых структур (вкладка Templates). Пользоваться менеджером просто и удобно, — когда мы выбираем камень, в библиотеку документации автоматически добавляются нужные книжки, список используемых в проекте функций также составляется автоматически. В области справа показывается содержимое открытых файлов проекта.

Добавим в наш проект asm-файл, в котором мы будем писать код. Щёлкаем по Source Group 1 правой кнопкой мыши и выбираем пункт Add New Item to Group ‘Source Group 1’…

После этого появится окошко, в котором нам предложат выбрать тип добавляемого файла и попросят этот файл как-нибудь назвать. Выбираем тип файла Asm File, назовём его, скажем, Proga1 и жмём кнопку Add. В менеджере проекта появляется наш файл. Если по нему два раза щёлкнуть мышкой — он откроется в окошке справа.

Пока этот файл пустой, но прежде чем писать в него какой-либо код, давайте вернёмся ещё раз к менеджеру проекта. Если щёлкнуть правой кнопкой мыши на Target1 и выбрать пункт меню Options for Target ‘Target1’, то откроется окошко с настройками нашего проекта. Кое-какие из этих настроек нам придётся подправить, а кое-какие просто интересно посмотреть.

На вкладке Device можно поменять модель контроллера.

На вкладке Target указаны начальные адреса и размеры используемых областей памяти. В случае с нашим STM32F103C8 мы имеем внутри кристалла 64 кБ (0x10000) flash-памяти (IROM1 — internal ROM), которая расположена по адресам, начиная с 0x08000000, а также 20 кБ (0x5000) ОЗУ (IRAM — internal RAM), которая расположена по адресам, начиная с 0x20000000. Эти данные устанавливаются автоматически при выборе контроллера, но если вдруг они случайно испортились, то их всегда можно подглядеть в доке на камень, открыв карту памяти (memory map).

На вкладке Output нужно не забыть поставить галочку напротив пункта Create HEX File. Здесь же можно выбрать отдельную папку для сохранения всяких вспомогательных файлов, создающихся при компиляции проекта. (кнопка Select Folder for Objects…)

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

На вкладке User можно настроить запуск различных пользовательских программ и скриптов в процессе построения проекта

Вкладки С/С++ и Asm предназначены для настройки процедур препроцессинга и ассемблирования и пока нам не интересны.

На вкладке Linker настраивается линковщик. Здесь возможны три варианта:

1) Ничего не менять. В этом случае стартовые адреса областей памяти (flash и RAM) будут взяты те, что прописаны на вкладке Linker напротив пунктов R/O Base, R/W Base. Кроме того, линковщик захочет чтобы точка входа была обозначена меткой Reset_Handler, а начало таблицы прерываний — меткой __Vectors. Это можно увидеть в командной строке линковщика (Linker Control String). Запись —entry Reset_Handler говорит о том, что метку Reset_Handler нужно считать точкой входа, а запись —first __Vectors — о том, что секцию с именем __Vectors нужно расположить в памяти первой. Соответственно, если наши названия не будут совпадать с теми, которые ожидает линковщик, — мы при компиляции получим ошибки и ворнинги. Кроме того, мы должны экспортировать эти метки, директивой EXPORT.

2) Поставить галочку напротив Use Memory Layout from Target Dialog. Если посмотреть в командную строку линковщика, то можно увидеть, что теперь набор команд выглядит по другому. В таком варианте линковщик будет использовать адреса областей памяти, указанные на вкладке Target. Причём он сначала на основе этих данных автоматически создаёт так-называемый scatter-файл (файл с расширением .sct), а потом компилит проект на основе scatter-файла. Если мы откроем scatter-файл в блокноте, то увидим, что теперь компилер хочет, чтобы секция, помещаемая в самое начало flash-памяти (там должна размещаться таблица векторов прерываний, но об этом позже) называлась RESET. Но в этом случае линковщику уже не нужно чтобы мы что-то куда-то экспортировали и не обязательно, чтобы метка, обозначающая точку входа, называлась именно Reset_Handle. Зато теперь нам нужно либо в программе обозначить точку входа директивой ENTRY, либо на вкладке Linker в окошке Misc controls добавить директиву —first, указав после неё имя нашей метки, отмечающей точку входа. Кроме того, теперь линковщик выдаёт при компиляции ворнинг из-за того, что хочет найти секции, обозначенные как InRoot$$Sections. Но у нас таких секций и нет, поэтому на этот ворнинг можно смело забить (а чтоб не надоедал — можно выключить его, добавив в строку Disable Warnings на вкладке Linker).

3) Ну и наконец, последний вариант — можно самому создать этот самый scatter-файл, который расскажет линковщику где какие области располагать. Для этого галочка Use Memory Layout from Target Dialog должна быть снята, а в папке с проектом нужно создать файл с раширением sct. Подробно о том, чем этот файл заполнять и как использовать описано в пятой главе мануала RealView Compilation Tools, а нам для простейшей программы хватит и вот такого:

Здесь ROM_Start_Address — адрес начала flash-памяти (в нашем случае 0x08000000), ROM_Size — размер flash-памяти (в нашем случае 0x10000), RAM_Start_Address — адрес начала оперативы нашего камня (в нашем случае 0x20000000), RAM_Size — размер оперативы (в нашем случае 0x10000).

Директива *.o (First_Section_Name, +First) в секции ER_IROM1 означает, что надо во всех объектных файлах поискать область с именем First_Section_Name и разместить её самой первой в секции ER_IROM1. Для контроллеров STM32 первой во flash-памяти должна быть область с адресом вершины стека и таблицей адресов прерываний.

Директива .ANY (+RO) означает, что далее в этой секции будут размещены все остальные области, помеченные в исходнике как READONLY, причём без разницы в каком порядке.

Директива .ANY (+RW +ZI) в секции RW_IRAM1 означает, что в этой секции будут размещены все области, помеченные в исходнике как READWRITE, причём без разницы в каком порядке.

После того, как файл создан и заполнен нужно на вкладке Linker, в строке Scatter File указать путь к этому файлу. Для удобства, справа есть кнопочка «…» при нажатии на которую откроется проводник и вам останется только выбрать этот файл в проводнике.

Обратите внимание, что после выбора scatter-файла набор команд в строке Linker control string изменится. Оттуда пропадут команды, размечающие области памяти и распределяющие различные секции по этим областям, поскольку теперь предполагается, что это сделано в scatter-файле.

На вкладке Debug нужно выбрать как вы будете отлаживать свой проект. Если у вас есть отладочная плата, то нужно поставить флажок, напротив пункта Use: и далее выбрать из выпадающего списка свою отладочную плату. Если отладочной платы у вас нет, то нужно поставить флажок напротив пункта Use Simulator. Это даст возможность пользоваться для отладки встроенным в IDE симулятором.

Последняя вкладка, Utilites, предназначена для настройки программирования чипа из IDE, и, соответственно, при отсутствии одного из поддерживаемых этой IDE программаторов также не сильно нам интересна.

Полную информацию по настройкам компилятора, ассемблера и прочим можно узнать, почитав литературу из раздела Tools Users Guide на вкладке Books в менеджере проекта, а с минимальными настройками мы только что разобрались. На этом пока всё, а в следующий раз давайте попробуем написать в созданном ранее asm-файле какую-нибудь маленькую программулинку.

«>


[an error occurred while processing the directive]
Карта сайта