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

Расположение таблицы векторов IAR ARM

Добрый день! Пишу в iar для arm. До этого писал на си, а сейчас захотелось более подробно узнать о работе ядра. Для этого решил создать ассемблерный проект и тут же появились ошибки.

Ниже приведен листинг программы:

asm.s:

  NAME    example_project
  
  PUBLIC  __vector_table

  PUBLIC  __iar_program_start  
  
  INCLUDE startup_stm32f303xc.s
  

__iar_program_start  
  B       main

  SECTION .text : CODE (2)
  THUMB

main

  NOP
  B main
  

  END

 

Файл startup_stm32f303xc.s(немного укороченный):

Stack_Size EQU     0x2000
        SECTION SET_STACK:DATA:NOROOT(3)        
CSTACK          DS32    Stack_Size 
__initializ_sp

Heap_Size       EQU     0x2000
        SECTION SET_HEAP:DATA:NOROOT(3)
HEAP            DS32    Heap_Size
__heap_limit        

        DATA
        
__vector_table

        DCD     __initializ_sp
        DCD     Reset_Handler            ; Reset Handler

        DCD     NMI_Handler              ; NMI Handler
        DCD     HardFault_Handler        ; Hard Fault Handler
        DCD     MemManage_Handler        ; MPU Fault Handler
        DCD     BusFault_Handler         ; Bus Fault Handler
        DCD     UsageFault_Handler       ; Usage Fault Handler
        DCD     0                        ; Reserved
        DCD     0                        ; Reserved
        DCD     0                        ; Reserved
        DCD     0                        ; Reserved
        DCD     SVC_Handler              ; SVCall Handler
        DCD     DebugMon_Handler         ; Debug Monitor Handler
        DCD     0                        ; Reserved
        DCD     PendSV_Handler           ; PendSV Handler
        DCD     SysTick_Handler     
        ....
        ....

Файл я немного изменил по аналогии со стартап файлом кейла.

В итоге появляются 2 предупреждения (скриншоты ниже). Вроде как не верная инициализация таблицы векторов и вершины стека.

Добавление стартап файла iar порождает те же предупреждения.

Кто-нибудь может подсказать в чем дело?

post-87652-1505113119_thumb.jpg

post-87652-1505113126_thumb.jpg

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


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

Чего-то вы велосипед изобретаете. IAR прекрасно генерит пустой проект для ASM Cortex-M. Добавить свои вектора прерываний и в путь.

        PUBLIC  __iar_program_start
       PUBLIC  __vector_table

       SECTION .text:CODE:REORDER(1)

       ;; Keep vector table even if it's not referenced
       REQUIRE __vector_table

       THUMB

__iar_program_start

main    B       main

       ;; Forward declaration of sections.
       SECTION CSTACK:DATA:NOROOT(3)
       SECTION .intvec:CODE:NOROOT(2)

       DATA

__vector_table
       DCD     sfe(CSTACK)
       DCD     __iar_program_start

       DCD     NMI_Handler
       DCD     HardFault_Handler
       DCD     MemManage_Handler
       DCD     BusFault_Handler
       DCD     UsageFault_Handler
       DCD     0
       DCD     0
       DCD     0
       DCD     0
       DCD     SVC_Handler
       DCD     DebugMon_Handler
       DCD     0
       DCD     PendSV_Handler
       DCD     SysTick_Handler

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Default interrupt handlers.
;;

       PUBWEAK NMI_Handler
       PUBWEAK HardFault_Handler
       PUBWEAK MemManage_Handler
       PUBWEAK BusFault_Handler
       PUBWEAK UsageFault_Handler
       PUBWEAK SVC_Handler
       PUBWEAK DebugMon_Handler
       PUBWEAK PendSV_Handler
       PUBWEAK SysTick_Handler

       SECTION .text:CODE:REORDER:NOROOT(1)
       THUMB

NMI_Handler
HardFault_Handler
MemManage_Handler
BusFault_Handler
UsageFault_Handler
SVC_Handler
DebugMon_Handler
PendSV_Handler
SysTick_Handler
Default_Handler
__default_handler
       CALL_GRAPH_ROOT __default_handler, "interrupt"
       NOCALL __default_handler
       B __default_handler

       END

 

Стек отдайте на откуп линкеру. Файле $TOOLKIT_DIR$\CONFIG\generic_cortex.icf возьмите за основу и под себя поправьте.

 

 

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


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

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

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

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

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

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

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

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

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

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