嵌入式根文件系统(基于arm)

发布者:悦耳旋律最新更新时间:2022-05-26 来源: eefocus关键字:嵌入式  根文件系统  arm 手机看文章 扫描二维码
随时随地手机看文章

1 根文件系统

嵌入式可以包含多个文件系统,根文件系统是第一个,当linux启动的时候,第一个必须挂载的是根文件系统,若系统不能从指定设备上挂载根文件系统,则系统出错就退出。本文主要分以下两个部分说明根文件系统,第一个是如何制作根文件系统,第二个则是挂载根文件系统到内核。


2 如何建立根文件系统

根文件系统的制作是学习驱动的重要一步,这里我直接把制作根文件系统的框架思维导图贴出来了。我们制作的根文件系统就是按照这个框架来设计。

这里写图片描述

2.1 创建目录

本文所创建的根文件名称是rootfs,路径是/home/S5-driver/lesson8/rootfs,这个路径在随后的内核配置中用到多次。接下来在rootfs中创建一系列目录,mkdir bin etc lib proc sbin sys usr mnt tmp var,这些目录都是根文件基本上所必须具有的目录。以及创建子目录:mkdir usr/bin usr/lib usr/sbin lib/modules


2.2 创建设备文件

linux启动的时候,有两个设备是必须要的,在rootfs/dev目录下操作:


mknod -m 666 console c 5 1

mknod -m 666 null c 1 3


第一个指令console表示是串口控制台设备 c表示是字符设备 5表示主设备号,1表示次设备号。第二个指令暂且先这样设置。这样就创建了两个设备文件console 和 null。


2.3 加入配置文件

把etc.tar.gz放到/home/S5-driver/lesson7/linux-ok6410(这个路径是存放内核的路径)中解压后得到etc文件,将这个文件里所有的东西复制到rootfs/etc/中去。(etc.tar.gz压缩包是需要自己找一下)


cp etc/* rootfs/etc/ -rf


2.4 添加内核模块(这步是在内核顶层目录下进行的)

分别执行以下三条指令,第一条是表示进入内核目录中,第二条是指编译内核模块,第三天指的是将模块部分都复制到rootfs目录下去。


cd /home/S5-driver/lesson7/linux-ok6419

make modules ARCH=arm CROSS_COMPILE=arm-linux-

make modules install ARCH=arm INSTALL_MOD_PATH=/home/S5-driver/lesson8/rootfs


执行完后进入/lesson8/rootfs/lib/modules中,发现产生了3.0.1的目录,这样内核模块就已经添加到相应的路径中了。


2.5 编译/安装busybox

首先简单的介绍一下busybox,busybox是一个功能很强大的工具包,里面有各种小功能,我们最熟悉的ls查看文件夹里的文件就是busybox所提供的,所以安装busybox也是我们使用各种小命令的前提。

(1)将busybox-1.13.3.tar.gz文件放到linux-ok6410中去解压

(2)配置busybox,make menuconfig启动图形化菜单,主要的配置项在busybox setting中有个build options,选择build busybox as a static binary(静态链接),空格选中,再选择在最下面的交叉工具链,进入后填入arm-linux-即可,如下图。

这里写图片描述

(3)安装busybox中,进入installation options中,选中“Don‘t use /usr”, 选中该项可以避免busybox 被安装到宿主系统的/usr目录下,破坏宿主系统。配置如下图。

这里写图片描述

(4)编译安装:这里的编译时在busybox的顶层目录中进行的,直接输入make进行编译,编译完之后输入make install进行安装。

至此,根文件系统的制作就已经完成了。


3挂载根文件系统

这里写图片描述

根据上图,挂载根文件系统可以分为以下三个部分。


3.1 挂载方式简介

基于nandflash的文件系统:Yaffs2 UbiFS(可写可读)

基于norflash的文件系统:Jffs2(可写可读)

基于内存的文件系统Ramdisk Initramfs(启动速度快,不能保存,用的较多)

基于网络的文件系统 NFS(开发阶段使用)

根文件系统是第一个文件系统,通常采用Initramfs


3.2 使用initramfs

3.2.1


#cd /home/S5-driver/lesson8/rootfs/ 

#ln -s ./bin/busybox init //进行软连接,将init加载到当前目录中来


当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

3.2.2

配置内核,支持initramfs

进入lesson7下linux-ok6410内核目录,配制内核make menuconfig ARCH=arm

进入到general setup中,找到下图中选项

这里写图片描述

添加路径名后如下

这里写图片描述

保存退出后,重新编译内核


make uImage ARCH=arm CROSS_COMPILE=arm-linux-


将/arch/arm/boot/uImage 拷贝到根目录tftpboot中。然后tftp uImage c0008000下载内核,

bootm c0008000启动内核可以看到内核启动成功。

这里写图片描述

3.3使用NFS

如果采用initramfs的方式挂载根文件到内核中,每次在rootfs中加了一个新的文件后,还要到linux内核中重新编译,再复制到tftpboot中,下载到开发板上,这样会非常繁琐,工作量会大大加重。这就体现使用NFS的好处了,采用NFS的话,如果在rootfs根文件中修改文件或者说增删文件,开发板上会相应的同步修改增删。所以说NFS的方式对于开发者来说用的是最多的,其他的方式都是在产品成品中使用。接下来配置NFS。


3.3.1 在内核顶层目录下运行,也就是我的/lesson7/linux-ok6410 中执行

make menuconfig ARCH=arm

首先进入general setup中,取消initial RAM filesystem and RAM disk,如下图。

这里写图片描述

3.3.2 保存退出后,进入到file systems中,再进入到network file system中,选中root file system on NFS,如下图。

这里写图片描述

3.3.3 保存退出,再次编译内核。

make uImage ARCH=arm CROSS_COMPILE=arm-linux-


我们除了在开发板上设置ipaddr和serverip的地址,(ipaddr就是自己设置开发板的地址,serverip就是linux中的地址,两个ip段需在同一个段中)还要设置bootargs。

在串口助手上输入以下内容


setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.1.104:/home/S5-driver/lesson8/rootfs ip=192.168.1.105:192.168.1.104:192.168.1.1:255.255.255.0::eth0:off    

这里写图片描述

除了上图红色框框里的东西要改,其他的都可以复制粘贴。

开启NFS

输入vi /etc/exports 确保nfs在linux已经配置,如下图。

这里写图片描述

开启linux中nfs服务器:/etc/init.d/nfs restart

然后下载内核 tftp c0008000 uImage

启动内核 :bootm c0008000

开发板上启动内核后,在pc上修改rootfs文件下的文件,这里增加了一个test1文件,随后在开发板的串口助手上ls查看发现也多了一个test1。这样就可以看出来使用NFS进行开发是多么的方便了,同步高效。下图是在linux中增加test1文件。

这里写图片描述

下图是在securCRT串口助手中同步显示的内容。

这里写图片描述

这里,所有的根文件系统以及挂载方式的工作都结束了。

关键字:嵌入式  根文件系统  arm 引用地址:嵌入式根文件系统(基于arm)

上一篇:字符设备驱动(二)
下一篇:字符设备驱动(一)

推荐阅读最新更新时间:2024-11-08 11:29

ARM进军微控制器市场 欲与瑞萨争高下
在移动领域,ARM公司面临来自英特尔的激烈竞争,ARM相信只要专注于低成本、低能耗的微芯片,就可以在新一代微型芯片上扮演领导角色,这些芯片可以用在成千上万日常产品中。微控制器可以管理和运行大量设备,包括心跳监视器、汽车安全气囊、电动机和电视。 大约10年前,ARM进入微控制器市场,ARM CEO伊斯特(Warren East)在接受采访时谈及这点,但那时公司的技术太昂贵,无法发展太快。随着制造技术的进步,生产ARM微控制器的成本已经明显下降。   伊斯特说:“使用ARM 32位微控制器相当容易,它的价格和8位微控制器一样。”也就是说,这里说的芯片可以运算的数据长度。伊斯特说:“这是一个巨大的机会。”   ARM在
[单片机]
SoC前段(ARM)嵌入式系统开发实作(上)
简介:在RISC的精简指令中,它含有多种意义,因此较难理解。但在Debugger对CPU掌握的全透明下,就可清清楚楚看到指令的执行, 也加深对CPU的了解。为了观看指令与组合语言的执行,我们来开一视窗共解说它各处视窗的意义。 一个嵌入式系统的核心在于CPU,当CPU选定后,其他的问题就可慢慢就绪。SoC嵌入式系统的实现可把它分为:一应用型SoC嵌入式系统、开发型SoC嵌入式系统二种型态,这二种型态的软硬体开发有着不小的差异,但首先碰到的都是CPU的选定。这里笔者会针对它们的异同处做说明,再来描述ARM CPU、指令、系统管理、开发实作训练平台(PreSoCes)、Linux与程式等,以建立SoC嵌入式系统的整体轮廓概念,并在实作
[单片机]
SoC前段(<font color='red'>ARM</font>)<font color='red'>嵌入式</font>系统开发实作(上)
使用图形化的开发环境——LabView开发嵌入式系统
传统设计模式所应对的挑战 嵌入式系统正在渗入现代社会的各个方面,广泛地应用于航空航天、通信设备、消费电子、工业控制、汽车、船舶等领域,据统计,在美国平均每个中产阶级家庭要使用40~50个嵌入式系统。巨大的市场需求推动了嵌入式系统向更高的技术水平发展。设计师们一方面采用性能更强大的嵌入式处理器如32位、64位RISC芯片取代传统的8位、16位微处理器;另一方面嵌入式系统也由单处理器单操作系统的传统结构向混合型Multi-core系统发展,通过采用多个处理器和OS提高系统并行度来提高系统运行效能,并且设计师们往往同时采用MPU、DSP和FPGA等多种可编程器件来增强处理能力,满足应用功能的升级。 嵌入式系统复杂性的不断增加给设计师
[嵌入式]
基于ARM的远程无线视频监控系统设计
  随着计算机、网络、通信技术的发展,以及多媒体视频技术的不断完善,基于网络的第三代远程网络视频监控系统取得了长足的发展。新一代的监控系统以网络为依托,以数字视频的压缩、传输、存储和播放为核心。系统采用嵌入式多任务操作系统、高效的视频压缩芯片和功能强大的嵌入式处理器,将视频压缩和传输处理工作全部内置到芯片上,前端摄像机送来的视频信号数字化后经过压缩、打包等过程变成基本网络协议的视频流,通过网络的传输,视频流发送到接收端。视频接收端可利用软件进行解码,在PC上进行显示和处理。   系统硬件平台   本系统是以PXA270为微处理器的ARM开发平台组成。PXA270是一个32位处理器,可在312MHz、416MHz、520MHz和
[单片机]
基于<font color='red'>ARM</font>的远程无线视频监控系统设计
ARM在2009 GSMA上展示移动技术创新
      在2009 GSMA Mobile World Congress上,ARM将向观众展示最新的移动技术发展趋势和战略。ARM将进行一系列产品演示,并与合作伙伴一起举办活动,让观众立即了解未来的移动通信技术。ARM在2008年取得了多项重大成绩,包括:      • ARM®合作伙伴在手机市场中的芯片出货量突破100亿大关,平均每部手机含两个ARM处理器      • 首次在32nm HKMG晶圆上展示ARM技术      • 推出多种新型设备,包括G1手机和第一部采用Cortex™-A8处理器的手机       此外,ARM首席技术官Mike Muller将在“开放源代码总动员分会场进行题为“移动 Web2.0和
[网络通信]
基于Can总线的嵌入式网络控制节点的设计与实现
引言 近年来,基于各种总线标准的网络化 控制系统 已经在工业控制领域内得到广泛应用。网络化 控制系统 采用了完全分散化的控制节点结构,将控制的权力很大部分交给了处于控制现场的智能节点,系统内各种交互信息通过 现场总线 传送。 当前已实用化的总线标准有许多种,如WorldFIP, Profibus, LONWORKS, CAN等。其中,CAN(Controller Area Network)是Bosch公司在现代汽车应用技术中领先推出的一种串行通信网络。CAN主线采用多主站工作方式,根据优先权进行总线访问仲裁,能够检测出通信过程产生的任何错误。 CAN总线 还具有卓越的信号传输性能,当信号传输距离达到l0km时,它仍可提供高
[单片机]
基于Can总线的<font color='red'>嵌入式</font>网络控制节点的设计与实现
基于ARM9内核和嵌入式Linux的网络投影机系统设计
投影机网络化正成为投影机发展过程中的一个重要趋势, 通过标配的有线及无线网络接口或选配的网络适配器, 用户可以通过计算机更方便地向投影机传送显示控制信号, 在投影机上显示输出内容, 可通过计算机来监控管理投影机。 设计开发了一套用于投影机的嵌入式远程监控系统,利用Internet,通过对底层设备驱动编程和上层软件系统的设计开发, 客户端可通过浏览器访问嵌入式系统内置的http 服务器, 将投影机的相关参数直观实时地在Web 页面上显示出来,并且可以实现对于投影机现场相关显示参数的设置。   1 嵌入式计算机系统的特点   嵌入式计算机系统同通用型计算机系统相比具有以下特点:   (1) 嵌入式系统通常面向特定应用。
[单片机]
基于<font color='red'>ARM</font>9内核和<font color='red'>嵌入式</font>Linux的网络投影机系统设计
AI 大模型迈向多模态,助力具身智能与机器人实现创新
你听过莫拉维克悖论 (Moravec's paradox) 吗?该悖论指出,对于人工智能 (AI) 系统而言,高级推理只需非常少的计算能力,而实现人类习以为常的感知运动技能却需要耗费巨大的计算资源。实质上, 与人类本能可以完成的基本感官任务相比,复杂的逻辑任务对 AI 而言更加容易。这一悖论凸显了现阶段的 AI 与人类认知能力之间的差异。 人本来就是多模态的。我们每个人就像一个智能终端,通常需要去学校上课接受学识熏陶(训练),但训练与学习的目的和结果是我们有能力自主工作和生活,而不需要总是依赖外部的指令和控制。 我们通过视觉、语言、声音、触觉、味觉和嗅觉等多种感官模式来了解周围的世界,进而审时度势,进行分析、推理
[嵌入式]
AI 大模型迈向多模态,助力具身智能与机器人实现创新
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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