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

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

 火... [复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:216
  • 最近打卡:2025-05-05 08:15:28
已绑定手机

0

主题

9

回帖

164

积分

注册会员

积分
164
发表于 2024-7-3 14:00:58 | 显示全部楼层
Cos*** 发表于 2023-10-20 22:30
参会学习,【免费+包邮 送】:
【一箭双雕之USB转双串口,2个USB-CDC转串口+HID烧录】
【STC-USB Link1D,2 ...

你好我想问一下就是怎么领取就是在咱们这个一件双雕呢?

点评

【免费+包邮】 送/申样/采购 可上班时间加 如下您对应地区的客服 QQ或微信联系 加STC华南区客服刘经理QQ: 3398500488 ;微信:18106296592 要求 【免费+包邮】 送, 还免费教仿真 加STC华南区客服曹经理QQ:19338922  详情 回复 发表于 2024-7-3 14:35
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-05-04 20:54:20

5

主题

1127

回帖

4275

积分

荣誉版主

积分
4275
发表于 2024-7-3 14:35:57 | 显示全部楼层
北城南*** 发表于 2024-7-3 14:00
你好我想问一下就是怎么领取就是在咱们这个一件双雕呢?

【免费+包邮】 送/申样/采购 可上班时间加 如下您对应地区的客服 QQ或微信联系
加STC华南区客服刘经理QQ: 3398500488 ;微信:18106296592  要求 【免费+包邮】 送, 还免费教仿真  
加STC华南区客服曹经理QQ:1933892258 ;微信:18106296595 要求 【免费+包邮】 送, 还免费教仿真
加STC华东区客服聂经理QQ:2593903262;微信:18106296598  要求 【免费+包邮】 送, 还免费教仿真
加STC西北区客服孙经理QQ: 1347154513 ;微信:18106296593  要求 【免费+包邮】 送, 还免费教仿真
加STC华北区客服石经理QQ: 1638975601 ;微信:19952583876  要求 【免费+包邮】 送, 还免费教仿真
加STC华中区客服唐经理QQ:2571301708 ;微信:18106296589 要求 【免费+包邮】 送, 还免费教仿真
加STC东北区客服张经理QQ:3141888640 ;微信:19952583265   要求 【免费+包邮】 送, 还免费教仿真
加STC西南区客服张经理QQ:3141888640 ;微信:19952583265   要求 【免费+包邮】 送, 还免费教仿真
工作时间:  8:30-12:00,13:00-17:30(周一 到 周五, 法定节假日除外)

【免费+包邮】 送/申样/采购传统电话热线:0513-55012928、0513-55012929、0513-55012966
工作时间:  8:30-12:00,13:00-17:30(周一 到 周五, 法定节假日除外)

以后技术咨询直接到 STC专业的技术支持论坛 www.STCAIMCU.com 进行技术支持,

不愿意提供详细联系信息申请【免费+包邮送】的芯片和仿真脱机烧录设备的:
===可直接微信收索:STCMCU; 即可进入 【STCMCU微信小商城】购买,也很方便


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-02 10:53:24
已绑定手机

14

主题

145

回帖

498

积分

中级会员

积分
498
发表于 2024-7-3 14:57:02 | 显示全部楼层
课程一共就7集结束了吗?要是结束了我就开始看回放学习了

点评

结束了,欢迎观看回放  发表于 2024-7-3 20:28
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2323

积分

荣誉版主

积分
2323
发表于 2024-7-4 13:17:22 | 显示全部楼层
请教一个问题:  keil C251编译器

u8 xdata abc[512] _at_ (4096);

这样是一个绝对定位,

假如我只是要四字节对齐, 并不需要绝对定位, keil C251编译器有对应的指令吗?

点评

别说,还真有这样的功能, C251示例: int x __attribute__((aligned (4))); // Aligns on 4-byte boundary A251示例: var1: DSB 1 ALIGN 5 ; align to 2^n(32)byte boundary  详情 回复 发表于 2024-7-4 13:57
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-05-04 20:54:20

5

主题

1127

回帖

4275

积分

荣誉版主

积分
4275
发表于 2024-7-4 13:57:25 | 显示全部楼层
本帖最后由 CosyOS 于 2024-7-4 13:59 编辑
tzz1*** 发表于 2024-7-4 13:17
请教一个问题:  keil C251编译器

u8 xdata abc[512] _at_ (4096);

别说,还真有这样的功能,

C251示例:
int x __attribute__((aligned (4)));  // Aligns on 4-byte boundary

A251示例:
var1:   DSB     1
        ALIGN   5       ; align to 2^n(32)byte boundary


所以可以:
u8 xdata abc[512] __attribute__((aligned (4)));


点评

感谢迟总指导, 话说你是怎么办到这么快就知道作案的呢? 我这边的问题也有些眉目了, 其中一个小问题是内存管理要求传入的首址是对齐 "普能指针宽度". 我正好关掉了传入参数检查功能, 以前没发现这个问题. 另外  详情 回复 发表于 2024-7-4 15:31
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2323

积分

荣誉版主

积分
2323
发表于 2024-7-4 15:31:02 | 显示全部楼层
本帖最后由 tzz1983 于 2024-7-4 15:32 编辑
Cos*** 发表于 2024-7-4 13:57
别说,还真有这样的功能,

C251示例:



感谢迟总指导, 话说你是怎么办到这么快就知道作案的呢?

我这边的问题也有些眉目了,
其中一个小问题是内存管理要求传入的首址是对齐 "指针宽度".  
我正好关掉了传入参数检查功能, 以前没发现这个问题.

另外用XDATA出现水土不服的情况也有所改善
主要原因还是各种类型指针的转换造成的,  C251的指针类型太多了
相互转换的时候偶尔会出错

下面贴一点比较有意思的代码:

截图202407041519029041.jpg

看结果:
截图202407041519468695.jpg

搞笑吧, 第二次赋值也是加强制转换(u8 xdata*)addr , 但强制转换的作用好像消失了,  我的1呢, 不见了!

再来看一个:
截图202407041522527948.jpg

截图202407041523501612.jpg

第一次判断 为两个指针不相等,  这是肯定的, 本来就是两个不相等的地址.
但后面两句表明, 他们都可以和NULL相等, 有没有点自先矛盾的感觉

为了应对这种隐患, 我经常干这个事情:
char xdata bNULL _at_ 0;  //把这个地址占掉, 谁也别想用


点评

研究很仔细,指针确实是有很多说法,不同编译器对指针也都有不同的理解, 对指针的处理是容易出各种问题的,尤其是 C251。 以前,C51、C251,都没用到 字节对齐 功能,今天你问这个问题,我就查了一下 keil手册,  详情 回复 发表于 2024-7-4 18:12
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-05-04 20:54:20

5

主题

1127

回帖

4275

积分

荣誉版主

积分
4275
发表于 2024-7-4 18:12:19 | 显示全部楼层
tzz1*** 发表于 2024-7-4 15:31
感谢迟总指导, 话说你是怎么办到这么快就知道作案的呢?

我这边的问题也有些眉目了,

研究很仔细,指针确实是有很多说法,不同编译器对指针也都有不同的理解,
对指针的处理是容易出各种问题的,尤其是 C251。

以前,C51、C251,都没用到 字节对齐 功能,今天你问这个问题,我就查了一下 keil手册,
才有的答案。
截图202407041811518243.jpg


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:306
  • 最近打卡:2025-05-05 09:15:18

0

主题

24

回帖

411

积分

中级会员

积分
411
发表于 2024-7-4 23:40:15 | 显示全部楼层
有这样一个应用场景,使用CosyOS自带的全局变量操作,定义一个全局变量,中断中只写,任务中只读,还需要定义全局变量的副本并在全局变量钩子中更新副本吗?

点评

不需要,全局变量副本 是专门用来应对 中断中的全局变量的只读访问的。 对于你的情况,中断中只写,如果全局变量是非原子访问类型, 中断中直接调用相应的写服务,任务中在任务临界区中访问即可。 中断中写访问:  详情 回复 发表于 2024-7-5 04:21
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-05-04 20:54:20

5

主题

1127

回帖

4275

积分

荣誉版主

积分
4275
发表于 2024-7-5 04:21:36 | 显示全部楼层
本帖最后由 CosyOS 于 2024-7-5 04:24 编辑
stc-x*** 发表于 2024-7-4 23:40
有这样一个应用场景,使用CosyOS自带的全局变量操作,定义一个全局变量,中断中只写,任务中只读,还需要定 ...

不需要,全局变量副本 是专门用来应对 中断中的全局变量的只读访问的。
对于你的情况,中断中只写,如果全局变量是非原子访问类型,
中断中直接调用相应的写服务,任务中在任务临界区中访问即可。

中断中写访问:
写全局变量:iWriteGVar(gv, lv);
写全局数组:iWriteGAry(gp, lp, size);
写全局字符串:iWriteGStr(gs, ls);

任务中访问:
uEnterCritical;
访问全局变量,读、写、自运算,皆可;
uExitCritical;

其实,关键是要看在中断中做什么?任务中随便做什么都无所谓。
1、中断中写访问:直接调用写服务。
2、中断中读访问:全局变量副本。
3、中断中自运算:其它中断中有写访问 且 可能出现高速并发吗?
      No:挂起服务调用,iPendSVC(fp); // 其它中断中没有写访问 ||  即使有,中断的频率也没有那么高,不会出现高速并发(高速并发写同一个全局变量)
      Yes:挂起服务钩子,pendsv_hook();


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-05-04 20:54:20

5

主题

1127

回帖

4275

积分

荣誉版主

积分
4275
发表于 2024-7-7 15:19:24 | 显示全部楼层
当前,CosyOS-II V3.0.0,
C51,对 可重入栈 的支持存在 bug;
C51、C251,用户自定义任务切换现场保护 存在功能漏洞;
过两日将发布新版修正,
请大家先不要用上述两个功能。


回复 支持 1 反对 0

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-5 14:44 , Processed in 0.124066 second(s), 119 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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