OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1875|回复: 2

请教关于linux多个任务在一起的组合问题

[复制链接]

8

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2016-11-4
在线时间
13 小时
发表于 2023-6-9 16:17:05 | 显示全部楼层 |阅读模式
请教:
假如现在有单个任务:(1)AD采集任务(生成AD.KO,ADAPP)
(2)lcd显示AD采集值任务(生成LCD_AD.KO,LCD_AD_APP)
(3)串口通讯任务,需要吧采集的AD值通过串口(usart.ko,uasrt_app)(modbus协议)传输出去
上面这三个任务可以组成一个小项目了。
如果要实现上面的三个任务。需要怎么做。
吧三个任务合成一个任务,生成一个xxx.ko,xxxAPP两个文件,然后放到根文件系统中去执行?
2、三个任务分别执行?组合起来?那么采集的AD变量怎么在三个任务中传递呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

80

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1027
金钱
1027
注册时间
2019-1-5
在线时间
243 小时
发表于 2023-6-10 19:28:11 | 显示全部楼层
两种方式,简单点就单线程,将所有文件直接编译成可执行文件即可;在main函数中,你的三个任务按顺序循环执行,将AD采样数据放到一个全局变量中即可,不同任务由于是逐一执行的,因此不会争抢变量数据。

还一种是多线程,仍将所有文件直接编译成可执行文件即可;按照你的任务逻辑,可以在一个进程(即仍为一个可执行文件)中,通过三个线程加共享内存实现(共享内存记得加锁),方式和方法一类似,只不过新增了锁控制线程争抢共享内存,线程一对应你的任务一,AD采样将得到的数据写入共享内存;线程二是LCD显示,从共享内存提取数据;线程三是实现串口传输,也是从共享内存提取数据。

最后在根文件下直接运行可执行文件就行。
回复 支持 反对

使用道具 举报

8

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2016-11-4
在线时间
13 小时
 楼主| 发表于 2023-6-12 14:31:28 | 显示全部楼层
s2333 发表于 2023-6-10 19:28
两种方式,简单点就单线程,将所有文件直接编译成可执行文件即可;在main函数中,你的三个任务按顺序循环执 ...

谢谢,我知道了。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 09:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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