Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Расположение таблицы векторов IAR ARM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Isaev_ivan
Добрый день! Пишу в 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 порождает те же предупреждения.
Кто-нибудь может подсказать в чем дело?
VladislavS
Чего-то вы велосипед изобретаете. IAR прекрасно генерит пустой проект для ASM Cortex-M. Добавить свои вектора прерываний и в путь.
CODE
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 возьмите за основу и под себя поправьте.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.