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

全局不关总中断的 RTOS,CosyOS-III-V1.2.0, 送 擎天柱-AI8051U转89C52核心板

 火... [复制链接]

5

主题

1208

回帖

4820

积分

荣誉版主

积分
4820
 楼主| 发表于 2024-11-8 10:01:07 | 显示全部楼层
sdw*** 发表于 2024-11-7 17:12
能否介绍一下
/* PendSV struct */注释之下的各结构体用途。

中断挂起服务_FIFO
在中断中调用的服务,不在本地执行,而是把服务的内容写入局部的结构体中,
再把结构体指针入 PendSV_FIFO,再触发 PendSV,而后在 PendSV 中执行。

此处的 PendSV struct 以后将调整为 中断挂起服务_FIFO 结构体类型定义。
当用户在中断中调用 中断挂起服务_FIFO 时,根据不同的服务功能,将采用
这些 结构体类型 来定义 局部的结构体变量,来装载 服务的内容。

如第一个结构体类型定义:
typedef struct
{
        const s_u8_t svid; /*!< 服务ID */
        s_tasknode_tsp node; /*!< 任务句柄 */
}sp_task_ts;
typedef sp_task_ts _STATIC_MEM_ *sp_task_tsp;

当在中断中调用以下4项 中断挂起服务_FIFO 时,
会在局部定义此类型的结构体变量,来装载 服务的内容。
iResumeTask(task)、
iSuspendTask(task)、
iDeleteTask(task)、
iClearBlock(task)。

下面以 恢复任务 为例:
#define iResumeTask(task)        sPSV_ResumeTask(u_taskhandle_##task)

/** 恢复任务 */
#define sPSV_ResumeTask(load) \
do{ \
        static sp_task_ts u_psv = {OS_SVID_RESUMETASK, OS_NULL}; /*!< 装载服务内容,其中服务ID为常量:OS_SVID_RESUMETASK */ \
        u_psv.node = load; /*!< 装载服务内容,任务句柄为变量,需动态装载 */ \
        mPendSV_FIFOLoad; /*!< 服务的结构体指针 &u_psv 入 PendSV_FIFO,再触发 PendSV */ \
}while(false)

s_u8_t sPendSV_Handler(void) MCUCFG_C51USING
{
        /* 中断挂起服务_FIFO 执行服务 */
        #if MCUCFG_PENDSVFIFO_DEPTH > 0
        mPendSV_FIFOHandle;
        #endif

mPendSV_FIFOHandle,按 先入先出,依此取出 服务的结构体指针,
再获取 SVID,而后调用 函数指针 执行服务。

中断挂起服务_FIFO 相关的技术细节还有很多,先介绍个大概吧。


回复

使用道具 举报 送花

0

主题

2

回帖

28

积分

等待验证会员

积分
28
发表于 2024-11-8 16:19:17 | 显示全部楼层
本帖最后由 cylnpy 于 2024-11-8 17:17 编辑

CosyOS最新版下载是在首页吗,首页 CosyOS-II-STC32G-TEST-V3.0.1-20240707-1工程模板编译报中断号0~31错误是哪里设置不对吗。
捕获.PNG

点评

看这里: https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4100&extra=page%3D5  详情 回复 发表于 2024-11-8 21:32
回复

使用道具 举报 送花

已绑定手机

0

主题

126

回帖

168

积分

注册会员

积分
168
发表于 2024-11-8 17:11:11 来自手机 | 显示全部楼层
51跑os太猛了
回复

使用道具 举报 送花

已绑定手机

4

主题

115

回帖

2120

积分

金牌会员

积分
2120
发表于 2024-11-8 18:29:28 | 显示全部楼层

嘎嘎一嘎子
回复

使用道具 举报 送花

5

主题

1208

回帖

4820

积分

荣誉版主

积分
4820
 楼主| 发表于 2024-11-8 21:32:37 | 显示全部楼层
本帖最后由 CosyOS 于 2024-11-8 22:53 编辑
cyl*** 发表于 2024-11-8 16:19
CosyOS最新版下载是在首页吗,首页 CosyOS-II-STC32G-TEST-V3.0.1-20240707-1工程模板编译报中断号0~31错 ...
下载就在首页顶楼!
看这里:
https://www.stcaimcu.com/forum.p ... 4100&extra=page%3D5
回复

使用道具 举报 送花

0

主题

116

回帖

104

积分

注册会员

积分
104
发表于 2024-11-9 08:31:15 | 显示全部楼层
学习了
回复

使用道具 举报 送花

已绑定手机

0

主题

126

回帖

168

积分

注册会员

积分
168
发表于 2024-11-10 14:16:56 来自手机 | 显示全部楼层
学习
回复

使用道具 举报 送花

已绑定手机

0

主题

126

回帖

168

积分

注册会员

积分
168
发表于 2024-11-10 14:16:58 来自手机 | 显示全部楼层
学习
回复

使用道具 举报 送花

已绑定手机

22

主题

85

回帖

299

积分

中级会员

积分
299
发表于 2024-11-13 15:36:05 | 显示全部楼层
这个得认真学习一下
回复

使用道具 举报 送花

5

主题

1208

回帖

4820

积分

荣誉版主

积分
4820
 楼主| 发表于 2024-11-13 21:19:42 | 显示全部楼层
本帖最后由 CosyOS 于 2024-11-14 09:52 编辑

CosyOS-II 最新版 V3.1.0 发布!


新版特性:
1、内核文件已加入大量注释,并支持 doxygen
2、部分结构体成员、服务函数形参和局部变量,重新命名,新名称更为科学、规范;
如:
htask:任务句柄
hmut:互斥信号量句柄
hbin:二值信号量句柄
hsem:计数信号量句柄
htbox:信箱句柄
hmbox:邮箱句柄
hque:队列句柄
hmem:线程内存句柄
。。。
3、重新封装了 定时中断/查询 的数据结构。
4、全局变量钩子 调整为 副本钩子 void copy_hook(void);。
5、中断中的全局变量读访问 有所调整:
/* 读哪一个全局变量?*/
#define iWhichGVar_Read          s_sign_updatecopy /** \return bool,true:读正本,false:读副本)*/

6、sv_int_pend_fifo.c 中,加入了 手动裁剪开关:
截图202411132027365493.jpg

如 恢复任务:
截图202411132028589570.jpg

7、系统配置文件中,加入了 Starter 创建模式:
截图202411132031312098.jpg

8、增加了 API 中断中触发 PendSV:
/*
* 触发PendSV
* 在用户中断中,当采用中断挂起服务FLAG队列执行服务时,
* 用户在设置标志位后需手动触发PendSV,而后在 pendsv_hook() 中执行服务。
*/

#define iPendSV_Set  mPendSV_Set



专业版测试程序的调整:
1、完善了 事件标志组 测试例程。
2、邮箱测试例程中,当传输指针时:
     如果邮件的数据类型为非原子访问类型,应酌情考虑“写邮件”“读邮件”之间的互斥访问问题。
     关于这个问题,已调整了相关代码和注释。

其实,消息队列也同样存在这个问题,当传输指针时:
如果消息的数据类型为非原子访问类型、非 常量,也应考虑“写消息”“读消息”之间的互斥访问问题。
对于 “发送邮件”“接收邮件”之间、“发送消息”“接收消息”之间,它们的互斥访问是由 OS内核服务 保证的,用户无需多虑。
同理,这个问题对于其它 RTOS 来说可能也同样存在,用户应予以重视!


3、增加了 全局变量访问示例:
截图202411132050265453.jpg
示例中包括了非原子访问全局变量、全局数组、全局字符串,
分别在 任务、滴答、中断,中的,读访问、写访问、自运算;
针对全局变量自运算,还分别给出了
挂起服务调用 iPendSVC(fp)挂起服务钩子 pendsv_hook
两种方案的应用示例,是非常全面的。

注意:该示例程序不能进行编译测试,
当编译 Test 中的测试例程时,最好是移除该文件,
否则 C251会有警告,MDK 会消耗 你的电脑的CPU使用率。



稍后,将会在顶楼发布最新版测试例程。






回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-9-23 16:17 , Processed in 0.080130 second(s), 96 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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