四个月嵌入式培训能达到什么程度?

更新时间: 2018-12-11 14:17:28来源: 嵌入式培训浏览量:4464

    嵌入式系统的特点决定了它具有功能的专用性,而不能作为一种通用的计算机系统。基于Linux操作系统开发嵌入式产品,必须对它的启动程序进行定制。本文研究了Linux操作系统的启动过程,并给出了如何为嵌入式Linux系统添加用户自己的启动服务,以及指定开机后运行的主功能程序的方法。

    一、嵌入式系统的概念及特点
    引用电气工程师协会IEE给嵌入式系统下的一个定义:嵌入式系统是用来控制或监视机器、装置或工厂等大规模系统的设备。但是后来随着嵌入式系统的发展,这个定义就变得不是很准确。比如说像手机、PDA及电子词典之类的小型设备,它们均由内部的嵌入式系统控制,但是却不可称之为大规模的系统。
    有些文献这样下定义我觉得比较确切:嵌入式系统是电脑软件与硬件的综合体,它是以应用为中心,以计算机技术为基础,软硬件均可裁剪,能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
    嵌入式系统具有以下几个特点:
    1、 嵌入式系统是先进的计算机技术、半导体技术以及电子技术与各个行业的具体应用相结合的产物。也就是说嵌入式系统并不像通用计算机那样通用,而是与各待业的特定应用相关联的,每行每业的嵌入式系统要实现的功能也不一样。因此,在嵌入式系统上没有哪个公司的操作系统和处理器能够垄断市场。
    2、 嵌入式系统实现的功能单一,通常是面向用户、面向产品、面向特定应用的,一般只实现某行业的特定功能。
    3、 成本低、体积小、功耗低及可靠性高,在运行速度及存储容量上有一定的限制。
    4、 嵌入式系统本身不具备在其上进一步开发的能力,必须要在相关的开发平台上开发。
    5、 全自动操作循环,一直重复地执行一个特定的程序
    嵌入式系统的灵魂应该说是它的嵌入式操作系统,本文使用的是嵌入式Linux,硬件基础是基于x86的嵌入式主板。由上述嵌入式系统的特点可知,为了让嵌入式系统具有一个产品或仪器的特性,不能让像通用计算机那样开机后进入桌面系统,而是要运行指定服务和一个特定的用户应用程序。本文将如何让Linux开机后执行指定服务和运行一特定的用户程序进行探讨。
    二、Linux系统的启动过程
    让我们先了解一下Linux系统启动的过程。当引导程序(如LILO)加载Linux内核映象启动时,它先进行内核的初始化工作,主要是检测整个硬件环境。内核初始化完成后,系统就启动init进程,它是系统的个用户级进程。Linux系统具有许多运行级别,它由文件/etc/inittab文件决定,各级别的功能如下:
    0:终止或停止系统的运行
    1:单用户模式
    2:多用户模式,但无网络功能
    3:多用户模式且有网络功能
    4:保留,用户可以定义自己的启动模式
    5:图形界面登陆模式
    6:重新启动系统
    init进程运行后,它会访问/etc/inittab文件,该文件确定系统运行于上面的哪个级别。由于嵌入式系统的特性,我们要让系统运行于级别1上,即单用户模式,这只要在/etc/inittab文件的id:3:initdefault行,将3改为0即可。同时每个级别还对应了一个启动各种服务的脚本目录,一般在/etc/rc.d/下面。
    接着init进程又分别启动/etc/rc.d/rc.sysinit和与等级n相对应的/etc/rc.d/rcn.d目录里的初始化进程,init会运行用户登陆程序,这时在终端上就会显示login:的登录信息,用户登录成功后会启动shell程序,shell启动后,它会读取并执行文件/etc/profile,/etc/bashrc,和用户主目录下的文件.bashrc,这些文件负责建立用户自己的环境。
三、设置特定服务及开机启动程序
     如前所述,添加指定服务,定制特定的启动程序,就从配置文件/etc/rc.d/rcn.d和/etc/profile入手。
    1、添加指定的服务:是指在系统启动时进行一些用户所需要的操作,如初始化用户应用程序或用户开发的新硬件等等。可以增加自己的脚本程序来完成这些工作,主要步骤如下:
    (1) 仿照系统目录/etc/rc.d/init.d里的任何一个脚本文件的格式自己编写一个启动服务脚本文件。
    (2) 将写好的脚本文件拷贝到/etc/rc.d/init.d目录下。因为/etc/rc.d/rcn.d只是/etc/rc.d/init.d的一个链接,故要将真实的文件先拷到后者的目录下。
    (3) 在相应的运行级别n的/etc/rc.d/rcn.d下建立该脚本文件的链接。如运行级别为2,则n=2,目录即为/etc/rc.d/rc2.d。假如该脚本名为initform,链接名定为my_initform,则键入如下命令即可:ln –s /etc/rc.d/init.d/initform  /etc/rc.d/rc2.d/my_initform。
    完成以上几步后,系统开机后就会自动执行脚本initform里的服务。
     2、运行特定用户应用程序:这里主要是指GUI应用程序,如果原系统启动后直接进入桌面系统,则要将桌面程序在相应脚本中屏蔽,然后修改/etc/profile脚本定制用户自己的程序。步骤如下:
    (1) 在startx脚本中将运行相应的桌面系统程序屏蔽。例如桌面系统程序名为qvwm(红旗嵌入式Linux的桌面系统),则修改内容如下:
     ……
    # xinit /usr/bin/qvwm
    #加个“#”表示将这行脚本屏蔽掉
    (2) 修改/etc/profile,启动用户应用程序。如用户应用程序名为start_initform,且在目录/root/ 下,则在它的末尾加上如下几行内容:
    ……
    export LC_ALL=zh_CN.GB2312
    #设置中文化环境
    cd /root/
    #切换到应用程序当前目录
    xinit ./start_initform
    #运行指定的用户应用程序 
    修改完成后,重新启动系统,则当系统初始化完后,会执行用户指定的服务,且运行用户应用程序,达到嵌入式系统的要求。

免费预约试听课