Перейти к содержанию
    

директивы препроцессора для *.s(asm) файлов в Keil

Но я вышел из положения другим путём: избавился от ассемблерного стартапа совсем.

Вот и именно. Вообще не понимаю, откуда растут ноги у ассемблерного стартапа: вроде даже сам ARM поставляет сишный стартап для ядра.

Даже если нет, написать структуру на сях - делов на 20 минут. Заодно обработчики дефолтные можно накидать, используя прелести __weak

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот и именно. Вообще не понимаю, откуда растут ноги у ассемблерного стартапа: вроде даже сам ARM поставляет сишный стартап для ядра.

Люто плюсую. В открытую была заявлена одна из целей создания Cortex-M: чтобы можно было запрограммировать всё без ассемблера.

А про ноги можно предположить: ARM7TDMI требовал ассемблера, ну а дальше по инерции продолжилось...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

startup.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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?

 

Интересно - можно ли такое сварганить для других компиляторов?
Конечно можно.

Я раньше одновременно использовал и KEIL и GCC.

Потом понял, что GCC меня полностью устраивает...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хочу поинтересоваться, для чего нужна предпоследняя строка в Вашей асмовой вставке, если Вы и так в GetRegistersFromStack читаете PC?
А фиг знает :rolleyes: Когда то скопипастил откуда то, когда искал ошибку с HardFault, потом, помню, что то переделал. Потом ошибку нашел и забыл про этот код.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А фиг знает :rolleyes:
Понятно. Тогда можете её удалить.

Во вложении мой стартап для GCC (он конечно тоже изначально взят был откуда-то и творчески переработан)))

STM32F10X_startup.c.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В опциях компилятора, во вкладке препроцессора задаю тип платы, например OPEN407Z.

А в опциях для ассемблера задаете?

У IAR настройки препроцессора для ассемблера и с компилятора раздельные...

И препроцессор для asm вроде нормально работает... по крайней мере я с проблемами не сталкивался и #if со сложными условиями и #ifdef без проблем работали....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в опциях для ассемблера задаете?

У IAR настройки препроцессора для ассемблера и с компилятора раздельные...

И препроцессор для asm вроде нормально работает... по крайней мере я с проблемами не сталкивался и #if со сложными условиями и #ifdef без проблем работали....

Xe...Так и есть. Нужно было для препроцессора ассемблера тоже задавать тип платы... Вот я недогада... :)

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...