总结:嵌入式linux应用开发系统粗略结构

以个人学习体验为本,总结一下嵌入式linux应用开发系统的粗略结构。
如图
在这里插入图片描述
系统的硬件具体连接不谈,驱动原理之前有过总结。
一个正常的系统至少需要包括Bootloader、Linux内核、yaffs文件系统、应用程序。

Bootloader程序烧录在ARM cpu中
linux内核、文件系统、以及用户应用都存储在外部存储器中,多为nand dlash或 nor flash
外部存储器也属于外设
nand flash 与 nor flash 都是 flash存储器,一般nand用的多一点,查了下两者各有优缺点,不过nand容量似乎可以更大一些。

1 Bootloader

Bootloader是一段初始化程序,通俗讲就是裸跑的程序。类比单片机就是单片机里面的程序。作用是在上电后执行该程序,初始化好硬件设备、软件环境,最后调用操作系统内核。
一般在ARM开发中多用u-boot,其功能类比于PC机启动windows前的BIOS.

2 Linux内核

嵌入式系统的核心。作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。内核是一个资源管理程序。负责将可用的共享资源(CPU时间、磁盘空间、网络连接等)分配得到各个系统进程。
内核≠操作系统。内核是操作系统最基本的部分,但不是操作系统的全部。
在内核移植过程中,需要做部分修改以适应于处理器。
驱动程序就放在内核中。

3 文件系统

多用yaffs文件系统,目前有yaffs和yaffs2.是专门为nand flash设计的文件系统,貌似yaffs2 能够更好的支持大容量的nand flash芯片。反正多数都用yaffs2.
文件根目录一般包括bin、sbin、dev、etc、lib、home、root、usr、var、mnt、tmp、proc等。
bin:存放所有用户可用的基本命令
sbin:存放系统命令
dev:存放设备文件
etc:存放各种配置文件
lib:存放共享库和驱动文件
home:各用户相关文件
root:根目录,管理员权限目录,普通用户所用的目录在home下的子文件
usr:存放共享、只读的程序和数据
var:存放可变数据
mnt:临时某个文件系统的挂接点(u盘、光驱)
tmp:存放临时文件
proc:虚拟文件系统,proc文件系统的挂接点

busybox安装在文件系统中
busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.
在创建根文件系统的时候,如果使用Busybox的话(一般都使用),只需要在/dev目录下创建必要的设备节点,在/etc目录下增加一些配置文件即可,当然,如果Busybox使用动态链接,那么还需要再/lib目录下包含库文件

4 应用程序

应用程序就是针对使用者的某种应用目的所撰写的软件,其当然存放在文件系统中。 应用程序很熟悉了,功能类比于手机APP 开发多用Qt Creator 开发环境