嵌入式实时操作系统μC/OS-II在GPRS终端系统中的应用

发布者:幸福如愿最新更新时间:2018-02-21 来源: eefocus关键字:实时操作系统  μC  OS-II  GPRS终端系统 手机看文章 扫描二维码
随时随地手机看文章

  GPRS是在目前运行的GSM网络基础上发展起来的数据业务,可以采用与GSM同样的调制技术、频率,以及同样的TDMA帧结构。利用现有的基站子系统(BSS),GPRS从一开始就可以提供全面的覆盖。

  GPRS终端系统的硬件组成

  GPRS终端系统主要由控制部分和GPRS无线模块组成,如图1所示。

  

 

  图1 GPRS终端的硬件组成原理

  为了适应嵌入式技术在GPRS通信中的应用,系统的控制部分采用了S3C44B0x芯片。

  S3C44B0x是16/32位RISC微处理器, 为手持设备和通常应用提供了一种高性价比的解决方案。

  S3C44B0x具有丰富的片内资源,可以通过串行接口操作GPRS模块,操作指令为AT命令集。

  GPRS无线模块采用了SIM300,该模块支持GPRS的语音、数据和短信息功能,内嵌TCP/IP协议。该模块主要由射频天线、内部Flash、SRAM、GSM基带处理器、匹配电源和一个60脚的ZIF插座组成。其中,GSM基带处理器是核心部件,其作用相当于一个协议处理器,用来处理外部系统通过串口发送过来的AT指令。GPRS模块接收速率可达86.2kbps,发送速率达21.5kbps,易于集成。

  μC/OS-II的移植

  μC/OS-II是一个移植性很强的操作系统,其源代码分为硬件无关和硬件有关两个部分,移植时只需修改与硬件有关的部分。移植μC/OS-II到S3C44B0X 上,需做以下工作:

  (1) 修改数据类型

  为保持与平台的无关性,μC/OS-II使用经过宏定义的通用类型,如INT16U,表示16 位无符号数。在移植时,要把它们映射成正确的类型。

  (2) 进入和退出临界段

  用关闭和打开中断的方式,实现进入临界段函数OS_ENTER_CRITICAL()和退出临界段函数OS_EX2IT_CRITICAL()。

  (3) 设置堆栈生长方向

  不同的处理器堆栈的生长方向不同,对S3C44B0X来说,其生长方向可以向上也可以向下。但是,由于编译器ADS仅支持堆栈从上往下长,并且必须是满递减堆栈,所以这里要设置的实际使用方向为向下增长,即

  #define OS_STR_GROWTH 1;

  (4) 任务的切换和调度

  进行任务的切换和调度有两种方法,一是当前运行的任务主动调用OS_Sched() ,判断是否有更高优先级的任务要运行,如果有就将其切换到就绪态,然后调用OS_TASK_SW() ,产生一个软中断,中断向量指向函数OSINTCtxSw() ,在其中修改任务堆栈,运行新的任务。二是产生硬件中断后,在中断处理函数中调用OSIntEx()。

  在上述过程中,产生软中断和修改任务堆栈的代码都是与处理器相关的, S3C44B0X 的软中断汇编指令是SWI ,压栈和出栈的汇编指令分别是STM和LDM。

  (5) 堆栈的初始化

  μC/OS-II在创建任务时会调用OSTaskStkInt() 函数对任务堆栈进行初始化,这里需要将堆栈设置成和产生中断后的形式一样,一般包括任务起始地址、中断返回地址、CPU 寄存器等内容。另外,还要保证任务是运行在特权模式下,而不是用户模式下。

  (6) 时钟节拍中断

  μC/OS-II用时钟节拍中断实现时间延迟和超时功能,定时频率一般在10Hz~100Hz。设置定时器的代码与CPU 相关,中断向量必须指向μC/OS-II时钟节拍中断服务子程序OSTickISR() 。

系统的流程和任务的组成


 

  本系统中,首先调用OSInit(),初始化μC/OS-II所有的变量和数据结构,再调用arm_init()初始化微控制器的定时器及串口等硬件,通过调用OSTaskCreate(),依次创建各个任务,最后调用OSStart()启动系统,开始多任务调度。整个系统控制程序模块及流程如图2 所示。

  

  图2 系统控制程序模块及流程

  整个系统中的任务包括arm控制部分的键盘扫描、LCD显示任务和通信任务以及GPRS终端功能的短消息任务,语音通话任务等。因此,在μC/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所示。

  结语

  μC/OS-II实时操作系统是开放源代码且得到实际验证的软件平台,而S3C44BOx具有强大的32位RISC性能,基于此软件及硬件平台对GPRS模块进行设计,能大量减轻研发任务,提高研发速度,为在短时间内实现GPRS终端系统设计创造良好条件。


关键字:实时操作系统  μC  OS-II  GPRS终端系统 引用地址:嵌入式实时操作系统μC/OS-II在GPRS终端系统中的应用

上一篇:μC/OS-II在几种处理器上的移植介绍
下一篇:嵌入式网络拨号功能设计与实现

推荐阅读最新更新时间:2024-03-16 15:55

单片机C语言中标志位的经典应用
/* 本例程是C语言的位域操作示例 这里为什么位域结构体与联合体一起使用? -- 因为这样定义后,即可以单独使用标志位 也可同时使用整个字节数据 主要应用:单片机C语言 好处:用标志位可以节省RAM空间 操作灵活 执行速度快 */ //====标志位应用 定义联合体实体==== typedef union uFLG{ uint8 Flg ; //定义整形数据 struct FLAG{ //位域定义 uint8 Flg1 : 1; uint8 Flg2 : 1; uint8 Flg3 : 1; uint8 Flg4 : 1; uint8 Flg5 : 1; uint8
[单片机]
s3c6410 s3c2440串口发送接收数据的实现(轮询)及相关寄存器
1 6410与串口相关寄存器 一 需要设置的寄存器(其实进入uboot后,串口已经设置好了,直接发送数据就行了,) 1)模式 UCON (轮询,中断,DMA等) 2)相关参数 ULCON0 定义了串口数据的帧格式,数据位长度,奇偶校验位,停止位(8-N-1) BRDIV 定义了波特率的计算公式所得结果的整数部分 UDIVSLOT0 定义了波特率的计算公式所得结果的小数部分 3)高级选项(串口的发送接收缓冲的大小(fifo)默认是1B,可改成64B 二 发送接收数据 相关的寄存器 UTXH0 UART channel 0 transmit buffer register URXH0 UART chan
[单片机]
STC89C52驱动MAX7219LED点阵级联, 文字滚动效果
级联下的传值方式 级联下, N个MAX7219相当于组成了一个8*N bit宽度的锁存器, 如果需要对第M个7219进行写入, 需要做M次寻址+写入后拉高CS, 才能到达这个7219. 如果仅仅对这个7219进行操作, 不操作其他7219, 那么在第1个寻址写入后, 做的寻址写入输入的都是空值. 对于级联的MAX7219, 如果要显示产生滚动的效果, 那么每次要操作的都是整行, 可以将其看成是一个(N8)8的点阵, 每次直接对一行写入N个byte. 连线 CLK = P2.2 CS = P2.1 DIN = P2.0 VCC = 5V GND = GND 代码示例 #include reg52.h #include in
[单片机]
C8051F020的端口配置
C8051F020引入了交叉开关的概念,即单片机的管脚必须在交叉开关使能的情况下才能被配置。因此初始化时,首先要使能交叉开关,官方有个配置工具Config2,很方便,推荐大家使用。管脚内部自带弱上拉(管脚与VDD之间阻性连接,约100K ),因此在弱上拉未被禁用的情况下,管脚可以输出0和1。在弱上拉被禁用后,管脚输出可以被配置为推挽和漏极开路,推挽和弱上拉一样,都可输出0和1,但驱动能力大,推挽方式为低阻,这样,才能保证口线上不分走电压或分走极小的电压(可忽略),保证输出与电源相同的高电平,推挽适用于输出而不适用于输入,因为若对推挽(低阻)加高电平后,I=U/R,I会很大,将造成口的烧毁。对与C8051F的很多型号片子,将I/O口设
[单片机]
基于AT89C51单片机实现串行总线芯片测试实验平台的设计
应用串行接口芯片扩展系统时,在初步选择了串行接口的芯片后,为了对芯片的资源更好地了解,开发者一般在系统设计前搭建一个简单的硬件电路并编制相应的软件对其测试,待性能验证后再确定最终的设计方案。本文根据这一需要设计了一个用于串行总线芯片测试的实验平台。该平台以PC机为人机接口、采用单片机产生芯片串行通信时序。应用这一平台可以大大简化芯片使用前的测试过程。这一平台也为单片机串行扩展的初学者提供了快捷的学习工具。本平台目前集成了SPI、One-wire、Microware、I2C四种串行接口,在今后的使用中,可根据需要增加串行接口的种类。 1 串行扩展平台的结构 SPI、One-wire、Microware、I2C是目前单片机应用系统
[单片机]
基于AT89<font color='red'>C</font>51单片机实现串行总线芯片测试实验平台的设计
基于C8051F020海水淡化预处理系统设计
在对海水淡化装置实际使用过程中发现,装置实际工作参数一般不同于设计工作参数,使得装置无法发挥原设计系统流程特点,性能不佳;这种情况是由于实际进入装置的海水温度很难与设计温度一致造成的。此类现象对于海岛用海水淡化装置影响尤其明显:由于其特殊使用环境和条件,在不同季节和海域,海水入口温度变化很大,造成装置运行不稳定,产水量不足、水质下降严重,甚至不能工作。 为克服此类问题,本项目开展了海水进口调节模块设计技术研究,使控制器具有海水进口温度、流量的调节作用,始终保证进入装置的海水进口温度在设定值,使得装置的流程参数在不断变化的外界环境条件下保持在设定工况参数不变,从而保证淡水产量和水质,也使得装置易于控制和维护。 1 系统设计 根据对
[单片机]
基于<font color='red'>C</font>8051F020海水淡化预处理<font color='red'>系统</font>设计
模数转换器ADS112C04
#define ADD_ADS112C04_write 0x80 #define ADD_ADS112C04_read 0x81 #define START 0x08 #define POWERDOWN 0x02 #define RDATA 0x10 #define RESET 0x06 #define WREG_0 0x40 #define WREG_1 0x44 #define WREG_2 0x48 #define WREG_3 0x4c #define RREG_0 0x20 #define RREG_1 0x24 #define RREG_2 0x28 #define RREG_3 0x2c
[单片机]
IU5200集成30V的OVP功能,支持I2C接口,3A充电电流,1~4节锂电池升降压充电芯片
IU5200D是一款自动申请快充输入,开关模式升降压充电管理IC,用于1~4节锂离子电池和锂聚合物电池,以及1~5节磷酸铁锂电池。芯片集成包括4开关MOSFET、输入和充电电流感应电路、电池以及升降压转换器的环路补偿。芯片具有3A的充电电流能力,充电电流可以通过外部电阻灵活可调。 IU5200D内置四个环路来控制充电过程,分别为恒流 (CC)环路、恒压(CV)环路、芯片温度调节环路、可智能调节充电电流,防止拉垮适配器输出,并匹配所有适配器的输入自适应环路,其输入自适应点通过外部分压电阻灵活可调。 IU5200D通过调节电池外部反馈电阻的分压比例,得到不同的恒压充电电压值,从而适配不同节数和规格的锂电池。 IU5200D支
[嵌入式]
IU5200集成30V的OVP功能,支持I2<font color='red'>C</font>接口,3A充电电流,1~4节锂电池升降压充电芯片
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved