2 嵌入式系统设计
2.1 系统硬件结构
2.1.1 ARM9系统硬件结构
ARM9系统硬件结构见图1。
2.1.2 GPRS传输设备
本文使用的GPRS传输设备是北京华荣汇通信设备有限公司开发的GR100型GPRS MODEM,采用了高性能内嵌TCP/IP协议栈GPRS模块。
2.2 系统运作过程
(1)物理过程。ARM利用AT指令通过GPRSModem拨号,正确反馈及应答后,一条物理通道即GPRS信道就在系统中的GPRS Modem和GPRS网络之间建立起来。
(2)数据过程。PPP协议将原始的GPRS物理层连接改造成无差错的数据链路,系统将远程登录Internet,并得到GPRS网关分配的IP地址。
(3)网络过程。采用IP协议作为网络层协议。IP协议将接人Internet的具有不同IP地址的终端都联系起来。经过IP路由选择,可以实现系统与连在Internet上的任一IP终端进行数据交互。
(4)传输过程。选择TCP作为传输层协议,为数据传输提供面向连接,可靠服务。
3 软件设计
3.1 嵌入式系统的引导代码Bootloader
Bootloader(引导加载程序)是嵌入式系统加电后运行的第一段代码,在PC中,引导加载程序由BIOS和位于硬盘MBR中的操作系统引导加载程序一起组成的。
Bootloader启动大多数分为2个阶段。第一阶段主要包含依赖于CPU的体系结构硬件初始化的代码,通常都用汇编语言来实现。这个阶段任务有:基本的硬件设备初始化(屏蔽所有的中断、关闭处理器内部指令,数据Cache等);为第二阶段准备RAM空间;如果是从某个固态存储媒质中,则复制Bootloader的第二阶段代码到RAM中;设置堆栈;跳转到第二阶段的C程序入口点。
第二阶段通常用c语言完成,以便实现更复杂的功能。这个阶段任务有:初始化本阶段要使用到的硬件设备;检测系统内存映射;将内核映像和根文件系统映像从Flash读到RAM 为内核设置启动参数;调用内核。
在U-BOOT(在PPC-BOOT的基础上进化而来的一个开放源码的嵌入式BOOTROM程序)中通过下面两行代码进行两个阶段的工作交换:
Ldr pc,_start_armboot
_start_armboot:.word staxt_armboot
Bootloader调用Linux内核的方法是直接跳转到内核的第一指令处,在跳转时必须满足下列条件:CPU寄存器设置。R0为O;R1为机器类型ID;R2为启动参数,标记列表在RAM中的起始基地址,CPU模式。必须禁止中断(IRQs和VlQs);CPU必须设置为SVC模式。Cache和MMU的设置。MMU必须关闭;指令Cache可以打开也可以关闭;数据Cache必须关闭。在编写完Bootloader后,利用JTAG下载电缆.烧写到Nor Flash中即可。
3.2 配置和编译Linux内核
Linux内核主要由5个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。
3.2.1 配置内核
配置内核的命令有make config;make oldcoafig;make menucoafig;make xconfig。无论哪个命令都将产生config文件,并在每一个c源文件中加上<Linux/config.h>,使define的宏起全局性的作用。
3.2.2 编译内核
编译内核需要3个步骤,分别是创建内核依赖关系、创建内核镜像文件和创建内核模块。执行make up命令进行编译。
生成内核以后,接下来要做的是安装它。对每一个内核配置来说。要复制4个丈件:没有压缩的内核镜像(zlmage和bzlmage)、压缩的内核镜像(vmlinux)、内核符号映射文件(System.map)以及配置文件(config)。
最后用loader.exe烧写zlmage 或bzImage 到Nor Flash 的0x00010000地址。
4 GPRS数据终端实现
GR100通过RS232接口与ARM9系统连接,最终实现了基于ARM9芯片S3c2410a的GPRS数据终端。该终端内部已移植了Linux操作系统,可在该系统下自主开发软件,使其功能更加强大,例如连接LCD,实现可视化操作等。