完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近学习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 谢谢!!!! |
|
相关推荐
3个回答
|
|
|
|
|
|
堆栈处理的时候做过了堆栈的备份的!也就是把堆栈放到外RAM,调用的时候把堆栈移到内部RAM. |
|
|
|
不错哦 谢谢楼主分享
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
787 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程介绍之烧写所需镜像
888 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写方法
608 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
905 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核源代码的目录结构和文件说明
821 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 23:13 , Processed in 0.550766 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号