Это моё личное предвзятое мнение. Любое совпадение с реальностью является случайным и непреднамеренным.
-
- Если описать так, как ты указал выше, то ассемблерный стартап окажется снаружи, это будет все равно что main, а нужна полная инициализация включая стек. Можно поиграться с location, конечно... - Vladimir Ljaschko(15.06.2011 10:29)
- А по WDT не проще перезапуститься? В Cortex-M3 так вообще NVIC_SystemReset() предусмотрели. - vmp(15.06.2011 10:53)
- Да мне не перезапуск нужен, а старт приложения из загрузчика. Создал таблицу векторов, с адресами ISR проблем нет, а вот адрес старта в лоб не получилось - только через location или путем выдергивания вектора с 0xfffe (MSP430) - Vladimir Ljaschko(15.06.2011 10:59)
- А откуда загрузчик вообще может узнать адрес запуска приложения? Он же компилируется отдельно от этого приложения. Так что чтение из вектора - единственно доступный способ. - vmp(15.06.2011 11:05)
- Не нравится разбрасывание крупиц интеллекта по разным кускам, в том числе в ПиСишную программу загрузки. - Vladimir Ljaschko(15.06.2011 11:21)
- А писишная программа-то причем? Либо ваш загрузчик принимает приложение в стандартном формате, с адресом запуска в таблице векторов и извлекает этот адрес из этой таблице при запуске приложения, либо приложение должно быть сформировано по каким-то vmp(394 знак., 15.06.2011 11:29)
- Ну а я что пытался сделать - заполнить адрес старта в таблице средствами компилятора! :) - Vladimir Ljaschko(15.06.2011 11:35)
- Делал для Cortex-M3. В заголовок клал адрес __vector_table, а ее заполнял сам компилятор с линкером. vmp(181 знак., 15.06.2011 11:44)
- В MSP таблица фиксирована. Если ее убрать со своего места, приложение без загрузчика работать не будет. Хочется же всего :) Короче, сделал через сегмент Vladimir Ljaschko(415 знак., 15.06.2011 12:05)
- Делал для Cortex-M3. В заголовок клал адрес __vector_table, а ее заполнял сам компилятор с линкером. vmp(181 знак., 15.06.2011 11:44)
- +1 - Гудвин(15.06.2011 11:33)
- Ну а я что пытался сделать - заполнить адрес старта в таблице средствами компилятора! :) - Vladimir Ljaschko(15.06.2011 11:35)
- А писишная программа-то причем? Либо ваш загрузчик принимает приложение в стандартном формате, с адресом запуска в таблице векторов и извлекает этот адрес из этой таблице при запуске приложения, либо приложение должно быть сформировано по каким-то vmp(394 знак., 15.06.2011 11:29)
- Не нравится разбрасывание крупиц интеллекта по разным кускам, в том числе в ПиСишную программу загрузки. - Vladimir Ljaschko(15.06.2011 11:21)
- А откуда загрузчик вообще может узнать адрес запуска приложения? Он же компилируется отдельно от этого приложения. Так что чтение из вектора - единственно доступный способ. - vmp(15.06.2011 11:05)
- Да мне не перезапуск нужен, а старт приложения из загрузчика. Создал таблицу векторов, с адресами ISR проблем нет, а вот адрес старта в лоб не получилось - только через location или путем выдергивания вектора с 0xfffe (MSP430) - Vladimir Ljaschko(15.06.2011 10:59)
- Может на нулевой адрес переход? - Михаил Е.(15.06.2011 10:35)
- А по WDT не проще перезапуститься? В Cortex-M3 так вообще NVIC_SystemReset() предусмотрели. - vmp(15.06.2011 10:53)
- Если описать так, как ты указал выше, то ассемблерный стартап окажется снаружи, это будет все равно что main, а нужна полная инициализация включая стек. Можно поиграться с location, конечно... - Vladimir Ljaschko(15.06.2011 10:29)