-
- Чёта типа того =AlexD=(273 знак., 15.06.2011 10:12 - 10:22)
- __noreturn void __program_start( void ); ... __program_start(); - Xитpый Kитaeц(15.06.2011 10:15)
- goto - это локальный оператор.Он работает только внутри функции. yuri_t(208 знак., 15.06.2011 10:06 - 10:09)
- Error[Og005]: Unknown symbol in inline assembly: "__program_start" D:\work\Types\Type H\hp_main.c 89 - Vladimir Ljaschko(15.06.2011 10:11)
- Попробуйте так: yuri_t(321 знак., 15.06.2011 11:05)
- Компилируется, но в дебаггере это абсолютно другая точка. - Vladimir Ljaschko(15.06.2011 11:52)
- Попробуйте так: yuri_t(321 знак., 15.06.2011 11:05)
- Error[Og005]: Unknown symbol in inline assembly: "__program_start" D:\work\Types\Type H\hp_main.c 89 - Vladimir Ljaschko(15.06.2011 10:11)
- Ээээ, а разве можно делать goto на указатель??? Вроде он только для меток в тексте работает, причём в пределах одной функции. - =AlexD=(15.06.2011 10:05)
- Хорошо, меняем goto на переменную : void * my_ptr= __program_start; Результат тот же. - Vladimir Ljaschko(15.06.2011 10:09)
- Надо число подчеркивания сократить, примерно так void * my_ptr= _program_start; - AlexBi(15.06.2011 10:15)
- Вообще, где этот __program_start описан ? - =AlexD=(15.06.2011 10:14)
- в асм стартапе, файл включен в проект и реально подключается - Vladimir Ljaschko(15.06.2011 10:17)
- Так я и думал, значит правильно опиши его в С файле, но одно подчёркивание впереди убери. - =AlexD=(15.06.2011 10:20)
- Если описать так, как ты указал выше, то ассемблерный стартап окажется снаружи, это будет все равно что 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)
- Так я и думал, значит правильно опиши его в С файле, но одно подчёркивание впереди убери. - =AlexD=(15.06.2011 10:20)
- в асм стартапе, файл включен в проект и реально подключается - Vladimir Ljaschko(15.06.2011 10:17)
- а _program_start ? - =AlexD=(15.06.2011 10:13)
- Хорошо, меняем goto на переменную : void * my_ptr= __program_start; Результат тот же. - Vladimir Ljaschko(15.06.2011 10:09)