找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4520|回復(fù): 0
收起左側(cè)

關(guān)于UCOS-ii操作系統(tǒng)在M0上移植的若干問題!括弧--焦頭爛額!

[復(fù)制鏈接]
ID:82781 發(fā)表于 2015-6-13 16:32 | 顯示全部樓層 |閱讀模式
搞了三天的UCOS的移植,真是悲劇了,第一天忙著到處找源碼!第二天忙著搭建平臺,第三天開始調(diào)試,本想到會一帆風順,怎曾想出現(xiàn)了一個讓我很傻比的問題,那就是出現(xiàn)了一個異常 HardFault_Handler  ,這個異常,找資料啊看代碼,找資料啊看代碼,一天都在這樣循環(huán)著。這個異常網(wǎng)上說是堆棧溢出或者內(nèi)存越界,開始我也把這兩句話封為這個毛病的要點,開始單步跟蹤。第一次跟蹤發(fā)現(xiàn)在加載main函數(shù)的時候PC指針直接彈入0X0000000,導(dǎo)致程序跳轉(zhuǎn)到起始地址,然后緊接著調(diào)到0X00000FC這個地址,這個地址就是HardFault_Handler 的入口地址,顯然,沒有棧溢出的問題,那么就是內(nèi)存越界老?顯然也不成立,因為在bootlodaeli里我并沒有定義非法指針和數(shù)據(jù),所以不會是這個問題!那又是什么問題呢?后來稀里糊涂的也不知道怎么搞的竟然可以加載MAIN函數(shù),但是加載完了又跳到HardFault_Handler ,真他媽的悲劇啊,然后又是一通單步,結(jié)果是找到了出異常的地方在內(nèi)核文件中的任務(wù)控制塊TCB處,初始化就緒表正常,一旦到了TCB鏈表池就會出現(xiàn)錯誤,很頭疼,開始鎖定數(shù)組越界問題!但是實在是沒數(shù)組或者指針沒有初始化,全部是正常的!他就是不好用!怎么辦?既不是內(nèi)存越界也不是棧溢出(為了防止棧溢出我特意吧Stack_Size      EQU     0x00000800改成512字節(jié)),什么原因?。。。。。。。。。我估計應(yīng)該是別的什么的,編譯器或者lin什么的吧!總之這個得要大神級別的人來解決吧!

下面貼出代碼出錯的段:
               MOVS    R1, #0
                STR     R1, [R0]               
               
                LDR     R0, =SystemInit
                BLX     R0
                LDR     R0, =__main
                BX      R0
第二處:
   ptcb1->OSTCBNext = (OS_TCB *)0;                              /* Last OS_TCB                        */
#if OS_TASK_NAME_SIZE > 1
    ptcb1->OSTCBTaskName[0] = '?';                               /* Unknown name                       */
    ptcb1->OSTCBTaskName[1] = OS_ASCII_NUL;
#endif
    OSTCBList               = (OS_TCB *)0;                       /* TCB lists initializations          */
    OSTCBFreeList           = &OSTCBTbl[0];

什么鳥問題呢??????繼續(xù)搞吧!白搭了!忙碌中。。。。。

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表