3.2.2 系统存储器
由于S3C2410的存储控制器提供了外部存储器访问所需要的控制信号,用户只需要选择合适的外部FLASH和SDRAM与其相连,即可实现系统的存储功能。本系统选用SAMSUNG公司的具有512 MB容量的K9F1208作为系统外部的NAND FLASH存储器,用于存放程序代码、常量表以及一些在系统掉电后需要保存的用户数据等。选用2片容量为32 MB的SAM-SUNG的K4S56163作为系统外部的SDRAM,用作程序的运行空间、数据及堆栈区。
3.2.3 以太网控制模块
由于S3C2410本身没有集成以太网控制模块,所以需要一个与之相匹配的控制芯片来实现以太网扩展接口。本系统选用CIRRUS LOGIC公司的CS8900A作为系统的以太网控制芯片。CS8900A是一个单芯片全双工的以太网解决方案,所有的数字和模拟电路合成了完整的以太网电路。主要结构包括ISA总线接口、802.3 MAC引擎、BUFFER、串行E2PROM接口和带10BASE-T和AUI的模拟前端。CS8900A的10BASE-T接口通过变压器HR601627与RJ 45网口连接。
3.2.4 GPRS通信模块
GPRS通信模块采用西门子公司的无线数据传输模块MC235i,支持数据、短信、语音和传真业务。MC35i是新一代GSM/GPRS双模模块,完全兼容上一代的MC35,TC35i;采用紧凑型设计,为用户提供了简单、内嵌式的无线GPRS连接。MC35i与控制中心是通过UART接口1进行硬件连接的。
3.2.5 蓝牙模块
系统设计中蓝牙模块选用爱立信公司的ROK 101 007。该模块是一款适合短距离无线通信的射频/基带模块,且集成度高、功耗小,完全兼容蓝牙协议Versionl.1,可嵌入任何需要蓝牙功能的设备中。ROK 101 007包含5个功能块:无线收发器、基带控制器、闪存、电源管理模块、时钟,可提供高至HCI(主机控制接口)层的功能。ROK 101 007的UART口符合工业标准16C450,支持以下波特率:300 b/s,600 b/s,900 b/s,1 200 b/s,1 800 b/s,2 400 b/s,4 800 b/s,9 600 b/s,19 200 b/s,38 400 b/s等。与该接口有关的管脚有4个:TxD(B5),RxD(A5),RTS(A6),CTS(B6)。在本系统设计中,ARM微处理器S3C2410通过UART接口2与ROK 101 007模块连接。
4 系统软件设计
系统软件设计包括智能家居控制中心软件设计和智能终端应用软件设计两大部分。智能家居控制中心是以ARM微处理器为控制核心,其软件设计包括系统软件(嵌入式操作系统、硬件设备驱动程序、嵌入式数据库、嵌入式Web服务器)设计和应用软件(网页设计及CGI应用程序)设计;智能终端的控制核心为单片机,其应用软件设计是一个循环控制程序。
4.1 系统控制中心的软件设计
4.1.1 系统软件设计
(1)嵌入式操作系统的选择及移植本系统采用Linux作为操作系统,并选用Linux2.6内核在嵌入式微处理器S3C2410上移植,具体移植方法如下:
①准备Linux 2.6内核移植所必需的文件(内核压缩包linux-2.6.tar.bz2及交叉编译器arm-linux-gcc-3.4.1.tar.bz2),这些文件可到LinUX官方网站免费下载。
②利用Linux命令(mkdir,tar,mv及export)安装交叉编译器arm-linux-gcc-3.4.1。
③修改Makefile文件及相关硬件文件。由于内核的编译是根据:Makefile文件的指示进行的,Makefile文件来组织内核的各模块之间的关系,记录了各个模块之间的相互联系和依赖关系。所以,开发人员要首先修改Linux 2.6根目录下的Makfile文件,修改的主要内容是目标代码的类型和为编译内核指定一个编译器。
④运用Make命令编译内核生成内核镜像文件zImage文件,通过相应的固化软件把这个文件固化在系统相应的存储器中,完成Linux 2.6内核在ARM微处理器上的移植。
(2)驱动程序的移植及设计
智能家居控制中心需要多个设备驱动程序,而对于嵌入式系统而言很少有通用的外设驱动程序可以使用。在本系统中,除了GPRS模块和蓝牙主模块分别通过第一、第二个串口与S3C2410相连,可以直接使用标准的串口驱动程序外,其余的如家电控制接口、传感器接口及以太网接口等属于非标准外设,需要专门设计其驱动程序。在驱动程序的设计中,由于嵌入式Linux系统中设备驱动程序有一个标准的框架,虽然这些接口工作原理不同,但其设计方法基本类似,即根据硬件结构来“填写”框架中的函数。主要的函数包括open(),read(),write(),ioctl(),release(),module_init()和module exit()等。
以太网接口驱动程序的设计虽然可以按照上述方法进行,但是实现起来却有一定的难度,本系统在设计中使用一种更简单的方法,即通过移植的方法实现CS8900以太网驱动程序在S3C2410上运行。具体移植方法如下:
①利用网络工具从网上下载CS8900.C和CS8900.H,并把它们拷贝到内核下的DRIVERS/NET目录。
②修改配菜单,增加CS8900配置选项,使系统在配置ARCH SMDK2410时,可使用CS8900的配置选项。
③对网卡进行初始化及相关文件(smdk2410.h,mach-smdk24 10.c,makefile)进行修改工作。
④通过Make命令重新编译,即可实现CS8900以太网驱动程序的移植。
(3)嵌入式Web服务器的选择及移植
在ARM+Linux开发平台下,可以使用的web服务器主要有三个:Httpd,Thttpd和Boa。Httpd是较简单的一个Web服务器,但其功能较弱,不支持认证、CGI。Thttpd和Boa都支持认证、CGI等,功能比较强。为了实现动态Web技术,本系统在设计中选择了即支持CGI又较适合于嵌入式系统的Boa web服务器,并将其移植在该系统中,使系统实现嵌人式Web服务器的功能。具体移植实现方法如下:
①下载Boa服务器源代码boa-O.94.13.tar.gz,并将其解缩在/boa src/目录下。
②编译Boa源代码,生成执行文件Boa(大小约60 KB)。
③创建相关工作目录。在/etc目录下建立一个boa目录,里面放人boa的主要配置文件boa.conf。还需要创建日志文件所在目录/var/Iog/boa,创建HTML文档的主目录/var/www,创建CGI脚本所在目录/var/www/cgi-bin/。
④对Boa作配置和修改。主要通过对defines.h,boa.eonf和mime.types文件进行修改来实现。修改defines.h指定Web服务器的根目录路径(SERVER_ROOT)。boa.conf文件由一些规则组成,用于配置Boa服务器,指定相应端口,服务器名称,一些相关文件的路径等。Boa服务器要想正确运行,必须保证该文件是正确配置的,而且该文件和某些静态网页,CGI可执行程序等都放于某特定目录下。