嵌入式系统为什么需要根文件系统

从两个角度来理解根文件系统的作用

运行用户应用程序
以目录+文件名的方式访问块存储设备

应用程序存在根文件系统中

从无到有在 ARM 开发板中搭建 linux 系统需要三个部分

  • uboot:启动内核
  • 内核:启动应用程序
  • 根文件系统:被内核挂载、存放应用程序

那么如何理解应用程序?

类比在 ubuntu 中如何编写打印 “hello world” 应用程序

  1. 创建hello.c,编写如下代码
	#include <stdio.h>
	int main(void)
	{
	        printf("hello world\n");
	        return 0;
	}
  1. 使用命令 gcc -o hello hello.c 编译生成 hello 应用程序
  2. 在命令行中输入 ./hello 运行 hello 这个应用程序,控制台就会显示 hello world
	# gcc -o hello hello.c
	#./hello
	hello world             

同样的原理,如何在 ARM 开发板中运行上述的应用程序呢?

  1. 在 ubuntu 虚拟机中,假设已经安装好交叉编译环境(在 ubuntu 环境中生成在 ARM 平台上运行的程序)。使用命令 arm-linux-gcc -o hello hello.c 编译生成适合在开发板中运行的 hello 应用程序
  2. 将 hello 应用程序保存在根文件系统 app 文件夹中,并烧录到存储设备中去。调试好开发板和电脑之间的串口通信。开发板启动完毕后,在串口控制台输入 ./hello 运行应用程序。
	/ # ls                  //根文件系统目录 ‘/’ 表示根目录
	app         etc         linuxrc     sbin        usr
	bin         hello       lost+found  sys         var
	dev         lib         proc        tmp

	/ # cd app	        	// 进入到 app 文件夹中
	/app # ls				
	hello    hello.c
	/app # ./hello		    // 在串口控制台运行 hello
	hello world				// 运行结果,说明可以正常运行

其次,我们在串口控制台中运行的 shell 命令集本质也是应用程序,譬如 ls、cp、cd 等等。这些应用程序并不需要我们一个一个编写,使用 busybox 工具生成即可,后续文章会更新从 0 一步一步搭建根文件系统,运行打印"hello world"的应用程序。

所以基于 ARM 开发板做应用开发,比如摄像头需要启动摄像头相关的用户应用程序,而这些应用程序存放的载体–根文件系统。

用目录+文件名的方式访问块存储设备

块存储设备,比如硬盘、SD 卡、Nandflash,是分块(扇区)的,物理上从底层访问这类存储设备是按扇区号来访问的,比如一次只能擦写 512 字节。和内存的字节访问方式不同(比如用指针对内存中某一地址进行读写操作)。而文件系统封装了这些底层操作,可以以目录+文件名的方式来访问这些扇区。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值