ARM技术william hill官网
直播中

ronga245

12年用户 590经验值
私信 关注
[问答]

uc/OS移植到STC平台的问题?

最近学习uc/OS的过程中,准备把uc/OS V2.91 移植到STC12C5A60S2平台上!我移植裁剪之后,系统有一个小问题:
   STC12C5A60S2的RAM 按道理是够的(1280字节),因为我移植后的花费RAM,只有400左右!但是有一个很奇怪的现象;就是在我用XDATA模式下编译所有的都通过,仿真也正常,但是烧写到单片机上就不能正常工作了!!但是如果我选择PDATA模式下?出现一个警告(我猜测是因为RAM超过256Byte)如下图


内容是:
*** WARNING L18: SEGMENT DOES NOT FIT IN PDATA PAGE
    SPACE:   XDATA   
    SEGMENT: ?PD?OS_CPU_C
    LENGTH:  0083H

    但是实际上烧写到单片机里面时程序运行都正常,也就是有警告的时候(PDATA模式)反而系统跑起来了!


     而且我尝试给系统添加多任务是,我最多跑到3个任务,系统正常!!但是在多跑一个任务(4个任务)时,即使在PDATA模式下系统也不能正常工作。堆栈大小我设置的是22u。但是RAM绝对没有用完啊!因为3个任务跑起来只有了400Byte左右。1280Byte按道理在这样的情况下跑七八上十个简单的任务应该没有问题吧!!


求指教!!!现在不知道是什么问题!初步判定是不是在访问RAM的时候只能访问到外部的00H-FFH(看数据手册上讲的是利用MOVX @Ri指令只能访问到外部00H到FFH)也就是内部256+外部256 = 512BYTE 。如图:

但是实际上可能是这个问题!我又做了一个简单的测试,就是增加变量;结果很奇怪:如下图,现象在结果图片中:

求大虾指点到底是怎么回事?因为我可能需要在uc/OS上跑一个系统。不是简单做个测试而已!所以希望找出问题的原因,不胜感激!!!!


    下面是我移植的代码?整个系统工程,用的是Keil for 8051 V9.50版本,应该uVision4都可以吧?自己也对系统的一部分做了中文注释!也可以做供移植的爱好者参考!求帮助!!
http://pan.baidu.com/share/link?shareid=529015&uk=1191512093

谢谢!!!!
已退回10积分

回帖(3)

h1654155199.5148

2015-9-28 18:03:20
印象,如果在51上移植,栈不能按通常的办法处理,要专门做一个备份

具体的我忘了,你GOOGLE一下资料
举报

ronga245

2015-9-28 18:16:41
引用: 善良的小包子 发表于 2015-9-28 18:03
印象,如果在51上移植,栈不能按通常的办法处理,要专门做一个备份

具体的我忘了,你GOOGLE一下资料

堆栈处理的时候做过了堆栈的备份的!也就是把堆栈放到外RAM,调用的时候把堆栈移到内部RAM.
举报

李振威

2015-9-29 01:04:20
不错哦 谢谢楼主分享
举报

更多回帖

发帖
×
20
完善资料,
赚取积分