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

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

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:306
  • 最近打卡:2025-04-30 20:31:49

0

主题

46

回帖

1012

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:177
  • 最近打卡:2025-04-30 13:52:43

10

主题

134

回帖

993

积分

高级会员

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

点评

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

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

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:177
  • 最近打卡:2025-04-30 13:52:43

10

主题

134

回帖

993

积分

高级会员

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

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


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:198
  • 最近打卡:2025-05-01 00:16:05
已绑定手机

24

主题

345

回帖

1629

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:177
  • 最近打卡:2025-04-30 13:52:43

10

主题

134

回帖

993

积分

高级会员

积分
993
发表于 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

回帖

1149

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-29 08:28:25
已绑定手机

17

主题

446

回帖

1173

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:265
  • 最近打卡:2025-05-01 07:25:06

0

主题

206

回帖

1522

积分

金牌会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 20:14 , Processed in 0.129164 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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