找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3951|回复: 0
收起左侧

关于UCOS-ii操作系统在M0上移植的若干问题!括弧--焦头烂额!

[复制链接]
ID:82781 发表于 2015-6-13 16:32 | 显示全部楼层 |阅读模式
搞了三天的UCOS的移植,真是悲剧了,第一天忙着到处找源码!第二天忙着搭建平台,第三天开始调试,本想到会一帆风顺,怎曾想出现了一个让我很傻比的问题,那就是出现了一个异常 HardFault_Handler  ,这个异常,找资料啊看代码,找资料啊看代码,一天都在这样循环着。这个异常网上说是堆栈溢出或者内存越界,开始我也把这两句话封为这个毛病的要点,开始单步跟踪。第一次跟踪发现在加载main函数的时候PC指针直接弹入0X0000000,导致程序跳转到起始地址,然后紧接着调到0X00000FC这个地址,这个地址就是HardFault_Handler 的入口地址,显然,没有栈溢出的问题,那么就是内存越界老?显然也不成立,因为在bootlodaeli里我并没有定义非法指针和数据,所以不会是这个问题!那又是什么问题呢?后来稀里糊涂的也不知道怎么搞的竟然可以加载MAIN函数,但是加载完了又跳到HardFault_Handler ,真他妈的悲剧啊,然后又是一通单步,结果是找到了出异常的地方在内核文件中的任务控制块TCB处,初始化就绪表正常,一旦到了TCB链表池就会出现错误,很头疼,开始锁定数组越界问题!但是实在是没数组或者指针没有初始化,全部是正常的!他就是不好用!怎么办?既不是内存越界也不是栈溢出(为了防止栈溢出我特意吧Stack_Size      EQU     0x00000800改成512字节),什么原因?。。。。。。。。。我估计应该是别的什么的,编译器或者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];

什么鸟问题呢??????继续搞吧!白搭了!忙碌中。。。。。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表