传统的嵌入式设备是一个简单、关联外设、特定任务、对用户完全透明的系统,注意力集中在系统响应时间上,并不关注网络化。随着桌面计算与嵌入式计算的逐渐融合,所有的嵌入式消费设备和智能应用形式都有接入 Internet 的需求。与 PC 采用有线方式接入 Internet 不同,嵌入式设备大都具有分散性和移动性,不适合以有线方式接入。相应地,运用 GPRS 技术实现嵌入式设备的 Internet 无线接入成为当前嵌入式开发者的新课题。针对这一课题,采用 S3C2410 微处理器和 SIM100 -E GPRS 无线通信模块构建嵌入式 Internet[1]数据终端。

《1 主要芯片及模块简介》

1 主要芯片及模块简介

S3C2410 芯片基于 ARM920T[2]内核,采用五级流水线和哈佛结构,提供 1.1 MIPS/MHz 的性能,是高性能和低功耗的硬宏单元。ARM920T 具有全性能的 MMU、指令和数据 Cache 以及高速 AMBA 总线接口。内核结构如图 1 所示。

《图1》

图 1 ARM920T 内核结构
Fig. 1 ARMG20T kernel construction

SIM100 -E 是一款支持 GPRS Class8[3]的高速无线通信终端,具有体积小、重量轻、功耗低等特点。该模块是 GPRS 的 B 类通信模块,支持语音通信,具有GPRS,USSD 和 CSD 三种数据传输方式以及 SMS 和 Fax 功能。SIM100 -E 具有 40 引脚的 ZIF 连接器,整合了电源接口、电池接口、RS232 接口、SIM 卡接口、语音接口以及控制信号接口。模块可以工作在 EGSM900 和 GSM1800 两个频段,用 AT 指令进行控制。

《2 设计与实现》

2 设计与实现

《2.1 设计的目的》

2.1 设计的目的

所设计的嵌入式 Internet 数据终端,是一种嵌入式设备无线接入 Internet 的方案并通过平台的实现验证方案的可行性。同时该嵌入式平台还应具备一般嵌入式系统的功能,可以对发送至Internet的数据或来自于 Internet 的数据进行处理。

《2.2 硬件实现》

2.2 硬件实现

采用 S3C2410 处理器构成通用嵌入式系统,在此基础上扩充 SIM100 -E GPRS 无线通信模块形成嵌入式 Internet 数据终端。其硬件结构见图 2。

《图2》

图 2 硬件体系结构
Fig. 2 Diagram of hardware

S3C2410 是整个嵌入式平台的核心,它把外部复位信号作为一个中断处理。在系统复位时,PC 指针被置 0,使程序跳转到 0x00000000 开始执行。此空间对应的是 Bank0,系统的 2MNor Flash 和处理器的 Bank0 相接。Nor Flash[4]中存放了系统的 BootLoader,用来初始化硬件并引导 OS。

嵌入式 OS 通过自动加载拨号程序控制 GPRS 模块接入 GPRS 网络,并最终实现与 Internet 的连接。嵌入式系统与 Internet 建立连接后,两者之间收发数据主要经过三个阶段:S3C2410 与 SIM100 -E 的通信,SIM100 - E 与 GPRS 网络的通信,GPRS网络与 Internet 之间的通信。S3C2410 与 SIM100-E 之间的通信主要通过 RS232 串口完成,SIM100 -E 接线方式如图 3 所示。

《图3》

图 3 SIM100-E 接线图
Fig. 3 Diagram of SIM100-E

SIM100 -E 通过 SIM 卡与 GPRS 网络建立数据通信,而 GPRS 网络相当于一个 Internet 网络的子网,两者之间的通信可以通过网络机制自动完成。

《2.3 软件实现》

2.3 软件实现

嵌入式平台的软件体系是一个典型的嵌入式 Linux 系统的软件体系结构,主要由 BootLoader、嵌入式 OS 及用户程序三层构成,其结构如图 4 所示。

《图4》

图 4 软件层次结构
Fig. 4 Construction of software layer

BootLoader 选用的是 U -boot,它初始化硬件系统,设置内核参数并启动内核。嵌入式 OS 选用了μclinux,是精简的 Linux 核,具备 Linux 的主要功能,是应用程序运行的平台。PPP 拨号软件包基于 μclinux, 完成网络连接和数据收发的功能。BootLoader与 OS 是嵌入式 Linux 系统的组成部分。

1)U -boot 移植

U -boot[5]是一款功能强大的 BootLoader,它可以直接支持基于 S3C2410 的嵌入式平台。移植工作量相对较小,主要修改几个硬件相关的文件。包括 smdk2410.h,  flash.c,  memsetup.c, s3c2410.c, Makefile 6 个文件。完成文件修改后,通过交叉编译可生成 U -boot.bin,下载至 Nor flash 即可引导 OS。

2)μclinux 移植

μclinux 是 Linux 的变型版本,其主要针对 ARM7TDMI,但它同样可以在 ARM9 核的处理器上高效运行。在 S3C2410 上移植 μclinux 需要 3 个步骤:内核裁剪、内核编译、根文件系统创建。以 root 身份进入宿主机 Linux 系统,在源码相应目录下执行“make menuconfig”命令可进入内核配置菜单对内核进行裁剪,执行“make dep”,“make clean”,“ make zImage”指令序列完成编译过程并获得内核镜像文件 zImage。最后使用 Busybox 工具包可以完成文件系统的创建。

3)PPP 软件包的实现

PPP 软件包工作于 μclinux 操作系统之上,控制 GPRS 模块完成网络接入工作,其软件结构见图 5。该软件包支持两种工作模式:

《图5》

图 5 PPP 拨号软件包
Fig. 5 Diald software packet

开机即拨号,永不挂断或设定自挂断时间。

检测到有数据通信流时拨号,永不挂断或设定自挂断时间。

系统启动时自动启动 diald 后台进程, 读取 diald.conf 配置文件,设置自己的工作模式。根据已设定的工作模式,自动调用 pppd 进行拨号。启动 pppd 时,通过脚本 diald.ttys1 给 pppd 传递参数从而配置 pppd,并指示 pppd 调用 chat 和 connect 脚本对 SIM100 -E 模块初始化并进行拨号。

《3 设计中的技术难点》

3 设计中的技术难点

由于 SIM100 -E 模块和 S3C2410 处理器之间只有一个串口,且在上网时,串口需不间断的传送网络数据,因此 AT 命令的控制信息无法在此时传输,即在上网的同时无法同步拨打电话和发短信。针对这一问题,在 PPP 拨号软件包的底层,创建了两个虚拟的 Linux TTY[6]设备。其中一个虚拟设备负责网络数据的传送,另一个虚拟设备则用来处理需用 AT 指令集来控制的电话管理、短信收发等非数据传输。两个虚拟设备使用时间片轮换的方式占用物理 Linux TTY 设备,进而实现上网和打电话、发短信同时进行。

《4 结束语》

4 结束语

在 PPP 拨号软件包的底层首次采用了双虚拟 TTY 设备的方式,利用创建的两个虚拟 Linux TTY设备交替使用物理设备,解决了传统产品中网络数据与 AT 命令控制信息争用串口的问题。通过实测表明,所设计的嵌入式平台可以满足无线接入 Inter-net 的需求,且可以同步地进行语音和短信通信,达到了设计的目标。另外该平台还具备一般嵌入式系统的功能特性,对同类产品开发有参考价值。