реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32 SysTick на Keil в ассемблере, Вопрос от новичка
Omnicake
сообщение Mar 17 2014, 03:58
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 12-01-14
Из: Омск
Пользователь №: 80 002



Здравствуйте, в своем курсовом проекте изучаю возможности микропроцессоров ARM механики и сейчас остановился на таймере SysTick в процессоре STM32, а именно его реализации только на языке ассемблер (работаю в Keil mVision). Нашел в интернете цикл статей по STM32 в том числе по таймеру с примером (http://easyelectronics.ru/arm-uchebnyj-kurs-systick-sistemnyj-tajmer.html), пытаюсь его проанализировать но не могу понять несколько вещей:

- В составе проекта включена библиотека CMSIS, которая включает в себя настройки для всех видов STM процессоров и с помощью кучи условий if else в составе кода находит настройки под конкретный процессор и использует их. Отсюда вопрос: могу ли я, заведомо зная модель своего микропроцессора выкинуть из файла библиотеки все остальные настройки, оставив только нужную и избавится от кучи условий?

- Помимо CMSIS в проекте присутствуют также иные файлы, которые, как я понимаю, нужны для запуска процессора, при запуске дебаггера программа скачет между ними, выполняя некоторые строчки кода то в одном, то в другом. При этом, опять же, не используя весь файл. Возможно ли выбрать только те строки, что используются для инициализации таймера и объединить их в один фаил?

- И последний вопрос, могу ли я, используя дизассемблер, выписать все команды, написанные на C++, переделывая их в ассемблер, будет ли итоговая программа, состоящая из одного фаила и содержащая все необходимые команды на ассемблере работать?

Вопросы, возможно, очень глупые, но материала по подобным тонкостям я не нашел (быть может плохо искал). Заранее спасибо.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Mar 17 2014, 04:07
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



На все вопросы ответ ДА.
Но зачем?


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Omnicake
сообщение Mar 17 2014, 04:17
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 12-01-14
Из: Омск
Пользователь №: 80 002



Просто мне нужен рабочий файл, написанный на ассемблере и инициализирующий сам stm32 и таймер на нем. Я понимаю, что многое из того, что я написал - лишнее, но, как говорится, прихоть руководства.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 17 2014, 04:40
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Часто так и делают. Когда проект вылизывают по каким либо причинам библиотеки, особенно такие большие как у СТМ летят в утиль.

Всю инициализацию можно написать самому по мануалу, а если вы это делаете еще за каким то хреном на асме то вы обязаны это сделать именно так, сами и только то что вам нужно, а библиотеку выкинуть.

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

так что все верно
Go to the top of the page
 
+Quote Post
Omnicake
сообщение Mar 17 2014, 04:50
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 12-01-14
Из: Омск
Пользователь №: 80 002



Спасибо, значит мои догадки в каком-то смысле были верными, теперь буду все переписывать.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Mar 17 2014, 08:05
Сообщение #6


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Golikov A. @ Mar 17 2014, 13:40) *
сю инициализацию можно написать самому по мануалу

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

Например, я неделю вылизывал простейший (без прерываний) драйвер для I2C (один мастер, два слейва) для STM32F051. И это при том, что у меня был мануал на родном английском rolleyes.gif + CMSIS, куда я подглядывал + знания по теории функционирования I2C rolleyes.gif rolleyes.gif rolleyes.gif

Или вот. Я не смог нормально завести SPIFI на LPC4337 для обмена с внешней нанд N25Q128. Пришлось делать на SPI. И это при том, что команды флешки описаны вполне нормально. А мануалы от NXP я считаю очень даже неплохо написаны.

Но, ИМХО, как-то всё мудрёно описано. А ориентирование всего добра на CMSIS я вообще не одобряю... Нет чтобы простые примеры приложить в одном файле, так нет, разбирайся с сотней хидеров и сишников...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Mar 19 2014, 15:08
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(Omnicake @ Mar 17 2014, 08:50) *
Спасибо, значит мои догадки в каком-то смысле были верными, теперь буду все переписывать.

тут есть немаловажный момент. Оптимизацию компилятора C в ноль поставьте, иначе там такой черт голову сломит sm.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th July 2025 - 02:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.0147 секунд с 7
ELECTRONIX ©2004-2016