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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> директивы препроцессора для *.s(asm) файлов в Keil
drozel
сообщение Feb 5 2016, 10:45
Сообщение #16


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 2-02-11
Пользователь №: 62 650



Цитата(Garmin @ Feb 3 2016, 20:02) *
Но я вышел из положения другим путём: избавился от ассемблерного стартапа совсем.

Вот и именно. Вообще не понимаю, откуда растут ноги у ассемблерного стартапа: вроде даже сам ARM поставляет сишный стартап для ядра.
Даже если нет, написать структуру на сях - делов на 20 минут. Заодно обработчики дефолтные можно накидать, используя прелести __weak
Go to the top of the page
 
+Quote Post
scifi
сообщение Feb 5 2016, 10:47
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(drozel @ Feb 5 2016, 13:45) *
Вот и именно. Вообще не понимаю, откуда растут ноги у ассемблерного стартапа: вроде даже сам ARM поставляет сишный стартап для ядра.

Люто плюсую. В открытую была заявлена одна из целей создания Cortex-M: чтобы можно было запрограммировать всё без ассемблера.
А про ноги можно предположить: ARM7TDMI требовал ассемблера, ну а дальше по инерции продолжилось...
Go to the top of the page
 
+Quote Post
prottoss
сообщение Feb 6 2016, 13:31
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Garmin @ Feb 3 2016, 20:02) *
Мне тоже пришлось повозиться с ассемблерным стартапом в IAR....
Спасибо больше! Идея мне очень понравилась! Очень быстро перевел все проекты с STM32 на "безассемблерную" структуру векторов прерываний. Избавился от кучи файлов. Ушли варнинги (которые немного раздражали) по поводу pubweak - ругался асссемблер. Знаете ли, привык чтобы проект, после компиляции, не выдавал ни каких предупреждений, кроме ОК.

Выкладываю свой вариант стартапа для STM32F10x и STM32F40x. Может кому пригодится.

Интересно - можно ли такое сварганить для других компиляторов? Попробовал сегодня в Keil - но я его не использую и по этому с наскоку не получилось.

Прикрепленные файлы
Прикрепленный файл  startup.zip ( 6.48 килобайт ) Кол-во скачиваний: 19
 


--------------------
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 8 2016, 09:55
Сообщение #19


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

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



Цитата(prottoss @ Feb 6 2016, 16:31) *
Код
void HardFault_Handler(void)
{
    __asm volatile
    (
        " tst lr, #4                \n"
        " ite eq                    \n"
        " mrseq r0, msp                \n"
        " mrsne r0, psp                \n"
        " ldr r1, [r0, #24]            \n"
        " b GetRegistersFromStack    \n"
    );
}
Хочу поинтересоваться, для чего нужна предпоследняя строка в Вашей асмовой вставке, если Вы и так в GetRegistersFromStack читаете PC?

Цитата(prottoss @ Feb 6 2016, 16:31) *
Интересно - можно ли такое сварганить для других компиляторов?
Конечно можно.
Я раньше одновременно использовал и KEIL и GCC.
Потом понял, что GCC меня полностью устраивает...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Feb 8 2016, 10:05
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(demiurg_spb @ Feb 8 2016, 15:55) *
Хочу поинтересоваться, для чего нужна предпоследняя строка в Вашей асмовой вставке, если Вы и так в GetRegistersFromStack читаете PC?
А фиг знает rolleyes.gif Когда то скопипастил откуда то, когда искал ошибку с HardFault, потом, помню, что то переделал. Потом ошибку нашел и забыл про этот код.


--------------------
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 8 2016, 10:13
Сообщение #21


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

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



Цитата(prottoss @ Feb 8 2016, 13:05) *
А фиг знает rolleyes.gif
Понятно. Тогда можете её удалить.
Во вложении мой стартап для GCC (он конечно тоже изначально взят был откуда-то и творчески переработан)))
Прикрепленные файлы
Прикрепленный файл  STM32F10X_startup.c.zip ( 2.87 килобайт ) Кол-во скачиваний: 15
 


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 9 2016, 06:41
Сообщение #22


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(prottoss @ Feb 1 2016, 18:43) *
В опциях компилятора, во вкладке препроцессора задаю тип платы, например OPEN407Z.

А в опциях для ассемблера задаете?
У IAR настройки препроцессора для ассемблера и с компилятора раздельные...
И препроцессор для asm вроде нормально работает... по крайней мере я с проблемами не сталкивался и #if со сложными условиями и #ifdef без проблем работали....
Go to the top of the page
 
+Quote Post
prottoss
сообщение Feb 9 2016, 07:35
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(KRS @ Feb 9 2016, 12:41) *
А в опциях для ассемблера задаете?
У IAR настройки препроцессора для ассемблера и с компилятора раздельные...
И препроцессор для asm вроде нормально работает... по крайней мере я с проблемами не сталкивался и #if со сложными условиями и #ifdef без проблем работали....
Xe...Так и есть. Нужно было для препроцессора ассемблера тоже задавать тип платы... Вот я недогада... sm.gif
Но, тем не менее, все сложилось в лучшую сторону - я вообще избавился от ассемблерного стартапа, кучи предупреждений про неиспользуемые прерывания и кучи фалов. Так что обратно откатывать не буду, хоть и проблема выяснилась.


--------------------
Go to the top of the page
 
+Quote Post

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

 


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


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