stc-xuewei 发表于 2024-5-4 20:12:21

使用uDelay_s(~0)延时语句,编译后有报警,如下所示:
Sources\Test\test.c(23): warning C188: 'constant': value truncated

但不影响运行,是否有隐含问题?

CosyOS 发表于 2024-5-4 20:59:18

本帖最后由 CosyOS 于 2024-5-4 21:10 编辑

stc-xuewei 发表于 2024-5-4 20:12
使用uDelay_s(~0)延时语句,编译后有报警,如下所示:
Sources\Test\test.c(23): warning C188: 'constant' ...
你说的这个问题,我仔细的研究了一下,还真是个大问题!
你可立大功了!!!

郑重通知大家:
以后只要是想在任务中进行“无限延时”的,
API一律使用:uDelay_tc(~0);以滴答周期为单位进行无限延时。
无论是 STC8、STC32、ARM,都是如此。
否则,即使编译器没报警,~0 被编译后也会变成非最大值的滴答周期,
并最终导致“无限延时”变为了不确定的“有限延时”。


特此公告!

其它含有超时机制的服务,无限等待结果成功,不受影响。
如 uTakeBin(bin, ~0);
因为所有含有超时机制的服务,超时时间的单位就是滴答周期。



stc-xuewei 发表于 2024-5-4 21:53:47

阻塞和挂起是两个概念吗?

CosyOS 发表于 2024-5-4 22:53:49

本帖最后由 CosyOS 于 2024-5-4 22:59 编辑

stc-xuewei 发表于 2024-5-4 21:53
阻塞和挂起是两个概念吗?
是的。
阻塞的任务,可以用“清除阻塞”来使其就绪并运行;
挂起的任务,可以用“恢复任务”来恢复该任务的原状态。


看 Demo 示例程序,具体同步过程是如何应用的。
没事多看下已发布的课程资料pptx。

DIY365 发表于 2024-5-5 19:38:29

很强大!!!顶起{:4_174:}{:4_174:}{:4_174:}

stc-xuewei 发表于 2024-5-5 22:12:00

是不是邮箱发送的只能是指针?

CosyOS 发表于 2024-5-6 01:06:04

本帖最后由 CosyOS 于 2024-5-6 07:42 编辑

stc-xuewei 发表于 2024-5-5 22:12
是不是邮箱发送的只能是指针?

是的也不是。
说“是的”,是因为传输的的确是指针:(void *)类型;
说“不是”,是因为在满足特定条件时,也可传输数据;

特定条件是:
C51下,sizeof(数据类型) <= 3;
C251、MDK下,sizeof(数据类型) <= 4;
并且,传输的数据必须为真值。



示例一 - 传输指针

uCreateMailbox( mbox_2 );

发送线程:
static xxx_t m; // xxx_t 可为任意类型,m 可为任意值
uSendMail( mbox_2, &m );

接收线程:
xxx_t *m = (xxx_t *)uRecvMail( mbox_2, ~0 );

if(m){ 使用 *m; }



示例二 - 传输数据

uCreateMailbox( mbox_2 );

发送线程:
uSendMail( mbox_2, (void *)m ); // m可以是立即数,必须为真值。

接收线程:
uint m = (uint)uRecvMail( mbox_2, ~0 );

if(m){ 使用m; }



如果仅传输真值数据,可考虑采用“飞信”,比邮箱效率高。
飞信传输的数据类型:
C51:u8
C251:u16
MDK:u32
详情请查阅相关说明。

如果还有疑虑,也不必着急,下节课中会重点讲解!



CosyOS 发表于 2024-5-6 10:53:48

CosyOS-II 如何减少 内存 和 flash 占用

一、系统配置文件中,要做针对性的裁剪,禁用不使用的功能。

二、如果禁用 任务管理器,内存 和 flash 占用,都将会有一个质的减少。
      对于系统资源紧缺的MCU,建议用户禁用 任务管理器。

三、对于51、251(有时),由于采用 NOOVERLAY 技术,将导致 REMOVEUNUSED 失效。
      所以,更需做针对性的裁剪,禁用不使用的功能。

      1、大概率,很少有人会在 滴答 中调用服务,即便调用,也是极少的。
         所以,可以考虑移除 sv_tick.c ,或在该文件中删除用不到的服务函数。

      2、在极端情况下,所有 sv_xxx.c 文件中的服务函数都可逐一排查,删除用不到的服务函数。

      3、手动移除用户自己的、未使用的,函数和全局变量。





380091044 发表于 2024-5-6 11:56:38

CosyOS 发表于 2024-5-6 10:53
CosyOS-II 如何减少 内存 和 flash 占用

一、系统配置文件中,要做针对性的裁剪,禁用不使用的功能。


这个实用,支持

stc-xuewei 发表于 2024-5-6 22:15:43

单次同步,是不是一个发送源,一个线程接收?
并发同步,是不是多个发送源,一个线程接收?
页: 50 51 52 53 54 55 56 57 58 59 [60] 61 62 63 64 65 66 67 68 69
查看完整版本: 全局不关总中断的 RTOS,CosyOS-III-V1.2.0, 送 擎天柱-AI8051U转89C52核心板