uC/OS-II在GPRS终端系统中的应用
在上述过程中,产生软中断和修改任务堆栈的代码都是与处理器相关的,S3C44B0X的软中断汇编指令是SWI ,压栈和出栈的汇编指令分别是STM和LDM。
(5) 堆栈的初始化
uC/OS-II在创建任务时会调用OSTaskStkInt() 函数对任务堆栈进行初始化,这里需要将堆栈设置成和产生中断后的形式一样,一般包括任务起始地址、中断返回地址、CPU 寄存器等内容。另外,还要保证任务是运行在特权模式下,而不是用户模式下。
(6) 时钟节拍中断
uC/OS-II用时钟节拍中断实现时间延迟和超时功能,定时频率一般在10Hz~100Hz。设置定时器的代码与CPU 相关,中断向量必须指向uC/OS-II时钟节拍中断服务子程序OSTickISR() 。
系统的流程和任务的组成
本系统中,首先调用OSInit(),初始化uC/OS-II所有的变量和数据结构,再调用ARM_init()初始化微控制器的定时器及串口等硬件,通过调用OSTaskCreate(),依次创建各个任务,最后调用OSStart()启动系统,开始多任务调度。整个系统控制程序模块及流程如图2所示。
图2 系统控制程序模块及流程
整个系统中的任务包括ARM控制部分的键盘扫描、LCD显示任务和通信任务以及GPRS终端功能的短消息任务,语音通话任务等。因此,在uC/OS-II系统中的任务主要包括:
键盘扫描任务task_sys_key scan(),包括4×4键盘部分的扫描识别keyscan(),以及对应按键功能编码的实现keyscan_code()等。
LCD显示任务task_sys_ lcddis(),包括背景内容显示display_context()、输入内容显示display_input()、输出内容显示display_output()等。
通信任务task_sys_ communication(),除了包括系统和主机进行通信的函数host_msg(),以实现通过电脑进行系统操作,还有各个任务之间相互通信的处理msg_tasl()。
话音通话任务task_sys_ telephone(),其中包括电话呼叫gprs_phone_call()、电话接听gprs_phone_recevie()等。 另外,还包括系统短信收发任务。
根据系统进行GPRS短消息通信和语音通信的功能要求,设置各个任务的优先级如表1所示。
结语
uC/OS-II实时操作系统是开放源代码且得到实际验证的软件平台,而S3C44BOx具有强大的32位RISC性能,基于此软件及硬件平台对GPRS模块进行设计,能大量减轻研发任务,提高研发速度,为在短时间内实现GPRS终端系统设计创造良好条件。■
参考文献
1.周航慈,吴光文等,基于嵌入式实时操作系统的程序设计技术[M],北京航空航天大学出版社,2006
2.曹莉,基于GPRS网络的数据无线传输的实现接口[C],现场总线与网罗技术,2006
3.华亮,基于uC/OS-II的嵌入式系统应用平台的构建[C],计算机工程,2004年
tcp/ip相关文章:tcp/ip是什么
评论