嵌入式Linux系统的开发与应用

嵌入式Linux系统的开发与应用
嵌入式Linux系统的开发与应用

嵌入式Linux系统的开发与应用

摘要:嵌入式系统是先进的计算机技术、半导体技术、电子技术以及各种具体应用相结合的产物,是技术密集、资金密集、高度分散、不断创新的新型集成知识系统。本文主要分析嵌入式Linux系统应用开发的特点;概述其开发过程和所面临的挑战;阐述嵌入式Linux的发展和应用前景。

关键词:嵌入式系统 Linux 操作系统

引言

近年来,随着计算技术、通信技术的飞速发展,特别是互联网的迅速普及和3C(计算机、通信、消费电子)合一的加速,微型化和专业化成为发展的新趋势,嵌入式产品成为信息产业的主流。Linux从1991年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一;可运行在X86、Alpha、Sparc、MIPS、PPC、Motorola、NEC、ARM 等多种硬件平台,而且开放源代码,可以定制;可与各种传统的商业操作系统分庭抗争。越来越多的企业和研发机构都转向嵌入式Linux的开发和研究上,在新兴的嵌入式操作系统领域内也获得了飞速发展。

1、嵌入式系统的基本知识

嵌入式系统是集软、硬件于一体的可独立工作的“器件”。嵌入式系统的硬件部分包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。这种系统有别于一般的计算机处理系统,它不像硬盘那样有大容量的存储介质,而大多使用E-PROM、EEPROM或闪存 FlashMemory 作为存储介质。软件部分包括操作系统软件 要求实时和多任务操作 和应用程序编程。应用程序控制着系统的运作和行为;而操作系统则控制着应用程序编程与硬件的交互作用。

嵌入式计算机系统同通用型计算机系统相比,具有以下特点:

1)嵌入式系统通常是面向特定应用的,嵌入式CPU与通用型的最大不同就是,嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、小体积、高集成度等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,因此,器件的移动能力大大增强,同时跟网络的耦合也越来越紧密。

2)嵌入式系统的硬件和软件都必须高效地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。

3)因为嵌入式系统和具体应用有机地结合在一起,它的升级换代也和具体产品同步进行,所以,嵌入式系统产品一旦进入市场,一般都具有较长的生命周期。

4)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机之中,而不是存贮于磁盘等载体中。

嵌入式系统本身不具备自举开发能力,即使在设计完成后,用户也不能对其中的程序进行修改,而是必须有一套开发工具和环境才能进行开发。

2、嵌入式Linux的特点

嵌入式系统是以应用为中心,以计算机为基础,软硬件可裁剪,适用于系统对功能、可靠性、成本、功耗严格要求的专用计算机系统,系统结构见图1。实时性是嵌入式系统的基本要求,其次,还要求代码小,速度快,可靠性高。嵌入式Linux(Embedded Linux)是指对Linux经过裁剪小型化后,可固化在存储器或单片机中,应用于特定嵌入式场合的专用Linux操作系统。嵌入式Linux的开发和研究已经成为目前操作系统领域的一个热点。与其

它嵌入式操作系统相比,Linux的特点如下。

1.开放性是指系统遵循世界标准规范,特别是遵循开放系统互联(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互联。Linux采用GPL授权,除了把源代码公开以外,任何人都可以自由使用、修改、散布;而Linux核心本身采用模块化设计,让人很容易增减功能,由于Linux具有这样高的可伸缩性,所以可以调出最适合我们硬件平台的核心出来。

2.多用户是指系统资源可以被不同用户各自拥有并使用,即每个用户对自己的资源有特定的权限,互不影响。Linux和UNIX都具有多用户的特性。

3.多任务是现代计算机最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程平等地访问微处理器。由于CPU的处理速度非常快,其结果是,启动的应用程序看起来好像在并行运行。

4.稳定性强,Linux不属于任何一家公司,但它却拥有全世界愿意投入自由软件的开发人员。在全球各处都有无数的人参与Linux核心的改进、调试与测试,也正因此造就了稳定度高的Linux。所以,Linux虽不是商业的产物,但它的质量却不逊于商业产品。

5.设备独立性,是指操作系统把所有外部设备统一当做文件来看待,只要安装它们的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以修改内核源代码,以便适应新增加的外部设备。

6.提供了丰富的网络功能

完善的内置网络是Linux的一大特点。Linux在通信和网络功能方面优于其他操作系统。Linux 为用户提供了完善的、强大的网络功能,包括支持Internet、文件传输和远程访问。

7.可靠的系统安全

在Linux操作系统中采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这些措施为网络多用户环境中的用户提供了必要的安全保障。8.良好的可移植性

可移植性是指将操作系统从一个平台转移到另一个平台,并使它仍然能按其自身的方式运行的能力。Linux一开始是基于Intel 386机器设计的,但是随着网络的散布,加上有许多工程师致力于各式平台的移植,使得Linux可以在x86、MIPS、ARM/StrongARM、PowerPC、Motorola 68k、Hitachi SH3/SH4、Transmeta等平台上运行。这些平台几乎覆盖了所有嵌入式系统的CPU种类,这样,在硬件平台设计时,使得可以考虑的CPU种类增加了不少。9.应用软件多

自由软件世界里有个很大的特点就是软件多,授权几乎都是采用GPL方式,大家都可以自由参考与使用,但是因为这些软件多半是由设计者利用空余时间开发的,不以赢利为目的,所以并不能担保这些软件完全没有问题。尽管如此,仍有许多优秀软件出现,例如,大家熟知的KDE与GNOME便是很好的证明。

3、Linux嵌入式系统开发平台

3.1 系统软件操作平台

操作系统是一种在计算机上运行的软件。它的主要任务是管理计算机上的系统资源,为用户提供使用计算机及其外部设备的接口。它存在的目的是为了管理所有硬件资源,并且提供应用软件一个合适的操作环境。嵌入式系统由于硬件的限制,通常只具有极稀少的硬件资源,如主频较低的CPU、较小的内存、小容量的固态电子盘芯片DoC(Disk on Chip)或DoM(Disk on Module)替代磁盘等。在使用电池的系统中,它还要实现低功耗,延长电池使用时间的功能。

Linux作为嵌入式操作系统是完全可行的。因为Linux提供了完成嵌入功能的基本内核和所需要的所有用户界面,能处理嵌入式任务和用户界面。将Linux看作是连续的统一体,从一个具有内存管理、任务切换和时间服务及其它分拆的微内核到完整的服务器,支持所有的文件系统和网络服务。Linux作为嵌入式系统,是一个带有很多优势的新成员。它对许多CPU和硬件平台都是易移植、稳定、功能强大、易于开发的。

嵌入式Linux系统需要下面三个基本元素:系统引导工具(用于机器加电后的系统定位引导)、Linux微内核(内存管理、程序管理)、初始化进程。但如果要它成为完整的操作系统并且继续保持小型化,还必须加上硬件驱动程序、硬件接口程序和应用程序组。

Linux是基于GNU的C编译器,作为GNU工具链的一部分,与gdb源调试器一起工作的。它提供了开发嵌入式Linux系统的所有软件工具。

3.2 系统硬件平台

在选择硬件时,常由于缺乏完整或精确的信息而使硬件选择成为复杂且困难的工作。硬件开发成本常是我们很关心的。当考虑硬件成本时,须要考虑产品的整个成本而不仅是CPU 的成本。因为合适的CPU,一旦加上总线逻辑和延时电路使之与外设一起工作,硬件系统就可能变得非常昂贵。如果要寻找嵌入式软件系统,那么,应首先确定硬件平台,即确定微处理器CPU的型号。

现在比较流行的硬件平台有Intel公司的StrongARM 系列,Motorola公司的DragonBall 系列,NEC公司的VR系列,Hitachi公司的SH3、SH4系列等等。选定硬件平台前,首先要确定系统的应用功能和所需要的速度,并制定好外接设备和接口标准。这样才能准确地定位所需要的硬件方案,得到性价比最高的系统。

4、嵌入式Linux系统开发模式

嵌入式系统通常为一个资源受限的系统。直接在嵌入式系统的硬件平台上编写软件比较困难,有时甚至是不可能的。目前,一般采用的办法是,先在通用计算机上编写程序,然后,通过交叉编译,生成目标平台上可运行的二进制代码格式,最后下载到目标平台上的特定位置上运行,具体步骤如下。

第一步,建立嵌入式Linux交叉开发环境。目前,常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链,目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。商业的交叉开发环境主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross compiler、WindRiver Tornado、Microsoft Embedded Visual C++等。交叉开发环境是指编译、链接和调试嵌入式应用软件的环境。它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式,见图3。

第二步,交叉编译和链接。在完成嵌入式软件的编码之后,就是进行编译和链接,以生成可执行代码。由于开发过程大多是在Intel公司x86系列CPU的通用计算机上进行的,而目标环境的处理器芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。

例如,在基于ARM体系结构的gcc交叉开发环境中,arm-linux-gcc是交叉编译器,arm-linux-ld是交叉链接器。通常情况下,并不是每一种体系结构的嵌入式微处理器都只对应于一种交叉编译器和交叉链接器。如对于M68K体系结构的gcc交叉开发环境而言,就对应于多种不同的编译器和链接器。如果使用的是COFF格式的可执行文件,那么在编译Linux 内核时,需要使用m68k-coff-gcc和m68k-coff-ld,而在编译应用程序时则需要使用

m68k-coff-pic-gcc和m68k-coff-pic-ld。编写好的嵌入式软件经过交叉编译和交叉链接后,通常会生成两种类型的可执行文件:用于调试的可执行文件和用于固化的可执行文件。

第三步,交叉调试。

①硬件调试。如果不采用在线仿真器,可以让CPU直接在其内部实现调试功能,并通过在开发板上引出的调试端口,发送调试命令和接收调试信息,完成调试过程。目前,Motorola公司提供的开发板上使用的是DBM调试端口,而ARM公司提供的开发板上使用的则是JTAG调试端口。使用合适的软件工具与这些调试端口进行连接,可以获得与ICE

类似的调试效果。

②软件调试。在嵌入式Linux系统中,Linux系统内核调试,可以先在Linux内核中设置一个调试桩(debug stub),用作调试过程中和宿主机之间的通信服务器。然后,可以在宿主机中通过调试器的串口与调试桩进行通信,并通过调试器控制目标机上Linux内核的运行。

嵌入式上层应用软件的调试可以使用本地调试和远程调试两种方法。如果采用的是本地调试,首先要将所需的调试器移植到目标系统中,然后就可以直接在目标机上运行调试器来调试应用程序了;如果采用的是远程调试,则需要移植一个调试服务器到目标系统中,并通过它与宿主机上的调试器共同完成应用程序的调试。在嵌入式Linux系统的开发中,远程调试时目标机上使用的调试服务器通常是gdbserver,而宿主机上使用的调试器则是gdb。两者相互配合共同完成调试过程。

第四步,系统测试。整个软件系统编译过程,嵌入式系统的硬件一般采用专门的测试仪器进行测试,而软件则需要有相关的测试技术和测试工具的支持,并要采用特定的测试策略。测试技术指的是软件测试的专门途径,以及能够更加有效地运用这些途径的特定方法。在嵌入式软件测试中,常常要在基于目标机的测试和基于宿主机的测试之间做出折衷。基于目标机的测试需要消耗较多的时间和经费,而基于宿主机的测试虽然代价较小,但毕竟是在仿真环境中进行的,因此难以完全反映软件运行时的实际情况。这两种环境下的测试可以发现不同的软件缺陷,关键是要对目标机环境和宿主机环境下的测试内容进行合理取舍。嵌入式软件测试中经常用到的测试工具主要有:内存分析工具、性能分析工具、覆盖分析工具、缺陷跟踪工具等,在这里不加详述。

以下即为一个典型开发工具的使用流程:

①写入或植入引导码;

②向串口打印字符串的编码;

③将gdb目标码移植工作串口,可与另一台运行gdb程序的Linux主机系统对话;

④利用gdb让硬件和软件初始化码在Linux内核启动时工作;

⑤Linux内核启动,串口成为Linux控制口并可用于后续开发;

⑥如果在目标硬件上已运行了完整的Linux内核,即可调试用户的应用进程。

5、嵌入式Linux面临的挑战

目前,对嵌入式Linux系统的开发正在蓬勃兴起,并已形成了很大的市场。除了一些传统的Linux公司,像RedHat、VA Linux等,正在从事嵌入式Linux的研究之外,一批新公司(如Lineo、TimeSys等)和一些传统的大公司(如IBM、SGI、Motorola、Intel等)以及一些开发专用嵌入式操作系统的公司(如Lynx)也都在进行嵌入式Linux的研究和开发。但就目前的技术而言,嵌入式Linux的研究成果与市场的真正需求还有一些距离,因此,嵌入式Linux走向成熟还需要在以下几个方面有所发展。

(1)Linux的实时性扩充

实时性是嵌入式操作系统的基本要求。由于Linux还不是一个真正的实时操作系统,内核不支持事件优先级和抢占实时特性,所以在开发嵌入式Linux的过程中,首要问题是扩展Linux的实时性能。对Linux实时性的扩展可以从两方面进行:向外扩展和向上扩展。向外扩展即从范围上扩展,让实时系统支持的范围更广,支持的设备更多。目前的开发所面向的

设备仅限于较简单的有实时要求的串/并口数据采集、浮点数据计算等,而像实时网络这样实时系统的高级应用还需进一步发展。向上扩展是扩充Linux内核,从功能上扩充Linux的实时处理和控制系统。如嵌入式系统RT-Linux,它的基本原理是将Linux本身的任务以及Linux内核本身作为一个优先级最低的任务,而实时任务作为优先级最高的任务,即在实时任务存在的情况下运行实时任务,否则就运行Linux本身的任务。实时任务不同于Linux普通进程。它是以Linux的可装载的内核模块(Loadable Kernel Module,LKM)的形式存在的,需要运行实时任务的时候,将这个实时任务的内核模块插入到内核中去,实时任务和Linux 一般进程之间的通信通过共享内存或者FIFO通道来实现。

(2)改变Linux内核的体系结构

Linux的内核体系采用的是Monolithic。在这种体系结构中,内核的所有部分都集中在一起,而且所有的部件在一起编译连接。这样虽然能使系统的各部分直接沟通,有效地缩短任务之间的切换时间,提高系统的响应速度和CPU的利用率,且实时性好;但在系统比较大时体积也比较大,与嵌入式系统容量小、资源有限的特点不符。而另外一种内核体系结构MicroKernel,在内核中只包括了一些基本的内核功能,如创建和删除任务、任务调度、内存管理和中断处理等部分,而文件系统、网络协议栈等部分都是在用户内存空间运行。这种结构虽然执行效率不如Monolithic内核,但大大减小了内核的体积,同时也方便了整个系统的升级、维护和移植,更能满足嵌入式系统的特点需要。为此,要使嵌入式Linux的应用更加广泛,若将Linux目前的Monolithic内核结构中的部分结构改造成MicroKernel体系结构,可使得到的Linux既具有很好的实时性,又能满足嵌入式系统体积小的要求。

另外,Linux是一个需要占用存储器的操作系统。虽然这可以通过减少一些不必要的功能来弥补,但可能会浪费很多时间,而且容易带来很大的麻烦。许多Linux的应用程序都要用到虚拟内存,这在许多嵌入式系统中是没有价值的。所以,并不是一个没有磁盘的Linux 嵌入式系统就可以运行任何Linux应用程序。

(3)完善Linux的集成开发环境

提供完整的集成开发环境是每一个嵌入式系统开发人员所期待的。一个完整的嵌入式系统的集成开发环境一般需要提供的工具是:编译/连接器、内核调试/跟踪器和集成图形界面开发平台。其中的集成图形界面开发平台包括编辑器、调试器、软件仿真器和监视器等。在Linux系统中,具有功能强大的gcc编译器工具链,使用了基于GNU的调试器gdb的远程调试功能,一般由一台客户机运行调试程序调试宿主机运行的操作系统内核; 在使用远程开发时还可以使用交叉平台的方式,如在Windows平台下的调试跟踪器对Linux的宿主系统做调试。但是,Linux在基于图形界面的特定系统定制平台的研究上,与Windows操作系统相比还存在差距。因此,要使嵌入式Linux在嵌入式操作系统领域中的优势更加明显,整体集成开发环境还有待提高和完善。

6、嵌入式Linux的发展及应用前景

嵌入式系统技术具有非常广阔的应用前景,其应用领域可以包括:工业控制、交通管理、信息家电、家庭智能系统、POS网络及电子商务、环境工程与自然、机器人。这些应用中,可以着重于在控制方面的应用。就远程家电控制而言,除了开发出支持TCP/IP的嵌入系统之外,家电产品控制协议也需要制订和统一,这需要家电生产厂家来做。同样的道理,所有基于网络的远程控制协议也需要与嵌入式系统之间实现接口,然后再由嵌入式系统来控制并通过网络实现控制。所以,开发和探试嵌入式系统有着十分重要的意义。

相对于其他的领域,机电产品可以说是嵌入式系统应用最典型最广泛的领域之一。从最初的单片机以现在的工控机、SOC在种机电产品中均有着巨大的市场。

工业设备是机电产品中最大的一类,在目前的工业控制设备中,工控机的使用非常广泛,

这些工控机一般采用的是工业级的处理器和各种设备,其中以X86的MPU最多。

家电行业是嵌入式应用的另一大行业,我们传统的电视,电冰箱当然其中也嵌有处理器,但是这些处理器只是在控制方面应用。而现在只有按钮、开关的电器显然已经不能满足人们的日常需求,具有用户界面,能远程控制,智能管理的电器是未来的发展趋势。到我们身边。

综上,由于Linux具有对各种设备的广泛支持性,因此,能方便地应用于机顶盒、IA 设备、PDA、掌上电脑、WAP手机、寻呼机、车载盒以及工业控制等智能信息产品中。与PC相比,手持设备、IA设备以及信息家电的市场容量要高得多,而Linux嵌入式系统的强大的生命力和利用价值,使越来越多的企业和高校表现出对它极大的研发热情。蓝点软件公司、博利思公司、共创软件联盟、中科红旗等公司都已将嵌入式系统的开发作为自己的主要发展方向之一。

在嵌入式系统的应用中,Linux嵌入式操作系统所具有的技术优势和独特的开发模式给业界以新异。有理由相信,它能成为Internet时代嵌入式操作系统中的最强音。

7、结束语

信息时代数字时代使得嵌入式产品获得了巨大的发展机遇,也为嵌入式市场展现了美好的前景 同时也对嵌入式系统的开发者提出了新的挑战。开发出的产品除了应具有独特的创新功能外,开发者还应遵循一定的原则,只有这样,才能使嵌入式系统产品的开发事半功倍。

如今,互联网应用正在转到以嵌入式设备为中心,因此,用工控系统与Internet相结合来实现网络化已是一种必然的趋势。而把嵌入式linux微处理器内核嵌入到基于StrongARMSA1110的32位MCU系统中,然后通过构造TCP/IP多种网络协议和基本网络通信协议,再利用嵌入式操作系统对底层硬件和网络协议的支持,以及对工控系统实时性要求的lin-ux内核和虚拟内存机制进行改造,即可保证测控任务完成的实时性和可靠性。可以预见,这种方案在工业控制领域具有很好的应用前景,而且具有开发周期短、系统性能稳定可靠、适应性强等特点。

8、参考文献:

[1]《嵌入式处理器分类与现状》吕京建肖海桥

[2]《嵌入式系统设计系统》马洪连等

[3]《嵌入式系统开发工具及RTOS 平台.》吕京建,肖海桥

嵌入式Linux应用软件开发流程

从软件工程的角度来说,嵌入式应用软件也有一定的生命周期,如要进行需求分析、系统设计、代码编写、调试和维护等工作,软件工程的许多理论对它也是适用的。 但和其他通用软件相比,它的开发有许多独特之处: ·在需求分析时,必须考虑硬件性能的影响,具体功能必须考虑由何种硬件实现。 ·在系统设计阶段,重点考虑的是任务的划分及其接口,而不是模块的划分。模块划分则放在了任务的设计阶段。 ·在调试时采用交叉调试方式。 ·软件调试完毕固化到嵌入式系统中后,它的后期维护工作较少。 下面主要介绍分析和设计阶段的步骤与原则: 1、需求分析 对需求加以分析产生需求说明,需求说明过程给出系统功能需求,它包括:·系统所有实现的功能 ·系统的输入、输出 ·系统的外部接口需求(如用户界面) ·它的性能以及诸如文件/数据库安全等其他要求 在实时系统中,常用状态变迁图来描述系统。在设计状态图时,应对系统运行过程进行详细考虑,尽量在状态图中列出所有系统状态,包括许多用户无需知道的内部状态,对许多异常也应有相应处理。 此外,应清楚地说明人机接口,即操作员与系统间地相互作用。对于比较复杂地系统,形成一本操作手册是必要的,为用户提供使用该系统的操作步骤。为使系统说明更清楚,可以将状态变迁图与操作手册脚本结合起来。

在对需求进行分析,了解系统所要实现的功能的基础上,系统开发选用何种硬件、软件平台就可以确定了。 对于硬件平台,要考虑的是微处理器的处理速度、内存空间的大小、外部扩展设备是否满足功能要求等。如微处理器对外部事件的响应速度是否满足系统的实时性要求,它的稳定性如何,内存空间是否满足操作系统及应用软件的运行要求,对于要求网络功能的系统,是否扩展有以太网接口等。 对于软件平台而言,操作系统是否支持实时性及支持的程度、对多任务的管理能力是否支持前面选中的微处理器、网络功能是否满足系统要求以及开发环境是否完善等都是必须考虑的。 当然,不管选用何种软硬件平台,成本因素都是要考虑的,嵌入式Linux 正是在这方面具有突出的优势。 2、任务和模块划分 在进行需求分析和明确系统功能后,就可以对系统进行任务划分。任务是代码运行的一个映象,是无限循环的一段代码。从系统的角度来看,任务是嵌入式系统中竞争系统资源的最小运行单元,任务可以使用或等待CPU、I/O设备和内存空间等系统资源。 在设计一个较为复杂的多任务应用系统时,进行合理的任务划分对系统的运行效率、实时性和吞吐量影响都极大。任务分解过细会不断地在各任务之间切换,而任务之间的通信量也会很大,这样将会大大地增加系统的开销,影响系统的效率。而任务分解过粗、不够彻底又会造成原本可以并行的操作只能按顺序串行执行,从而影响系统的吞吐量。为了达到系统效率和吞吐量之间的平衡折中,在划分任务时应在数据流图的基础上,遵循下列步骤和原则:

LInux 嵌入式操作系统期末试题

1.简答题:请简单概括什么是嵌入式系统、并举出嵌入式系统的特点;(6分) 答: 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可剪裁,适用于应用系统,对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统; 其特点如下: (1)嵌入式系统是面向特定系统应用的。 (2)嵌入式系统涉及计算机技术、微电子技术、电子技术、通信和软件等各个行业; 是一个技术密集、资金密集、高度分散、不断创新的知识集成系统; (3)嵌入式系统的硬件和软件都必须具有高度可定制性;只有这样才能适应嵌入式系 统应用的需要,在产品价格和性能方面具备竞争力; (4)嵌入式系统的生命周期相当长。 (5)嵌入式系统不具备本地系统开发能力,通常需要有一套专门的开发工具和环境。 2.嵌入式操作系统的优势:1.低成本开发系统 2.可应用多种硬件平台 3.可定制内核 4. 性能优异 5.良好的网络支持 3.linux文件类型:1.普通文件 2.目录文件 3.链接文件 4.设备文件 a.块设备文件(硬 盘:/dev/hda1)b.字符设备(串行端口接口设备) 4.linux文件属性:访问权限:r:可读w:可写x:可执行用户级别:u:文件拥有者g:所 属用户组 o:其他用户第一个字符显示文件类型:-普通d目录 l 链接… 5.简答题:(6分) linux目录结构:/bin 存放linux常用操作命令的执行文件(二进制文件) /boot 操作系统启动时所需要的程序 /dev Linux系统中使用的外部设备 /etc 系统管理时所需要的各种配置文件和子目录 /etc/rc.d Linux启动和关闭时要用到的脚本 /etc/rc.d/init Linux默认服务的启动脚本 /home 系统中默认用户工作根目录 /lib 存放系统动态链接共享库 /mnt软驱、光驱、硬盘的挂载点 /proc存放系统核心与执行程序所需信息、 /root超级用户登陆时的主目录 /sbin 存放管理员常用系统管理程序 /usr存放用户应用程序和文件 /var存放日志信息(答六点即可) 6.编写一个shell文件:创建studen01 –student30这30个用户,用户组为class1,之 后编写shell文件,删除所有用户

(完整word版)嵌入式系统设计与应用

嵌入式系统设计与应用 本文由kenneth67贡献 ppt文档可能在W AP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 课程名称:课程名称:嵌入式系统设计与应用 总学时:其中讲课36学时,上机实践环节12 36学时12学时总学时:其中讲课36学时,上机实践环节12学时教材:嵌入式系统设计教程》教材:《嵌入式系统设计教程》电子工业出版社马洪连参考书:参考书:1、《嵌入式系统开发与应用》北航出版社、田泽编著. 嵌入式系统开发与应用》北航出版社、田泽编著. 2、《ARM体系结构与编程》清华大学出版社杜春雷编著ARM体系结构与编程体系结构与编程》嵌入式系统设计与实例开发—ARM ARM与C/OS3、《嵌入式系统设计与实例开发ARM与μC/OS-Ⅱ》清华大学出版社王田苗、魏洪兴编著清华大学出版社王田苗、ARM嵌入式微处理器体系结构嵌入式微处理器体系结构》4、《ARM嵌入式微处理器体系结构》北航出版社、马忠梅等著. 北航出版社、马忠梅等著. 张石.ARM嵌入式系统教程嵌入式系统教程》5、张石.《ARM嵌入式系统教程》.机械工业出版2008年社.2008年9月 1 课程内容 绪论:绪论: 1)学习嵌入式系统的意义2)高校人才嵌入式培养情况嵌入式系统设计(实验课)3)嵌入式系统设计(实验课)内容安排 第1章嵌入式系统概况 1.1 嵌入式系统的定义1.2 嵌入式系统的应用领域及发展趋势1.3 嵌入式系统组成简介 第2章嵌入式系统的基本知识 2.1 2.2 2.3 嵌入式系统的硬件基础嵌入式系统的软件基础ARM微处理器的指令系统和程序设计ARM微处理器的指令系统和程序设计 2 第3章 3.1 3.2 3.3 基于ARM架构的嵌入式微处理器基于ARM架构的嵌入式微处理器ARM 概述嵌入式微处理器的组成常用的三种ARM ARM微处理器介绍常用的三种ARM 微处理器介绍 第4章 4.1 4.2 4.3 4.4 4.5 4.6 嵌入式系统设计 概述嵌入式系统的硬件设计嵌入式系统接口设计嵌入式系统人机交互设备接口嵌入式系统的总线接口和网络接口设计嵌入式系统中常用的无线通信技术 3 第5章嵌入式系统开发环境与相关开发技术 5.1 5.2 5.3 5.4 5.5 6.1 6.2 6.3 6.4 概述嵌入式系统的开发工具嵌入式系统调试技术嵌入式系统开发经验嵌入式系统的Bootloader Bootloader技术嵌入式系统的Bootloader技术μC/OS-II操作系统概述C/OS-II操作系统概述ADS开发环境ARM ADS开发环境C/OS-II操作系统在ARM系统中的移植操作系统在ARM μC/OS-II操作系统在ARM系统

CAN总线在嵌入式Linux下驱动程序的实现

CAN总线在嵌入式Linux下驱动程序的实现 时间:2009-11-05 09:41:22 来源:微计算机信息作者:黄捷峰蔡启仲郭毅锋田小刚 1 引言 基于嵌入式系统设计的工业控制装置,在工业控制现场受到各种干扰,如电磁、粉尘、天气等对系统的正常运行造成很大的影响。在工业控制现场各个设备之间要经常交换、传输数据,需要一种抗干扰性强、稳定、传输速率快的现场总线进行通信。文章采用CAN总线,基于嵌入式系统32位的S3C44B0X微处理器,通过其SPI接口,MCP2510 CAN控制器扩展CAN总线;将嵌入式操作系统嵌入到S3C44B0X微处理器中,能实现多任务、友好图形用户界面;针对S3C44B0X微处理器没有内存管理单元MMU,采用uClinux嵌入式操作系统。这样在嵌入式系统中扩展CAN设备关键技术就是CAN设备在嵌入式操作系统下驱动程序的实现。文章重点解决了CAN总线在嵌入式操作系统下驱动程序实现的问题。对于用户来说,CAN设备在嵌入式操作系统驱动的实现为用户屏蔽了硬件的细节,用户不用关心硬件就可以编出自己的用户程序。实验结果表明驱动程序的正确性,能提高整个系统的抗干扰能力,稳定性好,最大传输速率达到1Mb/s;硬件的错误检定特性也增强了CAN的抗电磁干扰能力。 2 系统硬件设计 系统采用S3C44B0X微处理器,需要扩展CAN控制器。常用的CAN控制器有SJA1000和MCP2510,这两种芯片都支持CAN2.0B标准。SJA1000采用的总线是地址线和数据线复用的方式,但是嵌入式处理器外部总线大多是地址线和数据线分开的结构,这样每次对SJA1000操作时需要先后写入地址和数据2次数据,而且SJA1000使用5V逻辑电平。所以应用MCP2510控制器进行扩展,收发器采用82C250。MCP2510控制器特点:1.支持标准格式和扩展格式的CAN数据帧结构(CAN2.0B);2.0~8字节的有效数据长度,支持远程帧;3.最大1Mb/s的可编程波特率;4.2个支持过滤器的接受缓冲区,3个发送缓冲区; 5.SPI高速串行总线,最大5MHz; 6.3~5.5V宽电压范围供电。MCP2510工作电压为3.3V,能够直接与S3C44B0X微处理器I/O口相连。为了进一步提高系统抗干扰性,可在CAN控制器和收发器之间加一个光隔6N137。其结构原理框图如图1: 图1.S3C44B0X扩展CAN结构框图图2.字符设备注册表 3 CAN设备驱动程序的设计 Linux把设备看成特殊的文件进行管理,添加一种设备,首先要注册该设备,增加它的驱动。设备驱动程序是操作系统内核与设备硬件之间的接口,并为应用程序屏蔽了硬件细节。在linux中用户进程不能直接对物理设备进行操作,必须通过系统调用向内核提出请求,

linux驱动开发的经典书籍

linux驱动开发的经典书籍 结构、操作系统、体系结构、编译原理、计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高 从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码 其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数 安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式 系统编程推荐《高级unix环境编程》,黑话叫APUE 还有《unix网络编程》 这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好 内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发 参考书如下《linux device drivers》,黑话叫ldd 《linux kernel development》,黑话叫lkd 《understading the linux kernel》,黑话叫utlk 《linux源码情景分析》 这四本书为搞内核的必读书籍 最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了 学习linux/unix编程方法的建议 建议学习路径: 首先先学学编辑器,vim, emacs什么的都行。 然后学make file文件,只要知道一点就行,这样就可以准备编程序了。 然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。 如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。 然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用

什么是嵌入式软件开发嵌入式系统软件开发所需要学习那些知识_百(精)

什么是嵌入式软件开发?嵌入式系统软件开发所需要学习那些知识? 随着智能化和信息化网络化的不断发展,嵌入式技能已经日趋成为一种新时代新技术革命的关键。对于嵌入式系统和嵌入式软件开发人员来说,这份职业无疑是种高端应用技术的结合。是一个很有前景的职业。 嵌入式趋势来势汹涌,目前为止已经被很多企业所应用,对于这方面人才的需求更是倍感吃紧。关于嵌入式具体应用不做详细的解说,在这里有必要强调一下,嵌入式软件开发是含义,和要想在嵌入式软件开发中取得不菲的成绩所需掌握那些最基础的知识。 嵌入式技术执行专用功能并被内部计算机控制的设备或者系统。嵌入式系统不能使用通用型计算机,而且运行的是固化的软件,嵌入式技术及应用是计算机应用技术的新发展,具有广泛的应用领域和发展前景,就业形势看好。 嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑,笼统地来说,嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 这么多的应用可见嵌入式系统的前景和人才需求是相当大的,在最近几年中关于这一类的培训也层出不穷,所涉及到的课程和知识点相对来说还是有点差异的,在深圳达内福田培训中心网站上看到了关于嵌入式系统软件开发所需要掌握的几大知识点,感觉划分的很细致。 主要包含以下8个核心部分 1.Linux操作系统核心

ARM嵌入式系统开发与应用课后题答案与习题

课后题答案:第一章 1.写出下列英文缩写的英文原文及中文含义。 RAM随机存储器 DRAM动态随机存储器 ROM只读存储器 PROM可编程只读存储器 EPROM可插除可编程只读存储器 CANCAN总线 RTOS实时操作系统 SOPC片上可编程系统 ICE硬件调试器 FI快速终端请求 EEPROM电可插除可编程只读存储器 API应用程序接 DMA直接内存存取 RISC精简指令集计算机 SPI串行万维指令 MMU存储管理单元 UART异步接受发送装置 ARM先进RISC存储器 SWI软件终端指令 2、什么是嵌入式系统? P3 嵌入式系统是用于检测、控制、辅助、操作机械设备的装置。以应用为中心,一计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗等严格要求的专用计算机系统。 3、是比较嵌入式系统与通用PC的区别。P3 (1)嵌入式系统是专用的计算机系统,而PC是通用的计算机系统。 (2)技术要求不同,通用PC追求高速、海量的数据运算;嵌入式要求对象体系的智能化控制。(3)发展方向不同,PC追求总线速度的不断提升,存储容量不断扩大;嵌入式追求特定对象系统的智能性,嵌入式,专用性。 4、嵌入式体统有哪些部分组成?简单说明各部分的功能与作用 (1)硬件层是整个核心控制模块(由嵌入式微处理器、存储系统、通信模块、人机接口、其他I/O 接口以及电源组成),嵌入式系统的硬件层以嵌入式微处理器为核心,在嵌入式微处理器基础上增加电源电路、时钟电路、和存储器电路(RAM和ROM等),这就构成了一个嵌入式核心控制模块,操作系统和应用程序都可以固化在ROM中。 (2)中间层把系统软件与底层硬件部分隔离,使得系统的底层设备驱动程序与硬件无关。一般包括硬件抽象层(Hardware Abstract Layer,HAL)和板级支持包(Board Support Package,BSP)。(3)软件层由实时操作系统(Real Time Operating System,RTOS)、文件系统、图形用户接口(Graphical User Interfaces,GUI)、网络组件组成。 (4)功能层是面向被控对象和用户的,当需要用户操作是往往需要提供一个友好的人机界面。 5、什么是可编程片上系统?在技术上它有哪些特点? 用可编程逻辑技术把整个系统放到一块硅片上,称作可编程片上系统SOPC,特点如下:实现复杂系统功能的VLSI;采用超深亚微米工艺技术;使用一个以上的嵌入式处理器/DSP;外部可对芯片进行编程;主要采用第三方IP进行设计;足够的片上可编程逻辑资源;具有处理器调试接口和FPGA编程接口;可能包含部分可编程模拟电路;单芯片,低功耗,微封装;微处理器/dsp以ip核的形式方便的嵌入在FPGA中。 6、什么是嵌入式外围设备?简要说明嵌入式外围设备是如何分类的。 嵌入式外围设备,是指在一个嵌入式系统硬件构成中,除了核心控制部件-----嵌入式微处理器/DSP 以外的各种存储器,输入/输出接口、人机接口的显示器/键盘、串行通信接口等。根据外围设备的功能可分为以下五类:存储器类型;通信接口;输入/输出设备;设备扩展接口;电源及辅助设备。 7、.简述嵌入式系统软件的组成和功能? 组成:应用层,OS层,BSP层 11、什么是软硬件协同设计?他最大的特点是什么?嵌入式系统开发为什么可以采用这种方法进行。嵌入式是系统设计时使用一组物理硬件和软件来完成所需功能的过程。系统是指任何由硬件,软件或者两者的结合来构成的功能设备。由于嵌入式系统是一个专用系统,所以在嵌入式产品的设计过程中,软件设计和硬件设计是紧密结合的、相互协调的;特点是:在设计时从系统功能的是先考虑,把实现时的软硬件同时考虑进去,硬件设计包括芯片级“功能定制”设计。这样既可最大限度的利用有效资源,缩短开发周期,又能取得更好的设计效果。 第二章 1、CISC与RISC分别指什么?说明他们各自有什么特点,应用领域和发展趋势如何? 复杂指令集CPU内部为将较复杂的指令译码,也就是指令较长,分成几个微指令去执行,正是如此开发程序比较容易(指令多的缘故),但是由于指令复杂,执行工作效率较差,处理数据速度较慢,PC 中 Pentium的结构都为CISC CPU。 RISC是精简指令集CPU,指令位数较短,内部还有快速处理指令的电路,使得指令的译码与数据的处理较快,所以执行效率比CISC高,不过,必须经过编译程序的处理,才能发挥它的效率,我所知道的IBM的 Power PC为RISC CPU的结构,CISCO 的CPU也是RISC的结构。 RISC与CISC的主要特征对比 比较内容 CISC RISC 指令系统复杂,庞大简单,精简 指令数目一般大于200 一般小于100 指令格式一般大于4 一般小于4 寻址方式一般大于4 一般小于4 指令字长不固定等长 可访存指令不加限制只有LOAD/STORE指令 各种指令使用频率相差很大相差不大

LInux嵌入式操作系统期末试题

简答题:请简单概括什么是嵌入式系统、并举出嵌入式系统的特点;(6分) 答: 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可剪裁,适用于应用系统,对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统; 其特点如下: (1)嵌入式系统是面向特定系统应用的。 (2)嵌入式系统涉及计算机技术、微电子技术、电子技术、通信和软件等各个行业; 是一个技术密集、资金密集、高度分散、不断创新的知识集成系统; (3)嵌入式系统的硬件和软件都必须具有高度可定制性;只有这样才能适应嵌入式系统应用的需要,在产 品价格和性能方面具备竞争力; (4)嵌入式系统的生命周期相当长。 (5)嵌入式系统不具备本地系统开发能力,通常需要有一套专门的开发工具和环境。 嵌入式操作系统的优势:1.低成本开发系统 2.可应用多种硬件平台 3.可定制内核 4.性能优异 5.良好的网络支持 linux文件类型:1.普通文件2.目录文件3.链接文件4.设备文件a.块设备文件(硬盘:/dev/hda1)b.字符设备(串行端口接口设备) linux文件属性:访问权限:r:可读w:可写x:可执行用户级别:u:文件拥有者g:所属用户组o:其他用户第一个字符显示文件类型:- 普通 d 目录 l 链接… 简答题:(6分) linux目录结构:/bin 存放linux常用操作命令的执行文件(二进制文件) /boot 操作系统启动时所需要的程序 /dev Linux系统中使用的外部设备 /etc 系统管理时所需要的各种配置文件和子目录 /etc/rc.d Linux启动和关闭时要用到的脚本 /etc/rc.d/init Linux默认服务的启动脚本 /home 系统中默认用户工作根目录 /lib 存放系统动态链接共享库 /mnt软驱、光驱、硬盘的挂载点 /proc存放系统核心与执行程序所需信息、 /root超级用户登陆时的主目录 /sbin 存放管理员常用系统管理程序 /usr存放用户应用程序和文件 /var存放日志信息(答六点即可) 编写一个shell文件:创建studen01 –student30这30个用户,用户组为class1,之后编写shell文件,删除所有用户 操作步骤:1.打开Terminal(终端): 2.输入vi shell 3.输入i 进入编辑模式 4.输入 #!/bin/bash groupadd class1 for((i=1;i<10;i++)) do username=student0$i

嵌入式系统发展与应用

嵌入式系统发展与应用 引言 不论是日常生活中经常使用的家庭自动化产品、家用电器、手提电话、自动柜员机(ATM),还是各行各业的办公设备、现代化医疗设备、航空电子、计算机网络设备、用于工业自动化和监测的可编程逻辑控制器(PLC),甚至是娱乐设备的固定游戏机和便携式游戏机等都属于嵌入式系统。嵌入式系统始于微型机时代的嵌入式应用,通过将微型机嵌入到一个对象体系中,实现对象系统的智能化控制。随着科技的不断发展,在单片机时代,嵌入式系统以器件形态迅速进入到传统电子技术领域中,以电子技术应用工程师为主体,实现传统电子系统的智能化。而后,随着后PC时代的到来,网络、通信技术得以发展;同时,嵌入式系统软、硬件技术有了很大的提升,形成了基于嵌入式系统软、硬件平台,以网络、通信为主的非嵌入式底层应用的计算机应用模式。 1嵌入式系统的概念与发展 1.1 嵌入式系统的概念 嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等4个部分组成,它是集软硬件于一体的可独立工作的“器件”。它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。 1.2 嵌入式系统发展 纵观嵌入式系统的发展历程,大致经历了以下四个阶段: (1)无操作系统阶段 嵌入式系统最初的应用是基于单片机的,大多以可编程控制器的形式出现,具有监测、伺服、设备指示等功能通常应用于各类工业控制和飞机、导弹等武器装备中,一般没有操作系统的支持,只能通过汇编语言对系统进行直接控制,运行结束后再清除内存。这些装置虽然已经初步具备了嵌入式的应用特点,但仅仅只是使用8位的CPU芯片来执行一些单线程的程序,因此严格地说还谈不上系统的概念。这一阶段嵌入式系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简便、价格低廉,因而曾经在工业控制领域中得到了非常广泛的应用,但却无法满足现今对执行效率、存储容量都有较高要求的信息家电等场合的需要。 (2)简单操作系统阶段 20世纪80年代,随着微电子工艺水平的提高,Ic制造商开始把嵌入式应用中所需要的微处理器、I/O接口、串行接口以及RAM、ROM等部件统统集成到一片VLSI中,制造出面向I /0设计的微控制器,并一举成为嵌入式系统领域中异军突起的新秀。与此同时,嵌入式系统的程序员也开始基于一些简单的操作系统开发嵌入式应用软件,大大缩短了开发周期、提高了开发效率。 (3)实时操作系统阶段 20世纪9O年代,在分布控制、柔性制造、数字化通信和信息家电等巨大需求的牵引下,嵌入式系统进一步飞速发展,而面向实时信号处理算法的DSP产品则向着高速度、高精度、低功耗的方向发展。随着硬件实时性要求的提高,嵌入式系统的软件规模也不断扩大,逐渐形成了实时多任务操作系统(RTOS),并开始成为嵌入式系统的主流。 这一阶段嵌入式系统的主要特点是:操作系统的实时性得到了很大改善,已经能够运行在各种不同类型的微处理器上,具有高度的模块化和扩展性。此时的嵌入式操作系统已经具备了

linux驱动程序的编写

linux驱动程序的编写 一、实验目的 1.掌握linux驱动程序的编写方法 2.掌握驱动程序动态模块的调试方法 3.掌握驱动程序填加到内核的方法 二、实验内容 1. 学习linux驱动程序的编写流程 2. 学习驱动程序动态模块的调试方法 3. 学习驱动程序填加到内核的流程 三、实验设备 PentiumII以上的PC机,LINUX操作系统,EL-ARM860实验箱 四、linux的驱动程序的编写 嵌入式应用对成本和实时性比较敏感,而对linux的应用主要体现在对硬件的驱动程序的编写和上层应用程序的开发上。 嵌入式linux驱动程序的基本结构和标准Linux的结构基本一致,也支持模块化模式,所以,大部分驱动程序编成模块化形式,而且,要求可以在不同的体系结构上安装。linux是可以支持模块化模式的,但由于嵌入式应用是针对具体的应用,所以,一般不采用该模式,而是把驱动程序直接编译进内核之中。但是这种模式是调试驱动模块的极佳方法。 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。同时,设备驱动程序是内核的一部分,它完成以下的功能:对设备初始化和释放;把数据从内核传送到硬件和从硬件读取数据;读取应用程序传送给设备文件的数据和回送应用程序请求的数据;检测和处理设备出现的错误。在linux操作系统下有字符设备和块设备,网络设备三类主要的设备文件类型。 字符设备和块设备的主要区别是:在对字符设备发出读写请求时,实际的硬件I/O一般就紧接着发生了;块设备利用一块系统内存作为缓冲区,当用户进程对设备请求满足用户要求时,就返回请求的数据。块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的CPU时间来等待。 1 字符设备驱动结构 Linux字符设备驱动的关键数据结构是cdev和file_operations结构体。

嵌入式系统开发与应用教程 期末考试

一、选择题 1、ADD R0,R1,#3属于(A)寻址方式。 A. 立即寻址 B. 多寄存器寻址 C. 寄存器直接寻址 D. 相对寻址 2、GET伪指令的含义是( A) A. 包含一个外部文件 B. 定义程序的入口 C. 定义一个宏 D. 声明一个变量 3、存储一个32位数0x876165到2000H~2003H四个字节单元中,若以小端模式存储,则2000H存储单元的内容为( C)。 A、0x00 B、0x87 C、0x65 D、0x61 4、μCOS-II操作系统不属于( C)。 A、RTOS B、占先式实时操作系统 C、非占先式实时操作系统 D、嵌入式实时操作系统 5、若R1=2000H,(2000H)=0x86,(2008H)=0x39,则执行指令LDR R0,[R1,#8]!后R0的值为(D )。 A. 0x2000 B. 0x86 C. 0x2008 D. 0x39 6、寄存器R13除了可以做通用寄存器外,还可以做(C )。 A、程序计数器 B、链接寄存器 C、栈指针寄存器 D、基址寄存器 7、FIQ中断的入口地址是( A)。 A、0x0000001C B、0x00000008 C、0x00000018 D、0x00000014 8、ARM指令集和Thumb指令集分别是(D )位的。 A. 8位,16位 B. 16位,32位 C. 16位,16位 D. 32位,16位 9、ARM寄存器组有(D )个寄存器。 A、7 B、32 C、6 D、37 10、若R1=2000H,(2000H)=0x28,(2008H)=0x87,则执行指令LDR R0,[R1,#8]!后R0的值为(D )。 A. 0x2000 B. 0x28 C. 0x2008 1.和PC机系统相比,下列哪个不是嵌入式系统独具的特点( C ) A、系统内核小 B、专用性强 C、可执行多任务 D、系统精简 2.UCOS-II操作系统属于( B ) A、顺序执行系统 B、占先式实时操作系统 C、非占先式实时操作系统 D、分时操作系统 3.ARM公司是专门从事( A ) A、基于RISC技术芯片设计开发 B、ARM芯片生产 C、软件设计 D、ARM芯片销售 4.ARM9系列微处理器是( C ) A、三级流水线结构 B、四级流水线结构 C、五级流水线结构 D、六级流水线结构 5.在所有工作模式下,( A )都指向同一个物理寄存器,即各模式共享 A、R0-R7 B、R0-R12 C、R8-R12 D、R13,R14 6.当异常发生时,寄存器( A )用于保存CPSR的当前值,从异常退出时则可由它来恢复CPSR. A、SPSR B、R13 C、R14 D、R15 7.能实现把立即数0X3FF5000保存在R0中的指令是( A ) A、LDR R0, = 0X3FF5000 B、LDR R0, 0X3FF5000 C、MOV R0, 0X3FF5000 D、MOV R0, =0X3FF5000

Linux驱动工程师成长之路

本人此刻还不是什么驱动工程师,连入门都谈不上,但我坚信在未来的3-5年我肯定能成为我想像中的人,因为我马上就要进入这一行工作了。写下这个日志来记录我是怎么最后成为我想像中的人才的,呵呵。 《Linux驱动工程师》这个东西是我在大二的时候看到有一篇讲如何学习嵌入式的,点击这里下载PDF,里面讲到嵌入式分为四层:硬件,驱动,系统,应用程序;还说linux驱动最难然后工资也最高就冲着他这句话我就决定我大学毕业的时候要去做这个linux驱动工程师,随后我就先后买了51单片机,ARM7,ARM9还有一大堆的视频教程准备来进行学习。我还跟我旁边那个哈工大哥们说:“我们学校像我这样的人很少,你们学校呢?”他说:“太少了,不过我们学校都是做这种板子卖的人比较多!”。行,你们牛!即使是买了这些东西,从大二到现在都快毕业了但感觉还是没有入门。回想一下我都学过什么啊:1:自己在ARM9上写bootloader(主要锻炼了三方面的知识:C语言应该写了有近万行的代码,ARM9的外设的基本操作方法如UART,LCD,TOUCH,SD,USB,ETHERNET...,makefile);2:移植和学习linux驱动。下面我说一下我学习Linux驱动的一个思路这也是我在面试的时候自我介绍中最重要的部分;1:硬件知识学习Linux驱动首先得了解这个驱动对应的硬件的一些基本原理和操作方法比如LCD你得了解它的场同步,行同步,像素时钟,一个像素的表示模式,还有就是这个LCD是怎么把图像显示在屏幕上的。如果是USB,SD卡就得了解相关协议。可以通过spec(协议)、datasheet来了解,这就是传说中的Linux驱动开发三件宝之二,还有一个就是linux相关源码。2:了解linux驱动框架linux下的每一类驱动差不多都是一个比较完善的子系统,比如FLASH的驱动它就属于MTD子系统从上到下分为四层:设备节点层,设备层,原始设备层,最下面的与具体硬件相关的硬件驱动层,通常要我们自己来实现就是最下面这个与具体硬件相关那部分代码。3:了解这个驱动的数据流。这个过程与第二个过程紧密相关,如果了解了驱动的框架差不多这个过程也算了解了。比如flash.在/dev/目录下有对应flash的字符设备文件和块设备文件,用户对这些文件进行读、写、ioctl操作,其间通过层层的函数调用最终将调用到最下面的硬件驱动层对硬件进行操作。了解这个过程我相信在调试驱动的时候是很有帮助。3:分析与硬件相关通常需要我们实现的那部分源代码。4:三板子上将驱动调试出来。每次调试都会出问题,但我买的板子提供的资料比较全调试过程中遇到的问题都比较浅显,即使是浅显的问题也要把它记录下来。(这个是我上次在华为面试的时候,那个人问我你调试驱动遇到过什么问题吗?你是如何解决的。当时我学习还没有到调试驱动这一步,所以那次面试也惨败收场)。 好像说了这么多,还没有进入正题《工作的选择》。在年前去了龙芯,实习2.8K,转正3.5k,环境还是不错,经理很好,头儿也很帅都是中科院的硕士。不过去了两周我就没去了身边的人都不太理解,我也一度有过后悔的时候,从龙芯出来应该是1月6号,也就是从那个时候开始我就没有再找工作,转而学习linux驱动。一直到上周日。上周日的晚上我就开始投简历一开始要找linux驱动,在智联里面输入linux驱动出来500来个职位,点开一看没有一个自己符合要求的,差不多都要3-5年经验本科,有时候好不容易有个实习的关键字在里面,一看要求硕士,严重打击了我的信心,哎不管了随便投,最后又投了一下嵌入式关键字的职位。最后就瞎申请,看看职位要求差不多就申请。周一来了,这周一共来了6个面试,创下了我求职以来的历史新高。周一下午面了一家感觉还不错不过到现在也没有给我一个通知,估计当时我要了4500把他给要跑了,这家是做测量的不是Linux驱动,差不多是把ARM当单片机用。周二上午一家也是要招linux驱动面了估计不到二分钟,他

嵌入式系统原理与应用习题解析

嵌入式系统原理与应用 习题解析 文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]

1.8 练习题P14 1.选择题 (1)A 说明:嵌入式系统的发展趋势表现在以下几方面: 1.产品种类不断丰富,应用范围不断普及 2.产品性能不断提高 3.产品功耗不断降低,体积不断缩小 4.网络化、智能化程度不断提高 5.软件成为影响价格的主要因素 (2)D 说明:常见的嵌入式操作系统: VxWorks,Windows CE、uC/OS-II和嵌入式Linux。 (3)A 说明:VxWorks是美国WindRiver公司于1983年开发的一种32位嵌入式实时操作系统。 2.填空题 (1)嵌入式计算机 (2)微处理器外围电路外部设备 (3)板级支持包实时操作系统应用编程接口应用程序 (4)嵌入式处理器微控制器数字信号处理器 3.简答题 (1)简述嵌入式系统的定义和特点

答:定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。 特点:专用性强、实时性好、可裁剪性好、可靠性高和功耗低等。(2)简述计算机系统的发展历程 第一阶段大致在20世纪70年代前后,可以看成是嵌入式系统的萌芽阶段; 第二阶段是以嵌入式微处理器为基础,以简单操作系统为核心的嵌入式系统; 第三阶段是以嵌入式操作系统为标志的嵌入式系统,也是嵌入式应用开始普及的阶段; 第四阶段是以基于Internet为标志的嵌入式系统,这是一个正在迅速发展的阶段。 (3)简述MCU和DSP的区别 MCU是微控制器,DSP是数字信号处理器。 MCU相当于小型的电脑,内部集成的CPU、ROM、RAM、I/O总线,所以集成度高是它的特点。 DSP是专用的信息处理器,内部的程序是对不同的机器和环境进行特别优化,所以处理速度是最快的。 2.4 练习题 1. 填空题 (1) ARM7 ARM9 ARM9E ARM10E ARM11

嵌入式行业的就业前景和发展方向

嵌入式行业的就业前景和发展方向 嵌入式行业正以其应用领域广、人才需求大、就业薪资高、行业前景好等众多优势,获得越来越多IT开发人员的关注,大批研发工程师开始向其靠拢。以嵌入式领域的3G为例,目前我国的3G核心人才不足万人,基本上都受雇在几个运营商和设备厂商。市场急需的嵌入式开发人才以及3G时代所需的增值业务开发人才非常抢手。 权威部门统计,我国嵌入式人才缺口每年50万人左右,其中嵌入式15万,移动增值可能35万。随着车载电子应用、手持娱乐终端在国内的普及,今年以来国内外企业纷纷加大了对嵌入式业务的投入,相关人才需求也逐渐加大。 今年3月,据英才网指数统计显示,计算机/信息服务共提供82069个空缺职位,占当月所有空缺职位总数的30.37%,排名第一。 根据前程无忧网发布的调查报告,嵌入式软件开发是未来几年最热门和最受欢迎的职业之一,具有10年工作经验的高级嵌入式工程师年薪在30万元左右。即使是初级的嵌入式软件开发人员,平均月薪也达到了4000—6500元,中高级的嵌入式工程师月薪平均超过10000元。 嵌入式软件开发就业前景: 一:嵌入式软件开发可谓是软件项目开发的掌舵者,一名优秀的嵌入式软件开发应当具有较强的逻辑思维能力,对于技术的发展有敏锐的嗅觉。 二:嵌入式软件开发虽然要求技术全面,但无须偏执于门门技术都精通,任何嵌入式软件开发都有自己的技术特长和偏向,对于自己手中的技术,嵌入式软件开发可有精通-掌握-熟悉-了解之分,根据工作需要和职业发展的具体情况来划分。 三:据统计,嵌入式软件开发的人才需求一直保持全年行业需求的最高,月月居十大热门行业榜首,嵌入式软件开发招聘始终维持在15%-20%左右的市场份额。从行业人才需求看,嵌入式软件开发技术人才水涨船高,软件人才需求最为火爆。

从零开始搭建Linux驱动开发环境

参考: 韦东山视频第10课第一节内核启动流程分析之编译体验 第11课第三节构建根文件系统之busybox 第11课第四节构建根文件系统之构建根文件系统韦东山书籍《嵌入式linux应用开发完全手册》 其他《linux设备驱动程序》第三版 平台: JZ2440、mini2440或TQ2440 交叉网线和miniUSB PC机(windows系统和Vmware下的ubuntu12.04) 一、交叉编译环境的选型 具体的安装交叉编译工具,网上很多资料都有,我的那篇《arm-linux- gcc交叉环境相关知识》也有介绍,这里我只是想提示大家:构建跟文件系统中所用到的lib库一定要是本系统Ubuntu中的交叉编译环境arm-linux- gcc中的。即如果电脑ubuntu中的交叉编译环境为arm-linux-

二、主机、开发板和虚拟机要三者互通 w IP v2.0》一文中有详细的操作步骤,不再赘述。 linux 2.6.22.6_jz2440.patch组合而来,具体操作: 1. 解压缩内核和其补丁包 tar xjvf linux-2.6.22.6.tar.bz2 # 解压内核 tar xjvf linux-2.6.22.6_jz2440.tar.bz2 # 解压补丁

cd linux_2.6.22.6 patch –p1 < ../linux-2.6.22.6_jz2440.patch 3. 配置 在内核目录下执行make 2410_defconfig生成配置菜单,至于怎么配置,《嵌入式linux应用开发完全手册》有详细介绍。 4. 生成uImage make uImage 四、移植busybox 在我们的根文件系统中的/bin和/sbin目录下有各种命令的应用程序,而这些程序在嵌入式系统中都是通过busybox来构建的,每一个命令实际上都是一个指向bu sybox的链接,busybox通过传入的参数来决定进行何种命令操作。 1)配置busybox 解压busybox-1.7.0,然后进入该目录,使用make menuconfig进行配置。这里我们这配置两项 一是在编译选项选择动态库编译,当然你也可以选择静态,不过那样构建的根文件系统会比动态编译的的大。 ->Busybox Settings ->Build Options

嵌入式系统设计教程(第2版)简答题答案.pdf

第一章嵌入式系统概论 1.嵌入式系统的定义是什么? 答:以应用为中心,以计算机技术为基础,硬件、软件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 2.简述嵌入式系统的主要特点。 答:(1)功耗低、体积小、具有专用性 (2)实时性强、系统内核小 (3)创新性和高可靠性 (4)高效率的设计 (5)需要开发环境和调试工具 3. 嵌入式系统一般可以应用到那些领域? 答:嵌入式系统可以应用在工业控制、交通管理、信息家电、家庭智能管理系统、网络及电子商务、环境监测和机器人等方面。 4. 简述嵌入式系统的发展趋势 答:(1)嵌入式应用的开发需要强大的开发工具和操作系统的支持 (2)连网成为必然趋势 (3)精简系统内核、算法,设备实现小尺寸、微功耗和低成本 (4)提供精巧的多媒体人机界面 (5)嵌入式软件开发走向标准化 5.嵌入式系统基本架构主要包括那几部分? 答:嵌入式系统的组织架构是由嵌入式处理器、存储器等硬件、嵌入式系统软件和嵌入式应用软件组成。嵌入式系统一般由硬件系统和软件系统两大部分组成,其中,硬件系统包括嵌入式处理器、存储器、I/O系统和配置必要的外围接口部件;软件系统包括操作系统和应用软件。 6.嵌入式操作系统按实时性分为几种类型,各自特点是什么? 答:(1)具有强实时特点的嵌入式操作系统。 (2)具有弱实时特点的嵌入式操作系统。 (3)没有实时特点的嵌入式操作系统。 第二章嵌入式系统的基础知识 1.嵌入式系统体系结构有哪两种基本形式?各自特点是什么? 答:冯诺依曼体系和哈佛体系。冯诺依曼体系结构的特点之一是系统内部的数据与指令都存储在同一存储器中,其二是典型指令的执行周期包含取指令TF,指令译码TD,执行指令TE,存储TS四部分,目前应用的低端嵌入式处理器。 哈佛体系结构的特点是程序存储器与数据存储器分开,提供了较大的数据存储器带宽,适用于数据信号处理及高速数据处理的计算机。

嵌入式系统开发及应用

第一讲 对ARM-Cortex系列处理器来说,错误的说法是 D.Cortex-A为汽车电子系列 嵌入式系统分为微控制器与应用处理器两大类,这样表述是否正确?对 微处理器MCU的英文全称为Microcontroller Unit,多媒体应用处理器MAP的英文全称为Multimedia Application Processor,这样说法是否正确?对 简要阐述嵌入式系统的基本含义正确答案:1.嵌入式系统是一种计算机硬件和软件的组合,也许还有机械装置,用于实现一个特定功能。在某些特定情况下,嵌入式系统是一个大系统或产品的一部分。2.从计算机本身角度可将嵌入式系统概括表述为:嵌入式系统,即嵌入式计算机系统,它是不以计算机面目出现的“计算机”,这个计算机系统隐含在各类具体的产品之中,这些产品中,计算机程序起到了重要作用。 5简要阐述嵌入式系统的由来、特点及分类正确答案:由来:嵌入式计算机系统是测控系统对计算机需要而逐步产生的。 特点:嵌入式系统是不单独以通用计算机的面目出现的计算机系统,它的开发需要专用工具和特殊方法,使用MCU设计嵌入式系统,数据与程序空间采用不同存储介质,开发嵌入式系统涉及软件、硬件及应用领域的知识等。 分类:按应用范围简单地把嵌入式系统分为电子系统智能化(微控制器类)和计算机应用延伸(应用处理器)两大类 6简要阐述MCU的基本含义,以及MCU出现前后测控系统设计方法发生的重要变化 正确答案:1:含义:在一块芯片内集成了CPU、存储器、定时器/计数器及多种输入输出(I/O)接口的比较完整的数字处理系统。 2:变化:MCU出现之前,人们必须用模拟电路、数字电路实现测控系统中的大部分计算与控制功能,这样使得控制系统体积庞大,易出故障。 MCU出现以后,测控系统设计方法逐步产生变化,系统中的大部分计算与控制功能由MCU 的软件实现。 第二讲 下面哪一模块可以将数字信号专为模拟信号?B. A/D GPIO即是通用输入输出引脚,MCU可读取该引脚的值,也可以向该引脚写值。对 说说什么是RTOS,你所了解的RTOS有哪些?有什么特点? 正确答案:要点1:实时操作系统要点2:RT-Linux VxWorks MQX 要点3:实时性多任务并发处理 第三讲 下面选项中,哪一项说法是正确的? C语言函数的返回值类型由函数的声明来确定,和return语句中的返回表达式的类型无关。 分析下面程序实现的功能int func(int data) { int count=0; while(data != 0) { data &= data -1;

相关文档
最新文档