Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Другие темы раздела
ARM, Cortex, STM32 микроконтроллер Выключение отладочных функций http://www.cyberforum.ru/arm/thread2092528.html
Есть микроконтроллер STM32F103, хотелось бы полностью запретить какую-либо возможность отладки с целью обхода защиты. Можно ли как-нибудь это сделать? В даташите нашёл только про защиту flash-памяти...
stm32f4-discovery - не двигается сервопривод ARM, Cortex, STM32 микроконтроллер
Долго мучаюсь не могу двинуть серву. подскажите пожалуйста что не так.(серва подключена к ножке PB11) #include "stm32f4xx.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_rcc.h" #define...
ARM, Cortex, STM32 микроконтроллер Не сохраняет проект на flash
STM32T-discovery. IAR. При загрузке проекта в МК (Downtood active application) всё работает. Можно жать risit - всё в порядке. Как только отключаю-включаю питание (usb-провод), прошивка пропадает.
ARM, Cortex, STM32 микроконтроллер stm32f103 discovery подключение к SSD1289 Везде где смотрю готовый проект есть только для 400 STM. Есть ли у кого рабочий проект CoocOx для f103. И где бы найти распиновку как подключать? http://www.cyberforum.ru/arm/thread2092525.html
ARM, Cortex, STM32 микроконтроллер Функции для работы с кольцевыми буферами для STM32 http://www.cyberforum.ru/arm/thread2092524.html
Написал функции-шаблоны для работы с кольцевыми буферами. Параметры каждого буфера, такие как размер одного элемента, размер буфера, ссылка на сам буфер, задаются в структуре cbuf_param_struct....
USB-HID библиотека с st.com STM32f105 "Устройство USB не .." ARM, Cortex, STM32 микроконтроллер
Товарищи. Взял USB библиотеку с st.com (On-The-Go host omd divice library), для STM32F105 connectivity line. Запускаю и "Устройство USB не опознано". В проекте девайн "STM3210C-EVOT", у этой платы...
ARM, Cortex, STM32 микроконтроллер DMA не генерирует прерывания
Доброго времени суток. Вывожу WAV файл с SD карты, контроллер STM32F103VCT6. Использую DAC и DMA. Сначала сделал так: void Init_Soumd(){ RCC->APB1ENR |= RCC_APB1ENR_DACEN; // включить...
ARM, Cortex, STM32 микроконтроллер Помогите найти библиотеки пожалуйста Здравствуйте. Столкнулся с такой проблемой - не могу найти библиотеку USB для stm32f4. Нашёл вот это:http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1743 Но не могу понять как скачать... http://www.cyberforum.ru/arm/thread2092521.html
ARM, Cortex, STM32 микроконтроллер STM32F4DISCOVERY и siemens m55 lcd(LM15SGFNZ07) http://www.cyberforum.ru/arm/thread2092520.html
Собственно сабж:есть дискавери, есть дисплей от m55 (LM15SGFNZ07 дисплей, контроллер - HM17CM4096). Проблема в следующем, при программной эмуляции spi, всё работает замечательно, а вот при...
ARM, Cortex, STM32 микроконтроллер "Наложение" переменных. STM32, IAR, возможно? Использую IAR. После дополнения программы (различными буферами и переменными) для STM32F100C8, мое устройство на каком-то моменте стало зависать. После дебага увидел, что МК уходит в цикл, т.к.... http://www.cyberforum.ru/arm/thread2092519.html
OtixPM
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
13.08.2013, 00:31 0

Программирование STM32 на ассемблере в Keil: общие вопросы.

13.08.2013, 00:31. Просмотров 27700. Ответов 17
Метки (Все метки)

Ответ

wypuk, Вы бы уже в конце концов почитали какую-нибудь серьёзную литературу. А то одни восклицания да "хрень" через слово. Воинствующее дилетантство :-( Так и собираетесь "осваивать" программирование?
Цитата Сообщение от wypuk
не компилится, что это обозначает?Код:
EXPORT __main
__main
Про DLL что-нибудь слышали? Про экспорт и импорт имён кодовых модулей? Имя определено в одном месте, а используется в другом. Вот "владелец" и экспортит имя, чтобы другие про него знали и могли им пользоваться.

Цитата Сообщение от wypuk
Есть в подключенном файле "stortup_stm32f10x_md.s" вот такая процедура где упоминается эта __main:
Код:
Riset_Homdler PROC
EXPORT Riset_Homdler [WEAK]
IMPORT __main
IMPORT SystemInit
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP
что это все обозначает, и как завестись без всей этой непонятной и излишней хрени?Не нравится имя main - загрузите вместо него имя любой другой метки (или даже просто числовой адрес метки, раз к именам нелюбовь). Инструкция LDR загружает адрес метки (в примере задан именем main) в регистр, инструкция BX передаёт управление коду по тому адресу в регистре. В общем, это стартовый адрес юзерской программы (в языке Си - адрес главной функции, main).

Цитата Сообщение от wypuk
В том же файле стартапа стек вот так размечается
... ...
и еще что-то непонятное размечается
Код:
Heap_Size EQU 0x00000200

AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size__heap_limit

что здесь обозначают HEAP, STACK, NOINIT, ALIGN=3?Heap - т.н.память "кучи". Резервируется большой сплошной кусок ОЗУ (как и Stack - резервируется заранее большая область ОЗУ). Потом из этого хипа будет выделяться память на программные нужды. На глобальные и статические переменные в первую очередь.
NoInit - та секция ОЗУ, которая не будет инициализироваться при старте и рестарте программы. Переменные, "живущие" в этой области, будут сохранять свои значения при сбросе.
Align - выравнивание адреса следующей метки в памяти по границе полуслова или слова и т.п. Align=3 - скорей всего, по границе слова, т.е.адрес следующей метки будет кратен четырём. Выравнивание необходимо для корректной работы 32-хбитного процессора с некоторыми объектами.

Цитата Сообщение от wypuk
а так же диррективы
Код:
PRESERVE8
THUMB
Preserve8 - не то, что Вы сначала подумали, а сохранение выравнивания адресов по границе 8 байт (т.е.адреса кратны восьми) для стека в данном файле. Вам-то это зачем?
Thumb - режим работы ARM-процессора. Альтернативный режим называется ARM (в Вашем процессоре его нет) и характеризуется только 32-хбитными кодами команд (16-тибитные не используются). А у Вас Thumb - 16-тибитные команды используются

Цитата Сообщение от wypuk
и еще есть вот такие процедурки с прерываниямиКод:
NMI_Homdler PROC
EXPORT NMI_Homdler [WEAK]
B .
ENDP
Это что мне сюда свои прерывания надо как-то впихнуть?Можете не впихивать, если не требуется. Эти WEAK-объявления заменят необходимый минимум описания прерываний.

wypuk писал(а):
И зачем команда B "прыгает" на точку? Какой смысл?
Это зацикливание. Если на языке Си, то это выглядит как "while (1) {}". На Бейсике - "10 goto 10". И тому подобное. Обработчик немаскированного прерывания NMI здесь ничего не делает, просто зацикливается. Можете вместо "B ." написать осмысленный код обработчика и вставить здесь.

wypuk писал(а):
[WEAK] что это такое?
Это т.н."слабое" объявление. Оно имеет силу, пока его не "перебьёт" нормальное ("сильное") объявление с тем же именем. Удобно: программисту можно по умолчанию не объявлять всё и вся (а векторов прерываний/исключений в ARMах очень много!), "слабые" объявления послужат заглушками.

Вернуться к обсуждению:
Программирование STM32 на ассемблере в Keil: общие вопросы.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2013, 00:31
Готовые ответы и решения:

Assembler Keil stm32f103 общие вопросы
Приветствую форумчане. Есть несколько вопросов по асму Сообщения-вопросы я предлагаю выделять...

Программирование Stm32 на ассемблере
Доброго всем времени суток! Заинтересовал такой вопрос: как программировать Stm на ассемблере?...

STM32 и Keil v5 (5.14)
Всем доброго времени суток, я навичек в МК, прошу прощения, если выкладываю мысли слегка путано для...

C++ в Keil + STM32
Доброго времени суток. Пытаюсь написать небольшой проектик на С++ под STM32 в Keil, но что то не...

Stm32 и Keil
Здравствуйте, помогите пожалуйста. Пытаюсь оценить ограничения Keilа. 32 кб этого хватит для таких...

17
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru