墨逸、 发表于 2018-3-2 10:08:14

求教:关于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的),应该怎么改呢?或者说是我的理解有根本上的错误,这两个片子差别很大?

LearningASM 发表于 2018-3-2 12:25:11

顶一下LZ,有必要这么折腾吗?

polarbear 发表于 2018-3-2 14:55:43

51 的堆栈原因,导致非常不适合跑ucos ;      除非你的应用程序堆栈不使用外部RAM   

LearningASM 发表于 2018-3-2 17:36:19

好象是在Keil 里面要设置一下,
在options for target->C51,勾上don't use absolute register accesses

墨逸、 发表于 2018-3-3 08:11:46

LearningASM 发表于 2018-3-2 12:25
顶一下LZ,有必要这么折腾吗?

主要目的是学习,这个是个用51就能搞定东西,恰恰又对51最熟悉,所以就选了这个

墨逸、 发表于 2018-3-3 08:20:37

polarbear 发表于 2018-3-2 14:55
51 的堆栈原因,导致非常不适合跑ucos ;      除非你的应用程序堆栈不使用外部RAM      ...

外部ram?我链接中例程就用了啊,好像是用了九百多字节的xdata,当然这个是内部扩展ram

polarbear 发表于 2018-3-3 09:09:48

墨逸、 发表于 2018-3-3 08:20
外部ram?我链接中例程就用了啊,好像是用了九百多字节的xdata,当然这个是内部扩展ram ...

51的堆栈 不像其他的CPU , 可以指向XDATA (所谓的扩展RAM); 只能指向内部的RAM(0-256);

UCOS 任务切换时, (其他的CPUSP堆栈寄存器改下地址就OK),但是51还要COPY 扩展RAM的数据到 内部RAM,堆栈处理效率非常低

墨逸、 发表于 2018-3-3 09:23:40

这是最后的编译结果,至于你说的COPY 扩展RAM的数据到 内部RAM导致的处理效率低对我来讲应该是没关系的,对实时性要求不算高

墨逸、 发表于 2018-3-5 16:01:51

LearningASM 发表于 2018-3-2 17:36
好象是在Keil 里面要设置一下,
在options for target->C51,勾上don't use absolute register accesses
...

按照您说的方式,我设置过之后重新编译,但是还是无法正常使用

FESENS 发表于 2018-3-7 14:19:41

8位的MCU 不适合 ucos

墨逸、 发表于 2018-3-13 08:56:54

结贴:虽然还是不太明白为什么那个程序用不了,但是我已经找到了一个能用的
资源占用如下:
Program Size: data=166.0 xdata=705 const=264 code=5903
传上来吧,有人需要就拿去
基于STC15系列(同时适用IAP15W4K58S4和STC15F2K32S2,更多未测试)的UCOS

makesoft 发表于 2018-3-13 15:02:36

墨逸、 发表于 2018-3-13 08:56
结贴:虽然还是不太明白为什么那个程序用不了,但是我已经找到了一个能用的
资源占用如下:
Program Size:...

这些网络上的资源也就是能玩玩学习下,真正用在产品上要么是买商业发行的,要么是自己逐行阅读弄清楚了。
页: [1]
查看完整版本: 求教:关于uCOS在STC15F2K32S2上的移植