通过前几节的学习制作,我大致地制作了一个比较完整的 yaffs 根文件系统,到这时候将自己移植的uboot、内核、根文件系统移植到自己的开发板中,一个基本的嵌入式 linux 系统也算搭建完成了。但是我的问题又来了,虽然嵌入式系统搭建完成了,可是最终是用来运行自己的程序,达到自己的项目目标的,所以怎么样使自己编写的应用程序在板子上自动运行起来呢?总不能需要我登录到 console 上输入 ./hello 才能运行自己的程序吧,这家伙整得就有点忒那个了吧。想到自己对根文件系统的启动时执行的流程,我知道该在那里做手脚了。下面先总结以下,省得以后别人问我,再说不出个子鼠丑牛.......
yaffs根文件系统制作流程
1、创建 yaffs 根文件系统主目录 rootfs (主目录名字可以随便起)
2、使用BusyBox为 rootfs 生成 bin、sbin、usr 目录和 linuxrc 这个链接文件
3、在 rootfs 中创建根文件系统的基本目录的其他结构:etc、dev、root、mnt、home、root、tmp等
4、填充这些目录,主要是 etc、dev需要填充
5、使用mkyaffs2image 将rootfs 目录制作成yaffs 镜像文件烧写到开发板。
BusyBox 启动流程简要分析
BusyBox是目标板系统上执行的第一个应用程序,当调用 BusyBox 它会执行 BusyBox 自身的init进程。BusyBox init程序对应的代码在 init/init.c文件中,其对应的流程图如下:
etc/inittab 文件格式分析
etc/inittab 是Busybox 的 init 进程在初始化系统的过程中会去解析的一个文件,该文件中每个条目用来定义一个子进程,并确定它的启动方法,格式如下:
<id>:<runlevels>:<action>:<process>
id:表示这个系统要使用的控制台(即标准输入、标准输出、标准错误设备)。如果省略,则使用与 init 进程一样的控制台。
runlevels:对于 BusyBox init程序,这个字段没有意义,可以省略。
action:表示 init 程序如何控制这个子进程。
process:要执行的程序,它可以是可执行程序,也可以是脚本。
其中,action 字段的意义如下图:
根文件系统启动自己的应用程序
好了,我大致有思路了,修改 /etc/inittab文件内容,加上一个 respawn的动作不就行了么?于是,我就在根文件系统的/home目录下利用amr-linux-gcc交叉编译了一个Hello World 程序,如下:
然后修改了 etc 目录下的 inittab 文件
在该文件中添加了一行:::respawn:/home/hello 表示不断重复执行 /home目录下的名字为 hello 的可执行文件。
添加前:
添加后:
然后重新制作成 yaffs镜像文件,下载到开发板上去,可见咱们的程序自动执行了。
分享到:
相关推荐
一步一步制作yaffs2根文件系统,一步一步制作yaffs2根文件系统,
给内核打yaffs2文件系统的补丁 cd /mnt/hgfs/share tar –zxvf /mnt/hgfs/share/cvs-root.tar.gz –C /opt/studyarm cd /opt/stdudyarm/cvs/yaffs2/ ./patch-ker.sh c /opt/studyarm/linux-2.6.29.1/ 上面命令...
yaffs2 工具包 1.从http://www.yaffs.net/download-yaffs-using-git网址下载得到yaffs和yaffs2的源文件 2.解压后,进入到yaffs2目录下,通过yaffs2目录下的脚本...3.最后就是配置编译内核,让内核支持yaffs2文件系统
s3c2440下 yaffs2文件系统制作详解,本人实践成功
s/yaffs2/yaffs_vfs.c: In function 'yaffs_read_super': fs/yaffs2/yaffs_vfs.c:2383:2: error: implicit declaration of function 'get_sb_bdev' fs/yaffs2/yaffs_vfs.c: At top level: fs/yaffs2/yaffs_vfs.c:...
压缩包包含三个适用于Tiny6410的yaffs2根文件系统,mini_rootfs.yaffs2是最小的根文件系统,不是很完整的根文件系统,fix_mount_mini_rootfs.yaffs2添加了自动挂载功能,fix_udev_rootfs.yaffs2在添加了自动挂载功能...
期刊论文,介绍了一种制作YAFFS2嵌入式文件系统的方法, 详细介绍了在ARM处理器S3SC2440和嵌入式Linux 平台上建立YAFFS2 根文件系统的方法步骤。
busybox编译,ok6410开发板yaffs2文件系统的制作和烧写。
yaffs yaffs2 文件系统正确补丁包 移植LINUX常用 CSDN有的下载的编译不正确,特发布正确的。
YAFFS意义为‘yet another flash file system... YAFFS是目前为止唯一一个专门为NAND flash设计的文件系统,目前有YAFFS 和YAFFS2 两个版本,两个版本的主要区别之一在于YAFFS2 能够更好的支持大容量的NAND FLASH芯片。
yaffs 文件系统制作 解压工具
在utu2440开发板上制作yaffs2根文件系统的详细步骤
实验环境的搭建: 交叉编译工具,内核源代码,根文件系统压缩包,yaffs2文件夹,Busybox源代码包,mkyaffs2image-128M工具 实验内容: 1.对标准Linux2.6.32内核源代码的修改,加上s3c2440的特性,配置,编译,烧写...
第一章 移植内核... 2 1.1 Linux内核基础知识... 2 1.1.1 Linux版本... 2 1.1.2 什么是标准内核... 2 ...1.1.3 Linux操作系统的分类......1.1.4 linux内核的选择......2.2.5 制作根文件系统映像文件... 26
Yaffs2文件系统是转为Nand Flash设计的文件系统,是基于日志式的文件系统
YAFFS2文件系统的加载过程,具普遍性
另一个yaffs根文件系统工具包,有时候工具没用对,制作出来的文件系统没法用
yaffs2 linux bsp YAFFS意义为‘yet another... YAFFS是目前为止唯一一个专门为NAND flash设计的文件系统,目前有YAFFS 和YAFFS2 两个版本,两个版本的主要区别之一在于YAFFS2 能够更好的支持大容量的NAND FLASH芯片。
在6410上运行的yaffs2文件系统,已经通过测试和验证,page大小2K
很详细的介绍yaffs2的数据结构,初始化,挂载,内存分布等。新手必看,老手回顾。