找回密码
 立即注册
查看: 15596|回复: 134

uC/OS-II @Ai8051U 移植版,AI8051U,32G8K64,32G12K128

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2023-10-20 11:19:26 | 显示全部楼层 |阅读模式
uC/OS-II @AI8051U_Xsmall+Large  PendSv切换任务, 2024/7/6 移植版  
===AI8051U【edata/2K + xdata/32K】, 32G8K64
edata/2K + xdata/6K】
迎接AI8051U到手, uC/OS-II @251_Xsmall+Large 版,

小容量edata的型号支持力度加大. 2K edata 多任务轻松运行

简介: 用于 32位8051 指令集内核上的 uC/OS-2.93 移植版本.
*支持 xsmalllarge  两种编译模式
*支持 指定OS全局变量存放于 edataxdata. 不受编译模式影响.
*支持 MSP+PSP 模式, 可大量节省edata的使用量.
*支持 不受OS管理的中断选项.

测试,
例程已包含并通过了 :
"计数信号量, 消息邮箱, 标志集, 邮箱队列, 互斥信号量, 内存管理, 软件定时器,
任务上锁/解锁,任务挂起/解挂,获取OS时间,统计任务,堆栈检查,"

的简单功能测试.

为方便网友AI8051U实验箱上做uC/OS-2的实验,
2024/9/8 添加了AI8051U实验箱uC/OS-2例程


AI8051U实验箱上的例程只做了三个简单任务。
类似一个空的框架,坛友们可以加入自己喜欢的内容。
任务A: 板载的8个LED闪烁.
任务B: 板载的数码管显示OS累积运行时间/秒。
任务C: 获取OS运行时间.
统计任务: 用printf()打印OS运行信息。
截图202409081020598953.jpg
最新版本, 2024/7/7
uCOS-II @251_Xsmall+Large.rar (195.35 KB, 下载次数: 296)


AI8051U实验箱上运行 uC/OS-II 的例程代码  2024/9/8
uCOS-II @AI8051U实验箱.rar (206.76 KB, 下载次数: 242)













1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!

本帖被以下淘专辑推荐:

回复

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2023-10-20 11:46:33 | 显示全部楼层
历史旧版本:

uCOSII_STC251(PendSv_V1.08).rar (196.03 KB, 下载次数: 167)

uCOSII_STC251(PendSv_V1.00).rar (1.11 MB, 下载次数: 162)

uCOSII_STC251(No_PendSv_V1.00).rar (193.67 KB, 下载次数: 157)

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:432
  • 最近打卡:2025-05-01 16:19:56

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2023-10-21 10:38:30 | 显示全部楼层
tzz1*** 发表于 2023-10-20 11:46
RETI "特殊指令"BUG描述:
"特殊指令"的概念参考STC32G用户手册
在UCOS应用中, 调用OSTimeDly() 或  OSSemPe ...

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:203
  • 最近打卡:2025-05-01 22:25:39

2

主题

100

回帖

448

积分

中级会员

积分
448
发表于 2023-10-21 11:55:54 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2023-10-26 17:07:17 | 显示全部楼层
用一个中断模拟PendSV 进行任务切换,这个方法好,可以不用跟踪中断嵌套了。51单片机中断时不会自动关中断,用变量来跟踪中断嵌套,实际上是有问题的。缺点就是会多一次中断响应和寄存器入栈、出栈操作。

点评

不管用什么办法, 切换任务都需要切换上下文,所以并没有多出什么  发表于 2023-10-28 08:07
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2023-10-28 08:37:09 | 显示全部楼层
本帖最后由 fan*** 于 2023-10-28 08:47 编辑
fanxsp 发表于 2023-10-26 17:07
用一个中断模拟PendSV 进行任务切换,这个方法好,可以不用跟踪中断嵌套了。51单片机中断时不会自动关中断 ...

应该是会多出一些机器周期,如果在中断中使一个高优级任务就绪,原来的方法是在中断退出时,就切换到高优级任务。中断模拟的方法是要退出当前中断,然后再响应中断,在中断里切换到高优先级任务。就是多了一次寄存器出栈、寄存器入栈及中断响应的时间。ARM 的PendSV指令就没有这个问题,PendSV指令是延时响应,是直接跟在最后退出的中断服务程序后面的,不用退出中断后再响应。ARM Cortex M0  M3 有末尾连锁,51没有。
截图202310280844383932.jpg

点评

不过现地这仍是最好的办法  发表于 2023-10-28 08:48
嗯 ,兄弟,你理解是对的,ARM这叫咬尾中断。  发表于 2023-10-28 08:47
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2023-10-28 09:03:36 | 显示全部楼层
fan*** 发表于 2023-10-28 08:37
应该是会多出一些机器周期,如果在中断中使一个高优级任务就绪,原来的方法是在中断退出时,就切换到高优 ...

用中断模拟的方法,我理解是可以不用跟踪中断嵌套了,也不用在每个中断退出时,调用OSIntExit()了,只要在系统服务函数中,根据需要触发中断就可以了。我理解ARM的PendSV指令,应该也是起这个作用。
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2023-10-28 09:21:33 | 显示全部楼层
本帖最后由 tzz1983 于 2023-10-28 09:25 编辑
fan*** 发表于 2023-10-28 09:03
用中断模拟的方法,我理解是可以不用跟踪中断嵌套了,也不用在每个中断退出时,调用OSIntExit()了,只要 ...

还是需要调用OSIntExit()了, 这里只是弱化了OSIntNesting的作用, 但是OSIntExit() 除了OSIntNesting还有一些别的操作,你去看一下原代码就清楚了。
除非你想得特别周到,自己做了OSIntExit()的大部分活,但是如果这样就没什么意义了,还不如简单的调用一下。并且,一般不是特别的原因,我们不要轻易去违背原OS的使用规则,有时候我们一下子可能想不到那么全面,不违背可以避免一些坑,这对产品来说很重要。

另外一个我想说的是, 如果在一个高优先级中断里没有使用任何OS应用,并且比它更高优先级的所有中断代码里也没有使用任何OS应用, 此时应该是可以不用OSIntNesting++和OSIntExit()的。
这个应该是和FREERTOS不受OS管理的中断差不多的道理,现在我还不敢最终确认,等我好好缕缕,如果没有问题,以后再发表出来。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2023-10-28 09:45:15 | 显示全部楼层
tzz1*** 发表于 2023-10-28 09:21
还是需要调用OSIntExit()了, 这里只是弱化了OSIntNesting的作用, 但是OSIntExit() 除了OSIntNesting还有 ...

嗯,移植的话,还是不要改动的好,我只是从原理上觉得可以取消。我也有做一个小的51的系统,自已用。就是觉得,51单片机 用变量跟踪中断嵌套不可靠。用中断模拟的办法,就可以完全解决这个问题了。这是我进这个论坛的一个大收获。
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2023-10-28 10:08:45 | 显示全部楼层
fan*** 发表于 2023-10-28 09:45
嗯,移植的话,还是不要改动的好,我只是从原理上觉得可以取消。我也有做一个小的51的系统,自已用。就是 ...

51内核我用的型号也比较多,但是51内核植入OS就是比较烦,因为256字节IDATA的限制,我曾经也想自己做一个合适51内核的东西,但一直想不出较好的方案,不知道你是怎么实现的,发个纯系统出来看看哈。并且你发出来对你自己也是很有好处的,你想不到的东西别人可能很轻易就能想到,这就是集大众力量的好处。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 23:19 , Processed in 0.123846 second(s), 121 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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