嵌入式的学习方法
发布时间:2015-5-3 16:03
发布者:嵌入式之家
近些年来,嵌入式体系的开展在国内可谓如火如荼,许多公司都急需嵌入式体系方面的开发人员。可是,在高校中,嵌入式体系的教育却较为滞后,许多高年级的本科生和刚入学的研讨生都苦于不知从何学起。在这篇文章中,笔者将依据自个的嵌入式体系开发和教育经历,简要介绍嵌入式体系的学习办法,力求能协助初学者找到一条入门之路。 啥是嵌入式体系? 学习嵌入式体系,首要大概清晰啥是嵌入式体系,不然吃力去学,却不知所学为何物,岂不惘然?嵌入式体系的界说许多,这也是困扰嵌入式体系学习的一个要素。笔者依据自个开发和教育进程中的晓得,以及对各种嵌入式体系的运用进行总结,提出了嵌入式体系的简略界说:嵌入式体系是嵌入式核算机体系的简称,这个界说杰出嵌入式核算机体系和一般核算机体系的共性。下表列出了嵌入式体系的一些典型的运用: 智能机器人(S D R 4,火星登入车) 文娱和花费电子(Gameboy Advance,SonyPSP) 网络通信商品(Smartphone) 军用设备(军用PDA ) 轿车(车载导航,自动驾驶,文娱体系) 智能仪器(虚拟仪器) 安全防护(防火,防盗) 环境保护(探空气球) 银行和商业花费(ATM) 以火星登入车为例来剖析一下嵌入式体系的界说。火星登入车尽管听起来感受在技能上有些高不可测,可是实质即是嵌入式核算机体系的运用,其间心即是一个核算机体系,而这个核算机体系的构成同传统的核算机体系在实质上没有啥不一样。两者的明显不一样之处就在于,用于火星登入车的核算机体系被装置到了火星登入车上。当然,一个核算机体系能够被装置在火星登入车上,是需求进行许多格外规划的。可是从实质上讲,嵌入式体系的中心概念还在核算机体系。嵌入式体系学习的要点也在核算机体系上。一方面,学习者需求牢固把握核算机体系自身的概念,更重要的是学习嵌入体系的开发进程同传统核算机体系开发进程的不一样。这儿需求指出的是,许多学习者本来就没有从事过完好核算机体系的开发,高校的教育是以程序规划为中间的,核算机体系的构成,操作体系的原理,编程言语等课程都是为了能够让学生非常好的运用核算机体系进行程序规划,在现有的核算渠道上来规划完结各种运用,学生一般没有时机学习一个完好的核算机体系是怎样构建,并亲身参加到构建的每一个进程。而关于嵌入式体系而言,从事渠道开发的人即是要亲身去开宣布一个完好的核算机体系,这个进程包括 1. 需求剖析 2 硬件规划 3 驱动程序 4 Bootloader & BSP (板级支撑包) 5 操作体系的移植 6 运用程序的开发 7 功用查看 嵌入式体系教育的意图即是教会学生怎样依据需求去树立满意某种格外职业需求的嵌入式核算机体系。让学生学会怎样构件硬件渠道,进行硬件规划,挑选能够满意运用需求的最佳的嵌入式操作体系,并完结Bootloader,BSP和驱动程序的编写,移植,调试等进程。为了满意职业需求,终究要在所树立的体系上编写调试相应的运用程序,并进行功用的测验和查看。 你是谁,你需求学习哪些东西? 假如你的作业仅仅需求在PC 机上编写一个图像阅览程序,那么你就没有必要去晓得当体系收到一个ARP恳求包后大概怎样回答。一样的道理,嵌入式体系的学习也是有许多方面的。就嵌入式体系的规划和完结而言,根本上需求四种不一样的作业:体系规划作业,硬件规划作业,驱动程序和操作体系移植作业和运用程序规划开发作业。 1.体系规划作业 在体系的规划阶段,体系剖析师将依据需求断定体系的硬件的根本构成,依据体系的需求挑选运用那种处置器,运用哪种操作体系,运用那些软件开发东西。体系剖析师一般是较为完好的参加过嵌入式体系规划的全进程,关于体系运用的职业较为晓得,关于嵌入式体系自身的开发流程非常理解的人。 2.硬件规划作业 体系硬件规划人员需求依据体系剖析师的规划成果,进行硬件原理图的规划。一般需求硬件规划人员晓得嵌入式体系的硬件构成。硬件规划人员需求晓得常用的嵌入式体系处置器,存储器(Flash,SDRAM),以太网MAC芯片,音频/视频编解码芯片,电源办理芯片,总线接口电路 (USB,PCI),液晶显示模块,可编程逻辑器材(FPGA/CPLD),无线网络通信模块(Bluetooth,WLAN,GPRS)等硬件电路构成元素的根本作业原理,衔接运用办法,运用注意事项,根本调试办法等内容。在网络上能找到许多公司的评价板的原理图,关于这些原理图要细心研讨,摸清处置器同存储器,网卡,液晶模块等器材的衔接办法和缘由。经过对这些电路的研讨,能够较快地晓得悉数嵌入式体系的构成,这些电路同实习商品中的电路虽有必定不一样的,格外是关于手持设备,但这些不一样不影响初学者学习嵌入式体系的硬件规划根本构成。 以上这些常识,一般需求较长时刻的学习和堆集,需求亲身参加实习的时机。关于刚刚触摸嵌入式体系硬件开发的学生来讲,一般不能够悉数晓得这些常识,但也不会是统统一无所知。笔者联络自个开发和教育的经历以为:首要大概选定一款干流且较为简略的嵌入式体系处置器,比方依据ARM7TDMI 内核的AT91M40800,S3C44B0 等嵌入式体系处置器,学习32 位RISC处置器的编程模型,指令集。高校教育中,单片核算机课程一般以8051系列单片为中心解说,由于现代32位处置器的构造和开发办法同8位单片机有着较大的不一样,学习者仍是需求花一点力气来研讨以下32位处置器的。以ARM处置器为例,学习者就需求晓得处置器的多种作业形式,备份寄存器,RISC 指令集的特色,MMU 和虚拟地址,中止处置进程等内容。在学习指令集的进程中,最佳能够每学习几条指令,就运用这几条指令在模仿器上实验以下,调查处置器履行的成果。这个进程一方面是学习者关于指令自身的学习能够获得一个对比好的作用,别的也是对开发东西自身的一种学习。接着,就能够开端学习片上资源的运用和装备办法。这时就需求一个便利运用的开发板,学习者能够经过JTAG仿真器将开发板同调试PC机相连,进行程序的下载,调试。格外是要细心研讨体系的初始化进程和中止处置的进程。在开发进程中假如遇到疑问,应自个剖析疑问产生的缘由,经过剖析减小疑问能够产生的规划,终究找到疑问的地点。最重要的即是要坚持一种解决疑问的信心,面临艰难怎样处置,一般能够决议终究体系是不是能够调试成功。然后,学习者能够开端细心学习处置器同存储器的衔接,存储空间的装备,各种外扩器材,如网卡,AC97声卡的作业原理和运用办法。嵌入式体系硬件规划中一般需求运用可编程器材,学习者还需求必定的时刻来学习运用常用的可编程器材(CP L D / F P G A),常用的有Xilinx和Altera公司的商品。进行体系硬件原理图规划,就需求运用原理图规划的EDA东西,常用的EDA 原理图规划东西首要包括Cadence公司的Capture,Protel公司的Protel99SE等。接下来就能够参照评价板的电路图,依据体系的规划需求,开端进行原理图的制作了。在原理图制作进程中,必定要搞清评价板电路衔接的缘由,关于一时没有搞理解的疑问切不可蒙混过关。例如,有些处置器的地址线是以字节位单位的,而另一些处置器的地址线则是以两个字节为单位的,当衔接16位的存储器的时分,切不可想当然的把处置器的A 0 直接衔接到存储器的A 0 上面。别的,学生还应具有必定的PCB板图制作才能,由于在现阶段,许多公司还不能彻底把原理图的规划作业和PCB 的制作作业分开,一般需求硬件规划人员既能进行原理图规划又能进行板图规划。即使是PCB规划和原理图规划分开的公司,也需求原理图规划者能为PCB 的规划者关于不一样的信号提出布板需求。 3.驱动程序和操作体系移植作业 现代嵌入式体系的开发同传统8位单片机体系的开发对比,一个明显的区别即是嵌入式操作体系的广泛运用。在拿到焊接完毕的电路板,并进行根本的测验后,就要进行驱动程序和操作体系的移植作业了。首要要进行的Bootloader的编写和移植作业。Bootloader相当于PC体系的BIOS。关于有些嵌入式操作体系,如uc/OSII没有bootloader一样能够开发调试。可是关于WindowsCE和嵌入式linux体系而言Bootloader即是有必要的了。这篇文章以Windows CE 为例,做一个简要的阐明。 Windows CE 体系的移植作业首要即是BSP(板级支撑包)的开发进程。BSP将详细的硬件区别同操作体系的中心阻隔开来,首要由Bootloaer ,OAL(OEMAbstraction Layer)和设备驱动程序三有些构成。WindowsCE体系中Bootloader叫做Eboot。Eboot被写入体系的引导Flash。体系启动时运转Eboot,完结经过网卡将调试PC 机中WindowsCE 操作体系映像下载到方针体系的SDRAM中并开端履行的功用。关于一个体系移植人员,首要需求阅览文档,晓得WindowsCE体系Bootloader和BSP的根本概念和开发进程。(呵,还要做这作业啊,我还没想到(初学^_^))Windows CE的开发体系Platform Builder供给了详细的文档和例程,开发人员需求细心的阅览文档和例程。搞理解各个函数之间的调用联络。在开发进程中的一个重要的进程即是打通串口,使得方针板能够经过PC机串口向调试PC 机发送数据。由于ARM体系的仿真器对比昂贵,并且操作体系的调试一般不运用JTAG调试器进行单步调试。所以能从串口调查程序的履行进程和成果关于调试就显得非常重要了。串口打通以后一个对比扎手的疑问即是网卡芯片的调试。刚刚触摸嵌入式体系开发的人一般没有直接在寄存器级上运用网卡芯片的经历,而网卡芯片的阐明一般都较为简略,这就需求开发者学习一些以太网的根底常识,对以太网的MAC 层有一个根本的晓得。别的,各种网络调试(抓包)东西的运用也能大大下降体系调试的难度。体系的OAL需求依据详细硬件的不一样做出相应的修改,这个有些可参照文档进行,在调试进程中依据串口的信息剖析犯错的当地。要充沛发挥跨文件字符串查找东西的功用,在汗牛充栋的源文件中找到犯错的位置。当然,跟着开发者对体系文件目录构造的晓得和晓得,过错定位的速度会不断加速。WindowsCE 的驱动程序相对而言是对比好写的。想体系学习嵌入式的兄弟可联络郭教师QQ754634522 4.运用程序的开发 嵌入式体系的运用程序开发同在PC 机上开发运用程序的区别不是很大。关于Windows CE体系而言,Microsoft现已供给了较为完善的开发东西。格外是.NET Compact work的运用,使得依据Windows CE.NETCompactwork的运用程序有了跨渠道性。开发人员能够运用Windows 的C# 言语直接在PC 上进行CE.NET运用程序的开发和模仿调试,也可将方针体系同PC 机相连,进行联机调试。如今有许多体系支撑J2ME(JAVA的嵌入式体系版别) ,这使得JAVA 在嵌入式体系运用开发中占有较大的优势。别的,作为专业的嵌入式体系软件开发人员,还需求充沛晓得面向对象技能和规划形式等方面的常识,当然作为初学者能够先不深入研讨这方面的内容。内容太多,下次共享常用嵌入式体系处置器和操作体系。期望对初学者有协助 常用嵌入式体系处置器和操作体系 处置器 常用嵌入式体系处置器首要包括ARM 处置器,Power PC 处置器,依据MIPS 内核的嵌入式处置器,软核处置器(如Altera 的Nios和Xilinx的MicroBlaze等)和DSP(数字信号处置器)等。 ARM 处置器的首要特色是具有较高的功用功耗比。ARM处置器被广泛的运用在手机,PDA等范畴,其间较为闻名的有Intel 公司出产的依据ARM 内核的XScale系列处置器。由于一切公司出产的依据ARM内核的处置器具有一样的编程模型,在手持和电池供电的体系中,依据ARM的嵌入式体系处置器一般被首要选用。PowerPC(简称PPC)处置器具有较强的运算功用和数据吞吐才能,在网络和数据通信范畴依据PPC的嵌入式体系处置器有着广泛的运用。其间Motorola公司出产的MPC860/MPC8260被大量地运用在嵌入式网络商品中。MIPS 处置器的特色表如今非常强壮的处置才能上。作为高功用处置器,MIPS处置器适用于网络、企业及高档花费类电子运用,格外是在机顶盒体系中,MIPS处置器具有较高的市场占有率。跟着可编程器材的规划不断扩大,使得人们能够依据需求定制处置器,并便利的将关于某种格外运用定制的处置器便利的在可编程器材内部完结。除了处置器外,核算机体系还需求许多其他构成有些,比方在多通道媒体数据处置体系中,常常需求运用可编程器材来完结高速的数据处置功用,运用软核DSP来完结杂乱的数字信号处置算法,一起还需求处置器进行事务处置,软核处置器将可编程器材,DSP同处置器联络在一起,为体系级规划供给了极大的灵活性。DSP(数字信号处置器)有别于通用处置器,会集表如今其强壮的数字信号处置才能上。在DSP 内部供给了硬件乘累加器,处置器在规划上关于格外的寻址办法做了优化,一些DSP 还支撑零耗循环(Zero OverheadLoop)。为了便利嵌入式体系规划,干流DSP 一般也都供给了丰厚的外设。格外值得一提的是ADI 公司的Blackfin 系列DSP和TI 公司的DM64X系列DSP,两种处置器都供给了丰厚的片上外设,非常适用嵌入式体系运用。 操作体系 WindowCE.NET/5.0 作为Microsoft的商品,WindowCE.NE/5.0供给了功用齐备的渠道开发东西Platform Builder和运用开发东西Embedded Visual C++/Visual Studio 2003。WindowsCE由于具有广阔运用者所晓得的windows界面,体系供给了许多驱动程序,并且有齐备的文档支撑。关于运用开发而言,晓得Windows体系开发的程序员很简单转到WindowsCE 运用程序的开发。Windows CE将会是一个非常有出路的嵌入式操作体系。 VxWorks VxWorks是由Windriver(风河)公司出品的嵌入式实时操作体系,大名鼎鼎的火星登入车即是运用了VxWorks。Windriver为VxWorks供给了集成开发环境tornado。 υC/OSII υC/OS是由Jean Labrosse规划编写的开放源代码的嵌入式实时操作体系,笔者最早触摸的嵌入式操作体系即是它。阅览并深入晓得υC/OS的源代码关于晓得实时体系是大有裨益的。 ARM Linux ARM linux是由Russell King和其他开发者开发移植的用于ARM 处置器的linux操作体系。ARM Linux体系在GNU GPL下发布。 υCLinux υClinux 是适用于没有MMU 的嵌入式处置的LinuxOS 版别。υ Clinux 一样在GNU GPL发布。 嵌入式体系开发进程中的常见疑问和解决办法 Bootloader怎样写入Flash ? 初学者一般都会遇到怎样将程序写入处置器的疑问。关于不一样的处置器,能够选用不一样的办法。例如Intel的Xscale处置器能够用Intel公司供给的JFlash东西烧写。关于具有JTAG调试东西软件的处置器,能够运用如下思路:编写一段程序,这段程序能将坐落SDRAM/SRAM 固定地址中的数据写入Flash中。烧写时,首要,将这段软件下载到SDRAM 中,然后经过调试软件即将写入Flash的数据下载到SDRAM/SRAM的某个固定地址开端的缓冲区,然后经过调试器开端履行程序,将数据写入Flash。除此以外,网络上还供给了许多专用的写Flash的东西,开发者能够依据自个的需求选用。(如今理解了我在学的那个BF533为啥先下个flashProgramer.dxe先了) 啥是arm-elf-gcc? arm-elf-gcc是一个穿插C言语编译器。咱们在PC渠道下编译程序,编译器运转的处置器同生成的代码即将运转的处置器一样。可是,在PC 机上编译ARM程序时,编译器运转的处置器同生成的代码运转的处置器不一样,这种编译器叫做穿插编译器中的elf是指编译器生成的方针文件格局。(其实咱们平常用的单片机编译器如GCC—AVR等已是穿插编译器了,我到如今才弄理解啥是穿插编译器) 走了哪条编译途径? 体系程序和驱动程序一般包括许多的编译选项,许多选项都是在编译时经过命令行界说的,假如想晓得编译的是那一段程序能够运用如下的办法: #ifdef PLAT_AAA #error Code for Platform AAA #else #error Code NOT for Platform AAA #endif 这样在编译的时分就晓得,编译的是哪一条路经了。关于支撑#pragma message( “I am here”)的编译器也可运用#pragma message预编译指令。 我怎样晓得那段代码在那个文件中? 体系编程中常常需求运用在多个文件中查找字符串,在windows渠道下能够运用渠道供给的多文件字符串查找东西。在linux渠道下,能够运用grep来查找字符串。Grep的查找功用非常强壮,支撑正则表达式查找,娴熟运用grep关于阅览体系和驱动程序代码是很有协助的。 体系是从那个文件开端运转的? 关于Windows CE体系,一般从WINCE420\PLATFORM\YourPlatform\KERNEL\HAL目录的某个汇编文件中。关于Linux体系版别不一样会存在必定区别,以arm处置器为例,一般会在linux2.4.x\arch\arm\kernel的head-armv.S中。 程序履行到了那里? 能够在程序中刺进如下代码来完结 printf( “I am here %s, %d\n”,__FILE__,__LINE__); 代码将打出printf句子地点的文件名和行号。 推荐书目 Jean J.Labrosse MicroC/OS-II The Real-TimeKernel,Second Edition这本书是笔者触摸嵌入式实时体系的入门书,在国内能够买到中文版。这本书较为理解地叙述了实时体系的概念,各个构成有些的作业原理,格外是公开了实时体系内核的源代码,细心研讨定会收获颇丰。有个小的提示,关于初学者,这本书能够先不看第一章,直接从第二章看起。 Abraham Silberschatz, Peter Baer Galvin,GregGagne Operating System Concepts笔者在教育进程中发现,无论是核算机仍是电子工程专业都有许多学生关于操作体系的根本概念都没有搞清,很少有学生有完好的体系编程经历。Operating System Concepts这本书对操作体系的概念叙述只能用经典来形容。关于嵌入式体系有爱好深入研讨的同学,首要要把根底打好,这本书就成了必读之物了。 Andrew S. Tanenbaum Computer Networks 提起Andrew S. Tanenbaum 学习核算机的同学必定都晓得OPERATINGSYSTEMsesignand Implementation这本书,笔者关于Tanenbaum这样的教授由衷佩服。网络协议栈是嵌入式体系中的支柱性构成有些。情愿致力于网络深层技能研讨的同学,这本书将为你们树立一个坚实的网络根底。 Karim Yaghmour Building Embedded Linux Systems本书翔实的介绍了嵌入式linux体系的构成,根本概念和怎样去树立各个有些。全书篇幅较小,可谓短小精悍。即能够作为嵌入式linux体系的入门读物,又是开发进程各个有些的攻略。 Advanced RISC Machines Ltd (ARM) ARM7 TDMI DataSheet Advanced RISC Machines Ltd (ARM) ARM920TTechnical Reference Manual学习嵌入式体系不晓得当时运用最广泛的嵌入式处置器怎样行?ARM7 TDMI 的 data sheet是学习ARM编程模型,指令集的好东西。在嵌入式体系中,MMU(内存办理单元)是很重要的有些,又是较难晓得和把握的有些。ARM920TTechnical Reference Manual 正巧能够帮你解说这方面的内容。 Perter Van Der LinDen Expert C Programming嵌入式体系级编程最常用的言语仍是C 。许多同学都自以为自个的C言语学的极好,那好,就看看这本书吧,找找自个和Experts差距。 嵌入式开发与桌面开发既有不一样,又有非常大的联络,并且非常重视实习操作才能。搞桌面开发的人在一开端触摸嵌入式的时分,一般变换不过来,这首要体如今定位上。如文中所说,你是谁,你要做啥?我对硬件的晓得仅限于编程范畴,PCB规划一无所知,但并不能说你不明白硬件就不能从事嵌入式开发。一个体系的开发规划方方面面,在自个感爱好和晓得的范畴做出自个的奉献才是最首要的。想体系学习嵌入式的兄弟可联络李教师QQ982288214 1。硬件规划: 需求有硬件规划的经历,对各种嵌入式器材有极好的晓得。 2。体系移植:需求汇编经历,操作体系原理以及底层驱动的晓得 3。运用程序:需求桌面编程经历 更多C语言 C++、JAVA、数电模电、51单片机、PIC stm32 ARM Linux驱动 嵌入式、安卓系统 FPGA、DSP Cortex-M3学习 请咨询李工:腾讯QQ3052791816 中国移动全球通13500505486 深圳南山、民治、龙岗、西乡、长沙、郑州、南宁同步学习中! 理论与实践相结合 一线工程师项目经理教学 结合真实的产品案列 让你感受前所未有的电子产品的开发流程 2015给自己一个决心,只为自己!高薪就业不是梦,有想法你就来 IT达人等着你!!! |
网友评论