基于S3C2440的嵌入式Linux根文件系统构建

发布者:BlissfulWhisper最新更新时间:2021-06-17 来源: eefocus关键字:S3C2440  嵌入式  Linux  根文件系统 手机看文章 扫描二维码
随时随地手机看文章

嵌入式Linux早已成为IT界家喻户晓的一个名字,使用Linux进行嵌入式产品开发有一个很大的优势,就是开发资源丰富,且成本低廉,嵌入式Linux操作系统越来越受到重视,其应用也越来越广泛。而文件系统作为操作系统的重要组成部分,用于控制对数据文件及设备的存取,提供对文件和目录的分层组织形式,数据缓冲以及对文件存取权限的控制。根文件系统一直是Linux系统不可或缺的组件,在嵌入式Lin-ux中,内核在启动期间进行的最后操作之一就是安装根文件系统。Busybox是构建嵌入式Linux根文件系统的软件,用它制作根文件系统简单、方便,而且设置灵活。


1 根文件


Linux要在一个分区上存放系统启动所必需的文件,如内核映像文件、内核启动后运行的第一个程序、给用户提供操作界面的Shell程序、应用程序所依赖的库等,这些必需、基本的文件合称为根文件系统,它们存放在一个分区中。根文件系统一般包括:1)基本的文件系统结构,包含一些必须的目录,比如:/dev,/proc,/bin,/etc,/lib,/usr,/tmp;2)基本程序运行所需的库函数,如:libc/uC-libc;3)基本的系统配置文件,如:rc,inittab等脚本文件;4)必要的设备支持文件,如:/dev/hd*,/dev/tty,/dev/fdO;5)基本的应用程序,如:sh,ls,cp,mv等。


根文件系统的制作就是生成包含上述各种文件的文件系统的过程,可通过直接拷贝宿主机上交叉编译器处的文件来制作根文件系统,但是这种方法制作的根文件系统一般过于庞大。也可通过一些工具如busybox来制作根文件系统,用busybox制作的根文件系统可以做到短小精悍并且运行效率较高。


2 busybox简介


busybox常被很形象地称为嵌入式Linux系统中的“瑞士军刀”,因为它将许多常用的UNIX命令和工具结合到了一个单独的可执行程序中。虽然与相应的GNU工具比较,busybox所提供的功能和参数略少,但在比较小的系统或者嵌入式系统中已经足够。busybox在设计上充分考虑硬件资源受限的特殊工作环境,它采用一种很巧妙的方法减少自己的体积;所有命令都通过“插件”的方式集中到一个可执行文件中,在实际应用过程中通过不同的符号链接来确定到底要执行哪个操作。例如最终生成的可执行文件为busybox,当为它建立一个符号链接ls的时候,就可以通过执行这个新命令实现列目录的功能。采用单一执行文件的方式可以最大限度地共享程序代码,甚至连文件头、内存中的程序控制块等其他操作系统资源都可共享,这对于资源比较紧张的系统来说,最合适不过了。


3 busybox的编译和安装


3.1 开发环境


基于S3C2440 ARM920T的硬件平台,该系统的硬件平台上主要使用三星S3C2440,外围还包括64 M SDRAM和64 M NAND Flash,2 M NOR Flash,系统采用宿主机加目标板的模式,宿主机是PC机,其操作系统是RedHatlinux,目标板是基于S3C2440微控制器的开发板,系统采用的内核是嵌入式Linux2.6.29,Boot loader是u-boot。


3.2 配置busybox

从网上下载busybox-1.13.0.tar后,使用tar xvzf busybox1.13.0.tar命令获得busybox-1.13.0目录,里面即是所有的源码。进入busybox-1.13.O目录后执行“make menuconfig”命令可进入配置界面。其配置界面如图1所示。


配置界面

在构造根文件系统时使用动态链接的busybox,构造根文件时需要在/lib目录下面放置glibc库文件。在busybox的配置过程中大多是选择或者去除各种命令,这里不详细叙述。


3.3 编译安装busybox


在编译之前,首先需要修改busybox根目录下的Makefile,使用交叉编译器。


将189行的ARCH?=$(SUBARCH)修改为ARCH?=arm,164行的CROSS_COMPILE?=修改为CROSS_COMPILE?=arm_linux-修改后执行make命令编译busybox。然后安装busybox,将busybox安装/home/work /rootby目录下,在安装之前需要在pc机上执行“mkdir/home/work/rootby”命令建立rootby目录,然后执行“make CONFIG_PREFIX =/home/work/rootby install”命令完成安装。安装完成后生成如图2所示文件、目录。

安装完成后生成文件

4 构建根文件


开发板的根文件系统在主机上的目录为/home/work/rootby。在此目录下使用mkdir命令建立dev,etc,home,lib,mnt,proc,root,sys,tmp目录。


4.1 创建etc目录下的文件


在/home/work/rootby/etc目录下存放各种配置文件。这些文件都是可选的,它们依赖于系统中所拥有的应用程序,依赖于这些程序是否需要配置文件。


4.1.1 创建etc/inittab文件


init进程根据/etc/inittab文件来创建其他子进程,比如调用脚本文件配置ip地址、挂接其他文件系统,最后启动shell等。


参考busybox源码下面的“examples/inittab”文件,创建inittab代码如下:


程序


在busybox的参考文件中控制台是ttySAC0,而在s3c24xx系列器件的串口驱动里采用s3c2410_serialx做为设备名,使用串口0作为控制台,这里使用s3c2410_serialO作为控制台。


4.1.2 创建etc/init.d/rcS文件


rcS文件是一个脚本文件,借助启动脚本可以设置各种程序开机后自动运行,也可进行其他系统设置,这有点类似于Windows系统中的Autobat自动批处理文件。创建的文件内容如下(实际内容可能与此不完全一致):


程序


注意最后还要改变它的属性使它能够执行,执行chmod+x etc/init.d/rcS命令。


4.1.3 创建etc/fstab文件


fstab文件描述系统中各种文件系统的信息,应用程序读取这个文件,然后根据其内容进行自动挂载的工作。创建的代码如下:


程序

文件中各字段的意义如下:1)device:要挂接的设备,如/dev/mtdblockl;2)mount-point:挂接点;3)type:文件系统类型;4)opt-ions:挂接参数,以逗号隔开;5)dump和fsck order:用来决定控制dump、fsck程序的行为。


4.2 用户和组文件的创建


需要在etc目录下增加passwd和group两个文件。首先增加passwd文件,passwd一共由7个字段组成,6个冒号将其隔开。其含义分别为:1)用户名;2)是否有加密口令,x表示有,不填表示无,采用MD5、DES加密;3)用户ID;4)组ID;5)注释字段;6)登录目录;7)所使用的shell程序。


passwd的内容为root:x:0:0:root:/root:/bin/sh


增加group文件,group共由4个字段组成,3个冒号将其隔开。含义分别为:1)组名;2)是否有加密口令,同passwd;3)组ID;4)指向各用户名指针的数组。


/home/work/rootby/etc/group内容如下:


root:x:0:


4.3 构建dev目录


从Linux-2.6.18开始,负责旧版本的设备管理系统devfs已被废除,但新版本的udev是一个基于用户空间的设备管理系统。在内核启动时并不能自动创建设备节点,固需手动创建console和null两个启动过程必须的设备节点。将采用busybox中内置的mdev,一个简化的udev版本。


#mknod dev/console C 5 1


#mknod dev/null C 1 3


如果不创建这两个设备文件,在文件系统启动时会出现错误信息,不能初始化控制台。


4.4 安装glibc库


在开发板上需要加载器和动态库,执行如下几个命令:


$mkdir-p/home/work/rootby/lib


$cd/home/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib


$cp*.SO*/home/work/rootby/lib-d


5 制作yaffs2文件系统映像文件


所谓制作文件系统映像文件,就是将一个目录下的所有内容按照一定的格式存放到一个文件中,这个文件可以直接烧写到存储设备上去。


在yaffs源码中有个utils目录,里面有mkyaffsimage和mkyaffs2image的源代码,前者可制作yaffs映像文件,后者制作yaffs2映像文件,将下载的yaffs2解压出来在目录/Development下有两个文件夹:yaffs和yaffs2,进入yaffs2/utils目录,此目录下有3个文件。在加入两个文件:nand-ecc.c和yaffs_packed-tagsl.c,具体文件这里不列出,源码可参见文献。


修改Makefile文件:


加入MKYAFFSSOURCES=mkyaffsimage.c yaffs_packedtagsl.C nand-ecc.c因为yaffs_packedtagsl.c和nand-ecc.c是加上去的。然后执行make命令后生成mkyaffs2image工具,复制此工具到PC机usr/local/bin目录下,利用makyaffs2image工具,执行#mkyaffsimage2 rootby/pyaffs2.img命令可生成文件系统映像文件。执行#gzip-9 pyaffs2.img最终生成嵌入式Linux根文件系统的映像文件为pyaffs2-.img.gz。至此,整个根文件系统就制作完成,最后可以通过上面制作的pyaffs2.img.gz启动整个系统。

6 下载映像文件并执行


以下命令为通过Windows的超级终端工具下载Linux内核映像和根文件系统映像到目标板(基于S3C2440微处理器的开发板)。


#tftp 30008000 zImage/*下载Linux内核映像到目标板内存*/


#fftp 30800000 pyaffs2.img.gz/*下载根文件系统映像到目标板内存*/


#go 30008000/*启动目标板Linux*/


目标板的嵌入式Linux系统启动后在超级终端中显示的结果如图3所示。可见用busybox制作的根文件系统已经正常启动。

目标板的嵌入式Linux系统启动后在超级终端中显示的结果

7 结束语


对用busybox制作嵌入式Linux根文件系统的方法进行归纳和总结,给出制作嵌入式Linux根文件系统的一般方法,适用于ARM架构处理器的嵌入式系统。利用此方法制作的文件系统可在S3C2440上成功运行,意在给嵌入式系统平台的搭建有个整体把握和认识,以降低进入ARM嵌入式开发应用领域的门槛,提供的方法组建的文件系统非常简单且配置灵活。

关键字:S3C2440  嵌入式  Linux  根文件系统 引用地址:基于S3C2440的嵌入式Linux根文件系统构建

上一篇:基于ARM64 的常见汇编命令记录
下一篇:低功耗高性能多媒体上网设备

推荐阅读最新更新时间:2024-11-17 00:49

亚洲公司在大数据浪潮中进入智能系统时代
2012 年 11 月 13 日,北京讯 ——云计算、大数据和连接设备,这三大领域就是未来商界企业信息和通讯技术 (ICT) 发展的三大关键,而广阔的亚太地区因为其技术采用率高,继而更能体现出这一趋势。 据 IDC 称,在未来五年,预计亚太大数据市场将为以 46.8% 的增长率发展。1亚洲超过 20% 的公司已经部署了连接设备,另外 70% 预计会在未来两年内部署。2 将连接设备与云计算和数据分析能力结合起来的技术解决方案——在业内被称之为智能系统——可帮助大幅改善公司的运营方式——目前已经有许多案例作为事实支撑。 当今亚洲(包括中国)智能系统市场达近 2600 亿美元及超过 3.38 亿个单位,IDC 半导体及使能技术部
[嵌入式]
linux系统学习1-8:第1个ARM裸板程序及引申
第001节:辅线1_硬件知识_LED原理图 实现点亮LED的步骤: 1.看原理图,确定控制led的引脚 通过主芯片使用引脚输出:3.3V点亮led;0V熄灭led。 -接法: 引脚驱动能力不足:使用三极管, 接法介绍: -接法1: -接法2: 2.看主芯片手册,确定如何设置/控制引脚 3.写程序 第002节:辅线1_硬件知识_s3c2440启动流程与GPIO操作 知识点: 网络net,同名的net表示连接在一起 网络中的n,常表示低电平有效 怎么让GPF4输出1/0 先配置为输出引脚 设置状态 设置GPFCON =0b01(0b表示二进制,9为0,8为1),GPF4配置为输出 设置GPFDAT =
[单片机]
<font color='red'>linux</font>系统学习1-8:第1个ARM裸板程序及引申
DVR系统嵌入式Linux解决方案
应用前景: 近几年来,DVR(数字视频录像)在安防监控领域应用越来越广泛,传统的模拟录像技术已经逐渐被数字录像技术取代,数字录像技术可以达到更好的图像质量和提供更大的存储容量。目前DVR已广泛应用到金融、文博、酒店、交通、商业、医院、工厂、学校、住宅小区物业管理等各个领域。从目前趋势看,多媒体监控系统的应用领域还在不断扩展。 目前,已经有一些公司推出了基于X86 PC-based的数字视频录像机(DVR),但是功耗、成本、体积、稳定性方面还是有所欠缺,PC-BASED的DVR产品正逐步为嵌入式取代。华恒科技目前提供基于PowerPC的嵌入式linux开发平台可以满足这方面应用的设计要求。该设计以PowerPC处理器和专用音视频编
[应用]
S3C2440时钟体系分析
FCLK 时钟用于CPU HCLK时钟用于AHB bus 外设 PCLK 时钟用于 APB bus 外设 S3C2440 有两个锁相环(PLLs), 一个用于FCLK,HCLK,PCLK 另一个专门用于USB 模块 时钟控制逻辑可以在没有PLL的情况下制作慢速时钟,并通过软件将时钟连接/断开与每个外围模块的连接,从而降低了功耗。 通过在片内集成的2个锁相环:MPLL和UPLL,可对输入的Fin=12MHz的晶振频率进行倍频。S3C2440使用了三个倍频因子MDIV、PDIV和SDIV来设置倍频,通过寄存器MPLLCON和UPLLCON可设置倍频因子。其中MPLLCON寄存器用于设置处理器内核时钟主频FCLK,其输入输
[单片机]
<font color='red'>S3C2440</font>时钟体系分析
嵌入式C语言开发ADSP21XX系列DSP
摘要:详细介绍使用VisualDSP开发工具进行ADSP21XX的C语言编程的方法;分析其C语言运行库的结构,并且结合实例介绍C语言工具的使用方法,包括C语言与汇编语言混合编程的方法,从C运行库提取代码用于自己的汇编语言程序的方法、修改运行库的源代码以适应自己开发需要的方法等。 关键词:DSP VisualDSP 嵌入式C语言 汇编语言 引言 长期以来,在DSP系统开发中,一直把汇编语言作为主要的开发工具;但汇编语言与自然语言差距很大,不易常,而且汇编语言是依赖于处理器的,不利于软件的可重复利用和系统的稳定性,程序不易移植,给开发工作带来了很大的困难。随着嵌入式系统复杂程度的不断提高,用汇编语言编写一个巨大的程度将是困难,甚
[应用]
【mini2440】S3C2440的基本IO
1. 原理图与实物图对照图 https://download.csdn.net/download/Kshine2017/73732833 2.详细介绍 2.1 Led电路 普通控制代码: //GPBCON 0x56000010 R/W 配置端口B的引脚 #define GPBCON (*(unsigned int *)0x56000010) //GPBDAT 0x56000014 R/W 端口B的数据寄存器 #define GPBDAT (*(unsigned int *)0x56000014) void delay(unsigned int time) { int i,j; for(i=0;i ti
[单片机]
【mini2440】<font color='red'>S3C2440</font>的基本IO
基于Linux的IPv6复合防火墙的设计
引言 IPv6运用AH和ESP对所传输的数据进行认证和加密,保证了数据的机密性、完整性和可靠性,实现了信息在传输过程的安全性。但IPv6并不能保障网络系统本身的安全及其提供的服务的可用性,也不能防止黑客的非法入侵和窃取私有数据。面对IPv6将要广泛的应用,有必要将其和防火墙相结合来保障整个网络系统的安全。 目前Linux操作系统自2.2内核以来已提供对IPv6的支持,其性能稳定且安全性较高,因此本文以Linux为平台来研究设计针对IPv6的防火墙系统。 Linux内核对数据包的过滤处理 netfilter框架机制 netfilter是linux2.4内核以后实现数据包过滤处理的一个抽象的、通用化的功能框架,它提供了不同于B
[工业控制]
基于<font color='red'>Linux</font>的IPv6复合防火墙的设计
嵌入式系统4G技术未来几年将迎来大发展
  Unstrung Insider公司的最新报告称,包括了手机及消费电子设备的嵌入4G技术,将创立一个提供移动WiMax和LTE等4G服务的内置式市场,同时也会对现有的手机产业环境产生一些根本性的变化,尤其是对网络运营商与设备提供商之间的关系。   4G系统也将为半导体行业带来一个关于片上系统SoC(system-on-chip)架构的全新思路。   4G Inside报告:移动WiMax & LTE的嵌入式模块分析了不断变化的4G市场,主要关注于影响着移动WiMax和LTE嵌入式模块的关键技术以及商业问题。在设备制造商必须考虑选择一种嵌入系统嵌入到产品中的决策框架下,该报告评价了移动WiMax和LTE的产业环境以及商业模式
[嵌入式]
<font color='red'>嵌入式</font>系统4G技术未来几年将迎来大发展
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved