搜索
bottom↓
回复: 16

特别向傻孩子请教:我刚学完RTOS,如何将前后台代码移植到UCOS-II呢?【恢复】

[复制链接]

出0入0汤圆

发表于 2009-1-4 10:40:45 | 显示全部楼层 |阅读模式
1、在前后台中,通讯协议为MODBUS,

  MODBUS解析子程序中,当判断是“预置单个寄存器”时,做如下动作:

   (1)、将预置值保存到RAM

   (2)、执行某个子程序(例如需要修改波特率时,调用串口初始化程序)

   (3)、触发EEPROM就绪中断,将预置值写到EEPROM中。

  用UCOS-II如何实现。

2、系统上电后,要求两个模块之间必须必须建立握手信号, 

    即模块A通过串口向模块B发送“1234”,模块B收到后,给模块A返回应答。 

    当模块A收到后,其余的任务才能执行,否则系统一直处于建立握手信号过程。 

出0入0汤圆

 楼主| 发表于 2009-1-9 08:48:35 | 显示全部楼层
喔,等待信号量,信号量用无限超时。

  谢谢。

 前后台移植到RTOS,需要洗洗_脑子了。

出0入296汤圆

发表于 2009-1-8 22:49:06 | 显示全部楼层
那就写一个任务,一直等待主机主机的消息,Pending就可以了

得到数据以后,就初始化串口,改变波特率,然后写EEPROM就可以了阿……

注意在初始化串口的时候要设置临界区……防止其它任务操作串口……

出0入0汤圆

 楼主| 发表于 2009-1-8 09:16:59 | 显示全部楼层
谢谢傻孩子。

  是这样的:  

  在前后台系统中,一个MODBUS总线上,主站给某个从站发送“预置单个寄存器”指令,

(例如:主站准备修改当前从站的波特率)。



 从站的MODBUS解析子程序中,判断收到指令后,“从站”做如下动作:   

   (1)、调用串口初始化程序,重新改变从站的波特率   

   (2)、将波特率数值写到从站的EEPROM中

      (下次开机时,直接从EEPROM中读取波特率数值,用来初始化串口)。   

  用UCOS-II如何实现。   

出0入296汤圆

发表于 2009-1-7 22:33:01 | 显示全部楼层
不明白上面的操作让你哪里不知道如何写?

因为看不懂你的问题,所以不知道怎么回答你……

出0入0汤圆

 楼主| 发表于 2009-1-7 09:57:06 | 显示全部楼层
喔,知道了,其它任务在等待邮箱是否收到,收到后才执行后面的代码,否则一直等待。

1、在前后台中,通讯协议为MODBUS,  

  MODBUS解析子程序中,当判断是“预置单个寄存器”时,做如下动作:  

   (1)、将预置值保存到RAM  

   (2)、执行某个子程序(例如需要修改波特率时,调用串口初始化程序)  

   (3)、触发EEPROM就绪中断,将预置值写到EEPROM中。  

  用UCOS-II如何实现。  

出0入0汤圆

发表于 2009-1-6 21:38:08 | 显示全部楼层
任务的同步?其实操作系统用起来并不复杂,和以前编写程序差不了多少,只不过以前是各个功能依次执行的顺序结构,现在是各个功能单独写,然后设计怎么握手怎么交换数据而已。

出0入296汤圆

发表于 2009-1-6 21:27:34 | 显示全部楼层
这个简单,首先建立一个握手任务,这个任务用来“登陆”,一旦登陆成功 

就给其它子任务发“邮件”就OK……也就是说,一开始所有任务都是运行的

只不过,所有子任务都在Pend邮件……只有一个任务在登陆,由它负责群发

邮件给子任务……

出0入0汤圆

 楼主| 发表于 2009-1-6 11:05:23 | 显示全部楼层
其实,就像WINDOWS操作系统一样,开机时,必须输入登录密码,否则进不了操作系统。

 和上述(2).的情况一样呀!。

出0入0汤圆

 楼主| 发表于 2009-1-5 09:59:24 | 显示全部楼层
我基本上已经看完了uCOS-II和陈明计先生的SMALL RTOS51。只不过想把前后台的代码移植到RTOS,感觉有点手生。



  其实:RTOS就有点像前后台编程模式中:状态机编程,只不过又不完全相同,因为任务切换就是人为的模拟一次硬件中断,

任务切换时,首先保存断点PC指针,然后将现场信息保存到当前任务的私栈中,然后将堆栈变换到高优先级的堆栈中,从高优先级的堆栈依次弹出高优先级的现场,到CPU工作寄存器中,最后从堆栈中弹出高优先级的断点(PC指针),实现了任务切换。

  就是下面两个问题困扰了我好久,想不出用RTOS编程如何实现:



1、在前后台中,通讯协议为MODBUS, 

  MODBUS解析子程序中,当判断是“预置单个寄存器”时,做如下动作: 

   (1)、将预置值保存到RAM 

   (2)、执行某个子程序(例如需要修改波特率时,调用串口初始化程序) 

   (3)、触发EEPROM就绪中断,将预置值写到EEPROM中。 

  用UCOS-II如何实现。 

2、系统上电后,要求两个模块之间必须必须建立握手信号,  

    即模块A通过串口向模块B发送“1234”,模块B收到后,给模块A返回应答。  

    当模块A收到应答后,模块的其余的任务才能执行,否则模块A一直处于建立握手信号过程。  

  用UCOS-II如何实现。 

出0入296汤圆

发表于 2009-1-5 22:07:39 | 显示全部楼层
既然你阅读了这些内容,这就好办了。对于你的情况,我深深地感到



有时候不知道原理也许是幸福的……感觉你考虑的太多了……

使用操作系统的好处就是忘记系统调度器的工作原理……认为系统是独占的。

如果系统是独占的,你会如何编写程序呢?

本贴被 Gorgon Meducer 编辑过,最后修改时间:2009-01-05,22:08:27.

出0入296汤圆

发表于 2009-1-4 22:40:10 | 显示全部楼层
根据您说的情况,可能要开2个Task。具体情况,三言两语说不清楚。

您看这样好么?我给你上传一本《uc/OSII》的中文版电子书,你先

系统的看一下,比较简单的。

有什么不明白的,你具体发帖子到论坛上来,我们一个堡垒一个堡垒

的攻破好么?理解到了才是学到了,这是我的信条哈。



点击此处下载 ourdev_571883.rar(文件大小:1.84M) (原文件名:嵌入式实时操作系统uCOS-II(中文版).rar) 

出0入0汤圆

发表于 2009-1-8 22:49:06 | 显示全部楼层
那就写一个任务,一直等待主机主机的消息,Pending就可以了

得到数据以后,就初始化串口,改变波特率,然后写EEPROM就可以了阿……

注意在初始化串口的时候要设置临界区……防止其它任务操作串口……

出0入0汤圆

发表于 2009-1-7 22:33:01 | 显示全部楼层
不明白上面的操作让你哪里不知道如何写?

因为看不懂你的问题,所以不知道怎么回答你……

出0入0汤圆

发表于 2009-1-6 21:27:34 | 显示全部楼层
这个简单,首先建立一个握手任务,这个任务用来“登陆”,一旦登陆成功 

就给其它子任务发“邮件”就OK……也就是说,一开始所有任务都是运行的

只不过,所有子任务都在Pend邮件……只有一个任务在登陆,由它负责群发

邮件给子任务……

出0入0汤圆

发表于 2009-1-5 22:07:39 | 显示全部楼层
既然你阅读了这些内容,这就好办了。对于你的情况,我深深地感到



有时候不知道原理也许是幸福的……感觉你考虑的太多了……

使用操作系统的好处就是忘记系统调度器的工作原理……认为系统是独占的。

如果系统是独占的,你会如何编写程序呢?

本贴被 Gorgon Meducer 编辑过,最后修改时间:2009-01-05,22:08:27.

出0入0汤圆

发表于 2009-1-4 22:40:10 | 显示全部楼层
根据您说的情况,可能要开2个Task。具体情况,三言两语说不清楚。

您看这样好么?我给你上传一本《uc/OSII》的中文版电子书,你先

系统的看一下,比较简单的。

有什么不明白的,你具体发帖子到论坛上来,我们一个堡垒一个堡垒

的攻破好么?理解到了才是学到了,这是我的信条哈。



点击此处下载 ourdev_571883.rar(文件大小:1.84M) (原文件名:嵌入式实时操作系统uCOS-II(中文版).rar) 
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 00:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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