找回密码
 立即注册
楼主: tzz1983

uC/OS-II@8H8K64U, 51核移植版本!

[复制链接]

0

主题

21

回帖

120

积分

注册会员

积分
120
发表于 2024-9-12 11:48:26 | 显示全部楼层
很强,下载学习。
回复

使用道具 举报 送花

0

主题

39

回帖

1398

积分

金牌会员

积分
1398
发表于 2024-9-28 14:21:02 | 显示全部楼层
回复

使用道具 举报 送花

9

主题

135

回帖

2189

积分

金牌会员

积分
2189
发表于 2024-10-19 11:20:51 | 显示全部楼层
测试发现工程包含有51的启动代码,如果使用其他芯片,比如STC8H4K会直接崩溃,好像是初始化内存超范围导致,请教一下这个初始化代码一定需要吗。

点评

[attachimg]60369[/attachimg] 这里是因为51核必须用到模拟栈,要有对应的设置才能正常运行。 以上两个地方,比如4K xdata 的型号,1024*4 = 4096 转为16进制 = 1000H, 即可  详情 回复 发表于 2024-10-19 14:34
回复

使用道具 举报 送花

37

主题

1172

回帖

3078

积分

荣誉版主

积分
3078
 楼主| 发表于 2024-10-19 14:34:36 | 显示全部楼层
本帖最后由 tzz1983 于 2024-10-19 14:39 编辑
远行*** 发表于 2024-10-19 11:20
测试发现工程包含有51的启动代码,如果使用其他芯片,比如STC8H4K会直接崩溃,好像是初始化内存超范围导致 ...

截图202410191430472821.jpg


这里是因为51核运行UCOSII必须用到模拟栈,模拟栈的位置需要定位到XDATA的末尾,
如果模拟栈定位超出了XDATA的范围,一定是崩,

以上两个地方,比如4K xdata 的型号,1024*4  = 4096 转为16进制 = 1000H, 即可

回复

使用道具 举报 送花

9

主题

135

回帖

2189

积分

金牌会员

积分
2189
发表于 2024-10-19 14:44:04 | 显示全部楼层
tzz1*** 发表于 2024-10-19 14:34
这里是因为51核必须用到模拟栈,要有对应的设置才能正常运行。

以上两个地方,比如4K xdata 的型号 ...

非常感谢您的回复。另外有个建议:把打印的串口由P30\P31切换到其他端口,比如P36\P37等,如果在仿真的情况下输出数据到P30\P31端口会导致仿真运行失败,对于新手来说不知道是怎么回事。还有向您请教一下在任务里使用printf编译会报“重入”的警告,如何避免这个。

点评

打印的串口由P30\P31切换到其他端口, 众口难调, 使用者可以自己作简单更改. Keil C51大多数库函数都是不可重入,不建议多个任务调用同一个库函数. 如果强行调用, 除了编译器给出警告外, 还可能会出现一些不可预  详情 回复 发表于 2024-10-19 19:02
回复

使用道具 举报 送花

37

主题

1172

回帖

3078

积分

荣誉版主

积分
3078
 楼主| 发表于 2024-10-19 19:02:51 | 显示全部楼层
本帖最后由 tzz1983 于 2024-10-19 22:51 编辑
远行*** 发表于 2024-10-19 14:44
非常感谢您的回复。另外有个建议:把打印的串口由P30\P31切换到其他端口,比如P36\P37等,如果在仿真的情 ...

打印的串口由P30\P31切换到其他端口,  众口难调, 使用者可以自己作简单更改.

Keil C51大多数库函数都是不可重入,不建议多个任务调用同一个库函数.  
如果强行调用, 除了编译器给出警告外, 还可能会出现一些不可预知的其它错误. 所以尽量避免.

有些简单的库函数,比如memcpy(), 这种可以自己编写一个可重入的同功能的函数替代它.
但是重写printf()函数有一定的困难,
折衷的办法是,只在一个任务中使用printf()   比如统计任务每秒printf()一次,输出一些运行信息,
其它任务如果要使用printf(),则通过简单的给全局变量赋值传递值,  集中到统计任务打印.
毕竞printf()大多数情况都是用于调试, 将就一下它也没什么.


回复

使用道具 举报 送花

已绑定手机

27

主题

360

回帖

1649

积分

金牌会员

积分
1649
发表于 2024-10-19 21:37:51 | 显示全部楼层
还没接触到OS,学习学习!
回复

使用道具 举报 送花

9

主题

135

回帖

2189

积分

金牌会员

积分
2189
发表于 2024-10-19 21:54:22 | 显示全部楼层
tzz1*** 发表于 2024-10-19 19:02
打印的串口由P30\P31切换到其他端口,  众口难调, 使用者可以自己作简单更改.

Keil C51大多数库函数都是不 ...

非常感谢,又重新学习了一下c51的函数变量内存分配,原来c51函数默认是不可重入的呀,之前一直在标准C/C++编译器下写代码,一般函数都是可重入的。
回复

使用道具 举报 送花

16

主题

140

回帖

2423

积分

金牌会员

积分
2423
发表于 2024-11-1 11:00:17 | 显示全部楼层
回复

使用道具 举报 送花

已绑定手机

24

主题

687

回帖

2634

积分

金牌会员

积分
2634
发表于 2024-11-1 13:12:41 | 显示全部楼层
51跑OS就是瞎搞,51本身的架构不适合OS
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-9-19 22:56 , Processed in 0.079033 second(s), 102 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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