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

uC/OS-II@8H8K64U, 51核移植版本!杨教授:51核上激动人心的RTOS生态已具备

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:329
  • 最近打卡:2025-06-03 22:03:04

0

主题

46

回帖

1104

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:220
  • 最近打卡:2025-06-15 21:32:42

10

主题

134

回帖

1205

积分

金牌会员

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

点评

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

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-05-28 09:08:49

34

主题

1094

回帖

2446

积分

荣誉版主

积分
2446
发表于 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, 即可

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:220
  • 最近打卡:2025-06-15 21:32:42

10

主题

134

回帖

1205

积分

金牌会员

积分
1205
发表于 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
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-05-28 09:08:49

34

主题

1094

回帖

2446

积分

荣誉版主

积分
2446
发表于 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()大多数情况都是用于调试, 将就一下它也没什么.


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:242
  • 最近打卡:2025-06-15 20:49:01
已绑定手机

25

主题

353

回帖

1864

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:220
  • 最近打卡:2025-06-15 21:32:42

10

主题

134

回帖

1205

积分

金牌会员

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

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

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:186
  • 最近打卡:2025-03-06 09:49:49

14

主题

133

回帖

1225

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:66
  • 最近打卡:2025-06-13 08:18:41
已绑定手机

17

主题

472

回帖

1337

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:306
  • 最近打卡:2025-06-15 06:48:42

0

主题

206

回帖

1706

积分

金牌会员

积分
1706
发表于 2024-11-1 14:33:01 | 显示全部楼层
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-16 04:44 , Processed in 0.140319 second(s), 116 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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