huy666 发表于 2011-4-25 10:55:25

嵌入式OS应用的几个疑问

裸奔时各模块通信或交换数据基本用全局变量实现,使用OS后要尽量不使用全局变量。
比如一个系统AD负责采集数据,i2c接口的eeprom和rtc,还有lcd显示ad的数据和rtc时间。
ad采集的数据要经过计算(计算过程需要到eeprom中的数据)后得到最终需要显示出来的数据。
当然不用OS也不麻烦
如果用OS的话如何处理?
比如显示,方法:
1 设置一个lcd信号量,需要显示时先拿到信号量再显示。
2 显示作为一个独立任务,需显示时,发消息(包括要显示的数据),显示任务收到消息后显示。
3 AD采集的数据放到全局变量里,显示任务需要更新显示时直接使用全局变量的数据。感觉这种方法不好。
那种方法好?或者有什么更好的方法?

还有一个问题是i2c的使用,很显然是不能同时使用的,甚至使用时是不允许中断的(可能是io模拟)。方法:
1 使用一个高优先级的任务独立处理i2c读写,其它任务需要读写eeprom或rtc时给该任务发消息然后等待回传消息。
2 设置一个i2c信号量,其它任务需要读写eeprom或rtc时现等待并取得该信号量。这样的话就有可能比高优先级的任务中断,要么就的禁止任务切换。
那种方法好?或者有什么更好的方法?

刚学os,请各位指教,多谢?

huy666 发表于 2011-4-25 11:30:42

请教

huy666 发表于 2011-4-25 12:14:33

自顶

jdh99 发表于 2011-4-25 12:32:09

每个OS都会有它自己的信号机制

huy666 发表于 2011-4-25 12:42:52

回复【3楼】jdh99
-----------------------------------------------------------------------

多谢回复

每个os都有自己的机制
我的问题还和具体os无关,是个思路的问题。是从裸机到os的过渡时的编程习惯的问题。

lhj200304 发表于 2011-4-25 12:51:35

看看周航慈 的书吧。上面讲的有了

huy666 发表于 2011-4-25 13:32:14

下了一跳
http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_633418POBT7R.JPG
看看第一条 (原文件名:zhou.JPG)

cht-rtos 发表于 2011-4-25 13:35:50

回复【6楼】huy666
-----------------------------------------------------------------------

为何?

TimCheng 发表于 2011-4-25 13:55:16

LCD和其他任务之间使用消息邮箱或消息队列通信。有数据需要显示时,发送消息。LCD得到消息就执行;
或者开辟一个显存区,用信号量管理;
软件模拟I2C应该是属于原子操作的,相当于共享资源中的临界区。所以用信号量保证互斥访问。

huy666 发表于 2011-4-26 11:11:19

多谢楼上

McuY 发表于 2011-4-26 22:41:16

周航慈的书不错
页: [1]
查看完整版本: 嵌入式OS应用的几个疑问