构建嵌入式linux平台下的用户应用

发布者:zhihua最新更新时间:2012-04-26 来源: 电子工程专辑 关键字:嵌入式  linux平台  用户应用 手机看文章 扫描二维码
随时随地手机看文章

1.引言

在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次,如图1-1所示:

(1)引导程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。

(2)Linux 内核。针对于嵌入式板子的定制内核以及内核的启动参数。

(3)文件系统。包括根文件系统和建立于 Flash 内存设备之上文件系统。通常用 ram disk 来作为根文件系统

(4)用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式 GUI 有:MicroWindows 和 MiniGUI 。

下面就在linux-2.4.x内核上如何正确组织、连接这几个部分来自动运行用户应用程序进行分析。

2.linux的启动过程

在系统复位后首先远行的程序就是引导程序(Boot loader)。引导程序可以放在专用的ROM中,也可以和内核影像、文件系统影像共用闪存芯片或固态硬盘如下图所示。引导程序首先负责初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。Uboot是Sourceforge上的一个开源的引导程序,提供了对PowerPC(MPC5xx、MPC8xx、MPC82x、MPC7xx、MP74xx、4xx)、ARM(ARM7、 ARM9、 StrongArm、Xsacle)、MIPS、x86等处理器的支持。下载站点是http://sourceforge.net/projects/u -boot

U-boot在ARM9系统启动流程:

1、跳转到reset代码(将CPU设置成SVC,ARM工作模式,SDRAM初始化)

2、将U-boot代码拷贝到RAM空间。可以调用C函数

3、调用初始化函数

(CPU_init(),board_init(),interrupt_init(),serial_init())

4、初始化flash设备

5、初始化系统内存分配函数

6、初始化NAND设备

7、初始化显示设备

8、初始化网络设备

9、进入命令循环,接收用户从串口传来的命令,如果延时10秒钟无用户操作则自动加载linux内核。首先将linux内核影像(kernel Image)拷贝到ram空间,然后跳转到linux内核代码的第一条指令处,将控制权交给linux内核。

3. 挂接自己的嵌入式文件系统

3.1. 嵌入式文件系统的层次结构

嵌入式文件系统的任务是对文件进行管理,其工作包括提供对逻辑文件的操作(包括检索、新增、修改、删除、拷贝)接口,方便用户操作文件和目录。文件系统内部,则根据存储设备的特点,使用不同的文件组织模式来实现文件的逻辑结构,比如磁带中使用的顺序文件以及大多数操作系统使用的树状文件。此外文件系统也管理文件的安全性、完整性以及多进程访问控制。文件系统不能实现对物理设备的直接控制,对物理设备的访问是通过MTD/FTL层实现的。MTD /FNL层向上将闪存设备抽象成逻辑设备(逻辑页面和块),为文件系统提供对物理设备操作接口;向下实现对闪存设备的读写、清零、ECC校验等工作。在 linux系统中实现了对闪存操作的底层函数。下图给出了文件系统的层次关系。 [page]

3.2. 几种针对闪存的嵌入式文件系统的比较


3.3. 挂接JFFS2文件系统

(1) 修改设备号

由于ROM设备和MTDBlock设备的主设备号(major)都是31,所以如果你不想把JFFS2作为根文件系统的话,必须修改他们之一的 major。如果你要修改JFFS2的设备major,在/linux-2.4.x/include/linux/mtd/mtd.h中把

#define MTD_BLOCK_MAJOR 31

改成

#define MTD_BLOCK_MAJOR 30

(2) 编写Maps文件

添加在flash上的map文件。在/kernel/drivers/mtd/maps下添加flash(如intel NOR型28f128j3a)的map。

(3) 将配置加入/kernel/drivers/mtd/maps/Config.in中

dep_tristate ' CFI Flash device mapped on S3C2410' CONFIG_MTD_S3C2410 $CONFIG_MTD_CFI

(4) 配置内核使其支持jffs2。

这里要特别注意Memory Technology Devices (MTD)的选项支持及其子项

RAM/ROM/Flash chip drivers --->

Mapping drivers for chip access --->

的选项支持;

还有File systems下选项支持。

具体的配置选择请参考附录1

(5) 制作jffs2映象

首先取得jffs2的制作工具:mkfs.jffs2(可从网上取得)

执行如下命令即可生成所要的映象:

chmod 777 mkfs.jffs2 //取得mkfs.jffs2的执行权限,即mkfs.jffs2成为可执行文件

./mkfs.jffs2 -d jffs2/ -o jffs2.img //生成jffs2文件映象,其中目录jffs2可以是任意的目录,这里的jffs2是我新建的一个目录

(6) Jffs2的下载

烧写完引导程序(boot loader)、内核影像(zImage)、根文件系统(ramdisk.image.gz)之后,接着烧写jffs2.img,具体烧写如下:

tftp 30800000 jffs2.img

fl 1800000 30800000 20000 (其中20000可根据jffs2的大小适当调整,理论上只要比jffs2.img略大即可,但要为20000的整数倍。1800000是Jffs2在闪存中的起始位置,3800000是将jffs2.img下载到内存中的位置)

(7) 在根文件系统上自动挂接Jffs2

在ramdisk.image.gz的mnt/etc/init.d/rc$文件中加入如下指令以便启动时自动挂载jffs2文件系统。

Mount -t jffs2 /dev/mtdblock/4 /mnt (其中的/dev/mtdblock/4是flash上的jffs2分区)

4.启动用户应用程序

在嵌入式应用系统中,往往不需要进入linux的界面(命令行窗口或图形桌面),而是需要直接启动专用的用户程序。下面介绍一种实现方法。

在制作根文件系统影像(ramdisk.image.gz)前在根目录下创建myproc目录,将MyApp应用程序复制到此目录下。在ramdisk.image.gz的mnt/etc/init.d/rc$文件中加入如下指令以便自动启动用户应用程序MyApp。 [page]

#cd /myproc( 进入myproc目录)

#./MyApp

MyApp是一个小的应用程序,它的处理流程如下(其中Mystart假定为用户最终的应用程序) :


5. 总结

Linux 正在嵌入式开发领域稳步发展。因为 Linux 基于 GPL,所以任何对将 Linux 定制于 PDA、掌上机或者工控设备感兴趣的人都可以从因特网免费下载其内核和应用程序,并开始移植或开发。目前许多 优秀的Linux 系统可供用户选择。它们包括 RTLinux(实时 Linux)、uClinux(用于非 MMU 设备的 Linux)、Montavista Linux(用于 ARM、MIPS、PPC 的商用 Linux 分发版)、ARM-Linux(ARM 上的 Linux)等。利用现有的大量的共享资源,构建自己的嵌入式linux平台,开发linux应用已经列入许许多多公司的发展战略之中。

6.参考资料

[1] 王学龙.嵌入式Linux系统设计与应用. 清华大学出版社,2001年8月

[2] 马忠梅等.ARM&Linux嵌入式系统教程.北京航空航天大学出版社,2004年9月

[3] 陈莉君.深入分析Linux内核源代码.人民邮电出版社,2002年8月

 

 

附录:配置Linux内核支持Jffs2

Linux Kernel v2.4.18-rmk7-pxa1 Configuration

Linux Kernel v2.4.18-rmk7-pxa1 Configuration

------------------------------------------------------------------------------

+-------------------- Memory Technology Devices (MTD) --------------------+

| Arrow keys navigate the menu. selects submenus --->. |

| Highlighted letters are hotkeys. Pressing includes, excludes, |

| modularizes features. Press to exit, for Help. |

| Legend: [*] built-in [ ] excluded module < > module capable |

| +---------------------------------------------------------------------+ |

| | <*> Memory Technology Device (MTD) support | |

| | [*] Debugging | |

| | (3) Debugging verbosity (0 = quiet, 3 = noisy) | |

| | <*> MTD partitioning support | |

| | <*> MTD concatenating support | |

| | < > RedBoot partition table parsing | |

| | < > Command line partition table parsing | |

| | < > ARM Firmware Suite partition parsing | |

| | --- User Modules And Translation Layers | |

| | <*> Direct char device access to MTD devices | |

| | <*> Caching block device access to MTD devices | |

| < > FTL (Flash Translation Layer) support | |

| | < > NFTL (NAND Flash Translation Layer) support | |

| | RAM/ROM/Flash chip drivers ---> | |

| | Mapping drivers for chip access ---> | |

| | Self-contained MTD device drivers ---> | |

| | NAND Flash Device Drivers ---> | |

| +---------------------------------------------------------------------+ |

+------------------------

| +---------v(+)--------------------------------------------------------+ |

+-------------------------------------------------------------------------+

|

关键字:嵌入式  linux平台  用户应用 引用地址:构建嵌入式linux平台下的用户应用

上一篇:嵌入式数控系统体系结构研究
下一篇:针对嵌入式SoC应用的C编程优化

推荐阅读最新更新时间:2024-03-16 12:58

联华电子宣布推出40奈米SST嵌入式快闪记忆体製程
   联华电子 今( 21日)宣布,该公司推出 40奈米 结合Silicon Storage Technology(SST)嵌入式SuperFlash®非挥发性记忆体的製程平台。新推出的40nm奈米SST嵌入式快闪记忆,较量产的55奈米单元尺寸减少20%以上,并使整体记忆体面积缩小了20-30%。东芝电子元件&存储产品公司已开始评估其微处理器(MCU)晶片于 联华电子 40奈米 SST技术平台的适用性。下面就随嵌入式小编一起来了解一下相关内容吧。   东芝电子元件&存储产品公司混合信号晶片部门副总松井俊也表示:「我们期待採用 联华电子 40奈米 SST技术有助于提升我们MCU产品的性能。与联电合作,透过稳定的製造供应及配合我们的
[嵌入式]
关于嵌入式操作系统的分析
导读:嵌入式操作系统是ARMCPU的软件基础,从8位/16位单片机发展到以ARMCPU核为代表的32位嵌入式处理器,嵌入式操作系统将替代传统的由手工编制的监控程序或调度程序,成为重要的基础组件。 嵌入式操作系统是ARMCPU的软件基础,从8位/16位单片机发展到以ARMCPU核为代表的32位嵌入式处理器,嵌入式操作系统将替代传统的由手工编制的监控程序或调度程序,成为重要的基础组件。更重要的是嵌入式操作系统对应用程序可以起到屏蔽的作用,使应用程序员面向操作系统级开发应用软件,并易于在不同的ARM核的嵌入式处理器上移植。 嵌入式操作系统都具有一定的实时性,易于裁剪和伸缩,可以适合于从ARM7到Xscale各种ARMCPU
[单片机]
嵌入式开发ARM系统代码固化的串口实现
  早期的嵌入式程序采用“编程—烧写—修改—烧写”的开发模式,大量的时间消耗在重复烧写芯片上,增加了开发成本和研发周期。   之后发展到仿真器阶段,虽然简化了开发模式,但是由于仿真器与ARM芯片的兼容性等因素,经常会发生程序在仿真器上能正确运行,但是固化之后运行却出现问题的情况。   程序的固化是软件开发过程中重要的一环,一般可通过JATG口、网口及串口等进行烧写。相比之下,串口实现更为便捷,更值得推广。笔者在开发1C1T小灵通中继站的过程中,通过编制烧写程序,利用串口将编译后的目标代码发送给 ARM处理器;由ARM处理器内部的监控程序将目标代码写入片外Flash,实现程序的在线烧写。这样不仅简化了电路设计,而且降低了开发成本,
[单片机]
<font color='red'>嵌入式</font>开发ARM系统代码固化的串口实现
微软2010年推出Windows 7嵌入式OS
明年在Windows 7新操作系统推出后,2010年微软拟推出更新的Windows Embedded Standard版本,将可支援多点触控与Silverlight的使用体验。 伴随明年底发表新一代微软操作系统Windows 7的进程,微软表示2010年也将推出相同核心的Windows Embedded Standard嵌入式操作系统。 代号为Quebec的Windows Embedded Standard,未来将以Windows 7为核心,相较前身为Windows XP Embedded的Windows Embedded Standard 2009,将支持更为丰富的Siverlight 2.0,以及具有互动性的UI
[嵌入式]
S3C2440A嵌入式手持终端电源管理系统设计
   引 言   电源管理(Power Management,PM)是电子系统中必不可少的技术。由于采用了先进的电源管理技术,移动电话、PDA等产品得到了广泛的应用。如果不采用完善的电源管理技术,移动电话的通话时间可能不超过2 min。随着人们对嵌入式手持终端设备功能水平要求的不断提高,手持终端的功耗也在不断增高。与之相矛盾的是,手持终端的尺寸却在不断缩小,工作时间也在不断延长,使嵌入式手持终端电源系统管理面临越来越大的压力。如何设计出性能稳定、功耗低的电源管理系统已经成为嵌入式手持终端设备开发的难点之一。本文重点介绍基于微处理器S3C2440A的手持终端电源管理系统。    1 供电需求   手持终端的CPU采用三星公司的
[电源管理]
S3C2440A<font color='red'>嵌入式</font>手持终端电源管理系统设计
嵌入式LWIP网络客户端设计
引言 嵌入式技术的兴起使得传统的基于PC机的互联网技术优势不再,嵌入式网络客户端与服务端技术成为热点,而该技术需要移植性高、占用资源小的协议栈,轻量级TCP/IP协议栈LWIP (light weight Internet protocol)比较适合嵌入式设备中存储容量有限的情况,而且能实现TCP/IP协议栈的基木功能,不影响设备的网络互联与传输服务 。轻量级网络协议LWIP依附的硬件操作系统有RT_Thread 和uC/OS-II ,鉴于uC/OS-II是一款应用较为广泛、技术较成熟的操作系统,本文采用uC/OS-II操作系统设计网络客户端。实验结果表明:ping 32字节的数据,其收发正确,错误率为0%。 1 系统硬件
[单片机]
<font color='red'>嵌入式</font>LWIP网络客户端设计
安森美将在德国国际嵌入式展(Embedded World) 展示可持续的创新
安森美将在德国国际嵌入式展(Embedded World) 展示可持续的创新 演示包括面向工业和汽车市场的最新方案与技术 2023 年 3 月 8日—领先于智能电源和智能感知技术的安森美(onsemi,),将在德国国际嵌入式展(Embedded World)展示其最新的可持续创新技术 。Embedded World是开发人员、系统架构师、产品经理和技术管理人员必到的行业盛会,将于2023年3月14日至16日在德国纽伦堡展览中心举行,安森美的展台位于4A馆260号展位。 今年Embedded World以“嵌入式、负责任和可持续(embedded, responsible and sustainable)”为主题
[物联网]
安森美将在德国国际<font color='red'>嵌入式</font>展(Embedded World)  展示可持续的创新
一种嵌入式运动控制器的实现
本文选用DSP与FPGA作为运动控制器的核心部件,设计了通用型运动控制器。其中DSP用于运动轨迹规划、速度控制及位置控制等功能;FPGA完成运动控制器的精插补功能,用于精确计算步进电机或伺服驱动元件的控制脉冲,同时接收并处理脉冲型位置反馈信号。本文对该运动控制器的总体结构、硬件设计和软件设计进行了描述。   1 系统总体设计   运动控制器的总体性能指标为:作为一个单独的运动控制器使用,控制信号采用数字量方式输出,能控制四轴的伺服电机;最高脉冲输出频率为4MP/s,能处理的编码器反馈信号最高频率为4MP/s;能接收和处理4路编码器反馈信号;可以处理原点信号、正负方向信号、到位信号以及急停信号等数字量输入信号;提供16路数字
[工业控制]
一种<font color='red'>嵌入式</font>运动控制器的实现
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

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