嵌入式系统_嵌入式系统设计 - CSDN
嵌入式系统 订阅
嵌入式系统由硬件和软件组成.是能够独立进行运作的器件。其软件内容只包括软件运行环境及其操作系统。硬件内容包括信号处理器、存储器、通信模块等在内的多方面的内容。相比于一般的计算机处理系统而言,嵌入式系统存在较大的差异性, 它不能实现大容量的存储功能,因为没有与之相匹配的大容量介质,大部分采用的存储介质有E-PROM、EEPROM DENG等, 软件部分以API编程接口作为开发平台的核心。 [1] 展开全文
嵌入式系统由硬件和软件组成.是能够独立进行运作的器件。其软件内容只包括软件运行环境及其操作系统。硬件内容包括信号处理器、存储器、通信模块等在内的多方面的内容。相比于一般的计算机处理系统而言,嵌入式系统存在较大的差异性, 它不能实现大容量的存储功能,因为没有与之相匹配的大容量介质,大部分采用的存储介质有E-PROM、EEPROM DENG等, 软件部分以API编程接口作为开发平台的核心。 [1]
信息
外文名
Embedded system
分    类
计算机科学类
中文名
嵌入式系统
嵌入式系统定义
嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块的专用计算机系统。 [2]  要点概括:以应用为中心:强调嵌入式系统的目标是满足用户的特定需求。就绝大多数完整的嵌入式系统而言,用户打开电源即可直接享用其功能,无需二次开发或仅需少量配置操作。 [2]  专用性:嵌入式系统的应用场合大多对可靠性、实时性有较高要求,这就决定了服务于特定应用的专用系统是嵌入式系统的主流模式,它并不强调系统的通用性和可扩展。这种专用性通常也导致嵌入式系统是一个软硬件紧密集成的最终系统,因为这样才能更有效地提高整个系统的可靠性并降低成本,并使之具有更好的用户体验。 [2]  以现代计算机技术为核心:嵌入式系统的最基本支撑技术,大致上包括集成电路设计技术、系统结构技术、传感与检测技术、嵌入式操作系统和实时操作系统技术、资源受限系统的高可靠软件开发技术、系统形式化规范与验证技术、通信技术、低功耗技术、特定应用领域的数据分析、信号处理和控制优化技术等,它们围绕计算机基本原理,集成进特定的专用设备就形成了一个嵌入式系统。 [2]  软硬件可裁剪:嵌入式系统针对的应用场景如此之多,并带来差异性极大的设计指标要求(功能性能、可靠性、成本、功耗),以至于现实上很难有一套方案满足所有的系统要求,因此根据需求的不同,灵活裁剪软硬件、组建符合要求的最终系统是嵌入式技术发展的必然技术路线。 [2] 
收起全文
精华内容
参与话题
  • [嵌入式]嵌入式系统概述

    千次阅读 多人点赞 2016-12-20 23:11:34
    1.1 嵌入式系统概述 ·嵌入式系统的定义 嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可剪裁、适应于对系统功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。 这个定义主要包含两个信息...

    第1章  嵌入式系统概述

     

    1.1  嵌入式系统概述

    ·嵌入式系统的定义

         嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可剪裁、适应于对系统功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。

         这个定义主要包含两个信息,一是嵌入式系统是专用计算机系统,因此必须要有处理器,具备计算机系统的基本特征。二是嵌入式系统的功能是有严格要求并按照指定的应用而设计的。

    ·嵌入式系统应用领域

    根据嵌入式系统的应用领域有交通管理、工控设备、智能仪器、汽车电子、环境监测、电子商务、医疗仪器、移动计算、网络设备、通信设备、军事电子、机器人、智能玩具、信息家电等等。主要的产品:

    ·网络设备:交换机、路由器、MODEM等。

    ·消费电子:手机、MP3、PDA 、可视电话、电视机顶盒、数字电视、数码照相机、数码摄像机、信息家电等。

    ·办公设备:打印机、传真机、扫描仪等。

    ·汽车电子:ABS防死锁刹车系统、车载GPS等。

    ·工业控制:各种自动控制设备。

     

    ·现实中的嵌入式系统


    ·嵌入式系统的组成

    嵌入式系统一般由硬件层、中间层和软件层组成。

    ·硬件层

    硬件层包括嵌入式微处理器、存储器、通用设备接口和I/O接口。在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在ROM中。

    ·中间层

    硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board Support Package,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP 层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。

    ·软件层

    系统软件层由实时多任务操作系统(Real-time Operation System,RTOS)、文件系统、图形用户接口(Graphic User Interface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。

     

    ·嵌入式系统特点

    1.系统内核小

    2.专用性强

    3.系统精简

    4.高实时性OS

    ·嵌入式系统发展

    1.系统工程化

    2.开源化

    3.功能多样化

    4.节能化

    5、 人性化

    6、 网络化

     

    ·嵌入式处理器——概述

        早期的嵌入式系统通常使用普通个人计算机(PC)中的通用处理器。近年来,随着大量先进的微处理器制造技术的发展,越来越多的嵌入式系统用嵌入式处理器建造,而不是用通用目的的处理器。

       世界上具有嵌入式功能特点的处理器已经超过1000种,流行体系结构包括MCU、MPU等30多个系列。鉴于嵌入式系统广阔的发展前景,很多半导体制造商都大规模生产嵌入式处理器,其中从单片机、DSP到FPGA有着各式各样的品种,速度越来越快,性能越来越强,价格也越来越低。根据其现状,嵌入式处理器可以分为嵌入式微处理器、嵌入式微控制器、嵌入式DSP处理器和嵌入式片上系统。

    1.2  嵌入式处理器

    ·分类

    嵌入式处理器可以分为以下几大类:

    ·嵌入式微处理器;

    ·嵌入式微控制器;

    ·嵌入式DSP处理器;

    ·嵌入式片上系统(SOC)。

     

    ·嵌入式处理器——嵌入式微处理器

        嵌入式微处理器的基础是通用计算机中的CPU。在应用中,将微处理器装配在专门设计的电路板上,只保留和嵌入式应用有关的母板功能,这样可以大幅度减小系统体积和功耗。为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。

        和工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点,但是在电路板上必须包括ROM、RAM、总线接口、各种外设等器件,从而降低了系统的可靠性,技术保密性也较差。嵌入式微处理器及其存储器、总线、外设等安装在一块电路板上,称为单板计算机。如STD-BUS、PC104等。

     


    ·嵌入式处理器——嵌入式微控制器

    嵌入式微控制器又称单片机,它是将整个计算机系统集成到一块芯片中。嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D、D/A、Flash RAM、EEPROM等各种必要功能和外设。为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装。这样可以使单片机最大限度地和应用需求相匹配,功能不多不少,从而减少功耗和成本。

      和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的主流。微控制器的片上外设资源一般比较丰富,适合于控制,因此称微控制器。

      嵌入式微控制器目前的品种和数量最多,比较有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300、数目众多ARM芯片等。目前MCU占嵌入式系统约70%的市场份额。

     

    ·嵌入式处理器——嵌入式DSP处理器

      DSP处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法,编译效率较高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面DSP算法正在大量进入嵌入式领域,DSP应用正从在通用单片机中以普通指令实现DSP功能,过渡到采用嵌入式DSP处理器。

      嵌入式DSP处理器比较有代表性的产品是Texas Instruments的TMS320系列和Motorola的DSP56000 系列。TMS320系列处理器包括用于控制的 C2000系列,移动通信的C5000系列,以及性能更高的C6000和C8000系列。DSP56000目前已经发展成为DSP56000,DSP56100,DSP56200和DSP56300等几个不同系列的处理器。另外PHILIPS公司近年也推出了基于可重置嵌入式DSP结构低成本、低功耗技术上制造的R. E. A. L DSP处理器,特点是具备双Harvard结构和双乘/累加单元,应用目标是大批量消费类产品。

     

    ·嵌入式处理器——嵌入式片上系统(SOC)

    随着EDA的推广和VLSI设计的普及化及半导体工艺的迅速发展,在一个硅片上实现一个更为复杂的系统的时代已来临,这就是System On Chip(SOC)。各种通用处理器内核将作为SOC设计公司的标准库,和许多其它嵌入式系统外设一样,成为 VLSI设计中一种标准的器件,用标准的 VHDL等语言描述,存储在器件库中。用户只需定义出其整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作样品。这样除个别无法集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中去,应用系统电路板将变得很简洁,对于减小体积和功耗、提高可靠性非常有利。

            SoC可以分为通用和专用两类。通用系列包括Infineon的TriCore、Motorola的M-Core、某些ARM系列器件、Echelon和Motorola联合研制的Neuron芯片等。专用SoC一般专用于某个或某类系统中,不为一般用户所知。一个有代表性的产品是Philips的Smart XA,它将XA单片机内核和支持超过2048 位复杂RSA算法的CCU单元制作在一块硅片上,形成一个可加载JAVA或C语言的专用的SOC,可用于公众互联网如Internet安全方面。

     

    1.3  嵌入式操作系统

    ·概述

        计算机系统由硬件和软件组成,在发展初期没有操作系统这个概念,用户使用监控程序来使用计算机。随着计算机技术的发展,计算机系统的硬件、软件资源也愈来愈丰富,监控程序已不能适应计算机应用的要求。于是在六十年代中期监控程序又进一步发展形成了操作系统(Operating System)。发展到现在,广泛使用的有三种操作系统即多道批处理操作系统、分时操作系统以及实时操作系统。

    ·嵌入式实时操作系统

        实时操作系统(Real-Time Operating System,RTOS)并不是指它是一种速度很快的操作系统,而是指操作系统必须在限定的时间内,对过程调用产生正确的响应。正因为如此,实时操作系统对于时间调度和稳定度上有非常严格的要求,不容许发生太大的误差。

        嵌入式实时操作系统(Real Time Embedded Operating System)是一种实时的、支持嵌入式系统应用的操作系统软件,它通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。

        与通用操作系统相比较,实时操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。

    嵌入式实时操作系统特点

    1.系统内核小

       由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。

    2.专用性强

       嵌入式系统嵌入式系统的个性化很强,其中嵌入式操作系统的调度机制和硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。同时针对不同的任务,往往需要对系统进行较大更改。

    3.系统精简

       嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制成本,同时也利于实现系统安全。

    4.高实时性

       高实时性的系统软件(OS)是嵌入式系统的基本要求。而且软件要求固态存储,以提高速度;软件代码要求高质量和高可靠性。

    5.多任务的操作系统

       嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,保证程序执行的实时性、可靠性,并减少开发时间。

    6.需要开发工具和环境

    ·使用实时操作系统的必要性

    嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。在嵌入式应用中,只有把CPU嵌入到系统中,同时又把操作系统嵌入进去,才是真正的计算机嵌入式应用。使用实时操作系统主要有以下几个因素:

    ·嵌入式实时操作系统提高了系统的可靠性。

    ·提高了开发效率,缩短了开发周期。

    ·嵌入式实时操作系统充分发挥了32位CPU的多任务潜力。

     

    ·实时操作系统的优缺点

    优点:在嵌入式实时操作系统环境下开发实时应用程序使程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理。通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。

     

    缺点:但是,使用嵌入式实时操作系统还需要额外的ROM/RAM开销,2~5%的CPU额外负荷,以及内核的费用。

     

    ·常见的嵌入式操作系统——嵌入式Linux

        uClinux是一个完全符合GNU/GPL公约的操作系统,完全开放代码。uClinux从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性。它是专门针对没有MMU的CPU,并且为嵌入式系统做了许多小型化的工作。适用于没有虚拟内存或内存管理单元(MMU)的处理器,例如ARM7TDMI。它通常用于具有很少内存或Flash的嵌入式系统。它保留了Linux的大部分优点:稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API等。


    ·常见的嵌入式操作系统——Android

     Android系统是Google在2007年11月5日公布的基于Linux平台的开源智能手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。Android是运行于Linux kernel之上,但并不是GNU/Linux。Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。Android的主要特点有:良好的平台开放性、可以实现个性化应用设定和与Google应用的无缝结合。

     

    ·常见的嵌入式操作系统——Win CE

    Windows CE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作,它是精简的Windows 95。Windows CE的图形用户界面相当出色。Win CE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点。Win CE不仅继承了传统的Windows图形界面,并且在Win CE平台上可以使用Windows 95/98上的编程工具(如Visual Basic、Visual C++等)、使绝大多数的应用软件只需简单的修改和移植就可以在Windows CE平台上继续使用。  


    ·常见的嵌入式操作系统——VxWorks

    VxWorks操作系统是美国 WIND RIVER公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等,甚至在1997年4月登陆火星表面的火星探测器上也使用到了VxWorks。

    ·常见的嵌入式操作系统——OSE

    OSE主要是由ENEA Data AB 下属的ENEA OSE Systems AB负责开发和技术服务的,一直以来都充当着实时操作系统以及分布式和容错性应用的先锋,并保持良好的发展态势。

    OSE的客户深入到电信,数据,工控,航空等领域,尤其在电信方面,该公司已经有了十余年的开发经验,同诸如爱立信,诺基亚,西门子等知名公司确定了良好的关系。

    ·常见的嵌入式操作系统——Nucleus

    Nucleus PLUS是为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其95%的代码是用ANSIC写成的,因此非常便于移植并能够支持大多数类型的处理器。

    Nucleus PLUS采用了软件组件的方法。每个组件具有单一而明确的目的,通常由几个C及汇编语言模块构成,提供清晰的外部接口,对组件的引用就是通过这些接口完成的。由于采用了软件组件的方法,使Nucleus PLUS的各个组件非常易于替换和复用。

    ·常见的嵌入式操作系统——eCos

    eCos是RedHat公司开发的源代码开放的嵌入式RTOS产品,是一个可配置、可移植的嵌入式实时操作系统,设计的运行环境为RedHat的GNUPro和GNU开发环境。eCOS的所有部分都开放源代码,可以按照需要自由修改和添加。eCOS的关键技术是操作系统可配置性,允许用户组和自己的实时组件和函数以及实现方式,特别允许eCOS的开发则定制自己的面向应用的操作系统,使eCos能有更广泛的应用范围。

    ·常见的嵌入式操作系统——μC/OS-II

    μC/OS-II是一个源码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统。其绝大部分源码是用ANSI C写的,使其可以方便的移植并支持大多数类型的处理器。μC/OS-II通过了联邦航空局(FAA)商用航行器认证。自1992年问世以来,μC/OS-II已经被应用到数以百计的产品中。μC/OS-II占用很少的系统资源,并且在高校教学使用是不需要申请许可证。

    ·常见的嵌入式操作系统——uITRON

    TRON是指“实时操作系统内核(The Real-time Operating system Nucleux)”,它是在1984年由东京大学的Sakamura博士提出的,目的是为了建立一个理想的计算机体系结构。通过工业界和大学院校的合作,TRON方案正被逐步用到全新概念的计算机体系结构中。

    uITRON是TRON的一个子方案,它具有标准的实时内核,适用于任何小规模的嵌入式系统,日本国内现有很多基于该内核的产品,其中消费电器较多。目前已成为日本事实上的工业标准。

    ·常见的嵌入式操作系统——uITRON

    TRON明确的设计目标使其甚至比Linux更适合于做嵌入式应用,内核小,启动速度快,即时性能好,也很适合汉字系统的开发。另外,TRON的成功还来源于如下两个重要的条件:

    1.它是免费的

    2.它已经建立了开放的标准,形成了较完善的软硬件配套开发环境,较好地形成了产业化。


     

    展开全文
  • 嵌入式系统原理及应用详解

    千次阅读 2018-05-27 15:58:30
    探究嵌入式系统的原理,那么就应该先剖析一下,要知道嵌入式系统原理包括些什么,嵌入式系统原理主要是包括嵌入式系统原理与设计方面的知识。嵌入式系统是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机...

    探究嵌入式系统的原理,那么就应该先剖析一下,要知道嵌入式系统原理包括些什么,嵌入式系统原理主要是包括嵌入式系统原理与设计方面的知识。嵌入式系统是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据英国电气工程师协会的定义,嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。由于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。嵌入式系统通常进行大量生产,所以单个的成本节约,能够随着产量进行成百上千的放大。 

    嵌入式系统发展趋势 又是怎么样的呢?

    1. 嵌入式开发是一项系统工程,因此要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持。目前很多厂商已经充分考虑到这一点,在主推系统的同时,将开发环境也作为重点推广。  

    2. 网络化、信息化的要求随着因特网技术的成熟、带宽的提高日益提高,使得以往单一功能的设备如电话、手机、冰箱、微波炉等功能不再单一,结构更加复杂。  

    3. 未来的嵌入式设备为了适应网络发展的要求,必然要求硬件上提供各种网络通信接口。传统的单片机对于网络支持不足,而新一代的嵌入式处理器已经开始内嵌网络接口,除了支持TCP/IP协议,还有的支持IEEE1394、USB、CAN、Bluetooth或IrDA通信接口中的一种或者几种,同时也需要提供相应的通信组网协议软件和物理层驱动软件。软件方面系统系统内核支持网络模块,甚至可以在设备上嵌入Web浏览器,真正实现随时随地用各种设备上网。  

    4. 精简系统内核、算法,降低功耗和软硬件成本。 

    5. 提供友好的多媒体人机界面  嵌入式系统原理这一概念相对而言比较宽泛,所以介绍起来可能有一定的难度,但是经过小编以上的介绍你是否了解了嵌入式系统的原理呢?

    那嵌入式应用在哪些方面呢?

    嵌入式系统是数字化产品的核心,有什么工业啦,通讯,交通等方面都有嵌入式的应用

    下面来举几个例子,来让你们了解嵌入式系统的应用:如我们的家装设备:电视机、冰箱、微波炉、电话、机顶盒、家庭网关、数字机顶盒等都是应用了嵌入式系统。再来就是一些网络设备:路由器、交换机等各种网络设备,基于Linux等的网络设备价格低廉,将为企业提供更为廉价的网络方案。美国贝尔实验室预测:在这阶段“将会产生比PC时代多成百上千倍的瘦服务器和超级嵌入式瘦服务器,这些瘦服务器将与我们这个世界任何物理信息、生物信息相联接,通过Internet自动、实时、方便、简单地提供给需要这些信息的对象”。还有一个就是工业上了,工业上应用是很多的,如工控、仿真、数据采集等都是。

    嵌入式系统应用领域广,而且发展趋势也是很不错的,所以学习嵌入式也是一个不错的选择。


    相关推荐:嵌入式学习视频

                    免费一对一职业规划

    展开全文
  • 关于嵌入式系统的学习路线图

    千次阅读 多人点赞 2018-04-28 21:31:35
    二、关于嵌入式系统方向;三、关于游戏软件方向。 嵌入式系统方向 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、...

    来源:本文乃同济大学软件学院王院长(JacksonWan)在同济网论坛发表的帖子《谈谈软件学院高年级同学的学习方向》的第二部分。三部分依次为:一、关于企业计算方向;二、关于嵌入式系统方向;三、关于游戏软件方向。

    嵌入式系统方向

    嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备..等等都是典型的嵌入式系统。

    嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类。

    一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、Board Support Package(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)。

    另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有"花头"可做的),所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。

    从事嵌入式软件开发的好处是:

    (1) 目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如ARM处理器、嵌入式操作系统、MPEG技术、无线通信协议等),掌握这些新技术的人当然很难找。嵌入式人才稀缺,身价自然就高,越有经验价格就越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。

    (2) 与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些。搞企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个用户的需求和完成时间都得按客户要求改变,往往疲于奔命,重复劳动。相比而言,搞嵌入式系统的公司,都有自己的产品计划,按自己的节奏行事。所开发的产品通常是通用的,不会因客户的不同而修改。一个产品型号开发完了,往往有较长一段空闲时间(或只是对软件进行一些小修补),有时间进行充电和休整。另外,从事嵌入式软件的每个人工作范围相对狭窄,所涉及的专业技术范围就是那些(ARM、RTOS、MPEG、802.11等),时间长了这些东西会越搞越有经验,卖卖老本,几句指导也够让那些初入道者琢磨半年的。若搞应用软件,可能下一个客户要换成一个完全不同的软件开发平台,那就苦了。

    (3) 哪天若想创业,搞自已的产品,那么嵌入式是一个不错的主意,这可不像应用软件那样容易被盗版。土木学院有一个叫启明星的公司开发出一个好象叫“工程e”的掌上PDA(南校区门口有广告),施工技术人员用该PDA可当场进行土木概预算和其它土木计算,据说销路特好。我认识的某大学老师,他开发的饭馆用的点菜PDA(WinCE平台,可无线连网和上网),据他说销路不错,饭馆点点PDA让客户点菜,多显派头档次。我记得00级2+2班当年有一组同学在学Windows程序设计课程时用VC++设计了一个功能很强的点菜系统做为课程项目,当时真想建议他们将这个软件做成PDA,估计会有些销路(上海火车站南广场的Macdonald便使用很漂亮的PDA给用户点食品,像摸像样的)。这些PDA的硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。

    从事嵌入式软件开发的缺点是:

    (1) 入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。

    (2) 这方面的企业数量要远少于企业计算类企业。特别是从事嵌入式的小企业数量较多(小企业要搞自己的产品创业),知名大公司较少(搞嵌入式的大公司主要有Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半导体、Microtek、研华、华为、中兴通信、上广电等制造类企业)。这些企业的习惯思维方式是到电子、通信等偏硬专业找人。

    (3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。

    我院同学若学习嵌入式,显然应偏重于嵌入式软件,特别是嵌入式操作系统方面,应是我们的强项。对于搞嵌入式软件的人,最重要的技术显然是(实际上很多公司的招聘广告上就是这样写的):
    (1) 掌握主流嵌入式微处理器的结构与原理
    (2) 必须掌握一个嵌入式操作系统
    (3) 必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目。

    (这条件有点老了,现在要求高多了)

    我院在嵌入式软件方面最重要的课程包括:

    (1) 嵌入式微处理器结构与应用:这是一门嵌入式硬件基础课程,我院用这门课取代了传统的“微机原理与接口”课程(目前国内已有少部分高校IT专业这样做了,因为讲x86微机原理与接口很难找到实际用处,只为教学而已)。我们说过,嵌入式是软硬件结合的技术,搞嵌入式软件的人应对ARM处理器工作原理和接口技术有充分了解,包括ARM的汇编指令系统。若不了解处理器原理,怎么能控制硬件工作,怎么能写出节省内存又运行高速的最优代码(嵌入式软件设计特别讲究时空效率),怎么能写出驱动程序(驱动程序都是与硬件打交道的)?很多公司招聘嵌入式软件人员时都要求熟悉ARM处理器,将来若同学到公司中从事嵌入式软件开发,公司都会给你一本该设备的硬件规格说明书 (xxx Specification),您必须能看懂其中的内存分布和端口使用等最基本的说明(就像x86汇编一样),否则怎么设计软件。有些同学觉得嵌入式处理器课程较枯燥,这主要是硬件课程都较抽象的原因.还有同学对ARM汇编不感兴趣,以为嵌入式开发用C语言就足够了。其实不应仅是将汇编语言当成一个程序设计语言,学汇编主要是为了掌握处理器工作原理的。一个不熟悉汇编语言的人,怎么能在该处理器写出最优的C语言代码。在嵌入式开发的一些关键部分,有时还必须写汇编,如Bootloader等(可能还包括BSP)。特别是在对速度有极高要求的场合(如DSP处理器的高速图像采集和图像解压缩),目前主要还要靠汇编写程序(我看到过很多公司是这样做的)。当您在一个嵌入式公司工作时,在查看描述原理的手册时,可能很多都是用汇编描述的(我就遇到过),这是因为很多硬件设计人员只会写或者喜欢用汇编描述,此时您就必须看懂汇编程序,否则软硬件人员可能就无法交流。
    目前嵌入式处理器常见的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire(冷火)等,但ARM占据了绝对主流(资料说手机中几乎100%都是ARM处理器)。ARM是一个只卖知识产权的公司,目前获得购买了ARM CPU核授权许可的大公司很多,包括Intel、Samsung、Amstel、Motorola、Philip等,他们都在ARM CPU核的基础上进行了一些外围扩展,形成自己的处理器(如Samsung S3C2410,Motorola i.MXL9328等处理器都是采用ARM 9内核,指令一级是相同的)。而众多中小公司又购买了这些处理器,设计了各种各样的开发板,如华恒等国内很多著名嵌入式公司都生产基于Samsung S3C2410的开发板,供最终用户使用或供教学实验。在ARM这个食物链上,ARM公司是大鱼,Intel、Samsung等公司是小鱼,而华恒等则是虾米,最终用户(想我们要采购嵌入式开发板的实验室)则是喂虾米的。Intel早期生产的是低端ARM(Strong ARM,相当于ARM 7),现在转向主要生产高端ARM(即Intel Xscale处理器,相当于ARM 10,主要用在高端PDA上,如HP和DELL生产的PDA都采用Intel Xscale,价格较高)。目前应用最多的是ARM 7和ARM 9两类处理器。 ARM 7较便宜,可跑uclinux(是一个不支持高级内存管理功能的嵌入式Linux系统)、Vxworks、uc/os II等实时操作系统,但因处理器不带内存管理单元MMU(无内存分页和地址映射机制,所以不能使用虚拟内存),所以不能跑Windows CE,另外通用Linux中的某些内存管理功能也不能用在ARM 7上。ARM 9是一个带MMU功能的高端处理器,可跑WinCE或通用Linux的大多数功能。以上是我的一点了解,可能有不对的地方。我们学院正在建设的嵌入式实验室(10月底到货)包括30套ARM 7系统(拟采用Samsung S3C44b0x开发板,主要用于嵌入式处理器结构、嵌入式linux课程实验),10套ARM 9系统(拟采用Samsung S3C2410x开发板,主要用于Windows CE课程建设),每套实验板都配了高速仿真器,价格都很贵(比我们招标的DELL PC还贵),很容易损坏,同学应爱护使用。

    (2) 嵌入式操作系统类课程
    除了WinCE的实时性稍差外,大多数嵌入式操作系统的实时性都很强,所以也可称为实时操作系统Real Time Operating System.从事嵌入式的人至少须掌握一个嵌入式操作系统(当然掌握两个更好),这在嵌入式的所有技术中是最为关键的了。目前最重要的RTOS主要包括:

    第一类、传统的经典RTOS:最主要的便是Vxworks操作系统,以及其Tornado开发平台。Vxworks因出现稍早,实时性很强(据说可在1ms内响应外部事件请求),并且内核可极微(据说最小可8K),可靠性较高等,所以在北美,Vxworks占据了嵌入式系统的多半疆山。特别是在通信设备等实时性要求较高的系统中,几乎非Vxworks莫属。Vxworks的很多概念和技术都和Linux很类似,主要是C语言开发。像Bell-alcatel、Lucent、华为等通信企业在开发产品时,Vxworks用得很多。但Vxworks因价格很高,所以一些小公司或小产品中往往用不起。目前很多公司都在往嵌入式Linux转(听说华为目前正在这样转)。但无论如何,Vxworks在一段长时间内仍是不可动摇的。与Vxworks类似的稍有名的实时操作系统还有pSOS、QNX、Nucleus等RTOS。

    第二类、嵌入式Linux操作系统:Linux的前途除作为服务器操作系统外,最成功的便是在嵌入式领域的应用,原因当然是免费、开源、支持软件多、呼拥者众,这样嵌入式产品成本会低。Linux本身不是一个为嵌入式设计的操作系统,不是微内核的,并且实时性不强。目前应用在嵌入式领域的Linux系统主要有两类:一类是专为嵌入式设计的已被裁减过的Linux系统,最常用的是uClinux(不带MMU功能),目前占较大应用份额,可在ARM7上跑;另一类是跑在ARM 9上的,一般是将Linux 2.4.18内核移植在其上,可使用更多的Linux功能(当然uClinux更可跑在ARM 9上)。很多人预测,嵌入式Linux预计将占嵌入式操作系统的50%以上份额,非常重要。缺点是熟悉Linux的人太少,开发难度稍大。另外,目前我们能发现很多教材和很多大学都以ucOS/II为教学用实时操作系统,这主要是由于ucOS/II较简单,且开源,非常适合入门者学习实时操作系统原理,但由于ucOS/II功能有限,实用用得较少,所以我院不将其作为教学重点,要学习就应学直接实用的,比如 uClinux就很实用。况且熟悉了Linux开发,不仅在嵌入式领域有用,对开发Linux应用软件,对加深操作系统的认识也有帮助,可谓一举多得。据我所知,目前Intel、Philip都在大搞ARM+LINUX的嵌入式开发,Fujitum则是在自己的处理器上大搞Linux开发。目前在嵌入式Linux领域,以下几个方面的人特别难找,一是能将Linux移植到某个新型号的开发版上;二是能写Linux驱动程序的人;三是熟悉Linux内核裁减和优化的人。我院在该嵌入式Linux方面的课程系列是:本科生操作系统必修课,然后是Linux程序设计选修课,最后是嵌入式Linux系统选修课。


    第三类、 Windows CE嵌入式操作系统:Microsoft也看准了嵌入式的巨大市场,MS永远是最厉害的,WinCE出来只有几年时间,但目前已占据了很大市场份额,特别是在PDA、手机、显示仪表等界面要求较高或者要求快速开发的场合,WinCE目前已很流行(据说有一家卖工控机的公司板子卖得太好,以至来不及为客户裁减WinCE)。WinCE目前主要为4.2版(.NET),开发平台主要为WinCE Platform Builder,有时也用EVC环境开发一些较上层的应用,由于WinCE开发都是大家熟悉的VC++环境,所以我院学过Windows程序设计课程的同学都不会有多大难度,这也是WinCE容易被人们接受的原因,开发环境方便快速,微软的强大技术支持,WinCE开发难度远低于嵌入式Linux。对于急于完成,不想拿嵌入式Linux冒险的开发场合,WinCE是最合适了(找嵌入式Linux的人可没那么好找的),毕竟公司不能像学生学习那样试试看,保证开发成功更重要。根据不同的侧重点 ,WinCE还有两个特殊版本,一个是MS PocketPC操作系统专用于PDA上(掌上电脑),另一个是MS SmartPhone操作系统用于智能手机上(带PDA功能的手机),两者也都属于WinCE平台。在PDA和手机市场上,除WinCE外,著名的PDA嵌入式操作系统还有Palm OS(因出现很早,很有名)、Symbian等,但在WinCE的强劲冲击下,Palm和Symbian来日还能有多长?我院可能是全国高校中唯一一家开设专门的"Windows CE嵌入式操作系统"课程的学校,这主要是基于以下原因:我院本身前面便有Windows程序设计课程,同学学过VC++后再学WinCE,非常方便自然,通过学习WinCE同样也可了解嵌入式软件的一般开发过程,对Linux有惧怕心理的同学也很合适。很显然,嵌入式Linux永远不可能替代WinCE,而且将来谁占份额大还很难讲,毕竟很多人更愿意接受MS的平台,就像各国政府都在大力推LINUX已好长时间,但您能看到几个在PC机上真正使用LINUX的用户?据我观察,目前在嵌入式平台上,LINUX是叫得最响,但还是WinCE实际用得更多.嵌入式LINUX可能更多地是一些有长远产品计划的公司,为降低成本而进行长远考虑; 二是微软亚洲研究院对我院WinCE课程的支持计划,我们也很希望将来我院能有同学通过微软的面试去实习。WinCE和多媒体(如MPEG技术)是微软亚洲工程院目前做得较多的项目领域之一,他们很需要精通WinCE的人。

    总结关于嵌入式操作系统类课程,若您觉得自己功底较深且能钻研下去,则可去学嵌入式Linux;若您觉得自己VC++功底较好且想短平快地学嵌入式开发,则我院的WinCE课程是最好的选择。

    (3) 嵌入式开发的其它相关软件课程

    搞嵌入式若能熟悉嵌入式应用的一些主要领域,这样的人更受企业欢迎。主要的相关领域包括:
    A、数字图像压缩技术:这是嵌入式最重要最热门的应用领域之一,主要是应掌握MPEG编解码算法和技术,如DVD、MP3、PDA、高精电视、机顶盒等都涉及MPEG高速解码问题。为此,我院已预订了一位能开设数字图像处理课程的博士。
    B、通信协议及编程技术:这包括传统的TCP/IP协议和热门的无线通信协议。首先,大多数嵌入式设备都要连入局域网或Internet,所以首先应掌握TCP/IP协议及其编程,这是需首要掌握的基本技术;其次,无线通信是目前的大趋势,所以掌握无线通信协议及编程也是是很重要的。无结通信协议包括无线局域网通信协议802.11系列,Bluetooth,以及移动通信(如GPRS、GSM、CDMA等)。
    C、网络与信息安全技术:如加密技术,数字证书CA等。我院有这方面的选修课。
    D、DSP技术:DSP是Digital Signal Process数字信号处理的意思,DSP处理器通过硬件实现数字信号处理算法,如高速数据采集、压缩、解压缩、通信等。数字信号处理是电子、通信等硬件专业的课程,对于搞软件的人若能了解一下最好。目前DSP人才较缺。如果有信号与系统、数字信号处理等课程基础,对于学习MPEG编解码原理会有很大帮助。

    (4)嵌入式开发的相关硬件基础

    对于软件工程专业的学生,从事嵌入式软件开发,像数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程是较重要的。另外,汇编语言、C/C++、数据结构和算法、特别是操作系统等软件基础课也是十分重要的。我们的主要目地是能看懂硬件工作原理,但重点应是在嵌入式软件,特别操作系统级软件,那将是我们的优势。
    我们的研究生里有些是学电子、通信类专业过来的,有较好的模拟电路和单片机基础,学嵌入式非常合适。嵌入式本身就是从单片机发展过来的,只是单片机不带OS,而现在很多嵌入式应用越来越复杂,以至不得不引入嵌入式操作系统。另外,为追求更高速的信号处理速度,现在在一些速度要求较高的场合,有不少公司是将一些DSP算法,如MPEG压缩解压缩算法等用硬件来实现,这就涉及到HDL数字电路设计技术及其FPGA/IP核实现技术,这方面的人目前市场上也很缺。

    (5) 题外话

    另外,能写驱动程序的人目前是非常紧缺的(驱动程序也可归于嵌入式范畴),包括桌面Windows中的DDK开发环境和WDM驱动程序。公司每时每刻都要推出新产品,每一个新产品出来了,要能被操作系统所使用,是必须写驱动程序的。写驱动程序就必须掌握操作系统(如Windows或Linux)的内部工作原理,还涉及到少量硬件知识,难度较大,所以这方面的人很难找。想成为高手的同学,也可从驱动程序方面获得突破。我可说一下自己的经历,三年前我曾短暂地在一家公司写过WinCE驱动程序(正是因为知道这方面的人紧缺,所以才要做这方面的事),尽管那以前从未做过驱动程序,应聘那个职位时正是看准了公司是很难招聘到这方面的人,既然都找不到人,驱动还得有人做,这正是可能有机会切入这一领域的大好机会。面试时大讲自己写过多少万行汇编程序,对计算机工作原理如何清楚,简历中又写着我曾阅读完两本关于Windows Driver Model的两本英文原版书,写过几个小型的驱动程序练习程序(其实根本没写过,我们的同学将来千万不要像我这样,早练就些过硬功夫,就不至于沦落到我这等地步,就不用像我那样去“欺骗”公司了,我这是一个典型的反面教材),居然一切都PASS(当然最重要的是笔试和面试问题还说得过去),这只能说明这一领域找人的困难程度。公司本就未指望找到搞过驱动的人,找个有相关基础的人就算不错了。做了以后,发现也并不是怎样难的。其实搞驱动程序的工作是很舒服的,搞完一个版本就会空一段时间,只有等公司新的芯片推出或新的OS出现后,才需要再去开发新一版驱动,那时有将近一个月时间空闲着在等WinCE .NET Beta版推出,准备将驱动程序升级到CE .NET上,现在在软件学院工作整日忙,无限怀念那段悠闲时光。

    很巧合,最近本人无意中再次体会到了嵌入式的迷人之处。上周我那用了3年的手机终于不能WORK了。此次更新,除要求有手机常见功能外,最好有MP3功能(现在很多英语听力都有MP3文件),最好有英汉词典,最好还能读WORD文档。最后选了个满足以上条件的最便宜的手机DOPOD 515(斩了我2.2K,但想想这也算自己对嵌入式事业的支持,这样便也想开了),算得上最低档的智能手机了。回来一查,手机的about显示,本手机Processor是ARM,其OS是MS Smartphone(即WinCE .NET 4.2),这么巧合,简直可做为学习嵌入式课程的产品案例了(等我们的WinCE课程开得有声有色后,希望能从微软研究院搞些Smartphone来开发开发)。有OS的手机果然了得,金山词霸、WORD、EXCEL、REGEDIT等居然都有smartphone版的,PC上的MP3、DOC等居然在download时都可被自动转换成smartphone格式,真是爽。完全可用Windows CE自己开发一些需要的程序download到自己的手机上。现在市面销售PDA智能手机火爆,MS总是财源滚滚。但我已发现国产的ARM+LINUX手机出现在市面上,价格只1.2K。

    要么走ARM+WinCE,要么走ARM+LINUX,要么走ARM+VXWORKS。每个搞嵌入式的人都可选一条路,条条大路通罗马。


    http://blog.csdn.net/kevinhg/article/details/6761984


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

    另一篇

    1. 嵌入式LININX开发第一学习阶段,主要打好基础,学好C编程,Linux系统编程。


    2. 嵌入式LININX开发第二学习阶段,掌握ARM汇编程序设计,驱动程序设计。


    3. 嵌入式LININX开发第三学习阶段,掌握C++面向对象程序设计,Qt编程。


    4. ----------------------------------------------------------------------------------------------------------------

    5. 总的原则,不能贪多求快,贵在长期坚持。

       

      好了,话归正转。下面给出相关的学习资料。资料出现的顺序,也就是我们学习的顺序。

       

      1.  C程序设计语言

          C语言作者写的书,超级精简。因为精简,所以,这本书要很认真的读。不要求快,要细嚼慢咽,要多思考,要从头到尾(包括附录)的读。

        

      2.  Unix环境高级编程 第2版

          知名的Unix编程书籍。学完这本书,对一般的Linux应用开发,基本上可以达到得心应手的地步。

       

      3. Unix网络编程 第3版 第1卷

          知名的Unix编程书籍。学完这本书,对一般的Linux网络应用开发,基本上可以达到得心应手的地步。

          (说句题外话,如果自我要求不高的话,学完这3本书,出去混口饭吃已经不是大问题了。)

             (另外,如果想深入一点理解网络,TCP/IP详解 卷2  是一本非常好的书)

       

      4.  深入理解计算机系统

          注意,到这里,要进入关键的一步了。这本书,共分为3部分,我们只要看前2部分即可。

          这本书,要相当认真的学习。不仅要看,要思考,还要做完所有的练习题(做题非常重要,一定要坚持先做,再看答案)。

          同时,书中的内容不可能解答你全部的编程疑问。因此,在学习过程中,对自己以前不理解的概念(如C语法的含义,C++多态究竟是如何实现的等问题),要多写小函数或者小代码片段,多分析他们对应的汇编代码(objdump这个最精确;当然,通过使用-S编译选项也行,它的可读性要好一点,但是可能会带有宏指令)。另外,我的经验是,写小函数时,参与运算的变量,最好将它定义为入参(编译器不敢优化)而不是局部变量或全局变量(容易被编译器优化,导致未能生成你要想看的机器码)。

              这本书学完,你将真正成为C语言(甚至C++)的专家。因为你将从机器码的层次,理解C(及C++)的语义究竟是怎么实现的。你还会理解,从C语言代码生成可执行程序的整个过程(预处理,编译,链接,静态库,动态库等)。你还将理解进程的概念,包括进程如何运行,进程如何与OS交互(中断、异常、系统调用)。

       

      5.  Linux内核设计与实现

          到这里,算是开始踏入Linux内核的大门了。这本书,从比较高的层次介绍Linux内核。是非常好的内核入门书籍。

       

      6.  Linux内核源代码情景分析

          虽然是老书,但符合国人的思维习惯,因此非常有助于理解Linux内核。

       

      7.  深入理解Linux内核

          新书,老外写的。当然是超级好书,在下就不多说了。

       

      8. Linux设备驱动程序

          这本书非常注重实用。我们最终的开发,基本上,要么是开发驱动,要么是在内核中做些应用(并与用户态做一定交互)。而这本书恰恰教给我们最老练的开发方法。

       

      9    u-boot学习

            这里推荐的不是书籍了,而是一篇网络资料。

             http://www.cnblogs.com/heaad/archive/2010/07/17/1779829.html

              上面这篇文章,是一篇非常不错的介绍u-boot工作机制的好文。

              另外,学习u-boot,还得舍得花钱。笔者为此也买了一块S3C2440 arm9开发板——TQ2440。

              (需要说一下,在下对天发誓,在下绝不是给谁做广告)

             开发板不用买高档的,买个基本的arm9的就行了。因为我们是学习嵌入式系统原理,有个基本的arm9 CPU就足够了。如果是做产品,当然需要选型。

              有了开发板,就可以修改、编译、烧写u-boot、内核、根文件系统了。

              有了开发板,就可以理解从CPU一通电开始,到Linux跑起来,到最后应用跑起来,在这整个过程中,机器里所发生的一切事情了。

       

      好了,在下能介绍的内容就这么多了。后面搞什么,怎么搞,就看大家自己的啦。

    1. --------------------------------------------------------------------------------------------------------------------
    2. 1.初识ARM
         相信ARM初学者已经通过各方面的信息(尤其是因特网)对ARM或多或少有所了解。那么,看看您是否对以下我们所提出的概念有所了解:
       (1)“ARM”到底指的是什么?(是一家公司?是一款芯片?是一种技术?)
       (2)ARM处理器芯片如何分类?
       (3)目前有哪些芯片厂商生产ARM处理器芯片?
       (4)目前国内应用比较多的ARM处理器芯片有哪些?它们主要应用于哪些领域?
       以上四个问题,用户可以通过在网上查找资料很快得出答案。我们之所以只提出问题,不给出答案,是希望用户能够亲自去查阅相关信息和资料,因为这也是ARM学习的一部分。我们希望用户能够与我们给出的学习建议进行一种互动,即我们提出问题,用户通过查找资料来找出答案,这样更有助于用户对知识的理解。
       
      2.一开始就必须掌握ARM体系结构与汇编指令?
      未必!我们身边的很多ARM初学者,一开始就抱着有关ARM体系结构的书籍开始苦读,更有甚者,在很多具体内容上钻牛角尖,把大量时间花在了ARM汇编指令上,几个月下来,进展不大,虽然也能知道一些ARM的相关概念,但离真正的具体应用相差甚远,很多初学者会感觉到,学完ARM体系结构后,对ARM的应用还是无从下手,一片茫然,有的甚至就因为这个原因,被挡在了ARM嵌入式开发领域的大门外,从此放弃了ARM嵌入式开发的学习。
          请不要误解,并不是主张不看ARM体系结构的相关书籍,关键在于怎么看、看到什么程度。根据经验,ARM初学者对于ARM体系结构的相关知识只需做到“了解”这一程度就可以了,对于ARM的汇编指令完全可以不用记忆,只要能看懂就可以(目前大部分基于ARM的产品开发都采用C语言,汇编语言的使用机会大大减少,只有在操作系统移植以及某些特殊应用中才会用到部分汇编指令)。随着初学者对ARM更深入地学习,有关ARM体系结构与汇编指令的知识以后可能会反复出现,遇到时再有针对性的重点看,相信会取得比较好的效果。
          注意:有关ARM体系结构的文档请用户参看配套光盘“用户使用手册”文件夹中的“ARM7TDMI_en.pdf”文件,该文档为ARM公司的官方技术手册,虽然是英文版,但我们建议初学者一开始就养成查看英文手册的习惯,因为很多翻译的资料并不能保证完全翻译正确。
      如果初学者对英文确实感到头痛,那也可以找几本ARM体系结构相关书籍来看,北京航空航天大学出版社出版了多本比较不错的ARM相关书籍,用户可以参考。
       
      3.选择ARM的软件集成开发环境
      目前,流行的ARM软件集成开发环境有ADS1.2、Keil uV3和IAR等。对于51单片机应用开发工程师来说,Keil开发环境应该应用得比较熟练,若采用Keil uV3进行ARM软件开发,应该可以快速上手。但是,我们并不推荐ARM初学者选择Keil uV3进行ARM软件开发,主要是基于以下2个原因:
      (1)Keil uV3是第三方ARM软件集成开发环境,目前支持的ARM芯片种类还不多,所带的编译器也并不完善;
      (2)由于Keil uV3为了方便用户的开发,提供了现成的ARM启动文件,换句话说,它屏蔽了ARM开发中的一个重要内容——启动代码的编写,而这一点对初学者来说应该是非常重要的内容。
      IAR目前国内应用的人还不多,相关资料也不是很多,所以我们也不推荐初学者使用。
      ADS1.2集成开发环境是ARM公司推出的ARM核微控制器集成开发工具。它支持ARM10之前的所有ARM系列微控制器,支持软件调试及JTAG硬件仿真调试,支持汇编、C、C++源程序;具有编译效率高、系统库功能强等特点;可以在Windows 98、Windows 2000、Windows XP以及RedHat Linux上运行。
      本开发板配套的所有实验都是采用Wiggler板+H-JTAG调试代理软件,在ADS1.2集成开发环境下进行编写及调试的,非常方便。
      基于以上原因,我们推荐ARM初学者使用ADS1.2集成开发环境进行ARM开发。关于ADS1.2集成开发环境的使用,初学者可以参看ADS1.2集成开发环境自带的用户手册。另外,向ARM初学者推荐一本关于ADS1.2集成开发环境使用的好书——ARM开发工具ADS原理与应用 赵星寒 刘涛著 北京航空航天大学出版社 2006年2月第一版。
       
      4.收到开发板后,不要盲目下手做实验!
      由于对ARM的神秘感以及初学者的好奇心理,很多ARM初学者在收到我们的开发板后,恨不得一口气就把所有的实验都做完,这样的做法我们坚决反对。由于初学者盲目下手做实验,可能很多实验都做不出正确的结果,甚至损坏开发板,因此我们建议初学者经过下面的几步来进行实验:
      (1)收到开发板后请仔细检查所有配件是否齐全或损坏,若有问题,请及时联系我们;
      (2)请认真阅读配套光盘中的“ARMSKY-LPC213X_214X教学实验开发板使用手册.pdf”文档,熟悉开发板的硬件资源;
      (3)请认真阅读配套光盘中的“如何在ARMSKY-LPC213X_214X教学实验开发板上运行第一个实验程序.pdf”文档,以便在开发板上进行第一个实验。
      经过以上三步,用户就应该能够在开发板上做出第一个实验了。接下来,用户可以依次将所有配套实验做一遍,看看都会出现哪些实验效果。
       
      5.如何做好每一个配套实验,达到最好的学习效果?
      开发板配套了60多个实验,几乎涵盖了213X/214X系列芯片的所有内部功能器件的使用。初学者如何充分利用这些配套实验进行学习,对于是否能真正掌握ARM嵌入式开发起着决定性作用。然而,很多初学者对这一点认识不足,很多都是把这些实验在开发板上做一遍就认为已经掌握了ARM开发,其实不然,只把这些实验在开发板上做一遍,顶多算是对实验结果进行了验证,根本没有达到掌握ARM开发的目的。因此,我们建议初学者按下面的步骤进行实验:
      (1)将配套实验先在开发板上运行一遍,观察实验结果;
      (2)仔细分析实验代码,至少需要结合以下两部分资料:
          A.  ARMSKY-LPC213X_214X教学实验开发板原理图.pdf(在配套光盘的“用户使用手册”文件夹中);
          B.  LPC213x User Manual.pdf或LPC214x User Manual.pdf(在配套光盘的“用户使用手册”文件夹中);
            LPC213X/214X的每个内部功能器件都和一组特定的寄存器相关,要想完成该功能器件所能实现的功能,就必须对这些相关的寄存器进行设置,这些寄存器的详细说明,用户可以在LPC213x User Manual.pdf或LPC214x User Manual.pdf中查看。
      (3)自己将实验代码重新写一遍(一个字一个字的敲入计算机,请一定不要复制我们提供的现成代码),然后在ADS1.2下进行调试;
      (4)看看是否可以用另外的方法实现实验所要达到的效果,如果可以,可自己编写代码进行调试。
      经过以上四步的练习,相信初学者可以很好的掌握LPC213X/214X片内功能器件的使用,对ARM开发流程也有了比较深刻的体会。
       
      6.学ARM必搞嵌入式操作系统?
      很多ARM初学者有一个错误的概念——学ARM必搞嵌入式操作系统。认为在ARM上跑嵌入式操作系统就代表技术先进、产品档次高的观点绝对是谬论。持这种观点的人一定是没有做过具体的产品开发。一个嵌入式产品是否需要跑嵌入式操作系统,是由很多因素决定的,例如,产品的功能需求、开发成本、开发周期等都是需要综合考虑的。
      对于ARM初学者来说,前期我们并不建议使用嵌入式操作系统。当用户把所有配套实验都熟练掌握后,即对LPC213X/214X的内部功能器件可以做到熟练应用的程度后,可以考虑学习一个具体的嵌入式操作系统。
      目前,流行的嵌入式操作系统非常多,例如,uC/OS-II、WinCe、Linux、VxWorks等。对于初学者,我们慎重地推荐源码公开的uC/OS-II嵌入式操作系统。uC/OS-II已经有很多产品成功使用的案例且得到了美国航空管理局的认证,北京航空航天大学出版社也出版了配套的专著。国内熟悉这个嵌入式操作系统的开发人员特别多,十分容易通过网站上的讨论社区得到帮助,更关键的是,初学者可以很容易地通过阅读源码达到彻底掌握嵌入式操作系统的目的。在熟练掌握了uC/OS-II后,用户已经从ARM初学者进入到了ARM应用开发工程师的行列。下一步可根据自己的知识背景、兴趣爱好和开发领域,再选择一个嵌入式操作系统(例如WinCE、Linux或VxWorks等)进行学习,彻底掌握ARM嵌入式系统开发。
       
      7.如何检验学习成果
              在经过一段时间的学习后,初学者一定想知道自己达到了一个怎样的程度,我们给初学者提供一个检查自己学习效果的方法:可以仿照我们的开发板,自己做一款类似的开发板出来。当然,没有必要完全按照我们的设计,您可以在自己设计的开发板中加入更多的功能,配套更多的实验。
       
      8.充分利用网络资源,不耻下问!
      我们已经进入了信息大爆炸的时代,很多知识都可以通过网络及时地获得。在学习的过程中遇到困难时,可以通过网络获得帮助,只要我们虚心好学,不耻下问(当然要注意在网络上寻求别人帮助的方式方法),一定会得到很多好心人的帮助,使自己每天都有所提高。
      9.知识是永远学不完的——学海无涯、人生苦短
      学习ARM嵌入式开发,尤其对于初学者而言,不应该过早地、过多地将精力用在嵌入式系统移植、Linux内核的研究和学习上,这些诱人的“热点”很容易使初学者迷失方向,进而忽视对基础知识的深入学习,到头来说得头头是道,可真的干起来却离实际的需求差得太远。知识是永远也学不完的——学海无涯、人生苦短!我们学习的目的是为了满足应用的需求。只要方法得当,掌握ARM嵌入式开发应用技术其实并不难。
       
      10.知识改变命运——学好ARM就有机会,只要努力终将成功!

    3. http://blog.chinaunix.net/uid-20692368-id-1892972.html

    1. --------------------------------------------------------------------------------------------------------------
    2. 十年研发经验工程师的嵌入式学习书籍大推荐
    3. 从事嵌入式研发行业十年,认为学习就是要不断的吸纳知识,在研发过程中,经常会遇到一些问题,这种发现问题并解决问题的过程就是进步。
      为什么选择学习嵌入式?
      嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,同时也是当今IT领域仅存的几个金领职位之一。当前的中国IT人才面临严重的“后继乏人”, 而且这种缺口由于培训缺乏、教育模式等原因造成的,而缺口最大的,就是高级IT人才。如果你从事的IT培训不专业,面对竞争越来越激烈的职场,基本找不到 工作。据专家预测,嵌入式每年人才缺口在30万左右。
      嵌入式行业平均薪资分布

      工欲善其事,必先利其器,除了推荐的书籍外,也推荐一下我用的开发板,我学习用的是飞凌的OK6410,感觉算是入门不错的板子,刚刚看到他们官方微博貌似A8210ARM92416准备促销呢,有50元的京东购物卡送,想入手的可以关注下
      ARM+Linux嵌入式底层内核驱动方向学习总体路线图
       
      附上ARM学习路径图,希望对学习者能有所启发。

      基础学习Ⅰ---Linux入门
              目前嵌入式主要开发环境有 Linux、Wince等;Linux因其开源、开发操作便利而被广泛采用。而Linux操作系统也只是一个简单的操作系统,简单的使用对于嵌入式开发人 员来说价值并不很高,真正有价值的是掌握Linux的基本服务和Linux的设计理念、思想,这对于嵌入式开发人员的长期发展是很极其重要的。Linux 系统有很多发行版,RedHat、Ubuntu、Fedora等。作为嵌入式开发人员,我们没有必要把精力放到使用哪个Linux发行版上,而是尽快把 Linux系统尽快安装好。如果打算坚持长期学习,那么建议您把自己的电脑做成双系统,而不要在虚拟机上安装。
      Ubuntu系统下载地址:http://www.ubuntu.org.cn/
      A)经典书籍推荐:
       
      B)经典学习视频推荐:Linux操作系统入门
      基础学习Ⅱ---C语言
          C语言是嵌入式开发必备的基础知识。在Linux下从事C语言的开发,你会觉得更为顺畅、更为自然,因为C语言是因unix的出现而诞生的,Linux内 核几乎完全是由C语言编写完成的。学习C语言,如果不会用指针,那么就称不上会C语言。做嵌入式开发指针更显得尤为重要,所以做嵌入式开发除了掌握位操 作、限定词等,对指针的掌握是不可或缺的。而且要掌握多级指针、函数指针等等。涉及到指针,那么就会讲到内存分配。在大学中,学习C语言一般的学习很少讲 到内存分配,但是如果期望从事嵌入式开发,那么就必须懂得C语言是怎么做内存分配管理的。指针之外,还要学习模块化编译处理、指针与数组、gcc、 Makefile、GDB、递归、结构体、宏定义使用等。C语言是整栋嵌入式大厦的基础,所以在学习嵌入式时,必须把C语言重视起来,多敲代码,多练。一 名优秀的程序员必定是通过“体力劳动”再转向“脑力劳动的”,这也是为什么我们要有“写不出代码=0”思想的原因所在。
          如 果说C语言相当于文字,那么数据结构就相当于在造句、写文章。代码质量有一部分取决于对数据结构的掌握程度。在数据结构部分我们要把链表、树、排序作 为学习重点。而且我们也可以查看一些比较常见的函数(如strcopy、strcat、printf等)在内核中是如何实现的,以及编写代码模拟堆栈,这 不仅有利于编写代码质量的提高,而且还可以初步了解Linux内核精髓,为今后工作打下坚实的基础。
              C++、QT在嵌入式开发领域,是用来开发图形界面的,希望从事上层应用开发及图形界面,那么在C++、QT方面需要比较深入的学习。  
      A)经典书籍推荐:   
       
       
      B)经典学习视频推荐:C语言入门
      C)经典学习案例:
      1、学员成绩管理系统2、计算器3、电子词典4、文件压缩器
      基础进阶---Linux应用程序设计
           Linux的思想源于Unix。Linux继承了Unix的优点,但 是没有用UNIX的代码,所有程序都是重新编写的,而且Linux与Unix的源码级兼容。Linux是类Unix操作系统。Linux 不仅符合 POSIX 标准,而且还包括其它 UNIX 标准的多种特性,例如,UNIX 的 System V 接口文档(System V Interface Document,SVID)和伯克利软件发布(Berkeley Software Distribution,BSD)版本。Linux 采用了折衷的策略,包含了 UNIX 几个典型特性当中最实用的一些功能:
           Linux 采用了 SVR4 的进程间通信(IPC)机制:共享内存、消息队列、信号。
           Linux 支持 BSD Socket 网络编程接口。
           许多 Linux 发行版采用 SysV init 机制,支持运行级别。
      此阶段的学习是从事嵌入式上层应用开发以及底层开发人员的必修课程。进程、线程、信号、文件锁、socket是这部分内容的重点。要把这些内容学的透彻非 要下些苦功夫不可。而且函数是系统提供给我们的,难免要对计算机系统深入理解一番。TCP/IP协议也是要涉及到的。有问题建议用Google搜索及登陆 chinaunix论坛。通过这个阶段的学习,我们就可以初步实现一些应用程序的开发了,如做自己的shell命令解析器、简单的聊天软件、视频多播等。

      A)经典书籍推荐:
       
      B)经典学习视频推荐:Linux环境高级编程
      C)经典学习案例:
      1、串口监听程序   2、图片浏览器      3、MP3播放器        4、聊天程序         5、 ftp程序
      6、音频广播程序   7、ping的实现     8、DDos攻击程序   9、ARP攻击程序
      嵌入式入门---ARM体系结构
          从这部分开始,我们将真正进入嵌入式开发学习阶段。首先我们要知道采用哪种处理器。目前通用嵌入式处理器有ARM、MIPS、PowerPC、X86等。 从市场产品占有率上看,ARM处理器远远领先于同类其它处理器,并逐步掠夺传统51单片机和英特尔市场份额。据招聘网站统计,目前用人单位在技术水平上要 求开发人员掌握ARM9及以上平台的开发技术。ARM公司在发布ARM11产品后,更改以往的数字标记更新方式,转为发布ARM Cortex。但是Cortex并不是更高端,而是全新系列的处理器,比如Cortex M3,它主要应用于机械加工、工控领域,目的是取代以前的ARM7处理器。
          在开始学习前,建议有一块自己的开发板,目前ARM9 2440的开发板价格在400-600元之间,ARM11 6410的开发板价格要高一些,最便宜的也要1200元以上。在此,提醒大家尽量不要买mini开发板,虽然mini开发板的价格要便宜些,但是与正常开 发板相比,mini板功能是不完善的。嵌入式汇编有别于X86汇编,所以如果以前没有接触过汇编语言,那么没有必要先去学X86汇编再学嵌入式汇编,可以 直接学习嵌入式汇编。除了汇编我们还要学习ARM指令集。有了开发板,我们要下载相对应处理器的DataSheet及开发板电路原理图。ARM体系结构的 学习我们是不能完全照抄别人代码的,因为我们自己手中的开发板及处理器与别人是不同的,除非所用的代码是根据你手中的开发板来编写的。所以,我们要先去看 书、看视频资料理解原理及工作方式等,然后根据自己开发板的电路原理图和DataSheet来编写代码,达到理解外围设备工作原理和操作硬件的目的。
       
      B)经典学习视频推荐:
      1)  嵌入式扫盲篇——十问嵌入式
      2)ARM体系结构与Bootloader开发
      3)嵌入式ARM Linux开发——ARM汇编
      C)经典学习案例:
      1. ARM模拟器开发       2. Watchdog控制程序        3. RTC时钟控制程序
      4. Uart控制程序            5. LCD控制程序                    6. 触摸屏控制程序
      7. DMA控制程序          8. 音频控制程序                    9. 网卡控制程序
      10. 文件系统制作        11. ARM-Linux移植
      嵌入式提升---Linux内核、驱动
               众所周知嵌入式开发包含至少两个级别,一个是嵌入式内核驱动级别,另外一个是嵌入式应用层开发,而薪酬高的、最具价值的无疑是嵌入式内核驱动级别的开发 者。真正的嵌入式高手或者企业中的核心开发人员,一定是嵌入式底层的内核驱动开发工程师,这些工程师成长比较缓慢,造成对内核驱动人才的大量需求,所以这 些人才是真正企业需要的香饽饽。掌握驱动开发会让自己的核心能力有极大的飞跃,真正实现嵌入式最有价值的就业。
               由于Linux内核更新速度很快,书籍和视频不可能及时更新,所以我们再看书和视频后,要自己动手下载内核源码包,去看内核中的代码,在这里可以充分检验 C语言、数据结构等基础知识的掌握程度。而驱动的编写还是要借助外设硬件电路原理图和芯片手册。内核和驱动的知识是让我们根据不同的硬件,编写对应的驱 动、合理剪裁内核、制作文件系统,并移植到硬件开发板上。如果手里有ARM11 6410及以上的开发板,可以试试在裸板上编写驱动并移植Android系统到开发板上吧。
       
      B)经典学习案例:
      1. GPIO驱动                2. RTC时钟驱动   3. WatchDog驱动   4. Udev移植      5. 触摸屏输入设备驱动
      6. LCD显示设备驱动   7. DMA驱动        8. 音频设备驱动        9. Nand Flash块设备驱动  10. 网络设备驱动
      硬件工程师的书籍(等等)
       
       



      ------------------------------------------------------------------------------------------------------------------
    4. 嵌入式开发入门之经典
      开始进入嵌入式世界,真是一头雾水,不知道如何入手!也不知道该如何学习,学习什么,最近从网上转载这篇文章,对我启发很大,对于初始进入嵌入式的人们很有帮组,好多嵌入式大侠都说这是入门的最好文章.
      1、抓住51开发ARM
        这几个月来我一直都爬在51的问题,自己都有一点笑自己了,用了4个月的时间,来巩固51的原理和程序,还好我自己算是走过来了,自己笨,身边的高才生又看不上51的原理,他们都比较“牛”,说51过时了,你问那个做什么???我比较郁闷!过时吗?我有一点怀疑?
        他们不愿意说有他们自己的理由,没有人强求,靠自己好了。
        我自己个人的观点:51是一个基础,而且还很重要,这是再我看了ARM之后感觉到的。它可以加速你的ARM学习速度,真得!不相信你试一试好了。
        凡是要求一个速度、效率,不要做一些无用功,抓紧身边的每一个一分钟,人是活的,东西(知识、书)是死得,想要做的事情因此就简单了。

      2、在网上看到的一篇很不错的ARM文章,粘贴过来,为了和像我一样在很少有人帮助的情况下自学ARM的难兄难弟们

      ? ARM怎么入门?

      ? 我不是高手,仍然是菜鸟。但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。

        首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。

        所有看法完全是自己的感受,不代表任何他人。错了的观点各位帮我纠正。再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打 发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。男人总点负点责,呵呵

        以下问题常被问到,我就想到哪说到哪吧:

      一、首先说说ARM的发展

      ? 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。广义的嵌入式无非几种:传统的什么51、AVR、PIC称做嵌入式 微控制器;ARM是嵌入式微处理器;DSP;FPGA。客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。DSP因为数字处理 与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。

      ? FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!!很佩服他们的战略眼光!!

        值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。写的多的是什么?“嵌入式LINUX”到这相信大家看出来了吧,需要的是硬件中的软件。

      二、ARM是硬件还是软件

        很难说,ARM是硬件,LINUX是软件。ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。

        在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公 司把嵌入式产品开发归为硬件。所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师”。

      三、要不要买开发板&买哪家
         
      ? 我的答案是“在你个人的学习方法”,但是如果看家是需要看这骗笔记的水平,个人推荐还是买现成的。

      1、买

        买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确 认硬件没问题。另外,买板子更省钱和时间,我自己做的板子,原理图PCB花了2周以上!制版又15天,回来以后焊接44B0160个脚!那叫一个麻烦~~ 花了多少钱呢?2层板,制版费就300块!当然我把接口都外引了,还做了个20X18的LCD背板,板子比较大。总体下来 元件+LCD 屏+PCB=11XX块!
      2、做

        自己做可以更了解底层硬件,可以按照自己的要求加东西,比如我就加了GPS模块、 GPRS模块 、SD卡模块,扩了个IIC的35个键子的键盘、把 LCD接口按照买的LCD改装了,可以用FPC线直接连接。做的很爽的。玩一把吗。当然,你可以有策略的做,比如像我一样,把RAM和ROM,网络都保持 和某现成的板子一样,这样他们的资料你就可以拿过来直接用,给自己留个退路。其他的如SD了 什么的自己做。都达到了~~就是费钱,费时间。再有就是给做 的朋友几点建议:尽量拿到现成的板子,尽量多搜集其他板子的全套资料,一定要拿到一张没问题的原理图。网上流传的原理图多数是龚俊03年画的,再这里对龚 俊表达一下我的敬意!!牛人!但是那个图有个小BUG,我指的是03版的,后来的没这问题了。8019那地址线和地址有问题。还有人仿照他的PDF图画的 SCH,更是漏洞百出!谴责!顺便谴责把龚俊板子偷卖的人。

      3、买哪家

      ? 个人感觉分3类吧:

        1)首先是上海无线龙的,资料非常的全,感觉他是真正想教你怎么开发ARM,而不是像有的公司自己技术都没做好就做个板子出来卖钱UCLINUX。价 格也合理,一个ARM开发板也只要几百块钱,ARM9最适合做工业控制,ARM普及,销量都是怎么来的?都是ARM9来的。但是,这里如果你看中的是为工 作做准备,还是选能跑UCLINUX的吧。但是仍然作为第一个推荐,因为菜鸟时期,合适的资料太重要了!!在这里被无线龙的务实精神感动!你看人家那代码 写的。

         2)感觉立宇泰的也不错,硬件没别的,就是资料比较全的说,不像有些家,原理图直接拿人家的,还错的~~

         
      四、要不要有51 AVR等单片机基础

      ? 有更好,但没有也无所谓。两个月以前,我只是看别人做,耳濡目染~~,本科学过单片机,从来没做过。我们这的技术主干做AVR和51,我就跟他们调过 C语言程序。你看出来了?我是个不折不扣的菜鸟吧?但是做这个之前我特意找了ZLG的两本书,看了里面的例子和原理图,这很重要。例程里有汇编有C,都看 懂了就OK,不用自己现写!

      五、开发都需要学习哪些软件

      ? 总结起来最主要的有以下几个吧:

      1、ADS调试用

      ? 确切的说是ADS+AXD。ADS里包含AXD。原来都用SDT后来ARM公司停止对SDT支持了,改支持ADS了,还是用ADS吧。
      有的人的程序发布的仍然是SDT版本的,但基本都可以找到相应ADS的,新人在这里不要发蒙。ADS是编译器,AXD是调试器。便宜成AXF以后再在ARM的RAM里调试。

      2、PLASHPGM

      ? FLASH烧写的软件。AXD在RAM里调试,掉电就没有了,方便程序修改。调试好的程序再下到FLASH里,上电直接运行。
      同类的软件还有很多,什么FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人还问FLASH不支持BIN格式文件的问题就要看我写的PLASHPGM使用了。

      3、BANYANT调试代理(不知道名对不,起这么个难记的,我一般都叫它“半羊”因为知道它那几天刚吃了烤羊)

      ? 调试代理就是用它帮你使用更简单的JTAG(便宜啊)来实现原本1K才卖的JTAG仿真器的大部分功能。JTAG调试原理看我另一篇笔记。简单的就可 以把他理解为你自己做的JTAG的驱动就行了。调试代理还有很多种,什么H-JTAG了、ARM7了(不知道具体叫什么,就记得可执行文件叫 ARM7.EXE)都是,BANYANT比较好。需要注意的是,没种调试代理安装方法虽然都简单 但都不一样,需要看说明。而且AXD调试之前都要运行。 省钱了,就别怕麻烦了。

      4、ARM-ELF-TOOLS工具链

      ? 里面是UCLINUX开发用的工具比如ARM-ELF-GCC只类的。工具链就是把很多工具打包在一起发布的方便你开发的东西。具体安装方法看我另一篇笔记。另外如果你开发LINUX就要用ARM-LINUX-TOOLS,不一样,不通用。

      5、U-BOOT

      ? 大名鼎鼎的BOOTLOADER生成工具,同类的好象还有VIVI(名字很暧昧~~),生成的BOOTLOADER烧到FLASH里,然后就可以用 BOOTLOADER下载烧写其他了。有了BOOTLOADER才能下UCLINUX。BOOTLOADER就像电脑上的BIOS。当然UCOS的不用这 个,用什么我不知道:)最新版本是1.1.4 具体使用方法看我另一篇笔记吧。

      6、UCLINUX包

      ? UCLINUX的源码包,不用多说了吧?建议大家用现成的先体会一下,然后再自己编译,裁剪。因为单独UCLINUX的编辑技术上比较简单,但涉及的方面还是比较广的。

      7、VMWARE

      ? 老牌的虚拟机软件,在一个机器上虚拟出一个机器装LINUX(PC上用的),省得你来回开关机了。记得装VMWARE-TOOLS,安装方法在我另一篇笔记里。

      六、有哪些书推荐

      ? 主要推荐ZLG的三本书,有这3本再加网络就不用别的书了,其中主要推荐前2本,3是介绍体系结构的,也不错:

      1、ARM嵌入式LINUX系统构建与驱动开发,北航版,驱动写的很详细,前期开发介绍也很好
      2、ARM 嵌入式系统实验教程(二),北航版,有ZLG2200的原理图,实验程序和注释,了解人家是怎么开发的。
      3、ARM嵌入式系统基础教程,最重要的是体系结构,汇编部分介绍,看看吧,增加理论素质。
      4、44B0数据手册,写在这里是强调它的重要。

      不推荐ZLG早期出的红色皮的ARM什么体系结构~只类的,写的太多,看烦了。其他的书没了几本,没看见好的,大家有看过的推荐吧。

      七、选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用

      1、搞开发,工程设计,用UCOS,小巧,多进程,简单,体现了ARM7的精髓。
      2、LINUX 正根的嵌入式系统,LINUX消费与通信领域用的比较多,但缺点是必须ARM9才能跑,ARM9的板子自己做就不行了,6层板太贵。买开发板1K达底吧。但是还是推荐选ARM9+LINUX
      3、UCLINUX 算投机嵌入式系统:)ARM7上可以跑,由有LINUX近亲,学好好可以比较方便的转向LINUX,像我一样的穷鬼用吧,呵呵
      4、VXWORKS,学好后可以找到高薪工作,但工作机会本身并不比LINUX好找。
      5、当单片机用,不推荐,虽然我景仰的ZLG一直号召这么干。因为对于学习来说多进程的系统设计才是ARM7的玩头,至少你也要整个UCOS啊:)

      ? 有朋友问我先学这个当基础不行吗?那当然可以~~但我当时就用了1周搞定,就是我先的ADS在RAM中调试的笔记。后来我清空FLASH用的小段程序 还是当时写的LED闪烁程序呢。另外1周里其中还因为自己过于菜,没把OM设置好导致晶阵不阵哈哈。这个是必须做的,但一带而过。目标放的远一点。

      八、学习要用多长时间

      ? 我从菜鸟到现在两个多月,中间被打扰数次。仍然搞定了PCB设计与制版,RAM调试,FLASH下载,UBOOT移植和下载UCLINUX(没剪裁, 用现成的),LCD驱动。再次坦诚的说:我确实比较菜,说这些不是让大家羡慕,只是告诉你们“你们应该比这个更好”,我相信良好的态度+合适的方法+及时 的总结=成绩!

      九、ARM都玩什么

      就几点:
      1、硬件设计
      2、系统移植
      3、驱动开发
      4、应用开发

      没了。其中推荐把注意力放在后两个上,3有难度,4比较灵活,最重要的是都是找工作的砝码。

      十、我用的什么板子

      很多人问我这个问题,我特意写过一个的。再说一次吧。我是自己做的,RAM、ROM、8019等比较麻烦而当时的自己不理解的都按照龚俊的做的。保持其他不便的情况下做了如下改动。

      1、加了串口通信的GPS模块、 GPRS模块,一个UART0,一个UART1,当与要用超级终端时用跳线切换。
      2、SD卡,和7843触摸屏,同时挂在SPI总线上,因为SPI只能挂一个设备,同时还做了I/O模拟的准备,把两个设备又通过跳线挂在4个IO上。
      3、扩了个IIC的35个键子的键盘,用的ZLG的7290,不占用CPU,最大支持64个键子,只上了35个,其他留接口。
      4、把LCD接口按照买的LCD改装了,可以用FPC线直接连接。
      这种开发板国内有很多,做的比较规范的是上海无线龙有限公司<script> &lt;!-- document.write('&lt;a target=_blank rel=&quot;nofollow&quot; href=http://www.wxlsoc.com&gt;www.wxlsoc.com&lt;/a&gt;'); //--&gt; </script>www.wxlsoc.com )!

      所以改动虽然多,但真正很移植了,初期调试有关的并没动,就是为了现在不那么菜的时候做准备:)

      十一、开发流程

      这里是我的开发流程:

      1、设计原理图(含WIGGLER的JTAG访真器)
      2、设计PCB(含WIGGLER的JTAG访真器)
      3、制版
      4、焊接电压,确定电压没问题
      5、焊接44B0+JTAG电路+WIGGLER的JTAG访真器+周边电路,用BANYANT+仿真器连接,BANYANT提示错误,但可以显示44B0编号,好象是0X0F0F0F0F只类的,说明44B0没问题
      6、焊接晶体+RAM+ROM+周边电路,用BANYANT+仿真器连接,可以显示正确的44B0了
      7、用BANYANT+仿真器连接,开AXD,在命令行窗口操作RAM,看可不可以修改,可以的话(用内存窗口看RAM地址)RAM就没问题,可以用这个 命令“setmem 0xc000000,0xffffffff,32”,我的RAM挂在BANK6上 所以地址是0XC000000,你要是改了就也得 改。
      8、用我写的《自己写了个C工程模板又写了个使用说明 》里的方法调试程序吧,写个简单的,我当时写个LED闪烁的。看好使不。
      9、把程序按照《FLASH烧写总结 》里的烧到FLASH里,测试一下
      10、按照《UBOOT 移植操作》移植UBOOT?
      11、按照《UCLINUX下载简单说明》下个UCLINUX
      12、看看驱动开发的方法,自己写个驱动看看
      13、还有很多事东西着你玩 呵呵

      十二、关于JTAG访真器

      ? JTAG访真器现在用的多是简板的,一个244那种,用的没什么不好。按照并口定义不同分几种,建议选WIFFLER定义的,因为支持的软件多。这个 网上多的是,不多说了。值得提的是有的JTAG访真器原理图上有跳线用来使能复位信号,这个一般不跳上。就是不用复位信号,因为JTAG协议里本身也可以 控制44B0复位。当然,板子上的复位信号跳线也不用跳。

      十三、哪个公司的ARM

      这个是问题比较简单:

      1、ARM9主要就几个公司,本人觉得上海无线龙(www.wxlsoc.com)的不错
      2、ARM9,这个玩2480和2430的多吧,现在2430还比较火啊 可以考虑买个了,作为学习来说反到和不错,推荐整一个:)其实ARM9用的最多 的领域应该是消费电子,比如手机PDA,而这上面用的多的应该是INTEL的和TI的吧。但是INTEL的TI的入门材料少,价格高,自己看情况定吧。 QQ:741066980

    展开全文
  • 什么是嵌入式系统

    千次阅读 2018-12-29 11:02:45
    在我们的日常生活中,我们经常使用许多使用嵌入式系统技术设计的电气和电子电路和套件。计算机,手机,平板,笔记本电脑,数字电子系统以及其他电子和电子设备都是使用嵌入式系统设计的。 什么是嵌入式系统? 将...

    在我们的日常生活中,我们经常使用许多使用嵌入式系统技术设计的电气和电子电路和套件。计算机,手机,平板,笔记本电脑,数字电子系统以及其他电子和电子设备都是使用嵌入式系统设计的。

    在这里插入图片描述

    什么是嵌入式系统?
    将硬件电路与用于提供项目解决方案的软件编程技术集成的电子系统称为嵌入式系统。通过使用这种嵌入式系统技术,可以在很大程度上降低电路的复杂性,这进一步降低了成本和尺寸。
    嵌入式系统设计
    嵌入式系统基本上是电子系统,其可以被编程或非编程以基于应用来操作,组织和执行单个或多个任务。在实时嵌入式系统中,所有组装的单元基于嵌入微控制器的程序或规则集或代码一起工作。但是,通过使用这种微控制器编程技术,只能解决有限范围的问题。
    嵌入式系统硬件
    每个电子系统都由硬件电路组成,类似地,嵌入式系统包括硬件,如电源套件,中央处理单元,存储器件,定时器,输出电路,串行通信端口,以及系统应用专用电路元件和电路。
    嵌入式系统软件编程
    嵌入式系统是硬件和软件的集成,嵌入式系统中使用的软件是一组指令,称为程序。嵌入式系统的硬件电路中使用的微处理器或微控制器被编程为通过遵循该组指令来执行特定任务。这些程序主要使用编程软件、编程语言编写。然后,程序被转储到嵌入式系统电路中使用的微处理器或微控制器中。
    嵌入式系统的分类
    基于硬件和软件以及微控制器(8或16或32位)的复杂性,嵌入式系统主要分为不同类型。因此,基于微控制器的性能,嵌入式系统分为三种类型,小规模嵌入式系统,中型嵌入式系统,先进的嵌入式系统。
    此外,基于系统嵌入式系统的性能和功能要求分为四类:实时嵌入式系统、独立嵌入式系统、
    网络嵌入式系统、移动嵌入式系统。

    展开全文
  • 嵌入式系统介绍

    千次阅读 2019-05-04 11:45:20
    嵌入式系统是一种以应用为中心,以计算机技术为基础,可以适应不同应用对功能、可靠性、成本、体积、功耗等方面的要求,集可配置,可裁减的软、硬件于一体的专用计算机系统。它具有很强的灵活性,主要由嵌入式硬件...
  • 嵌入式系统概述

    千次阅读 2019-09-10 16:04:28
    目录嵌入式系统(Embedded system)嵌入式处理器嵌入式操作系统(Embedded Operating System)分类基本概念 嵌入式系统(Embedded system) 嵌入式系统在应用非常广泛,应用于电信系统、电子类产品、医疗设备、智能家居...
  • 嵌入式系统

    千次阅读 2019-07-01 18:01:24
    “嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本的核心要素。 嵌入式系统具有以下特点: (1)系统专用性强。 (2)系统实时性强。 (3)软、硬件依赖性强。 (4)处理器专用。 (5)多种技术...
  • 物联网应用下的无线通信技术分为近距离通信技术和远距离通信技术,其中常用的短距离通信技术有蓝牙、wifi、zigbee、红外等等,远距离通信技术有GPRS、NB-IoT、LoRa、等。物联网应用除了通信还有物联网终端节点,这些...
  • 嵌入式系统简单介绍(入门) 嵌入式操作系统是一种运行在嵌入式相关产品中的操作系统,它的主要作用是负责任务的调度,内存的分配以及数据的存储等。常见的嵌入式产品有手机,平板,自助取款机,收银台结算机等等。...
  • 嵌入式系统开发设计---嵌入式系统开发设计

    万次阅读 多人点赞 2018-09-20 07:42:01
    嵌入式系统设计的主要任务是定义系统的功能、决定系统的架构,并将功能映射到系统实现架构上。这里,系统架构既包括软件系统架构也包括硬件系统架构。一种架构可以映射到各种不同的物理实现,每种实现表示不同的取舍...
  • 嵌入式系统硬件组成

    千次阅读 2019-09-20 20:46:34
    嵌入式硬件组成与嵌入式处理芯片 1.ARM处理器芯片内部结构 1)WDT看门狗定时器:当处理器进入错误状态后的一定时间内可使处理器复位 2)通用定时器:Timer 3)实时时钟RTC:直接提供年月日时分秒,使应用系统...
  • STM32之GPIO的8种配置模式

    千次阅读 2017-07-22 17:35:59
    STM32芯片的GPIO一共有8种配置模式,对8种模式的理解如下 1.四种输入模式 上拉输入:在默认状态下,读取的GPIO引脚为高电平 下拉输入:在默认状态下,读取的GPIO引脚为低电平 浮空输入:配置成这种模式时,电压...
  • 一 什么是嵌入式系统 嵌入式系统一般指非pc系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中 心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机...
  • 嵌入式系统原理与设计.pdf

    千次下载 热门讨论 2020-07-30 23:32:39
    苏曙光、沈刚编著的《嵌入式系统原理与设计》全面地介绍了嵌入式系统的概念、软硬件结构、开发调试过程和工具等内容,涵盖嵌入式系统设计和实现全过程所需要掌握的知识。 《嵌入式系统原理与设计》内容共分为三部分...
  • 嵌入式系统和嵌入式操作系统

    千次阅读 2006-05-22 12:53:00
    嵌入式系统和嵌入式操作系统 西南交通大学电气学院 张湘 肖建2004-10-2
  • 嵌入式系统设计师教程高清pdf版

    热门讨论 2020-07-30 00:03:32
    全书共6章,分别对嵌入式系统基础知识、嵌入式微处理器与接口设计、嵌入式软件与操作系统、嵌入式软件程序设计、嵌入式系统设计与维护等知识进行了详细的讲解,最后介绍了一个典型的嵌入式系统设计案例。. 本书内容...
  • Android嵌入式系统程序开发(基于Cortex-A8)

    千次下载 热门讨论 2020-07-29 14:20:47
    使读者深刻理解和掌握嵌入式系统开发的整个过程,了解底层驱动程序驱动硬件的原理和上层应用程序的设计方法,真正做到了底层驱动的开发与上层应用程序的开发相结合。  本书内容丰富实用、叙述详尽清晰,方便教学与...
  • 嵌入式系统简介

    千次阅读 2011-04-03 09:36:00
    定义:IEEE:Devices used to control, monitor, or assist the ...由于嵌入式系统一般是应用于小型电子装置的,系统资源特别是存储资源相对有限,所以内核较之传统的操作系统要小得 多。比如目前业界运用广泛的开源
  • 嵌入式系统综述

    千次阅读 2007-01-13 04:33:00
    面向二十一世纪的嵌入式系统综述摘要:本文根据应用领域,对计算机分类提出了嵌入式计算机和通用计算机的新定义,总结了嵌入式系统工业及其开发的特点,概括了嵌入式处理器的发展及现状。实时多任务操作系统(RTOS)已...
  • 单片机与嵌入式系统

    千次阅读 2007-09-02 16:03:00
    单片机与嵌入式系统 一、现代计算机的技术发展史 1.始于微型机时代的嵌入式应用 电子数字计算机诞生于1946年,在其后漫长的历史进程中,计算机始终是供养在特殊的机房中,实现数值计算的大型昂贵设备。直到20世纪70...
1 2 3 4 5 ... 20
收藏数 284,153
精华内容 113,661
关键字:

嵌入式系统