嵌入式Linux 开发环境的建立
V1.0
【版本信息】
2010年4月28日 杨哲 编写初始版本V1.0
由于开发板采用的是CarmFS 文件系统,CramFS 文件系统为只读文件系统,不能添加和修改文件。为了以后可以随时修改、配置开发环境,所以我们按自己的要求制作好根文件系统,具体步骤如下:
本手册的一些约定:
1)工作目录为:/up-Star2410。
2)手册中的命令默认情况下,是在pc机的终端下输入的,如果在arm中输入的命令,文中会特别注明。
1、安装交叉编译器
我们这里选用友善之臂提供的4.3.2版本,相比3.x.x版本,4.3.2的交叉编译器采用EABI技术(EABI的全称是:Embedded Application Binary Interface),它针对软件浮点数运行做了优化,使用它编译出来的应用程序效率更高,不过也有一个不好的地方:就是和以前版本编译的应用程序不兼容了,全部都需要程序编译
所以我们这里统一只使用4.3.2版本,在PC机上,具体安装步骤如下:
# cd /up-Star2410
# tar -zxvf arm-linux-gcc-4.
解压后的目录为usr目录,将usr的子目录4.3.2拷贝到根目录/usr/local/arm下
然后
# vi /root/.bash_profile
将里边的PATH修改为
PATH=$PATH:HOME/bin:/usr/local/arm/4.3.2/bin/
保存退出,执行:
# source /root/.bash_profile
则以后的arm-linux-gcc-4.3.2会被自动搜索到
验证是否正确安装:
在终端上输入ar,然后双击tab键,会自动显示arm-linux-gcc-4.3.2,如果同时显示了以前的旧版本,则需重新启动虚拟机
2、烧写内核镜像和根文件系统
由于内核镜像和根文件系统都存储在64MB的NAND Flah上,首先了解一下NAND Flah的分区情况:
名称 | 起始地址 | 结束地址 | 大小 | 作用 |
Boot Agent | 0x00000000 | 0x00080000 | 0.5M | 启动u-boot |
S3C2410 kernel | 0x00080000 | 0x00280000 | 2M | Linux内核镜像 |
S3C2410 rootfs | 0x00280000 | 0x00680000 | 4M | 根文件系统,只读,cramfs |
user | 0x00680000 | 0x04000000 | 57.5M | 用户文件系统,可读,yaffs |
注意:第四个分区user是yaffs2格式,可读,系统启动时会把user挂载到根文件系统的root目录下,所以root目录是可读的,并有57.5M的空间供用户使用,但是其它目录还是不可写的。
1)制作根文件系统包
由于时间原因,本手册并未给出制作根文件系统的具体步骤(后续手册中会具体写到)
# cd /up-Star2410
# tar –zxvf
# ./amfs rootfs amfs
这就生成了cramfs包,然后把它拷贝到tftp下载目录(本机为跟目录tftpboot),下一步要烧写到flash中
2)制作内核镜像uImage
源码已经提供,直接把uImage复制到tftfboot目录下用就可以了,具体怎么裁剪和编译内核请看后续手册。
3)烧写内核镜像和cramfs文件系统
注意:下载需用到tftp服务器,所以必须确保系统已经安装tftp服务器,下面验证你的系统是否已经安装了tftp服务器:
#service xinetd restart
#netstat –a | grep tftp
出现下图表明你已经安装了tftp服务器
、配置bootloader
重启开发板,马上按下enter键,
在提示符下输入setenv serverip 192.168.1.137,此IP为我们虚拟机的IP,再输入setenv ipaddr 192.168.1.193,此IP为我们开发板的IP。最好输入saveenv,保存设置,之后就不需要改动了。
设置之后,我们可以通过printenv指令,查看u-boot的环境变量中已经添加了新的变量,如图(如果不是,请按开发板带的快速手册中的烧写部分烧写)
这时,我们的u-boot的配置就结束了。
、在配置好u-boot之后,执行烧写内核的命令,输入run update_kernel指令,如图。
、烧写根文件系统
执行烧写根文件系统的命令,输入run update_rootfs指令,如图
然后输入boot启动linux系统,至此开发板的环境已经建立好了。
特别注意:以后我们要不断的向根文件系统中添加相应的功能,需要随时更新系统,按照上述步骤执行就可以了。
这里有必要对开发板的部分启动信息进行一些解释
前三行表明开发板中的boa服务器已经启动,端口号是80。
(boa服务器的移植请看后续手册)
第四行表明user分区(即/dev/mtdblock3)已经挂载到root目录下,可以看到它是yaffs文
件格式。
最后一行 [root@yangzhe]# 中的yangzhe是我自己设置的,有兴趣的话可以在根文件系统中的/etc/profile中修改PS1的值,修改为自己喜欢的格式,如下:
# cd /up-Star2410/rootfs/etc
# vi profile
修改完后更新根文件系统。
基于Boa的Web服务器设计
1、Boa服务器功能概述和实现
Boa是一款单任务的HTTP服务器,与其他传统的Web服务器不同的是当有连接请求到来时,它并不为每个连接单独创建进程,也不通过复制自身进程来处理多链接,而是通过建立HTTP请求列表来处理多路HTTP连接请求,同时它只为CGI程序创建新的进程,这样就在最大程度上节省了系统资源,这对嵌入式系统来说至关重要。同时它还具有自动生成目
录、自动解压文件等功能,因此,Boa具有很高的HTTP请求处理速度和效率,在嵌入式系统中具有很高的应用价值。[14]
网页计算器html代码 嵌入式Web服务器Boa和普通Web服务器一样,能够完成接收客户端请求、分析请求、响应请求、向客户端返回请求结果等任务。它的工作过程主要包括:
1. 完成Web服务器的初始化工作,如创建环境变量、创建TCP套接字、绑定端口、开始侦听、进入循环结构,以及等待接收客户浏览器的连接请求;
2. 当有客户端连接请求时,Web服务器负责接收客户端请求,并保存相关请求信息;
3. 在接收到客户端的连接请求之后,分析客户端请求,解析出请求的方法、URL目标、可选的查询信息及表单信息,同时根据请求做出相应的处理;
4. Web服务器完成相应处理后,向客户端浏览器发送响应信息,关闭与客户机的TCP连接。嵌入式Web服务器Boa根据请求方法的不同,做出不同的响应。
Boa的功能实现也是通过建立连接、绑定端口、进行侦听、请求处理等来实现的。嵌入
式Web服务器由于嵌入式系统资源非常有限,不能直接使用桌面或服务器上的Web服务器。Boa是一个单任务的HTTP服务器,它并不为每个新的连接启动新的进程,也不为多重连接而自我复制进程,而是内部并行处理所有的连接。Boa也遵循GNU协议,完全免费,完全开放源代码。
3、移植Boa到开发平台
具体移植步骤请参看BOA服务器的移植文档。
这里我们使用的文件系统中已经移植好了boa服务器,只要知道怎么使用就可以了,这里需要说明几点:
交叉编译好的boa可执行文件我们放在/sbin 目录下
boa服务器的配置文件放在/etc/boa目录下,如果需要需该参数可以在这里修改
boa服务器的主目录我们设置在/root/web下,这个目录很重要,它存放HTML文档,就是我们制作的网页。
cgi脚本路径我们设置在/root/web/cgi-bin目录下,这里存放cgi程序。
4、测试静态网页
boa移植好之后,我们就可以在windows下的浏览器访问开发板(/root/web)上的HTML页面了,下面我们复制已经准备好的页面到开发板中,进行测试。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论