论文部分内容阅读
摘 要:主要介绍了基于S3C2440 ARM微处理器的基站工况监控系统的设计方案,结合项目实例重点研究了Bootloader移植、内核移植、根文件系统制作以及相关驱动程序的开发,实现了基于Boa服务器的基站工况监控系统的设计,为今后对基站环境工况数据的监控打下一定的技术基础。
关键词:嵌入式Linux;S3C2440 ARM 处理器;监控系统
0、引言
本文的设计内容为基站远程监控系统,基本目标是实现这样一种应用于基站的环境工况监控系统:在服务器主页上可以实时显示基站温度、湿度、粉尘浓度,并且可以通过主页对基站灯光进行控制。
本课题最终设计方案选择了天祥电子推出的TX2440A开发板作为硬件设备。主要通过完成软硬件开发环境的建立、BootLoader的移植、Linux内核的移植及根文件系统的构建、Boa服务器的移植、服务器主网页的制作来实现最终功能,下面进行具体的介绍。
1、U-boot的移植
U-boot作为通用的 Bootloader 可以方便地移植到其他的硬件平台上。移植U-boot工作就是添加开发板硬件相关的文件、配置选项、然后配置编译。开始移植之前,需要先分析一下U-Boot已经支持的开发板,比较出硬件配置最接近的开发板。选择的原则是,首先处理器相同,其次处理器体系结构相同,然后是以太网接口等外围设备。因为U-Boot代码中的SMDK2410模板所采用的 CPU是 s3c2410 与s3c2440相似,所以对于U-Boot移植,就是修改SMDK2410模板代码[1],移植的具体操作步骤如下:
首先需要修改顶层Makefile文件,并在board目录下,新建自己的开发板目录TX2440,然后修改该目录下Makefile,把smdk2410.o改为TX2410.o。并且进入include/configs目录进行相关修改。最后进入顶层目录,测试能否编译成功 。最终还需对SDRAM的相关文件进行配置包括lowlevel_init.S、speed.c等。
2、 Linux内核的移植
使某一个平台的代码运行在其他平台上的过程叫移植。在进行内核裁剪时,需要结合自己的硬件电路,对内核代码进行修改。本系统选用Linux的稳定版本Linux-2.6.29.3内核作为移植对象。下面简要介绍Linux的内核移植准备。[2]
2.1 内核准备移植
Linux的内核移植步骤具体如下:⑴、修改Linux目录顶层Makefile,指定系统硬件架构与交叉编译器。
⑵、修改mach-smdk2440.c。⑶、配置内核:#make menuconfig,导入S3C24XX系列开发板板级支持包,然后只选择S3C2410 Machine与 S3C2440 Machine等的相关选项。至此内核的基本功能配置完毕,下面我们需要继续增强其他功能。
2.2 相关字符设备驱动移
TX2440A 开发板上还有很多外围设备:LED、按键、ADC、蜂鸣器、温度传感器。我们需要编写驱动,并加入到内核中。为最大化的利用硬件空间,需将相关驱动编译成模块化。具体步骤包括把相应的驱动的源码存放在/driver/char中,并在修改相应的Kconfig文件以及makefile文件。最后需进入menuconfig文件中,对内核进行模块化的配置。
3、构建根文件系统
根文件系统一般包括如下内容:1)基本的文件系统结构,包含一些必须的目录,比如:⑴、/dev,/proc,/bin,/etc,/lib,/usr,/tmp。⑵、基本程序运行所需的库函数,如:Glibc/uC- libc。⑶、基本的系统配置文件,如:rc,inittab 等脚本文件。⑷、必要的设备支持文件,如:/dev/hd*,/dev/tty,/dev/fd0。⑸、基本的应用程序,如:sh,ls,cp,mv等[3]。
3.1 配置Busybox
配置命令:make menuconfig进入界面,对其必须的选项进行配置,保存并退出配置界面,使用命令:make install编译Busybox.最终会生成一个install子目录,然后将该目录中的文件复制到yaffs2下[4]。
3.2 制作根文件系统
⑴、初始化脚本由于系统会对/etc/init.d/rcS这个文件进行系统初始化,因此我们可以编辑一个rcS脚本来做进一步的初始化工作。⑵、拷贝交叉编译器的库文件到lib目录下。
4、Web应用程序的移植及测试效果
4.1 移植嵌入式web服务器Boa
Boa 是一款单任务的 HTTP 服务器,与其他传统的 Web 服务器不同的是当有连接请求到来时,它并不为每个连接单独创建进程,也不通过复制自身进程来处理多链接, 而是通过建立 HTTP 请求列表来处理多路HTTP 连接请求,同时它只为 CGI 程序创建新的进程,这样就在最大程度上节省了系统资源,这对嵌入式系统来说至关重要,同时它还具有自动生成目录、自动解压文件等功能,因此,Boa 具有很高的 HTTP 请求处理速度和效率,在嵌入式系统中具有很高的应用价值[5]。
接下来是Boa的移植过程,具体步骤如下:⑴、使用4.1.2交叉编译器编译Boa服务器,并对Boa服务器的源码所支持的构架进行设置,使其支持嵌入式平台。⑵、 配置boa的相关目,主要是对Boa.conf文件进行相应的配置。
4.2 基于基站的远程监控系统的设计
此次需要编写的源码分为两部分,第一部分包括登陆部分使用logic.c实现,其次是主页面的实时监控部分,其中分别包括LED、ADC、温度传感器等程序来进行实现。第二部分是对页面的制作,包括登陆界面以及主控界面的编写,值得一提的是在网页显示中,我们使用ADC来模拟了实时的粉尘浓度以及湿度。
5、总结
本次课题基本完成最初的既定目标,完成了一个基于嵌入式的基站远程监控系统。远程客户端可以通过以太网登陆嵌入式服务器。对远端基站环境工况得到实时的监控。并对未来进一步完善应用于基站的环境工况数据系统,打下了一定技术基础。
参考文献
[1] 叶培顺. 嵌入式Linux在s3c2440上的移植. 电子设计工程,2011.8第15期
[2] 周润,谢永乐. 基于ARM-Linux和S3C2440的嵌入式Linux内核设计. 中国仪器仪表,2010年第3期
[3] 邵长彬,李洪亮. 用 Busybox 制作嵌入式 Linux 根文件系统 《微计算机信息》(嵌入式与 SOC)2007年第 23 卷 第 10-2 期
[4] 耿道渠,郭 春,李小龙,柴 俊. 基于ARM9的嵌入式Linu x系统移植研究与QoS功能实现. 四川大学学报(自然科学版),2014年7月第51卷 第4期
[5] 陆永健,王萍,吴佳,张永力. 嵌入式 Web 服务器 Boa 的移植及其应用. 河海大学常州分校学报,2005.12第 19 卷 第 4 期
关键词:嵌入式Linux;S3C2440 ARM 处理器;监控系统
0、引言
本文的设计内容为基站远程监控系统,基本目标是实现这样一种应用于基站的环境工况监控系统:在服务器主页上可以实时显示基站温度、湿度、粉尘浓度,并且可以通过主页对基站灯光进行控制。
本课题最终设计方案选择了天祥电子推出的TX2440A开发板作为硬件设备。主要通过完成软硬件开发环境的建立、BootLoader的移植、Linux内核的移植及根文件系统的构建、Boa服务器的移植、服务器主网页的制作来实现最终功能,下面进行具体的介绍。
1、U-boot的移植
U-boot作为通用的 Bootloader 可以方便地移植到其他的硬件平台上。移植U-boot工作就是添加开发板硬件相关的文件、配置选项、然后配置编译。开始移植之前,需要先分析一下U-Boot已经支持的开发板,比较出硬件配置最接近的开发板。选择的原则是,首先处理器相同,其次处理器体系结构相同,然后是以太网接口等外围设备。因为U-Boot代码中的SMDK2410模板所采用的 CPU是 s3c2410 与s3c2440相似,所以对于U-Boot移植,就是修改SMDK2410模板代码[1],移植的具体操作步骤如下:
首先需要修改顶层Makefile文件,并在board目录下,新建自己的开发板目录TX2440,然后修改该目录下Makefile,把smdk2410.o改为TX2410.o。并且进入include/configs目录进行相关修改。最后进入顶层目录,测试能否编译成功 。最终还需对SDRAM的相关文件进行配置包括lowlevel_init.S、speed.c等。
2、 Linux内核的移植
使某一个平台的代码运行在其他平台上的过程叫移植。在进行内核裁剪时,需要结合自己的硬件电路,对内核代码进行修改。本系统选用Linux的稳定版本Linux-2.6.29.3内核作为移植对象。下面简要介绍Linux的内核移植准备。[2]
2.1 内核准备移植
Linux的内核移植步骤具体如下:⑴、修改Linux目录顶层Makefile,指定系统硬件架构与交叉编译器。
⑵、修改mach-smdk2440.c。⑶、配置内核:#make menuconfig,导入S3C24XX系列开发板板级支持包,然后只选择S3C2410 Machine与 S3C2440 Machine等的相关选项。至此内核的基本功能配置完毕,下面我们需要继续增强其他功能。
2.2 相关字符设备驱动移
TX2440A 开发板上还有很多外围设备:LED、按键、ADC、蜂鸣器、温度传感器。我们需要编写驱动,并加入到内核中。为最大化的利用硬件空间,需将相关驱动编译成模块化。具体步骤包括把相应的驱动的源码存放在/driver/char中,并在修改相应的Kconfig文件以及makefile文件。最后需进入menuconfig文件中,对内核进行模块化的配置。
3、构建根文件系统
根文件系统一般包括如下内容:1)基本的文件系统结构,包含一些必须的目录,比如:⑴、/dev,/proc,/bin,/etc,/lib,/usr,/tmp。⑵、基本程序运行所需的库函数,如:Glibc/uC- libc。⑶、基本的系统配置文件,如:rc,inittab 等脚本文件。⑷、必要的设备支持文件,如:/dev/hd*,/dev/tty,/dev/fd0。⑸、基本的应用程序,如:sh,ls,cp,mv等[3]。
3.1 配置Busybox
配置命令:make menuconfig进入界面,对其必须的选项进行配置,保存并退出配置界面,使用命令:make install编译Busybox.最终会生成一个install子目录,然后将该目录中的文件复制到yaffs2下[4]。
3.2 制作根文件系统
⑴、初始化脚本由于系统会对/etc/init.d/rcS这个文件进行系统初始化,因此我们可以编辑一个rcS脚本来做进一步的初始化工作。⑵、拷贝交叉编译器的库文件到lib目录下。
4、Web应用程序的移植及测试效果
4.1 移植嵌入式web服务器Boa
Boa 是一款单任务的 HTTP 服务器,与其他传统的 Web 服务器不同的是当有连接请求到来时,它并不为每个连接单独创建进程,也不通过复制自身进程来处理多链接, 而是通过建立 HTTP 请求列表来处理多路HTTP 连接请求,同时它只为 CGI 程序创建新的进程,这样就在最大程度上节省了系统资源,这对嵌入式系统来说至关重要,同时它还具有自动生成目录、自动解压文件等功能,因此,Boa 具有很高的 HTTP 请求处理速度和效率,在嵌入式系统中具有很高的应用价值[5]。
接下来是Boa的移植过程,具体步骤如下:⑴、使用4.1.2交叉编译器编译Boa服务器,并对Boa服务器的源码所支持的构架进行设置,使其支持嵌入式平台。⑵、 配置boa的相关目,主要是对Boa.conf文件进行相应的配置。
4.2 基于基站的远程监控系统的设计
此次需要编写的源码分为两部分,第一部分包括登陆部分使用logic.c实现,其次是主页面的实时监控部分,其中分别包括LED、ADC、温度传感器等程序来进行实现。第二部分是对页面的制作,包括登陆界面以及主控界面的编写,值得一提的是在网页显示中,我们使用ADC来模拟了实时的粉尘浓度以及湿度。
5、总结
本次课题基本完成最初的既定目标,完成了一个基于嵌入式的基站远程监控系统。远程客户端可以通过以太网登陆嵌入式服务器。对远端基站环境工况得到实时的监控。并对未来进一步完善应用于基站的环境工况数据系统,打下了一定技术基础。
参考文献
[1] 叶培顺. 嵌入式Linux在s3c2440上的移植. 电子设计工程,2011.8第15期
[2] 周润,谢永乐. 基于ARM-Linux和S3C2440的嵌入式Linux内核设计. 中国仪器仪表,2010年第3期
[3] 邵长彬,李洪亮. 用 Busybox 制作嵌入式 Linux 根文件系统 《微计算机信息》(嵌入式与 SOC)2007年第 23 卷 第 10-2 期
[4] 耿道渠,郭 春,李小龙,柴 俊. 基于ARM9的嵌入式Linu x系统移植研究与QoS功能实现. 四川大学学报(自然科学版),2014年7月第51卷 第4期
[5] 陆永健,王萍,吴佳,张永力. 嵌入式 Web 服务器 Boa 的移植及其应用. 河海大学常州分校学报,2005.12第 19 卷 第 4 期