用GPRS modem实现嵌入式Internet接入系统
行拨号和PPP协商,得到系统本地IP,完成GPRS的Internet接入。ARMCPU将用户数据先打成IP包,再经串口发送给MC35,MC35把其封装成GPRS分组数据包传到GPRS网。
5软件设计
图4所示是uC/OS-II的结构及与硬件的关系。
与处理器无关的代码包含了uC/OS-II的系统函数,移植时只要将uC/OS-II,C文件包含在自己的项目中,即可将uC/OS-II中所有与MCU无关的代码包含到移植的代码中。
与处理器相关的代码包含了对各种不同类型MCU的支持,需要根据自己的MCU对这部分进行修改。笔者使用的是的ADS2.0编译器,uC/OS-II的移植与三个文件相关:处理器相关C文件(OS_CPU.H、OS_CPU_C.C)和汇编文件(OS_CPU_A.ASM)。
(1)修改OS_CPU.H
①编译器相关数据类型的设定。
用#define语句定义两个宏开关中断,具体实现为:
#defineOS_ENTER_CRITICAL()EA=0//关中断
#defineOS_EXIT_CRITCAL()EA=1//开中断
②根据堆栈的方向宏方OS_STK_GROWT。
#defineOS_STK_GROWTH1//GROWTH。
虽然ARM处理器核对于两种方式均支持,但ADS2.0的C语言编译器仅支持一种方式,即从上往下生长,并且必须是满递减堆栈,所以OS_STK_GROWTH的值为1。
③OS_STK_SW()、OSCtxSw()的移植
#defineOS_TASK_SW()OSCtxSw()
uC/OS-II从低优先级任务切换到高优先级任务时,通过执行OS_STK_SW()模仿中断的产生。中断服务子程序的中断向量地址指向汇编语言函数OSCtxSw()。
(2)修改OS_CPU_C.C和OS_CPU_A.ASM
uC/OS-II的移植还要编写10个简单的C函数,包括6个和操作系统相关的函数和4个与处理器相关的函数其中OSTaskStklit()是必要的,其它9个函数必须声明,可以不加代码。在每个C函数及其声明后标注reentrant关键字,使生成的代码支持函数可重入。
①在目录uip-0.9/下创建一个自己的目录,例如uip0.9/2104/。
②把uip_arch.c文件从目录uip-0.9/unix/中复制到目录uip-0.9/2104中。
③把uipopt.h文件目录uip-0.9/unix中复制到目录uip-0.9/2104中,并对其修改,以满足系统需要。
④编写串口驱动程序和主控函数。
⑤编译源代码。
结语
本设计方案采用1片ARMCPU来控制GPRSmodem,实现了嵌入式实时操作系统uC/OS-II的移植以及小型TCP/IP协议栈uIP的移植。该GPRS终端利用GPRS网和Internet实现了基于GPRS的无线Internet互联,体积小功耗低,可靠性高,并且具有可扩展性和产品开发的延续性,可应用于移动终端、交通管理、信息家电、工业控制、环境监测以及POS网络和电子商务等多种应用场所。
《用GPRS modem实现嵌入式Internet接入系统(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/171541.html
5软件设计
图4所示是uC/OS-II的结构及与硬件的关系。
与处理器无关的代码包含了uC/OS-II的系统函数,移植时只要将uC/OS-II,C文件包含在自己的项目中,即可将uC/OS-II中所有与MCU无关的代码包含到移植的代码中。
与处理器相关的代码包含了对各种不同类型MCU的支持,需要根据自己的MCU对这部分进行修改。笔者使用的是的ADS2.0编译器,uC/OS-II的移植与三个文件相关:处理器相关C文件(OS_CPU.H、OS_CPU_C.C)和汇编文件(OS_CPU_A.ASM)。
(1)修改OS_CPU.H
①编译器相关数据类型的设定。
用#define语句定义两个宏开关中断,具体实现为:
#defineOS_ENTER_CRITICAL()EA=0//关中断
#defineOS_EXIT_CRITCAL()EA=1//开中断
②根据堆栈的方向宏方OS_STK_GROWT。
#defineOS_STK_GROWTH1//GROWTH。
虽然ARM处理器核对于两种方式均支持,但ADS2.0的C语言编译器仅支持一种方式,即从上往下生长,并且必须是满递减堆栈,所以OS_STK_GROWTH的值为1。
③OS_STK_SW()、OSCtxSw()的移植
#defineOS_TASK_SW()OSCtxSw()
uC/OS-II从低优先级任务切换到高优先级任务时,通过执行OS_STK_SW()模仿中断的产生。中断服务子程序的中断向量地址指向汇编语言函数OSCtxSw()。
(2)修改OS_CPU_C.C和OS_CPU_A.ASM
uC/OS-II的移植还要编写10个简单的C函数,包括6个和操作系统相关的函数和4个与处理器相关的函数其中OSTaskStklit()是必要的,其它9个函数必须声明,可以不加代码。在每个C函数及其声明后标注reentrant关键字,使生成的代码支持函数可重入。
①在目录uip-0.9/下创建一个自己的目录,例如uip0.9/2104/。
②把uip_arch.c文件从目录uip-0.9/unix/中复制到目录uip-0.9/2104中。
③把uipopt.h文件目录uip-0.9/unix中复制到目录uip-0.9/2104中,并对其修改,以满足系统需要。
④编写串口驱动程序和主控函数。
⑤编译源代码。
结语
本设计方案采用1片ARMCPU来控制GPRSmodem,实现了嵌入式实时操作系统uC/OS-II的移植以及小型TCP/IP协议栈uIP的移植。该GPRS终端利用GPRS网和Internet实现了基于GPRS的无线Internet互联,体积小功耗低,可靠性高,并且具有可扩展性和产品开发的延续性,可应用于移动终端、交通管理、信息家电、工业控制、环境监测以及POS网络和电子商务等多种应用场所。
《用GPRS modem实现嵌入式Internet接入系统(第2页)》