標(biāo)題: IAR與STM32上移植uC/OS II時(shí)0x1000000內(nèi)存溢出錯(cuò)誤已解決,不知道原因 [打印本頁(yè)]

作者: liuzhu    時(shí)間: 2015-9-10 00:50
標(biāo)題: IAR與STM32上移植uC/OS II時(shí)0x1000000內(nèi)存溢出錯(cuò)誤已解決,不知道原因
編譯鏈接都能通過(guò),但是在simulator里面就是一直有錯(cuò)誤。

lcf文件的設(shè)置采用系統(tǒng)默認(rèn)的.intvec start 0x08000000;

內(nèi)存ROM劃分:從0x08000000開(kāi)始


調(diào)試了幾天都出現(xiàn)這個(gè)錯(cuò)誤:0x1000000內(nèi)存溢出的錯(cuò)誤。


uC/OS II運(yùn)行到這里出現(xiàn)的如上錯(cuò)誤:
;********************************************************************************************************
;                                         START MULTITASKING
;                                      void OSStartHighRdy(void)
;
; Note(s) : 1) This function triggers a PendSV exception(essentially, causes a context switch) to cause
;             the first task to start.
;
;          2) OSStartHighRdy() MUST:
;             a) Setup PendSV exception priority to lowest;
;             b) Set initial PSP to 0, to tell context switcher this is firstrun;
;             c) Set OSRunning to TRUE;
;             d) Trigger PendSV exception;
;             e) Enable interrupts (tasks will run with interruptsenabled).
;********************************************************************************************************

OSStartHighRdy
   LDR    R0,=NVIC_SYSPRI14                                 ; Set the PendSV exception priority
   LDR    R1, =NVIC_PENDSV_PRI
   STRB    R1,[R0]

   MOVS    R0,#0                                             ; Set the PSP to 0 for initial context switch call
   MSR    PSP, R0

   LDR    R0,=OSRunning                                     ; OSRunning = TRUE
   MOVS    R1,#1
   STRB    R1,[R0]

   LDR    R0,=NVIC_INT_CTRL                                 ; Trigger the PendSV exception (causes context switch)
   LDR    R1, =NVIC_PENDSVSET
   STR    R1, [R0]

   CPSIE  I                                                  ; Enable interrupts at processor level

OSStartHang
   B      OSStartHang                                        ; Should never get here


終于通過(guò)修改vector table和ROM地址從 0x00000000開(kāi)始,程序可以正常跑了。


還不知道原因,后續(xù)還要仔細(xì)看下芯片手冊(cè)。





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1