鲍尚东 王杰
摘 要:针对嵌入式系统的特点,本文较详细的给出了嵌入式linux系统的构建流程和方法。主要分为开发环境的建立,linux的安装和编译器的制作。bootloader、linux内核、文件系统的移植以及驱动程序编写。
关键词:linux;bootloader;根文件系统;驱动程序
DOI:10.16640/j.cnki.37-1222/t.2019.05.144
企业对嵌入式linux工程师的需求量大,所以嵌入式linux的开发是一门热门的领域。嵌入式linux系统的开发涉及到硬件电路的设计、操作系统的移植、驱动程序的编写、应用程序的开发等主要方面。本文研究了基于S3C2410X的嵌入式linux系统的构建。
1 系统总体硬件设计
硬件系统采用模块化的设计思想,核心部分是三星公司的S3C2410X处理器。外围扩展有LCD液晶显示屏、UART通道、以太网、键盘、主从USB,总线接口等主要器件。
2 开发环境的建立
2.1 宿主机linux的安装
嵌入式linux开发需要在计算机上安装linux操作系统提供编译开发环境,通常称为宿主机。有多种方案可行,一是直接在计算机上安装双操作系统,二是建立独立的linux服务器,三是在windows环境下安装WMware虚拟机(linux)的方式,本文采用第三种方案适合初学者。在WMware中安装Red Hat9操作系统[1]。
2.2 构建交叉开发工具链
交叉工具链俗称编译器,一是直接从相关网站下载,二是分步式构建交叉工具链,三是通过crosstool脚本工具集构建,这里采用的是crosstool-0.43版本,查看crosstool里的匹配文本,从相关网站下载工具链所需要的软件包,主要包含gcc、binutils、glibc、linux内核头文件。所有文本无需解压直接放在相关目录里,利用vi编辑器打开demo-arm9tdmi.sh文件进行修改,修改完后运行该脚本程序,最终在宿主机的linux系统相关目录里生成gcc编译器。
3 bootloader的移植
启动引导程序bootloader主要完成系统启动时的硬件初始化工作并能够将操作系统给启动引导起来,另外其包含必要的驱动程序和命令,能与宿主机进行通信执行下载等现关操作。u-boot可以针对多种处理器并不是为某一处理器而开发的,适用范围更广,但其在使用前需要针对特定硬件平台做修改,完成移植工作。vivi是韩国mizi公司针对三星的ARM系列处理器开发的一款bootloader具有专用性,使用方便等特点。网上也有该bootloader的变种,功能更强大。利用vivi编辑器打开Makefile文件,修改ARCH=arm,CROSS_COMPILE=gcc的绝对路径。执行make menuconfig执行相关的配置,最后运行make生成可执行文件vivi 。
4 Linux-2.6内核的移植
linux内核是整个系统的核心与灵魂。它是一种开源软件,可以从相关网站下载,目前主流的处理器均能支持。在移植之前需要对其进行修改,首先要针对特定硬件平台的软件部分进行修改,由于linux社区的维护工作,这部分工作已经大大减轻,修改Makefile文件,输入make menuconfig对linux-2.6内核进行必要的配置,该项工作很重要,关系到可执行内核的大小和实用性。
5 根文件系统的构建
文件系统是计算机对数据进行某种组织和管理的方式,根文件系统是linux启动后挂载的第一个文件系统[2]。首先制作根目录例如etc、dev、sbin、bin等目录,尽可能按着文件系统标准来制作目录。linux是类似于unix的命令系统,在嵌入式开发中可以通过busybox来制作相关的命令。编写etc目录下的脚步配置文件,例如rcS、inittab、profile等脚步程序。
6 驱动程序的编写
驱动程序的编写属于底层开发,其工作量相对较小,但难度较大,要求开发者具有较深厚的硬件,C语言和数据结构基础。Linux驱动程序分为字符驱动,快驱动和网络驱动。字符驱动是我们经常要编写的驱动程序,所有要理解字符驱动的编写规则。驱动程序称为设备文件,字符驱动通过open()函数打开,read()、write()等对其读写,所有这些操作函数都是通过file_operations这个数据结构对其进行访问[3]。
7 结论
本文针对S3C2410X处理器构建了linux系统,该系统是一个完整的嵌入式系统,属于底层开发,能够可靠运行,能支持后续多种应用程序的开发。
参考文獻:
[1]陈賾等.ARM嵌入式技术原理与应用[M].北京:北京航空航天大学出版社,2011:288-290.
[2]文宇波.构建和移植嵌入式Linux的根文件系统[J].微计算机信息,2010年26-5-2:65-67.
[3]韦东山.嵌入式Linux应用开发安全手册[M].北京:人民邮电出版社,2008:384-389.
基金项目:国家级大学生创新创业项目:基于ARM的嵌入式linux研究(编号:201810383059)
作者简介:鲍尚东(1980-),男,安徽巢湖人,硕士研究生,助教,研究方向:嵌入式系统。