2016-11-04 7 views
0

В принципе, мне нужно создать пользовательское приложение, которое можно назвать простым ядром для ARM Cortex M3. Ядро и пользовательские приложения на данный момент являются разными проектами uVision. Ядро обрабатывает все исключения HW (SVC, PendSV, Hardfault и т. Д.)Как создать изображение без обработчиков исключений HW для ARM Cortex M3 с помощью armcc

Пользовательское приложение расположено по определенному адресу, используя файл startup.s, и ядро ​​может запускать это приложение пользователя по его статическому адресу.

С другой стороны, файл startup.s пользовательского приложения также включает определения HW Exception Handler, но приложение пользователя никогда не обрабатывает или не должно обрабатывать исключения hw. Это должно быть под ответственностью ядра.

Можно ли отключить/игнорировать/избегать HW Обработка исключений для проекта или сборки? (Только адреса кода, стека и раздела данных должны быть известны при создании пользовательского приложения.)

+1

Я должен задать очевидный вопрос. Вы пытались отредактировать файл startup.s пользовательского приложения, чтобы удалить определения обработчика исключений HW? –

+1

Используйте свой собственный код запуска для приложения и полностью удалите таблицу векторов (почти?). –

ответ

0

Спасибо за ваши ответы. Да, как вы предположили, когда я удалял векторные таблицы из startup.s, кажется, работает.

Кроме того, я также заменил главную функцию вместо Reset_Handler, я мог бы найти основную функцию в качестве начальной точки. (Kernel уже инициализирует всю систему) Хотя первое слово показывает SP, второй показывает начало кода пункта (основной)

Мой простой startup.s файл теперь

; Vector Table Mapped to Address 0 at Reset 

       AREA RESET, DATA, READONLY 
       EXPORT __Vectors 
       IMPORT __main 

__Vectors  DCD  __initial_sp   ; Top of Stack 
       DCD  __main     ; Start Point 

Спасибо.

+0

Примечание. Этот код не инициализирует сегменты данных, но это может быть уже сделано ядром здесь. –