suntuwu 发表于 2024-6-26 13:15:02

6666

suntuwu 发表于 2024-6-26 13:15:16

6666

gzlai 发表于 2024-6-26 17:09:58

用汇编,学习内部原理的门槛又增加了{:4_167:}

CosyOS 发表于 2024-6-27 19:44:03

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

新版特性:
一、51、251,移植 和 中断挂起服务的装载,均采用纯汇编实现。
二、arm,移植 和 中断挂起服务的装载,同时提供了 内嵌汇编 和 纯汇编 两套方案,默认启用内嵌汇编方案,提高易用性。
三、新增了 Port 文件夹,里面均为 移植文件,包括 c、h、s。


syscfg.h:系统配置文件
mcucfg_8051.h、mcucfg_80251.h、mcucfg_cmx.h:mcu配置文件
mcucfg_8051.inc、mcucfg_80251.inc:用户自定义任务切换现场保护,汇编语言保护方案
Port/port_xxx:移植文件
port_cmx_s.c:内嵌汇编移植(默认自动启用)
port_cmx_s.s:纯汇编移植

工程模板 附带 测试程序 同时发布,请顶楼下载!



CosyOS 发表于 2024-6-27 20:53:18

本次的测试程序,
恢复/挂起测试、清除阻塞测试、二值信号量测试、事件标志组测试、零中断延迟测试,
均增加了 中断挂起服务FLAG队列 的测试方案,
在相应的 C 文件中可配置 是采用 中断挂起服务FIFO队列 还是 中断挂起服务FLAG队列?
默认采用 中断挂起服务FIFO队列。

事件标志组测试,另需在 系统配置文件中 配置 用户定时中断/查询总数。
动态内存测试,可能需要重新调整内存池指针和大小。
其它测试,有时可能也需要重新调整内存池指针和大小。
因为 无法一套配置适用于所有的测试情况。

默认 启用了 滴答钩子 和 挂起服务钩子,以配合 中断挂起服务FLAG队列 的测试。







CosyOS 发表于 2024-6-27 21:04:19

汇编文件,行不对齐的话,tab 设置为 4 就好了。
汇编文件都用的 tab ,以后 再调整为 空格。


Yang.Lian 发表于 2024-6-29 20:32:37

本帖最后由 Yang.Lian 于 2024-6-29 20:34 编辑

我建议将内存管理器精简成一个数据结构
再有该数据结构转成字符展示的任务管理器


这样的话,
比如四个UART都用了,就没法同时显示任务管理器了,但是我有一个UART是MODBUS,我可以把任务管理器融入到MODBUS中
,当前没有简单的做法,我只能通过改OS中的taskmgr来实现

实际上我一般不会去改 OS 的代码,主要是担心影响稳定性

如果通过一个数据结构或者某个API来实现任务管理器,那么把任务管理器变成何种形式就灵活很多

tzz1983 发表于 2024-6-30 11:57:05

@CosyOS有个问题需要您帮忙, 请教一下,251内核, 用RTOS时,使用XDATA 有什么特别要注意的地方吗?

我这几天调UCOS@251核时, 发现把 任务控制块放在XDATA区时运行不稳定,找不出原因.

之前看官方FreeRTOS移植原创时, 看到一句话


这说明以前原FreeRTOS移植作者也可能遇到了同样的问题.

是不是有什么地方我没有考虑到呢?希望获得帮助.

另外@神农鼎,FreeRTOS@STC官方移植的作者是谁呢, 帮忙问一下, 之前使用XDATA是遇到了什么问题, 如果有共性, 或许对我有帮助!

CosyOS 发表于 2024-6-30 13:33:36

tzz1983 发表于 2024-6-30 11:57
@CosyOS有个问题需要您帮忙, 请教一下,251内核, 用RTOS时,使用XDATA 有什么特别要注意的地方吗?

我 ...

根据我的经验,当内核对象在 XDATA 时,需注意以下事项:

1、generate reentrant fuctions,不要打勾。
虽然通过研究发现,一个可重入函数,即使局部变量被定义在xdata中,仍然还是分配在可重入栈中,
也就是“可重入优先原则”,但CosyOS只要是在大模型 Large 时,generate reentrant fuctions 打勾 就会出问题,未能找到确切原因。
此时,全局方案调整为 generate reentrant fuctions 不打勾,并添加控制命令 NOOVERLAY,需要可重入的函数,手动添加 reentrant。

2、4 Byte Interrupt Frame Size,不要打勾。
在CosyOS的实际测试中,只要内存模型为 Large 时,4 Byte Interrupt Frame Size 如果打勾,有些测试项 就会出问题。
这证明此时,PSW1 必须入栈保护。

3、Alias checking on pointer accesses
在CosyOS的实际测试中,Alias checking on pointer accesses 打勾,会导致一些问题产生,而是否产生这些问题,仿佛与内存模型无关。
CosyOS 建议用户在任何情况下,Alias checking on pointer accesses 都不要打勾。



主要就这3点,你可以调整下试一试。

tzz1983 发表于 2024-6-30 18:52:19

本帖最后由 tzz1983 于 2024-6-30 18:54 编辑

CosyOS 发表于 2024-6-30 13:33
根据我的经验,当内核对象在 XDATA 时,需注意以下事项:

1、generate reentrant fuctions,不要打勾。

我这几天调UCOS@251核时, 发现把 任务控制块放在XDATA区时运行不稳定,
话说,你说的所有选项我都尝试了一遍, 无果!

真的是很无耐, 控制块放在EDATA, 一切正常.
一旦放在XDATA, 就会随机出再一些问题 ,(比如有的任务直接就不运行了) , 偶尔也会出现重启.
仔细检查了代码, 真没什么问题呀.

几个有意思的点:
1. 不改代码的情况下, 只调整时钟频率, 有些频率运行正常 , 比如 35M , 正常运行几个小时不出问题. 换24M, 几分钟甚至几十秒就出问题.
2. 随变在哪个地方添加一个 _nop_() 指令, 也会有不同的运行结果, 比如:


头搞炸了, 产生怀疑了!!!

最新进展情况, 有一个意外的发现, 之前串口1驱动用了DMA,我怀疑DMA 读写 XDATA 会和CPU 抢总线, (当然规格书上说不会, 我自己猜的)
于是改成了中断方式, 结果, 现在测试了两个多小时, 一切正常,令人产生遐想啊



页: 69 70 71 72 73 74 75 76 77 78 [79] 80 81 82 83 84 85 86 87 88
查看完整版本: 全局不关总中断的 RTOS,CosyOS-III-V1.2.0, 送 擎天柱-AI8051U转89C52核心板