求教:关于uCOS在STC15F2K32S2上的移植
最近做个小东西,准备用STC15F2K32S2+uCOS 2.52来做,主要目的是学习ucos,于是在坛子上搜了基于STC 1T的uCOS,结果发现了下边这个帖子https://www.amobbs.com/thread-5635747-1-1.html
这个是使用的IAP15W4K58S4
在我的理解里边,这两个片子(STC15F2K32S2和IAP15W4K58S4)没有本质上的区别,那么应该就只是改改寄存器地址就好了的
参考了模板和uCOS的相关资料之后,就更加有疑问了
uCOS移植需要改三个文件:OS_CPU.H,OS_CPU_C.C,OS_CPU_A.ASM
相比于从其他平台移植到STC 1T51,好像并没有什么需要修改,但是直接下载到STC15F2K32S2又是不能使用的。
请问,如果我想要在STC15F2K32S2上面使用ucos(即将基于IAP15W4K58S4的改成基于STC15F2K32S2的),应该怎么改呢?或者说是我的理解有根本上的错误,这两个片子差别很大? 顶一下LZ,有必要这么折腾吗? 51 的堆栈原因,导致非常不适合跑ucos ; 除非你的应用程序堆栈不使用外部RAM 好象是在Keil 里面要设置一下,
在options for target->C51,勾上don't use absolute register accesses
LearningASM 发表于 2018-3-2 12:25
顶一下LZ,有必要这么折腾吗?
主要目的是学习,这个是个用51就能搞定东西,恰恰又对51最熟悉,所以就选了这个 polarbear 发表于 2018-3-2 14:55
51 的堆栈原因,导致非常不适合跑ucos ; 除非你的应用程序堆栈不使用外部RAM ...
外部ram?我链接中例程就用了啊,好像是用了九百多字节的xdata,当然这个是内部扩展ram 墨逸、 发表于 2018-3-3 08:20
外部ram?我链接中例程就用了啊,好像是用了九百多字节的xdata,当然这个是内部扩展ram ...
51的堆栈 不像其他的CPU , 可以指向XDATA (所谓的扩展RAM); 只能指向内部的RAM(0-256);
UCOS 任务切换时, (其他的CPUSP堆栈寄存器改下地址就OK),但是51还要COPY 扩展RAM的数据到 内部RAM,堆栈处理效率非常低 这是最后的编译结果,至于你说的COPY 扩展RAM的数据到 内部RAM导致的处理效率低对我来讲应该是没关系的,对实时性要求不算高 LearningASM 发表于 2018-3-2 17:36
好象是在Keil 里面要设置一下,
在options for target->C51,勾上don't use absolute register accesses
...
按照您说的方式,我设置过之后重新编译,但是还是无法正常使用 8位的MCU 不适合 ucos 结贴:虽然还是不太明白为什么那个程序用不了,但是我已经找到了一个能用的
资源占用如下:
Program Size: data=166.0 xdata=705 const=264 code=5903
传上来吧,有人需要就拿去
基于STC15系列(同时适用IAP15W4K58S4和STC15F2K32S2,更多未测试)的UCOS
墨逸、 发表于 2018-3-13 08:56
结贴:虽然还是不太明白为什么那个程序用不了,但是我已经找到了一个能用的
资源占用如下:
Program Size:...
这些网络上的资源也就是能玩玩学习下,真正用在产品上要么是买商业发行的,要么是自己逐行阅读弄清楚了。
页:
[1]