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

FreeRTOS @32G12K128移植; FreeRTOS @AI8051U移植来了|重复造车轮

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-9-5 08:52:55 | 显示全部楼层
duro*** 发表于 2024-9-5 07:47
亲测,可以编译通过了。0警告。
Rebuild target 'FreeRTOS_STC32G_Demo'
compiling croutine.c...

恭喜你,成功迈入了RTOS的殿堂,学习RTOS对编程能力有很大助益,加油
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:220
  • 最近打卡:2025-05-01 18:20:12

79

主题

631

回帖

1132

积分

金牌会员

积分
1132
发表于 2024-9-6 11:17:14 | 显示全部楼层
本帖最后由 durongze 于 2024-9-6 11:18 编辑
tzz1*** 发表于 2024-4-17 10:26
没有BUG哦, 我做了代码都没死机

代码做好了, 按您的要求做的,

-------------------------------下面和定时器有关,如果不改变任务本身,不需要修改(我的理解)。-----------------------------------
    T4T3M |= 0x02;                  
    TM3PS = TM3PS_VALUE;            
    T3L = (uint8_t)(RELOAD_VALUE);   
    T3H = (uint8_t)(RELOAD_VALUE >> 8);
    T3IF = 0;     
    ET3 = 1;
    T3R = 1;   
------------------------------------------------------------
+++++++++++ P01  是做什么的?    P03 又是做啥的?   P20 、P21、P22是用来观察 3个任务的运行状态(我的理解)。++++++++++++++++++
TaskA   P01(false)  P02(30)        P20
TaskB   P03(false)  P04(1)          P21
TaskC   P03(true)   P05(30)        P22
+++++++++++++++++++++++++++++

我用的是10楼的代码,楼主帮忙看下我分析的testTask对不对?       P01  、P03 又是做啥的?  



点评

回答第三个问题: 这个代码是发给杨老师用逻辑仪检查任务捕捉任务切换时间用的, 里面的逻辑是这样子的: 任务A初始化定时器3后挂起自己 -> 定时器3中断里 { P01=1;portYIELD_FROM_ISR( xTaskResumeFromISR(task  详情 回复 发表于 2024-9-6 13:24
被充一下: 刚才说下面 StatisticaIOs.c 的这些代码是没有用的, 但是在另一个文件“testTask.c”中有一段相同的代码,“testTask.c”中的代码是有用的, 就是初始化定时器3, 每秒钟产生77次中断。 下次你问代码时  详情 回复 发表于 2024-9-6 13:09
一个一个问题来回答吧, 我总算明白你昨天问的那个是什么意思了, 先回答你昨天那个文件前有感叹号的问题, 如图: [attachimg]55954[/attachimg] 如图红箭头所指的地方,看到一个红色的横杆没, 这代表这一  详情 回复 发表于 2024-9-6 12:56
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-9-6 12:56:11 | 显示全部楼层
duro*** 发表于 2024-9-6 11:17
-------------------------------下面和定时器有关,如果不改变任务本身,不需要修改(我的理解)。------ ...


一个一个问题来回答吧,
我总算明白你昨天问的那个是什么意思了,
先回答你昨天那个文件前有感叹号的问题,

如图:



截图202409061244235417.jpg



如图红箭头所指的地方,看到一个红色的横杆没,
这代表这是一个被项目禁用的文件,具体解释是:
这个文件虽然没有被项目移除,但是不参与编译,
留着它是因为以后如果要用到这个文件时,只要改一下文件的“Options”就可以了。
进入文件“Options”的方法是:项目窗口文件名上鼠标右键快捷菜单第一个选项

所以你昨天问的问题,为什么头文件前有感叹号,你无法打开,因为 -> 包含这些头文件的主C文件没有生效

今天的问题,下面这段是什么意思,因为文件没有参加编译,所以整个 StatisticaIOs.c 都不起作用,也包含下面这一段
截图202409061251291607.jpg



回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-9-6 13:09:06 | 显示全部楼层
本帖最后由 tzz1983 于 2024-9-6 13:42 编辑
duro*** 发表于 2024-9-6 11:17
-------------------------------下面和定时器有关,如果不改变任务本身,不需要修改(我的理解)。------ ...

补充一下: 刚才说下面 StatisticaIOs.c 的这些代码是没有用的,
但是在另一个文件“testTask.c”中有一段相同的代码,“testTask.c”中的代码是有用的,
就是初始化定时器3, 每秒钟产生77次中断。
下次你问代码时,要说明一下出至哪个文件的第多少行,否则别人可能会找不到
    T4T3M |= 0x02;                  
    TM3PS = TM3PS_VALUE;            
    T3L = (uint8_t)(RELOAD_VALUE);   
    T3H = (uint8_t)(RELOAD_VALUE >> 8);
    T3IF = 0;     
    ET3 = 1;
    T3R = 1;
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-9-6 13:24:14 | 显示全部楼层
本帖最后由 tzz1983 于 2024-9-6 13:31 编辑
duro*** 发表于 2024-9-6 11:17
-------------------------------下面和定时器有关,如果不改变任务本身,不需要修改(我的理解)。------ ...

回答第三个问题:

这个代码是发给杨老师用逻辑仪检查任务捕捉任务切换时间用的,

里面的逻辑是这样子的:
任务A初始化定时器3后挂起自己 -> 定时器3中断里 { P01=1;portYIELD_FROM_ISR( xTaskResumeFromISR(taskA_Handle) ); }  P01输出高电平,并解除挂起的任务A。
-> 任务A被解除挂起后,第一件事情就是 P01=0;  由此看得出 P01高电平的期间,就是中断解除任务A挂起到实际任务A运行所需的时间。(用逻辑仪捕捉到这个高电平,就是切换用的时间)


任务C和B的行为和以上类似: 任务C解除任务B的挂起,用来展示信号的端口是 P03 , 自己观察吧。

其它说明:
截图202409061319009353.jpg
这幅图我没看懂,不知道你摘录自哪里?

另外,杨老师用的应该是打狗棒,具体是什么我也不清楚,
就是说和你发的图片上的电路应该是不一样的,我不清楚你连了那么多线代表什么意思

再者,看代码应理解其意,简单点说就是看代码本身做了些啥,
而不是纠结用的是哪个GPIO端口这种细节,改一个GPIO名用来适应不同的硬件,这种事情是比较简单的,留到最后再去做

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:220
  • 最近打卡:2025-05-01 18:20:12

79

主题

631

回帖

1132

积分

金牌会员

积分
1132
发表于 2024-9-6 14:28:27 | 显示全部楼层
tzz1*** 发表于 2024-9-6 13:24
回答第三个问题:

这个代码是发给杨老师用逻辑仪检查任务捕捉任务切换时间用的,

知道啦。非常感谢。我以为这个代码是给实验箱用的。原来是给逻辑仪检查任务捕捉任务切换时间用的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:220
  • 最近打卡:2025-05-01 18:20:12

79

主题

631

回帖

1132

积分

金牌会员

积分
1132
发表于 2024-9-6 14:28:53 | 显示全部楼层
tzz1*** 发表于 2024-9-6 13:09
补充一下: 刚才说下面 StatisticaIOs.c 的这些代码是没有用的,
但是在另一个文件“testTask.c”中有一段 ...

好的,谢啦。
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-9-7 16:20:37 | 显示全部楼层
2024/9/7
FreeRTOS Ai8051U 上运行的 最简代码例程
为了方便大家在  Ai8051U 实验箱 上做 FreeRTOS 实验,

直接下载即可运行。
截图202409071626254872.jpg
通常RTOS移植成功后的例程,会衔接一些典型的使用例子.
最近发现一个有趣的事情,
对于一些初学者,RTOS本身没有难倒他们,反而是那些例程让他们绕得很深。

鉴于此,这次使用的是最简范本,例程中仅两个点灯任务,
第一个任务,让实验箱上的8个LED走流灯,只有三行代码:        
截图202409071624038942.jpg
第二个任务,每秒用printf()函数输出一段字符串,只有一行代码:     
截图202409071617262314.jpg
喜欢FrerRTOS的朋友们,放飞吧,喜欢什么功能自己加!
FreeRTOSAi8051U 上运行的 最简演示代码例程
为了方便大家在  Ai8051U 实验箱 上做 FreeRTOS 实验,

直接下载即可运行。 FreeRTOS@AI8051U.rar (336.27 KB, 下载次数: 331)


2 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-9-10 16:39:30 | 显示全部楼层
网友问:
请问STC32G12K128运行FreeRTOS最大任务数量取决于edata还是xdata

我估计卡在不清楚楼主移植的这个,如何配置:
MSP ?

PSP ?
MSP+PSP ?

32G12K128: edata/4k,  xdata/8k
32G8K64:     edata/2k,  xdata/6k

AI8051U:     edata/2k,  xdata/32k


截图202409101652529282.jpg
https://www.stcaimcu.com/forum.p ... =4702&pid=33284









点评

STC32G12K128运行FreeRTOS最大任务数量取决于edata STC32G12K128的edata 有4K, 还是比较大的, 十几个任务很轻松, 小型系统一般几个任务就可以了, 所以说还是比较宽松的. 本贴这个FreeRTOS版本没有做MSP+PSP处理.  详情 回复 发表于 2024-9-10 19:06
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-9-10 19:06:48 | 显示全部楼层
神*** 发表于 2024-9-10 16:39
网友问:
请问STC32G12K128运行FreeRTOS最大任务数量取决于edata还是xdata
STC32G12K128运行FreeRTOS最大任务数量取决于edata
STC32G12K128的edata 有4K, 还是比较大的, 十几个任务很轻松,
小型系统一般几个任务就可以了, 所以说还是比较宽松的.
本贴这个FreeRTOS版本没有做MSP+PSP处理.
对于2K edata 产品, 可以考虑用uC/OS-2 移植版,

https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4702&extra=page%3D1  
uC/OS-2 移植版已经比较完善, 以下特征都适合在小尺寸edata型号上运行:
  • MSP+PSP 对多任务的RAM节省量是非常可观的, 任务越多越明显.
  • OS内部的全局变量可指定到xdata/edata
  • 支持Large模式,全局变量一键切换到xdata.很方便.

另外 CosyOS 对AI全系列型号的支持也不错,
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1807&extra=page%3D1
上次作者聊到,

在251内核的机型上也支持搬栈选项,
很合适对任务数量比较执着的人群.



1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复 支持 1 反对 0

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 19:55 , Processed in 0.649509 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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