`
king_tt
  • 浏览: 2292060 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

一步一步制作yaffs/yaffs2根文件系统(八)---总结及怎么样使系统自动启动自己编写的程序

 
阅读更多

通过前几节的学习制作,我大致地制作了一个比较完整的 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根文件系统,

    制作mkyaffs2image工具,并制作yaffs的文件系统

    本主题聚焦于如何制作`mkyaffs2image`工具并利用它来构建YAFFS2文件系统。下面我们将深入探讨相关知识点。 首先,`mkyaffs2image`是用于创建YAFFS2映像文件的工具。YAFFS2是YAFFS文件系统的第二个版本,优化了对...

    yaffs2 系统移植

    为了使内核支持YAFFS2文件系统,需要对内核进行打补丁操作: - 将当前目录切换到`/opt/stdudyarm/source`,并解压`cvs-root.tar.gz`到指定目录。 - 进入`/opt/stdudyarm/cvs/yaffs2/`目录,并执行`./patch-ker.sh /...

    yaffs2文件系统制作详解

    ### YAFFS2 文件系统制作详解 #### 一、FHS 标准介绍及目录结构 在 Linux 系统中,文件系统结构的统一性非常重要,它确保了不同发行版之间具有高度的一致性和互操作性。FHS(Filesystem Hierarchy Standard,文件...

    yaffs2文件系统实现原理分析-带书签

    由于YAFFS2文件系统与NOR闪存设计的JFFS/JFFS2文件系统在内存占用和启动时间方面做出的不同取舍,其通常更适合于NAND闪存的应用。JFFS/JFFS2最初是为NOR闪存设计的,NOR闪存与NAND闪存在本质上有很大的不同。YAFFS2...

    一种制作YAFFS2嵌入式文件系统的方法

    YAFFS2(Yet Another Flash File System version 2)是一种专为NAND型闪存设计的文件系统,它在嵌入式系统中得到了广泛应用,尤其在那些需要高效读写操作的场合。YAFFS2的实现提供了对NAND闪存的直接访问,减少了...

    yaffs2压缩包

    yaffs2 工具包 1.从http://www.yaffs.net/download-yaffs-using-git网址下载得到yaffs和yaffs2的源文件 2.解压后,进入到yaffs2目录下,通过yaffs2目录下的脚本...3.最后就是配置编译内核,让内核支持yaffs2文件系统

    制作yaffs文件系统的yaffs工具包2

    4. 在设备启动时,操作系统会自动识别并加载这个YAFFS2文件系统。 请注意,如果使用不当的工具或方法制作文件系统,可能会导致无法正常工作。因此,确保使用正确版本的YAFFS工具包,并遵循正确的步骤是至关重要的。...

    yaffs yaffs2 文件系统正确补丁包 移植LINUX常用

    本文将详细介绍YAFFS和YAFFS2文件系统,以及如何正确移植它们到Linux系统。 **YAFFS文件系统** YAFFS是一种针对NAND闪存优化的文件系统,由Charles P. Loomis开发。它的设计目标是提供对NAND闪存的高效管理,包括...

    嵌入式linux根文件系统制作&yaffs2;

    ### 嵌入式Linux根文件系统制作及YAFFS2详解 #### 一、BusyBox简介与获取 **BusyBox** 是一个为嵌入式设备设计的小巧但功能全面的工具箱,它包含了众多标准 GNU 工具的精简版本。在嵌入式 Linux 系统中,BusyBox ...

    构建自己的yaffs根文件系统(实录)

    ### 构建自己的yaffs根文件系统 #### 一、背景与准备工作 本文记录了作者杨学鹏根据《Mini2440_Linux移植开发实战指南.pdf》和《【申嵌培训】嵌入式Linux根文件系统构建步骤(Linux 2.32.2).pdf》两份资料,在其...

    基于S3C2440的linux操作系统内核移植和yaffs2文件系统的制作

    - **制作根文件系统映像文件**:将所有文件打包成一个映像文件,供系统启动时使用,通常采用yaffs2这样的文件系统,因为其适合NAND闪存。 **总结** Linux内核移植涉及选择合适的内核版本、配置、编译和调试,而根...

    内核配置_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文件系统介绍

    在文件系统架构上,YAFFS2的文件系统管理层接口、YAFFS内部实现层和NAND接口层的分离设计,不仅简化了与系统的接口设计,而且使其便于集成到多种操作系统中去,比如linux、uClinux和Windows CE。这种模块化的结构让...

    linux2.6.32内核在mini2440上的移植,YAFFS2文件系统移植

    Linux 2.6.32 内核在 mini2440 上的移植与 YAFFS2 文件系统移植 Linux 2.6.32 内核在 mini2440 上的移植主要讲述 YAFFS2 文件系统移植,YAFFS2 是专门针对嵌入式设备,特别是使用 NAND Flash 作为存储器的嵌入式...

    在utu2440上制作yaffs2根文件系统

    【在UTU2440上制作YAFFS2根文件系统】的步骤涉及了嵌入式Linux系统的核心构建过程,下面将详细解释这个过程。 首先,开发环境是在VMWare虚拟机上的Fedora 8系统,目标是为UTU2440开发板创建一个基于YAFFS2文件系统...

    linux在TQ2440上移植3--yaffs2+文件系统移植.pdf

    根据提供的文档信息,本文主要介绍的是如何在TQ2440平台上移植并配置YAFFS2文件系统至Linux环境中的过程。以下是对这一过程的关键步骤进行详细解析: ### 一、YAFFS2源代码获取及准备 1. **源代码下载**:首先需要...

    yaffs2.tar.gz文件系统

    1. **挂载**:Linux 系统启动后,通过 `mount` 命令将 YAFFS2 文件系统挂载到指定的目录,例如 `/mnt/yaffs2`。 2. **分配块**:文件系统会根据需要动态分配 NAND 闪存的块,用于存储元数据和用户数据。 3. **写入...

    Tiny6410根文件系统yaffs2根文件系统

    压缩包包含三个适用于Tiny6410的yaffs2根文件系统,mini_rootfs.yaffs2是最小的根文件系统,不是很完整的根文件系统,fix_mount_mini_rootfs.yaffs2添加了自动挂载功能,fix_udev_rootfs.yaffs2在添加了自动挂载功能...

    YAFFS2文件系统的移植

    - 配置 MINI2440 的启动参数,使它在启动时挂载 YAFFS2 文件系统。这可能涉及修改 Bootloader(如 U-Boot)的配置。 6. **错误处理和性能优化**: - YAFFS2 包含了 ECC(Error Correction Code)来检测和纠正 ...

Global site tag (gtag.js) - Google Analytics