Ознакомьтесь с нашей политикой обработки персональных данных
  • ↓
  • ↑
  • ⇑
 
Записи с темой: ассемблер (список заголовков)
14:33 

STM32F4. Локальные переменные в ассемблере

Кто-то любит пирожки, а кто-то - нет.
Раз уж я вернулся к теме ассемблера, стоит посмотреть и случай, когда регистров начинает не хватать.

читать дальше

<< Предыдущее Следующее >>

@темы: arm, stm32, stm32f4discovery, ассемблер, программизмы

11:48 

STM32F4. Строки в ассемблере

Кто-то любит пирожки, а кто-то - нет.
Точно такой же отладочный вывод можно применять и в ассемблерном проекте. Кстати, это вполне себе повод ознакомиться с представлением строк в си и хотя бы самой простой работе с ними.
Файл retarget.c пусть и остаётся самим собой, реализация функции ITM_SendChar описана в файле cm4_core.h и пусть она там остаётся. Желающие, конечно, могут переписать на асм, она маленькая.

читать дальше

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, arm

22:52 

STM32F4. Контроллер внешних прерываний

Кто-то любит пирожки, а кто-то - нет.
Контроллер умеет следить за линиями ввода-вывода и генерировать события по фронту сигнала и имеет 7 векторов прерываний (5 индивидуальных и 2 групповых).

читать дальше

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, arm, электроника

22:32 

STM32F4. NVIC

Кто-то любит пирожки, а кто-то - нет.
NVIC, векторный контроллер прерываний, есть во всех контроллерах на базе ядер Cortex-M, так как он входит в состав ядра. В старых ядрах контроллер прерываний был отдельно и не отличался хорошими характеристиками в плане скорости.
Описывается он подробно в Cortex-M4 Programming Manual.

читать дальше

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, arm, электроника

03:37 

STM32F0. Собираем тот же проект под GNU GCC

Кто-то любит пирожки, а кто-то - нет.
Если есть желание, то можно компилировать код и бесплатным компилятором GNU GCC. Через консоль. Мне лень устанавливать Linux или покупать макбук, поэтому сделаю это через винду. Скачал я тулчейн ARM GNU Embedded отсюда: launchpad.net/gcc-arm-embedded/+download (arm-none-eabi-).
Далее это дело устанавливается.

читать дальше

<< Предыдущее

@темы: arm, stm32, stm32f0discovery, ассемблер, программизмы, электроника

15:40 

STM32F4. Базовый таймер

Кто-то любит пирожки, а кто-то - нет.
Ознакомимся с такой очень полезной и простой периферией, как простой таймер (Basic timer), в микроконтроллерах STM32F4 простыми являются таймеры TIM6 и TIM7. Вообще, редкий микроконтроллер не имеет хоть какого-нибудь таймера для точного отсчёта времени. В STM32 все таймеры похожи по основным регистрам, просто в более сложных таймерах появляются новые флаги для настройки и новые регистры для контроля их работы в разных режимах.

Так вот, что же умеет и чем является даже самый простой и примитивный таймер?

читать дальше

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, электроника, arm

14:56 

STM32F4. Режимы работы.

Кто-то любит пирожки, а кто-то - нет.
Как вам должно быть уже известно, Cortex-M4 имеет два режима работы, в отличие от старых версий архитектуры, где оных режимов штук семь:
Thread Mode, то есть режим для обычного кода. Уровень привелегий может быть урезан для исключения доступа к особо важным регистрам.
Handler Mode, который включается в прерываниях и исключениях. Этот режим привелегированный по умолчанию. То есть имеет доступ ко всему, чему угодно.

читать дальше

Проект.

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, arm, электроника

17:34 

STM32F4. Критические секции.

Кто-то любит пирожки, а кто-то - нет.
ОС работает. Создание и завершение процессов в любой момент возможно.

читать дальше

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, arm, электроника

16:07 

STM32F4. Задержки и события в ОС.

Кто-то любит пирожки, а кто-то - нет.
Пока ОС предоставляет только услугу переключения процессов. Однако в любой человеческой ОС нужны две важных вещи: программная задержка и ожидание события. Пока не истекло время или не наступило ожидаемое событие, процесс не получает управления. Таким образом можно ожидать, например, прихода символа по UART сколь угодно долго, никак не напрягая ядро.

читать дальше

<< Предыдущее Следующее >>

@темы: arm, stm32, stm32f4discovery, ассемблер, программизмы, электроника

15:23 

STM32F4. Базовая ОС.

Кто-то любит пирожки, а кто-то - нет.
Ладно. Наплюём пока на акселерометр (он нам понадобится потом). Сейчас главная задача — сделать примитивную вытесняющую ОС. Памяти дофига, можно не жадничать.
ОС я ни разу не писал, но надо ж с чего-то начинать. А для изучения асма и контроллера это самое то. Пока читать литературу не буду, попробую сообразить сам.

читать дальше

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, arm, электроника

14:50 

STM32F4. Системный таймер.

Кто-то любит пирожки, а кто-то - нет.
Ну вот, теперь умеем программные прерывания. Но даже для простенькой вытесняющей ОС этого недостаточно.
Нужен ещё хотя бы один таймер.

Для начала можно рассмотреть SysTickTimer. Это такой специальный 24-битный таймер, который есть во всех ARMах и который умеет циклически считать с определённого заданного значения до нуля на частоте порядка тактовой. Ну и, конечно, имеет своё прерывание.
Основная его задача обычно — инициировать переключение процессов в ОС, ну и отсчитывать временные интервалы для разных событий внутри неё.

читать дальше

Кому не интересны возможности ядра по поддержке ОС и ассемблер, может перейти сразу на работу с периферией: Базовый таймер. Правда, там идёт уже в основном Си. Но переписать логику на ассемблер уже должно быть несложно и самостоятельно.

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, электроника, arm

20:38 

STM32F4. Программное прерывание.

Кто-то любит пирожки, а кто-то - нет.
Программа выполняется, светодиоды светятся - что может быть круче? Но тут не круто, что программа линейная и пора бы освоить работу с прерываниями.

Кстати, я узнал, что в новых архитектурах ARM есть смециальная последовательность команд для загрузки 32-битного числа в регистр.
MOVW Rn,<младшие 2 байта>
MOVT Rn,<старшие 2 байта>

Но в ассемблере есть честный макрос: MOV32.
То есть все предыдущие инструкции LDR Rn, =<32-битное число> можно спокойно поменять на MOV32 Rn, <32-битное число>, что я и сделал. Правда, эти правки я не стал выкладывать в виде отдельных файлов, ибо не суть.

читать дальше

<< Предыдущее Следующее >>

@темы: электроника, stm32f4discovery, программизмы, ассемблер, stm32, arm

20:09 

STM32F4. Низопоказометр.

Кто-то любит пирожки, а кто-то - нет.
На повороты проект предыдущий реагирует - это круто. Но чисто внешне реагирует невнятно, да и все переменные хранит в регистрах. Это не круто - регистров мало.

Для этого надо бы использовать память, наконец-таки. Объявим секцию переменных:


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

читать дальше

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, arm, электроника

06:41 

STM32F4. Акселерометр.

Кто-то любит пирожки, а кто-то - нет.
Хм. Пример проекта на ассемблере побольше. Добавились модули SPI и поверх него протокол работы с акселерометром LIS302DL. И краткий файл регистров периферии STM32F4xx (немного RCC, GPIO, SPI).
Светодиоды индицируют ускорения на отдельных осях, плюс один — нажатие кнопки.

читать дальше

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, arm, электроника

00:22 

STM32F4. Модули на Си.

Кто-то любит пирожки, а кто-то - нет.
Бегающие светодиодики в разные стороны — это круто. Но когда весь код состоит только из ассемблера — это не очень. Поддерживать его становится сложно, да и все дела.

Для примера можно один из модулей предыдущего проекта написать не на ассемблере, а на Си и всё при этом будет работать. (см. ниже button.c).
Только не забывайте, что стандартная библиотека в этом проекте не инициализирована (мы перехватили её функцию инициализации), а значит, память не очищена, глобальные переменные не инициализированы и функции, работающие с кучей, будут работать некорректно.

читать дальше

<< Предыдущее Следующее >>

@темы: электроника, программизмы, ассемблер, stm32f4discovery, stm32, arm

23:46 

STM32F4. Модули и кнопка.

Кто-то любит пирожки, а кто-то - нет.
Бегающие светодиоды — это круто. Но когда весь код превращается в нечитабельную простыню — нет. К тому же надо бы добавить хоть какую реакцию на внешние события. Хоть кнопку ту же пусть чует, благо это очень просто.

Потому надо каждый проект разбивать на функционально обособленные модули. И не важно будет, на чём оные модули будут написаны =)
Но пока нас интересуют только ассемблерные.

читать дальше

<< Предыдущее Следующее >>

@темы: arm, stm32, stm32f4discovery, ассемблер, программизмы, электроника

21:17 

STM32F4. Подпрограммы.

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

В принципе, ничего особо нового в этом проекте нет, за исключением операций работы со стеком.

читать дальше

Пример программы: main.s.

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, arm, электроника

19:50 

STM32F4. Светодиоды на ассемблере.

Кто-то любит пирожки, а кто-то - нет.
Пустой код, конечно, хорошо, но он ничего полезного не делает.

Нужно его заставить хотя бы светодиодами поморгать. Алгоритм настройки можно посмотреть в более ранней статье про язык Си, а тут я рассмотрю как энто делать на ассемблере.
Все команды должны перед собой иметь хотя бы один пробел! Иначе команда будет трактоваться как метка, что не здорово.

читать дальше...

Пример кода, моргающего светодиодами: main.s.

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, arm, электроника

18:44 

STM32F4. Первый проект на ассемблере.

Кто-то любит пирожки, а кто-то - нет.
Что необходимо для проекта на ассемблере?
В первую очередь — создать проект обычным образом, как и для Си-проекта. Выбрать контроллер, создать папку, назвать проект, согласиться с добавлением загрузочного кода (startup_xxx.s).

читать дальше...

<< Предыдущее Следующее >>

@темы: электроника, программизмы, ассемблер, stm32f4discovery, stm32, arm

Няшки-вкусняшки любят карандашики.

главная