ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
2 июля
325209
Impossibility (25.04.2012 14:49, просмотров: 6890)
Никак не пойму в чем дело. Имеется простейший проект из двух файлов crt0.S (стартовый код) и Main.c crt0.S .equ Stack_size, 0x00000080 .section ".stack", "ax" Stack_mem: .space Stack_size __initial_sp: .thumb .section ".vec", "ax" .global vectors .global end_vectors .global vectors_size vectors: .word __initial_sp .word Reset_Handler end_vectors: .size vectors_size, . - vectors .text Reset_Handler: .func .global Reset_Handler .global main LDR %r0, =vectors LDR %r1, [r0] MSR msp, %r1 LDR %r0, =main BX %r0 .endfunc .end Main.c #include "opora.h" main() { return 0; } скрипт для линкера MEMORY { flash(rx) : ORIGIN = 0x00000000, LENGTH = 128K RAM(rwx) : ORIGIN = 0x20000000, LENGTH = 32K } SECTIONS { .vec : {KEEP(*(.vec))} > RAM .text : {KEEP(* (.text))} > RAM .data : {KEEP(* (.text))} > RAM .rodata : {KEEP(* (.text))} > RAM .bss : {KEEP(*(.bss))} > RAM .stack : {KEEP(* (.stack))} > RAM } Все собираю кросс компилятором arm-eabi-gcc. Ядро cortex m1. Прошиваю ядро с помощью JTag-адаптера JLink SEGGER, используя gdb (в качестве gdb-сервера использую JLinkGDBserver с сайта segger). Когда запускаю код, то программа вылетает на инструкции PUSH при вызове main (вылетает не только в реальном ядре, но и в симулятореsm.gif ), что вроде бы указывает на то, что стек не инициализирован.... Уже голову сломал... Попутные вопросы. Не собирается openOCD 0.5.0, ругается на отсутствие usb.h (usblib установил) в чем может быть проблема? Может кто-нибудь подскажет хороший симулятор для ARM на будущее sm.gif