嵌入式系统学习心得

嵌入式系统学习心得
嵌入式系统学习心得

篇一:嵌入式心得体会

这学期才接触嵌入式系统感觉还称不上入门,我通过学习知道了嵌入式的发展前景很大,各个领域都用到了嵌入式,学好嵌入式不愁没饭吃。

广义上讲,凡是带有微处理器的专用软硬件系统都是嵌入式系统。如各类单片机和dsp系统。从狭义上讲,那些使用嵌入式微处理器构成独立系统,具有自己操作系统,具有特定功能,用于特定场合的专用软硬件系统称为嵌入式系统。嵌入式系统由嵌入式硬件与嵌入式软件组成; 嵌入式硬件以芯片、模板、组件、控制器形式埋藏于设备内部。

理解“嵌入”的概念主要从三个方面上来理解。

1、从硬件上,将基于cpu的处围器件,整合到cpu芯片内部,比如早期基于x86体系结构下的计算机,cpu只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16c550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到cpu内部,还有pc机有显卡,而多数嵌入式处理器都带有lcd控制器,但其种意义上就相当于显卡。比较高端的arm类intel xscale架构下的ixp网络处理器cpu内部集成pci控制器(可配成支持4个pci从设备或配成自身为cpi从设备);还集成3个npe网络处理器引擎,其中两个对应于两个mac地址,可用于网关交换用,而另外一个npe网络处理器引擎支持dsl,只要外面再加个phy芯片即可以实现dsl上网功能。ixp系列最高主频可以达到1.8g,支持2g内存,1g×10或10g×1的以太网口或febre channel的光通道。ixp系列应该是目标基于arm体系统结构下由intel进行整合后成xscale内核的最高的处理器了。

2、从软件上前,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到rom中。而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如wince在内核定制时,会有相应选择,其中就是wordpad,pdf,mediaplay等等选择,如果我们选择了,在ce启动后,就可以在界面中找到这些东西,如果是以前pc上将的windows操作系统,多半的东西都需要我们得新再装。

3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的rom中就实现了一个真正的“嵌入”。。

嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层

1、硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用c和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成cpld的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口技术、c语言。

2、驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到,这样所写的驱动在应用调

用时就如同windows下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几编,不是太容易成功的,但其工资在嵌入式系统四层中可是最高的。

驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。

3、操作系统层,对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操

作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,xp 操作系统是微软投入300人用两年时间才搞定的,总时工时是600人年,中科院软件所自己的女娲hopen操作系统估计也得花遇几百人年才能搞定。因此这部分工作相对来讲没有太大意义。

4、应用层,相对来讲较为容易的,如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。如果涉及java方面的编程也是如此的。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于sip、h.323、astrisk)方面又较为复杂,并且有难度了。

通过网上查询我发现目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业it人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如arm处理器、嵌入式操作系统等),掌握这些新技术的人当然很少。嵌入式人才稀缺,身价自然就高,越有经验价格就越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。我们软件系的人学习嵌入式,显然应偏重于嵌入式软件,特别是嵌入式操作系统方面。对于搞嵌入式软件的人,最重要的技术显然是掌握主流嵌入式微处理器的结构与原理,必须掌握一个嵌入式操作系统,必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目。

然而我们都没有做过一个嵌入式软件项目,甚至连嵌入式的开发流程我也不清楚,我只了解了使用简单工具做一个简单的实验。只有去专研才能在嵌入式的领域站住脚,只有知道的比别人多才会更有竞争力。通过网上了解,我查询了嵌入式的入门和所需要的知识,其中c语言尤为重要,不管是做嵌入式软件还是硬件开发的人员,对c语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用c语言。其次,应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的;知道了c语言和操作系统之后,再来看看嵌入式系统,我们主要学的是arm,用的是arm7,深入理解arm不是件容易的事,只有在知道arm相关知识之后才能称得上嵌入式已经入门了。与嵌入式有关的知识我也学了不少就是不能够综合在一起运用,组成原理,数据结构,操作系统,c++,这3门与嵌入式密切相关的学科都系统的学了一遍,但由于长时间没用到都有点忘记了,从网上得知嵌入式的学习

与这些书有很大关系之后,我把嵌入式与以前学过的知识结合起来发现嵌入式的实验中很多都是共通的,我对嵌入式有了初步的理解。

我以为学习嵌入式应该分为2个部分:软件和硬件。关于硬件方面我接触到了数字电路教材和模拟电路方面的知识,但由于没有嵌入式cpu很难亲自动手来实现嵌入式的相关理论;嵌入式入门则需要不断地实验与分析,我只在实验课时做几个与所给的程序相关的小程序来实现一下;而软件方面则学过c语言,里面通常的语法曾今熟悉过;我通过下列方法来适应c语言在嵌入式中应用:首先重新翻看了下c的教材,看了些常见的语法,接着在编译器的角度来看待c,编译原理我刚学过,其中将高级语言与低级语言的翻译感觉在嵌入式中用到了很多;最后冲硬件的角度来看待c。嵌入式的核心包括嵌入式操作系统,嵌入式软件开发平台及工具以及嵌入式应用软件。这些决定怎样才能开发一个好的嵌入式系统。下面谈谈我了解的嵌入式的相关知识与应用:

首先,嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应

用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式有如下几个突出的有点1.系统内核小,2专用性强,3系统精简4高实时性os5嵌入式系统的应用程序可以没有操作系统直接在芯片上运行,6嵌入式系统需要开发工具和环境。

嵌入式系统是近几年才风靡起来的,但是这个概念并非新近才出现。从20世纪七十年代单片机(最早的单片机是intel公司的 8048,出现在1976年)的出现到今天各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了近30年的发展历史。经过30年的发展,嵌入式技术已经日趋成熟,在中国嵌入式机一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。

其次,嵌入式系统无疑是当前最热门最有发展前途的it应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。嵌入式系统是软硬结合的学科,通常有两类人会去专研嵌入式:一类是学电子工程、通信工程等偏硬件专业的,另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。我是软件专业的学习嵌入式,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。嵌入式应用在很多方面,具体的可以分为工业控制,交通管理,信息家电,家庭智能管理系统,pos网络及电子商务,环境工程与自然,机器人,机电产品方面应用等方面。其中目前在服务领域,如远程点菜器等已经体现了嵌入式系统的优势。例外还有很多地方用到了嵌入式系统,最近飞利浦和arm共同推出32位risc嵌入式控制器,适用于工业控制,采用最先进的0.18微米cmos嵌入式闪存处理技术,操作电压可以低至1.2伏,它还能降低25%到30%的制造成本,在工业领域中对最终用户而言是一套极具成本效益的解决方案。

那么该如何学好嵌入式我觉得应该从以下几点入手:

首先c语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对c语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用c语言,你说不掌握它可以吗?至于如何学习c语言,我想这些基础的知识每个人都有自己的方法,关键要去学习,看书也好,网上找些视频看也好。很多人会问,c语言要学到怎么样,我觉得这没有标准的

答案。我想至少你在明白了一些基础的概念后,就该写代码了,动手才是最重要的,当你动手了,遇到问题了,再反过来学习,反过来查查课本,那时的收获就不是你死看书能得到的。

其次,应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的,当然,不是看书就能把这些理解透,如果不是一时能理解,没关系,多看看,结合以后的项目经验,会有更好的理解的。

还有应该学习下linux或者wince下的编程,这些对以后做应用的编程很有帮助,当然,如果做手机的话,那可以学习mtk、塞班、android等操作系统,android是以后发展的趋势,现在很热门,android 也是基于linux系统封装的,所以建议先学习下linux。

还有,应该学习下单片机或者arm或者mips,很多人说我没有单片机的经验,直接学arm可以吗?我觉得那完全没有问题的,当然如果你学习过单片机,那最好不过了,以后学习arm就更简单了。

最后如果你把以上的知识都有所了解后,就该去阅读阅读一些优秀的代码,比如结合arm芯片手册学习去学习下uboot的源代码,了解下最小的系统开发,那对你整个嵌入式开发的非常有帮助的,可以的话,还可以学习下linux的源代码,当然如果你直接阅读2.6的代码,我想你会很痛苦的,可以先看看linux 代码早期的版本,比如0.12 的代码等等,麻雀虽

小,五脏俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程师。

以上就是我在本学期学习嵌入式后的心得及感想。

篇二:嵌入式学习总结

一.为什么学习嵌入式?

1.就业前景

近几年,嵌入式系统产品日臻完善,并在全世界各行业得到广泛应用。嵌入式系统产品的研制和应用已经成为我国信息化带动工业化、工业化促进信息化发展的新的国民经济增长点。

随着消费家电的智能化,嵌入式更显重要。像我们平常见到的手机、pda、电子字典、可视电话、vcd/dvd/mp3player、数字相机(dc)、数字摄像机(dv)、u-disk 、机顶盒(set top box)、高清电视(hdtv )、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等,都是典型的嵌入式系统。据预测,随着internet的迅速发展和廉价微处理器的出现,嵌入式系统将在日常生活里形成更大的应用领域。

在中国,嵌入式软件发展过程中,政府已充分认识到它的重要作用,并在政策、资金等方面给予了大力支持。2004 年国家发改委、科技部、商务部联合颁布的《当前优先发展的高技术产业化重点领域指南》,把嵌入式软件产业作为国家发展的一个重要领域。

最近几年来,中国的嵌入式软件发展速度一直高于中国软件产业的发展速度和全球嵌入式软件的发展速度,在中国软件产业和全球嵌入式软件产业中所占的比重越来越大。目前,中国嵌入式软件产业在整个软件产业中的比重已经超过了三分之一强。

从2006年至2010年,中国嵌入式软件产业规模仍将保持快速增长态势,年均复合增长率为25.8%,到2010年将达到3339.6亿元的规模。

中国嵌入式软件产业的发展面临着良好的发展环境与机遇,这包括政府的重视与扶植、信息产业与传统产业的融合机遇、垄断局面尚未形成、中国制造的良好基础、自由软件运动的兴起等等。

同时,不可否认的是长期以来,由于人才、宣传、资金等诸多问题以及嵌入式本身所特有的软硬结合特性,使嵌入式软件人才一直处于供不应求的状态。

2.自身发展

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

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

另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写bsp和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责

开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有“花头“可做的),所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。

二.怎样学习嵌入式?

1.arm嵌入式开发领域

包括什么?

软件开发

操作系统以下的底层偏硬件驱动

在简单操作系统如uc/os-ii之上的程序开发

不包括什么?

硬件设计

类似linux这样操作系统以上的纯应用开发

2.arm基础知识

#1.arm体系结构:

load/store体系,big/little endian大小端格式,risc/cisc指令集,pipeline流水线

#2.arm工作模式: 7种工作模式:usr,sys,svc,irq,fiq,und,abt;其中5种异常模式 #3.arm寄存器:

37个寄存器:

r0-r12, r13(sp),r14(lr),r15(pc),cpsr(spsr)

#4.arm异常:

7种异常,异常向量表,异常优先级,异常处理程序,处理器现场,现场的保存和恢复

#5.amba总线:

ahb(高性能总线),asb(系统总线),apb(外设总线)

#6.arm内核技术: trustzone,jazelle,neon,thumb-2,simd,mmu,mpu

#7.jtag标准:

ieee1149.1,tdi,tdo,tck,tms,trst,边界扫描链,h-jtag,banyan,giveio

#8.arm内核分类: arm7tdmi,arm926,strongarm/xscale,arm10,arm11,cortex-(a/r/m),securcore

#9.arm汇编指令: mov,add,sub,b,bl,ldr,str,ldmfd,stmfd,mrs,msr,swi,mrc,mcr #10.mmu内存管理单元:

va/pa,

i-cache/d-cache,write buffer,context switch,cp15,tlb,ap,domain

access control,cache coherence

#11.arm芯片外设控制器:

memory

controller(内存控制器),watchdog(看门狗),gpio(通用io),uart(串口),timer(定时器),interrupt controller(中断控制器),nand flash controller,clock & power management(时钟和电源管理),dma(直接存储访问),usb controller,lcd controller,adc,iic,iis,spi,ac97,camera,mmc/sd #12.最小系统:

处理器,时钟,电源,pll锁相环,存储器,通讯端口,外设接口

存储器件

sram,sdram,nor flash,nand flash

#13.arm处理器:

samsung: s3c4510,s3c44b0,s3c2410,s3c2440,s3c6410,

#14.soc设计:

fpga,cpld,vhdl,verilog

#15.arm开发调试

工具:

sdt,ads1.2,axd,realview,keil mdk 4.11 (rvmdk4.11)

#16.arm命令行工具:

armcc,armasm,armlink,fromelf

#17.嵌入式操作系统:

vxworks,rtlinux,uc/os-ii,wince/wm

#18.外设驱动程序:

volatile关键字,位操作bit,时序图timing,管脚功能pin function,外设控制/数据/状态寄存器

#19.程序的存储,

加载和运行:

ro段,rw段,zi 段,ro-base/rw-base,栈空间,堆空间,位置无关代码pic,启动搬移代码

3.核心概念

#1.寄存器:

arm内核寄存器

r0-r12 r13(sp) r14(lr) r15(pc) cpsr, spsr

arm soc 特殊功能

寄存器

sfr(special function register)

#2.地址

c程序中变量的“地址” :&a

soc 特殊功能寄存

器的“地址” :0x48000000

寻址方式里面的“地址” :ldr r0, [r1]

二进制指令里面的“地址” :0xe59ff018

存储芯片内部的“地址” :0x4h

操作系统之上应用程序的“(虚)地址”

cpld器件对应的“(假)地址”

#3.异常和中断

异常是属于arm内核体系结构的概念

中断是属于arm soc处理器的概念

了解软件中断(swi)是实现操作系统提供系统调用的重要手段

了解硬件中断(例如timer定时器)是实现操作系统时间片的重要手段

三.三个问题。

#1.为什么要编写一个bootloader?

从根本上掌握一个嵌入式开发板底层的软硬件系统是怎样运转起来的

时钟频率如何设置;看门狗所起作用,串口如何工作;通讯协议如何实现;库函数;反汇编;函数栈空间。

#2.为什么要移植一个操作系统?

了解操作系统和底层硬件之间的依赖关系,知道哪些是移植相关的部分(即接口)定时器中断(时钟节拍);异常处理和现场保存恢复;进程,进程控制块;处理器现场;进程的上下文切换;中断级别的进程切换。

#3.为什么要实现一个用户应用?

一个音频播放器;dma控制器,interrupt中断控制器;iis 总线;uda1341声卡芯片驱动;wav/mp3 音频文件格式;lcd液晶显示驱动;一个u盘;usb协议;fat文件系统格式;scsi命令集;nandflash 存储芯片驱动。

四.经典语段

经典语段一:

嵌入式技术的掌握是需要一个过程的

实事求是的说,嵌

入式技术的全面掌握是有相当难度的。可以轻轻松松学会嵌入式技术的说法是夸大其词了。这个就像学英语一样,学英语无论怎样学,不管是“疯狂学”还是用新理念来学,真正掌握的话还是需要一步步积累才能熟练掌握。在此,我建议大家不要想在几天内学会嵌入式,成为这方面的高手。这些想法本身是不太现实的。

现在我们需要做的是:

第一:把心踏实下来,做好打硬仗的准备。

第二:注意学习方法。尽量不要走弯路,争取一鼓作气入门。一旦入门了以后呢就好办了。嵌入式技术的掌握,本身呢就比较难,要是再走些弯路,时间上会浪费,甚至会影响学习的信心。

经典语段二:

最好的学习方法:

做项目。如果有机会大家跟着做一个难度适中的嵌入式项目,相信大家会很快入

门的。也就是说从实战之中来获得进步。但是,在我们没有嵌入式基础之前,不容易获得这样的机会。也就是说,在能力没有到之前,找个这样的工作很难。很显然呢,如果我们具备了获得这样一份工作的能力就好办了。但是,恰恰是这个阶段最难。这个就是搞嵌入式系统的门槛。这个门槛的跨越,我觉得是需要引导的。

比如有的人买了块开发板自学,上来就分析linux源码,结果折腾了几个月呢都没有什么收获。有的人只是掩饰了几个基本的功能,放了个mp3,玩了下如何来浏览网页,下不就不知道该怎么做了。实际上呢,学习一门技术是需要一个过程的,期间也会有一定的规律。我们具体来看。

五.学习心得

#1.嵌入式系统的范围很广,指具有计算能力的非pc系统,即具有通常使用的个人电脑的全部或部分特质的专用计算机系统。如生活中的pda、手机、电视机顶盒、数字电视、数码相机以及工业自动化仪表、医疗仪器等。它分硬件和软件两部分,硬件以嵌入式处理器(相当于pc的cpu)为核心,外扩rom、ram(相当于pc的硬盘、内存条)、输入/输出设备(pc 的键盘/显示器)、各种通信接口(串口、usb、网络)等。软件由引导程序(pc的bios)、嵌入式操作系统(相当于pc机的windows xp)和应用程序(相当于在windows xp上运行的程序,如金山词霸、word等)3部分组成,或只有其中的某部分。

#2.目标要明确,不要得过且过,不要追逐热门的东西。不管在什么时候,心里都要有自己的信念和理想,不要被其他东西左右了自己。

#3要从兴趣和竞争出发,因为这才是你产生动力源的地方。学东西时,要让自己先喜欢上它,要学会享受学习它的时间,喜欢乔***的都知道,乔老爷子最常说的一句就是要享受比赛的时间。因为只有你喜欢上了它,享受了它,才不会被它所产生的压力压倒自己,不要产生一种厌恶的心理。而且心态要调整,不要一味的蛮学,死学,在没有什么兴趣学的时候可以先玩

几天,在回过头来,或者用其他的方式来转换。

#4要抱着一种十年方能磨一剑的心理,扎扎实实从基础开始,不要为高速开发的一些现象所迷惑,那些都只是软件的功劳。我个人认为搞编程,英语和数学很重要,大家一定要时时的抓,至于怎么抓那就是另外一回事了,当然其他的知识也要汲取,可以多接触点天文,地理,人文方面的东西来补充自己。

篇三:学习嵌入式系统感言

个人觉得培训学校都是差不多,所学的内容都是一样的。您不妨自己找几个学校的课程对比下,你就知道大同小异了,培训主要就是c、linux和arm课程。

我原来也想去培训,可是家里条件不允许,我没有那么多钱,后来我只好自学了,不懂的就上论坛问,我自己学了四个月,差不多也入门了,现在也是在做嵌入式开发。想想我自己走过的路,其实我发现,其实嵌入式并没有想象的难,关键是要花时间去学,要坚持几个月就可以了。

如果楼主还有时间,不妨自己学下。实在觉得困难的话再去培训吧。当然,楼主如果家里经济不错的话,也可以去培训吧。但是如果真的下决心要学的话,其实可以去找找自学的方法。

我把我前阶段看到的一篇一个专科生如何自学嵌入式,里面有介绍了他的学习方法和学习过程的文章,给楼主看看,希望对你有帮助。

专科生学嵌入式到找到工作的前前后后--学习的榜样

退学后我也迷茫,大专都没有毕业,我真的不知道我能干什么,我在纠结着我能做什么。所以辍学后我一段时间,我想去找工作,因为我比较沉默寡言,不是很会说话,我不适合去应聘做业务。我想应聘做技术的,可是处处碰壁。

一次偶然的机会,我才听到嵌入式这个行业。那天我去新华书店,在计算机分类那边想找本书学习。后来有个女孩子走过来,问我是不是读计算机的,有没有兴趣学习嵌入式,然后给我介绍了一下嵌入式现在的火热情况,告诉我学嵌入式多么的有前景,给我了一份传单,嵌入式培训的广告。听了她的介绍,我心里痒痒的,确实我很想去学会一门自己的技术,靠自己的双手吃饭。

回家后,我就上网查了下嵌入式,确实是当今比较热门的行业,也是比较好找工作的,工资也是相对比较高。我就下决心想学嵌入式了。于是我去找嵌入式培训的相关信息,说真的,我也很迷茫,我不知道培训是否真的能像他们宣传的那样好,所以我就想了解一段时间再做打算。

后来,我在百度知道看到一篇让我很鼓舞的文章《如何学习嵌入式》,是一个嵌入式高手介绍没有基础的朋友怎么自学入门学嵌入式,文章写的很好,包含了如何学习,该怎么学习。他提到一个方法就是看视频,因为看书实在太枯燥和费解的,很多我们也看不懂。这点我真的很认同,我自己看书往往看不了几页。

我在想,为什么别人都能自学成才,我也可以的!我要相信自己,所以我就想自学,如果实在学不会我再去培训。

主意一定,我就去搜索嵌入式的视频,虽然零星找到一些嵌入式的视频,但是都不系统,我是想找一个能够告诉我该怎么学的视频,一套从入门到精通的视频,一个比较完整的资料,最好能有老师教,不懂可以请教的。

下面介绍下我的学习流程,希望对和我一样完全没有基础的朋友有所帮助。

收到他们寄过来的光盘后,我就开始学习了,由于我没有什么基础,我就从最简单的c语言视频教程学起,话说简单,其实我还是很多不懂的,我只好请教他们,他们还是很热心的,都帮我解决了。c 语言我差不多学了一个礼拜,接下来我就学了linux的基本命令,我在他们提供linux虚拟机上都有做练习,敲linux的基本命令,写简单的c语言代码,差不多也就三个礼拜。我每天都在不停的写一些简单的代码,这样一月后我基本掌握了c和linux的基本操作。

接下来我就去学习了人家的视频的培训教程,是整套的,和去参加培训没有多大的区别,这一看就是两个月,学习了arm的基本原理,学习嵌入式系统的概念,也掌握了嵌入式的环境的一些搭建,对linux 也有更深层次的理解了,明白了嵌入式应用到底是怎么做的,但是驱动我只是有一点点的了解,这个相对难一点,我想以后再慢慢啃。

这两个月,除了吃饭睡觉,我几乎都在学习。因为我知道几乎没有基础,比别人差劲,我只能坚持努力着,我不能放弃,我必要要靠自己来养活自己,必须学好这门技术,同时我不懂的就问,这里真的很感谢他们的技术客服对我的任何问题都是耐心的解答,每天都我几乎都有好几个问题问他们,然后我就把不懂的问题总结记下来,这样慢慢积累了一段时间,我发现自己真的有点入门了。

最后的一个月,我就去看关于实践部分的内容,了解嵌入式项目具体的开发流程,需要什么样的知识,我就开始准备这方面的知识,也就是学习这方面的视频,同时他们建议我去找了找一些嵌入式面试的题目,为自己以后找工作做准备。我就到网上找了很多嵌入式的题目,把他们理解的记下来,这样差不多准备了20天左右

我觉得自己差不多入门了,会做一些简单的东西了。我就想去找工作看看,于是我就到51job 疯狂的投简历,因为我学历的问题,专科没有毕业,说真的,大公司没有人会要我,所以我投的都是民营的小公司,我希望自己的努力有所回报。没有想过几天过后,就有面试了,但是第一次面试我失败了,虽然我自认为笔试很好,因为我之前做了准备,但是他们的要求比较严格,需要有一年的项目经验,所以我没有被选中。

把本文写出来,希望能让和我一样的没有基础的朋友有信心,其实我们没有必要自卑,我们不比别人笨,只要我们肯努力,我们一样会成功。

2

在大学生如则的身上,我们看到了一种精神,就是对认准的事情,不管多困难,多曲折,都不放弃,而且要坚定地、执着地做下去。这是在许多成功者身上我们看到的共同的东西。搞发明创造是寂寞的、艰苦的,但当一个人将它视作自己的事业和理想,它就是快乐的、充实的,坚持下去,必将看到成功的果实,世界上的许多事情亦是同理。(完)

篇四:学习嵌入式心得

实验报告书

课程名:《嵌入式系统及应用》题目:学习嵌入式心得

班级:

姓名:

学号:

这学期才接触嵌入式系统学了8周了感觉还称不上入门,我通过了解知道了嵌入式的发展前景很大,各个领域都用到了嵌入式,学好嵌入式不愁没饭吃。

广义上讲,凡是带有微处理器的专用软硬件系统都是嵌入式系统。如各类单片机和dsp系统。从狭义上讲,那些使用嵌入式微处理器构成独立系统,具有自己操作系统,具有特定功能,用于特定场合的专用软硬件系统称为嵌入式系统。嵌入式系统由嵌入式硬件与嵌入式软件组成;嵌入式硬件以芯片、模板、组件、控制器形式埋藏于设备内部。

大体的嵌入式可以用下图来表示:

通过网上查询我发现目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业it人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如arm处理器、嵌入式操作系统等),掌握这些新技术的人当然很少。嵌入式人才稀缺,身价自然就高,越有经验价格就越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。我们软件系的人学习嵌入式,显然应偏重于嵌入式软件,特别是嵌入式操作系统方面。对于搞嵌入式软件的人,最重要的技术显然是掌握主流嵌入式微处理器的结构与原理,必须掌握一个嵌入式操作系统,必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目。

然而我们都没有做过一个嵌入式软件项目,甚至连嵌入式的开发流程我也不清楚,我只了解了使用简单工具做一个简单的实验。只有去专研才能在嵌入式的领域站住脚,只有知道的比别人多才会更有竞争力。通过网上了解,我查询了嵌入式的入门和所需要的知识,其中c语言尤为重要,不管是做嵌入式软件还是硬件开发的人员,对c语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用c语言。其次,应该对操作系统有所

了解,这对你对硬件和软件的理解,绝对有很大的帮助。应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的;知道了c语言和操作系统之后,再来看看嵌入式系统,我们主要学的是arm,用的是arm7,深入理解arm不是件容易的事,只有在知道arm相关知识之后才能称得上嵌入式已经入门了。

与嵌入式有关的知识我也学了不少就是不能够综合在一起运用,组成原理,数据结构,操作系统,c++,这3门与嵌入式密切相关的学科都系统的学了一遍,但由于长时间没用到都有点忘记了,从网上得知嵌入式的学习与这些书有很大关系之后,我把嵌入式与以前学过的知识结合起来发现嵌

入式的实验中很多都是共通的,我对嵌入式有了初步的理解。我们这学期的嵌入式课本名为《嵌入式系统开发与应用教材》由北京航空航天大学出版社出版,其中讲到了嵌入式系统的开发基础,arm相关技术以及基于arm的嵌入式软件开发基础,还提到了基于s3c44b0x嵌入式系统应用开发实例,这些书上都提到但却不是很全,并没有叫我们怎么去学好嵌入式系统相关开发实例或过程。

我以为学习嵌入式应该分为2个部分:软件和硬件。关于硬件方面我接触到了数字电路教材和模拟电路方面的知识,但由于没有嵌入式cpu很难亲自动手来实现嵌入式的相关理论;嵌入式入门则需要不断地实验与分析,我只在实验课时做几个与所给的程序相关的小程序来实现一下;而软件方面则学过c语言,里面通常的语法曾今熟悉过;我通过下列方法来适应c语言在嵌入式中应用:首先重新翻看了下c的教材,看了些常见的语法,接着在编译器的角度来看待c,编译原理我刚学过,其中将高级语言与低级语言的翻译感觉在嵌入式中用到了很多;最后冲硬件的角度来看待c。嵌入式的核心包括嵌入式操作系统,嵌入式软件开发平台及工具以及嵌入式应用软件。这些决定怎样才能开发一个好的嵌入式系统。

我们上课学的都是怎么样调试嵌入式系统可以通过下面的图来演示:

下面谈谈我了解的嵌入式的相关知识与应用:

首先,嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式有如下几个突出的有点1.系统内核小,2专用性强,3系统精简4高实时性os5嵌入式系统的应用程序可以没有操作系统直接在芯片上运行,6嵌入式系统需要开发工具和环境。

嵌入式系统是近几年才风靡起来的,但是这个概念并非新近才出现。从20世纪七十年代单片机(最早的单片机是intel公司的 8048,出现在1976年)的出现到今天各式各样的嵌

入式微处理器,微控制器的大规模应用,嵌入式系统已经有了近30年的发展历史。经过30年的发展,嵌入式技术已经日趋成熟,在中国嵌入式机一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。

其次,嵌入式系统无疑是当前最热门最有发展前途的it应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。嵌入式系统是软硬结合的学科,通常有两类人会去专研嵌入式:一类是学电子工程、通信工程等偏硬件专业的,另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。我是软件专业的学习嵌入式,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。嵌入式应用在很多方面,具体的可以分为工业控制,交通管理,信息家电,家庭智能管理系统,pos网络及电子商务,环境工程与自然,机器人,机电产品方面应用等方面。其中目前在服务领域,如远程点菜器等已经体现了嵌入式系统的优势。例外还有很多地方用到了嵌入式系统,最近飞利浦和arm共同推出32位risc嵌入式控制器,适用于工业控制,采用最先进的0.18微米cmos嵌入式闪存处理技术,操作电压可以低至1.2伏,它还能降低25%到30%的制造成本,在工业领域中对最终用户而言是一套极具成本效益的解决方案。

下图为一个真实的嵌入式系统实例,全套采用嵌入式系统制作的污水管理系统:其实用到嵌入式的地方还有很多,随着计算机的飞速发展嵌入式的价格越来越便宜也将更加普及,嵌入式是一门前途光明的学科。

通过8周的学习学到的并不是很多,要想在这个领域中有所作为还需深入研究,我要走的路还有很多但我会一步一步走下去的。

篇五:学习嵌入式的心得

嵌入式学习[转贴]

怎样做才能快速的嵌入式了?其实,做工程是没有捷径可走的

先说做硬件:

把你的数字电路教材和模拟电路的教材读熟,暂时先把重点放在数字电路上面,接着把微机原理和接口技术读熟悉了,最好能用汇编写几个简单的程序上机调试一下,这是很重要的。

完成上面的工作大概需要半年,不管你有多么的聪明,除非你以前这个基础就打的不错,否则,还是老老实实花上至少半年的时间!还是那句话,没有捷径可走,如果你相信那些什么“21天学通xx”什么的,那么我告诉你,放弃做工程吧!再说,你这么容易就学会了,别人也能的,你确定能拿到高薪吗?

下一步,就是选择一个dsp(或其它的嵌入式cpu)平台作为你的目标平台,先熟悉它的架构和与外围电路的接口,然后学习她的指令集,也要写一些小程序去跑一下。这个时候,你应该去买一个开发板了,一般的厂家附带会给你一些demo程序,看懂它,理解它,修改它,在你的板子上跑一跑。完成上面两步,说明你已经入了这个行业的门了,下一步,想成为高手的话,就是自己去设计一些项目了,这个阶段所花的时间每个人都是不同的,要看你的造化(主要是前面的基础是否牢固)了。

再说说软件:

在嵌入式行业,你想做软件开发的话,没别的,那就深入理解c语言,尤其是c的指针,如果你以前学过c,但是没有意识到c相比其它的高级语言的优点的话(不是听别人说的,你自己的体会),你可以按下面步骤来理解c:

1、重新翻一遍c的教材,记住一些常用的c语法,但不要死抠语法;

2、从编译器的角度来理解c;

从编译原理的角度来理解你工作中使用的高级语言,如果你做到这一点,至少有两个好处:

第一个好处是避免一大堆低水平重复出现的编译错误。一名优秀的coder平均在一个工作日中应该完成200行以上的源码,其编译错误应该控制在5个以下,要知道这200行源码不是一次完成的,所以

大多数情况下你都要追求一次编译通过;

第二个好处是可以提高源码的可读性和效率。规范地编写你的代码使你自己的逻辑清晰,因为你明白多加几个括号和空行、多换行对齐、多注释,编译器是会自动识别的,不影响程序执行的效率,反过来,控制好递归调用和循环内的if语句才是提高程序效率的关键,要全力避免递归,但要深刻理解递归,能通过自己建立堆栈来把递归程序转换成非递归程序,要求还是较高的哦!

3、从硬件的角度来理解c。

完成上面3步,你就是c的高手了,接下来应该去看看软件工程方面的书了,这个我还不太懂,不敢妄言。

另外说说教材的选择:学一门东西,选好你的教材,只要一本就可以了。坚决防止这种情况的出现:去图书馆借很多本书,像抢劫似的,而只是每一本都翻翻,就又还给图书馆了的!注意上面我把汇编语言放在硬件学习的板块里面,是由于汇编跟硬件的关系太紧密了,以至于是先学汇编还是先学习硬件电路和cpu架构成了要分清到底是“先有鸡还是先有蛋”的千年哲学难题了。

嵌入式操作系统一览

其实,嵌入式系统并不是一个新生的事物,从八十年代起,国际上就有一些it组织、公司,开始进行商用嵌入式系统和专用操作系统的研发。这其中涌现了一些著名的嵌入式系统:

windows ce

microsoft windows ce是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对于从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的基本内核需要至少200k的rom。

vxworks

vxworks是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统。它支持多种处理器,如x8

6、i960、sun sparc、motorola mc68xxx、mips rx000、power pc等等。大多数的vxworks api是专有的。采用gnu 的编译和调试器。

psos

isi公司已经被winriver公司兼并,现在psos属于windriver公司的产品。这个系统是一个模块化、高性能的实时操作系统,专为嵌入式微处理器设计,提供一个完全多任务环境,在定制的或是商业化的硬件上提供高性能和高可靠性。可以让开发者根据操作系统的功能和内存需求定制成每一个应用所需的系统。开发者可以利用它来实现从简单的单个独立设备到复杂的、网络化的多处理器系统。

qnx

qnx是一个实时的、可扩充的操作系统,它部分遵循posix相关标准,如:posix.1b实时扩展。它提供了一个很小的微内核以及一些可选的配合进程。其内核仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它os服务,都实现为协作的

用户进程,因此qnx内核非常小巧(qnx4.x大约为12kb)而且运行速度极快。这个灵活的结构可以使用户根据实际的需求,将系统配置成微小的嵌入式操作系统或是包括几百个处理器的超级虚拟机操作系统。

palm os

os-9

microwave的os-9是为微处理器的关键实时任务而设计的操作系统,广泛应用于高科技产品中,包括消费电子产品、工业自动化、无线通讯产品、医疗仪器、数字电视/多媒体设备。它提供了很好的安全性和容错性。与其他的嵌入式系统相比,它的灵活性和可升级性非常突出。

lynxos

lynx real-time systems的lynxos是一个分布式、嵌入式、可规模扩展的实时操作系统,它遵循posix.1a、posix.1b和posix.1c标准。lynxos支持线程概念,提供256个全局用户线程优先级;提供一些传统的、非实时系统的服务特征;包括基于调用需求的虚拟内存,一个基于motif的用户图形界面,与工业标准兼容的网络系统以及应用开发工具。

目前,世面上有很多商业性嵌入式系统都在努力地为自己争取着嵌入式市场的份额。但是,这些专用操作系统均属于商业化产品,价格昂贵;而且,由于它们各自的源代码不公开,使得每个系统上的应用软件与其它系统都无法兼容。并且,由于这种封闭性还导致了商业嵌入式系统在对各种设备的支持

方面存在很大的问题,使得对它们的软件移植变得很困难。在嵌入式这个it产业的新的关键领域,linux操作系统适时地出现在了国家和国内各嵌入式厂商面前,由于linux自身诸多优势,吸引了许多开发商的目光,成为嵌入式操作系统的新宠。它的出现无疑为国家发展嵌入式操作系统事业提供了一个极有吸引力的机会。

前言

这个题目很大,给人一种感觉我好像很成功,其实不然。实际上自己水平不高,甚至很低,但是做过了一些曲折的学习道路,同时把自己真实的学习历程表达出来,希望对后来者有借鉴的意义,甚幸!

工作三年、几成废人!

我2000年毕业于华中地区的一个理工科大学,专业是机械电子,我当时已经签了一家内陆某个省级机关工作,家里八辈是农民,并且很偏远,能够进入这样的地方是祖坟有风水。但在毕业前夕有个进入it的机会,我本想进去的,家里人极力反对,阻力可想而知。同时要交4000元的违约金,对我来说是天文数字。大学里的费用很多是借的,几乎将近一半的费用是在大学勤工俭学挣的,为了省钱,高中一个学期回家一次,大学一年回去一次。并且我个人也有特殊的人生背景(悲景更确切),这里不多说了,写十篇也写不完,同时偏离主题。这样我就参加了工作。一张报纸一杯茶的日子,几乎下班后有种很空虚和恐慌的感觉。在工作中虽然是与自己专业有点关系,但是很少。专业几乎荒废。我自己也思考,如果再不出去,自己将会成废人,只好让国家养了。两年后决定出去,但是几成废人,谁要呢,只好到学校去镀金。这是中国教育和社会的悲哀!

至于专业就改为计算机方面,听说好找工作,我说实话不是很对计算机特别感兴趣,生存第一需要。不要笑我,

哈哈!

考研成绩出来,超过了国家线几十分。那个方向要两个,我第三,但是那年非碘,不面试就按分数来排,自然我落选了。其实给我面试机会也不一定要我,哈哈,自己几斤几两很清楚。

最后调剂到另外一个学校,交钱,咬咬牙,交吧!现在仍然债台高筑!

进入学校前夕

为什么要把这段列出,看后就知道了。

单位有网络,经常上网查些英语资料,在那里唯独英语没有丢很多。于是我就在网上查资料,学什么好呢,最后确定学嵌入式把,听说跟硬件相对比较紧密!而我在大学里多少学习了数字电路,单片机等,所以多少也有所利用,不会真的一无所知。当然在这之前也自学过数据结构,计算机组成原理等。

c 语言在大学就学了。哈哈这就是我的家底。

我知道自己的基础差,于是我就拿操作系统,数据库、数据结构、c++来看,机关有这个好处,空余时间多,于是平常就看书,很痛苦,没有人请教。

另外就上网到论坛上去,我就到各个专业的技术论坛,其实是电子论坛和嵌入式论坛。我几乎没有发帖,几乎把几个大型的出名的论坛的帖子翻遍了,虽然有很多重复的,我才知道嵌入式是个什么东东。这些帖子对我以后的学习产生了极大的影响。

最关键两点:1、嵌入式是什么?

2、嵌入式需要哪些知识?

知道了这两点,好办!我就开始规划学习路线。计算机的基本理论不能丢,于是重点看组成原理,数据机构,操作系统、c++。同时论坛上了解到,实时操作系统ucos是一个很好的嵌入式操作系统,对初学者很好。于是我就买了一本书,但是代码在电脑里调不通,网上也有很多相同的问题,我就看书,分析代码,一遍不行就两遍,三遍,这样才看了入了门,才知道什么是进程。原来看操作系统书时,根本就不知道进程是个什么东西。

在这段时间掌握的东西不多,但是,对我以后的影响很大,我想起了大学时一个同学跟我说过了一句话:大学里最重要的不是学到了什么,最重要的是学会怎么学!大概是这个意思。

进入我的避难所

对我来讲,再次进入大学不再是大学,而是避难所。希望这次进入给我喘气和养精蓄锐的机会和时间。我是这样认为和实践的。

在学校我有三件事:上课,上图书馆,上网。

对于上课,学校开了很多课程,非常好,很多是名人名师讲解,于是很多同学都想学,都去听。我也考虑过,

最后放弃。我是这样认为的,时间是有限的,什么都想学,什么都学不成。于是我把我自己学的课进行了分化,一般的课程通过就行,重要的一定好好学。我希望不要什么争论学习课程多和少的问题,这仅仅是我的看法。所以我的成绩应该是很差的。分数低。好在后来的单位没有要我的成绩单,否则就惨了。

我个人感觉是上图书馆的效率比在寝室里高多了,这是我的经验。

有人会问,您下了那么多资料,怎么看的完和消化的了呢?

我是这样对待这个问题的:

1、网上资料比较零散,不系统,但是如果把差不多的东西收集起来看就相对完整了,(嵌入式的图书就是这两年特别多,特别是2004年,简直是向外涌!2003年想买本嵌入式,特别是嵌入式linux的不多。)

2、对于像我这种入门的来说,很多看不懂,没关系,反复看,我个人对学习方法的一个总结是:重复是最好的老师!

3、即使有的用不上,也可以收集以后用的上时查阅。

但是我并非什么都要,目前我的技术路线是嵌入式linux,所以像wince之类基本上不

收集。

总之,我在学校里我充分利用时间来学习,我看到一些同学整天的挂在网上打游戏,发

些无关痛痒的帖子,浪费时间呀!我真的很痛心!

学习嵌入式

在这里我把它单独列出,文章有点紊乱,但是内容希望有益。

1、学习linux

根据我在论坛的了解,我选择学习嵌入式linux,刚好我们学校也重视嵌入式linux,从实验室到课程安排都是关于嵌入式linux方面,天时地利!这里我把学习linux的经验和教训说说。

可以这样说,在论坛里说道学习linux差不多就学习linux内核。于是我电脑里安装了linux就开始看linux 内核方面的书了。我记得来学校以前就买到一本陈莉君的讲linux内核的第一版,现在有第二版了。我就开始看那本说,大家说linux内核情景分析不错,我就买了上下册,后来又买了《深入理解linux内核》,最后也买了毛德操的《嵌入式系统》也是分析linux内核代码的,主要讲arm相关的。

看内核期间是个非常痛苦的过程,看情景分析有种在森林中找出路,其间我组织了一些同学学习内核,几乎没有几个能坚持下来的。我认为我是坚持下来了。情景分析在看第一、第二遍是几乎没有摸到门道,我分析有三个方面的原因:1、自己的基础差,这是最关键的。2、内核本身很难。3、没有交流和高人指点。到了第三遍时我才摸到门,才差不多知道个linux的大概脉络,很多

细节也是稀里糊涂。

学习linux总结,这里声明一下,我指的嵌入式主要是偏向软件的嵌入式。学习嵌入式的重点和难点关键在操作系统,如果没有掌握操作系统,我认为很难把握一个嵌入式系统。即使在做嵌入式开发中,作应有层的开发几乎可以不知道操作系统也可以开发,我认为那是浮在表面的。很难深入和提高自己的层次。声明:一孔之见!不可深究!

在学习linux内核过程中犯了一个极其严重路线错误:对linux几乎不懂就开始学习内核。我个人推荐一个学习路线是:使用linux—〉linxu系统编程开发---〉驱动开发和分析linux 内核。而我差不多相反,实际上你不会使用linux也可以学习内核,但是如果你懂了这些东西学习更有效率。

关于要不要学习内核的问题,我的回答如下:不一定。如果你是喜欢钻研的那你进入内核会满足你的欲望。同时对你以后的嵌入式系统的开发有很好的影响。如果你想从事嵌入式linux系统开发,最好对内核有所了解。如果仅仅是做应用开发没有必要。我打个比喻:c、c++、java等语言是武林中的某个武林派别的话,如什么拳法,什么刀法等,那么linux 内核应该是一个人的内功的反应。怎么开始学linux内核:最好有三件宝物:《深入理解linux内核》《情景分析》和源代码。

先看《深》,那主要讲原理,好像市场上有本讲原理性并且更浅,《linux内核设计与实现》听说不错。如果没有学习操作系统的,像我这样的,最好先看看操作系统原理的书。看了几遍后,就看情景分析,最好对着《深》看。两本交叉看,《深》是纲,《情》是目。最后深入代码。

2、学习嵌入式linux

学习嵌入式,我认为两个重点,cpu和操作系统,目前市场是比较流行arm,所以推荐大家学习arm。操作系统很多,我个人对开始学习的人,特别不是计算机专业的,推荐学习ucos。那是开源的,同时很小。学习很好。为什么选linux,我不想讲太多,网上这方面的太多,但是我在工作中发现,做linux的技术路线很难,在windows几乎不会有的问题,在linux开发中几乎遍地陷阱。一掉进去划很长时间出来,一旦解决自己又长进了!相对来说开发周期长,难度大。现在资料也逐渐丰富起来,难度也降低了些!

至于怎么学习,这是他的特色地方,必须有块开发板,我是同学里最早买学习板的,虽然化钱,我认为值。对我实习和工作产生了很大的影响。

如果没有开发板,那是纸上谈兵。有人说,那要1000-2000亚,的确是,兄弟,看长远的,对您的职业和发展那点钱不算什么!有的人说我站着说话不腰痛,好吧,钱这东西对我影响很大,我在大学里扫厕所,扫的不错,奖5元/月。兄弟你有过吗?我认为教育投资是效益最有保障的!我实习拿3k,很多同学拿1-2k,当然比我高的也有。虽然我现在没有毕业,但一家公司就签了。从事目前流行的高档的消费电子的研发。对于我两年前一无所知的我,应该有质的变化,我感谢学校收了我这个废品。当然我也非常的努力。说这么多并不是要炫耀我什么,实际上根本不值得炫耀,虽然现在工作环境和待遇比较满意,但是,我发现我很差,特别是代码能力,我希望平常大家少玩游戏,多编程。编程才是硬道理!

3、学习板和培训

你可以不接受培训,但是不能不买开发板。如果你想学习嵌入式一定要买块学习板,最好买块arm9的,贵些也值。可以跑高级操作系统。这个不要什么品牌公司的,一般不会出什么问题,市场上的板子一般是三星的2410,基本上是抄的。如果是做产品那要注意些。一般的公司一般要2000,加lcd 要3000甚至更多。我接触到有的板只要1200,加lcd也就2000,差别比较大,我认为学习都够啦。

对于培训,如果有条件最好参加,主要是嵌入式相对别的不同,自己摸索很费时,如果有高手指点非常的好,进步快。特别是认识做这些的朋友。我接受过培训,认识个朋友。在以后的工作中帮我很多,在这里谢谢他!我记得哈佛的一个mba的学生这样说,大意是:在哈佛学到什么不重要,最重要的是这些未来各大公司的高级管理人员是我的同学!真是有远见!

目前市场是培训比较贵,一个星期两三千,真正算起来也要,那些讲师待遇绝对不会低。但是有个致命的问题是连续上课,一连几天,效果不佳。我希望社会上多出些1000元左右,并且时间长些,如一个月,一周一到两次课。如果没人做,我来做,哈哈!

没有想到,一下写了这么多,其实还想写的,比如在中科院的一位老兄是怎样学习linux内核和看书的,真的很感动。他的为人我很钦佩。

嵌入式的培训心得体会

嵌入式的培训心得体会 嵌入式的培训心得体会1 8月我参加了学校安排的课题实训,基地在北京,学院安排我们集体坐火车一同前去,浩浩荡荡的队伍开始出发了。刚来北京的时候,映入眼绵的都是高楼大厦,一直想到的地方终于到了,好多以前的同学听说我要去北京实训都很羡慕不已,我自己也隐隐感到自豪。 我参加的课题实训是嵌入式方向的,开课的内容主要是嵌入式开发方面的,C语言,数据结构,LINUX基本操作,网络编程,操作系统和汇编语言,这些都是嵌入式不可缺少的。 每个专业技能都决定了你以后找工过。我们班分了很多小组,每组都有小组长,小组长直接对我们负责。教课老师很认真,都是从很基础的开始讲;同学们听课也很认真,由于代码操作比较多,键盘的声音源源不断的在响。好久没有感觉到这种浓重的学习气氛了,而在这紧张而充实的学习氛围中我获益匪浅,感受颇多。 授课过程中老师们也传授了一些找工作方面的经验,比如简介的样式和写法,面试中的一些着装,礼貌用语和技巧,对此基地的老师还精心的为我们安排了一场模拟面试,在其中我们学到了很多有关于面试方面的经验。

通过这几个月的实训我学到了很多,同时也让我们意识到我们要学的更多。从程序的设计到编写、画图、调试、修改、完善、到最后的实训报告,每个人都付出了时间和精力去做好自己的任务帮助队友,所以团队的合作和队友之间的相互协助非常重要。 通过实训让我们更深一步的对自己的专业,对自己的能力,对自己所学的有正确的认识,并且能在以后的学习工作中不断提高和完善自己。 特别是讲C语言和进程通信中老师给了我们每个小组的几个小项目,让我学到了更多项目经验,这在学校之前是没有的。这次实训也碰到了些问题,比如项目文档的写法,代码的规范,流程图的画法,这些都有讲究,在老师和同学的帮助下,我不断的提高了在这些方面的学习。 生活上班主任郭老师和王老师对我们关怀备至,让我们没有感觉在外面的那种不适感,同学们也互帮互助,所以生活上大致没什么问题,这让我们更好的去学专业。很感谢学校有这样的实训安排。 总的来说,这次实训还是比较成功的,无论是个人动手能力还是团队协作能力都得到了很好的锻炼。在实训过程中老师也交给我们很多简单实用的技巧。我们也学到了,做好做对一个项目固然重要,同时美观程度也是必不可少的,无论是从参观者的角度还是自己看的角度都很重要。

嵌入式学习心得体会5篇

嵌入式学习心得体会5篇 嵌入式学习心得体会(一) 首先我声明,我是基于嵌入式系统平台级设计的,硬件这个方向我相对来讲比较有发言权,如果是其它方面所要具备的基本技能还要和我们培训中心其它专业级讲师沟通。他们的方面上我只能说是知道些,但不是太多,初级的问题也可以问我。 对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的modem 射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15k以上。 另一类就是数字部分了,在大方向上又可分为51/arm的单片机类,dsp类,fpga 类,国内fpga的工程师大多是在ic设计公司从事ip核的前端验证,这部分不搞到门级,前途不太明朗,即使做个ic前端验证工程师,也要搞上几年才能胜任。dsp 硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。 而arm单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互pk,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单的连接,比如pxa255处理器i2c要求速度在100kbps,如果把一个i2c外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接lcd,但为什么这种lcd就不能挂在arm的总线上,还有arm7总线上可以外接个winband的sd卡控制器,但为什么这种控制器接不到arm9或是xscale处理器上,这些都是问题。 因此接口并不是一种简单的连接,要看时序,要看参数。一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师

嵌入式开发环境搭建步骤

嵌入式开发,通常都是在Linux环境下编译Uboot、Linux和android代码。编译uboot/Linux可以选择任何的Linux发行版,如redhat,suse,ubuntu,fedora,debian等,只要你配置好ARM交叉工具编译工具就可以了。 编译android,搭建环境最容易的就是ubuntu。google的官方网站上,也有搭建编译android的简单介绍,可以搜索下,网络上有相当多这方面的说明。 考虑到我们学习嵌入式的平台是Fast Models,以及自动的Realview EB模型硬件平台。而ARM官方推荐是在Redhat Enterprise(4,5,6)下安装Fast Models。所以,我们采用Redhat Enterprise 6作为开发环境。我们可以直接在电脑上安排RHEL6,也可以先安装vmware,然后在vmware中创建一个虚拟机,在虚拟机上安装RHEL6。在这里,小编是采用后者方式。 搭建Redhat Enterprise 6开发环境,建议做以下配置: 1)设置静态IP。在之前使用vmware的经历,发现如何网站采用dhcp方式,那么rhel6的IP地址有可能会发现改变。而我们需要网络IP最好是固定的,所以需要设置静态IP。RHEL6的静态IP的设置方法,可以搜索到。 2)开启ssh,samba服务 ARM嵌入式开发,基本上都是在命令(shell)方式下进行的,不需要图形界面。所以,在windows上运行vmware,vmware上虚拟机再运行rdel6的情况下,为了不增加windows系统的负荷,可以把vmware放在后台运行,使用ssh服务登陆到rdel6就可 以进行嵌入式开发了。 小编在开发嵌入式时,通常都是使用sourceinsight阅读、修改代码,然后在shell运 行命令进行编译。所以,开通samba服务,然后使用windows已安装的sourceinsight 工具,阅读放在rdel6上的Linux/uboot代码。 在Redhat发行版下,有关服务器的开启或关闭,可以在root用户下,使用setup命 令进入配置选项的“System Services”菜单下进行设置。 samba服务在菜单选项为:“smb”;ssh服务在菜单选项为:“sshd” 需要注意的是:windows下,要使用ssh服务/samba服务登陆vmware虚拟机上的rhel6,必须把rhel6上的防火墙关掉。setup命令--->Firewall Configuration--->去掉Enable。

嵌入式实验心得体会

嵌入式实验心得体会 嵌入式实验心得体会是计算机专业应该具备的常用知识,以下这篇范文整理个人对嵌入式系统的认识,和进行操作之后的个人体会,对操作的疑难的反思。下面是这篇嵌入式实验心得体会 嵌入式实验心得体会 学期开始,我们开始学习《嵌入式系统及应用》,由于初次接触嵌入式系统,感觉蛮难的,所以收获不是很大,很多的概念都比较模糊,等到学期结束开始做嵌入式课程设计时,真是茫然无从下手,自,从拿到设计主题后,我就从像热锅像上的蚂蚁,一个字“急”。最后实在没有办“法,逼着自己去学法 习,查资料,总算对嵌入式有了资浅层理解。浅 嵌入式系统本本身是一个相对模糊的定义义,一个手持的mp3和一个一pc104的微型工业业控制计算机都可以认为是嵌入是式系统。总体来说,嵌入式系统是“用于控,制,监视或者辅制 助操作机器器和设备的装备”。一个典典型的桌面linux系统统包括3个主要的软件层---linux-内核、cc库和应用程序代码。内核核是唯一可以完全控制硬件的层,内核驱动程序代件表应用程表序与硬件之间进行行会话。内核之上是c 库,,负责把posixapii转换为内核可以识别的形形式,然后调用内核,从应应用程序向内核传递参数。应用程序依靠驱动内核。来完成特定的任务。来在了解了基础知识之后,我了开始进行上机操作,当然开,,其中遇到很多的难题,很多东西都是第一次接触很,又没有别,人在旁边指导操作,完全凭借自己去摸操索索练习。其中的困难可想而知。然而坚持就是胜利而,,牙一咬眼一闭坚持做下去去,而通过本次实验,我感觉收获还是蛮多的。可感能我对于嵌入能式的知识学习的还是不太多,但是这习之外的东西收获颇丰。之

嵌入式软件开发流程图

嵌入式软件开发流程 一、嵌入式软件开发流程 1.1 嵌入式系统开发概述 由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图1.1所示。 图1.1 嵌入式系统开发流程图 在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择。往往通过硬件实现会增加产品的成本,但能大大提高产品的性能和可靠性。 再次,开发环境的选择对于嵌入式系统的开发也有很大的影响。这里的开发环境包括嵌入式操作系统的选择以及开发工具的选择等。比如,对开发成本和进度限制较大的产品可以选择嵌入式Linux,对实时性要求非常高的产品可以选择Vxworks等。

1.2 嵌入式软件开发概述 嵌入式软件开发总体流程为图4.15中“软件设计实现”部分所示,它同通用计算机软件开发一样,分为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。其中嵌入式软件需求分析与硬件的需求分析合二为一,故没有分开画出。 由于在嵌入式软件开发的工具非常多,为了更好地帮助读者选择开发工具,下面首先对嵌入式软件开发过程中所使用的工具做一简单归纳。 嵌入式软件的开发工具根据不同的开发过程而划分,比如在需求分析阶段,可以选择IBM的Rational Rose等软件,而在程序开发阶段可以采用CodeWarrior(下面要介绍的ADS 的一个工具)等,在调试阶段所用的Multi-ICE等。同时,不同的嵌入式操作系统往往会有配套的开发工具,比如Vxworks有集成开发环境Tornado,WindowsCE的集成开发环境WindowsCE Platform等。此外,不同的处理器可能还有对应的开发工具,比如ARM的常用集成开发工具ADS、IAR和RealView等。在这里,大多数软件都有比较高的使用费用,但也可以大大加快产品的开发进度,用户可以根据需求自行选择。图4.16是嵌入式开发的不同阶段的常用软件。 图1.2 嵌入式开发不同阶段的常用软件 嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分,其中又可以分为编译和调试两部分,下面分别对这两部分进行讲解。 1.交叉编译 嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在第3章中已经提到,编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。嵌入式系统交叉编译环境如图4.17所示。

嵌入式学习心得

嵌入式学习心得 如何学习嵌入式系统(基于ARM平台) 前言 网上看到众多网友都问了关于嵌入式系统方面的很多问题,很多都可在这里找到答案,希望我的这篇文章能给他们以启发。也请大家不要轻易转载。 一、嵌入式系统的概念 着重理解“嵌入”的概念 主要从三个方面上来理解。 1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部,还有PC 机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址,可用于网关交换用,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。IXP系列最高主频可以达到1.8G,支持2G内存,1G×10或10G×1的以太网口或Febre channel的光通道。IXP系列应该是目标基于ARM体系统结构下由intel进行整合后成Xscale内核的最高的处理器了。 2、从软件上前,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM中。而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等等选择,如果我们选择了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装。 3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM中就实现了一个真正的“嵌入”。 以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,历为毕竟嵌入式系统是计算机范畴下的一门综合性学科 二、嵌入式系统的分层与专业的分类。 嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。 1、硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。 硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口技术、C语言。 2、驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows 下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运

嵌入式心得体会

对于电焊,虽然一点都不陌生,但亲手操作的机会却只有几次,因此我很庆幸能够有这样的焊接机会,进行这样的实践。 焊接看似容易,实则需要长时间练习才能掌握。刚开始的时候,手一直在抖,尤其这次焊的还是贴片电容、电阻,原器件比以前焊的小好多,用镊子的手一抖就夹不住了,拿着烙铁的手抖得都不容易将器件焊上,焊出来的焊点也特别难看,在不断尝试,不断挑战自我的过程中,我的手不抖了,也基本能掌握锡的用量了,当焊点终于不再“丑不忍睹”的时候,对焊接也没有当初的恐惧了。对自己的动手能力也有了信心。 在焊接的过程中我学到了许多以前我不知道的东西,比如,以前我只知道有电烙铁,但不知道它还有好多种类,有单用式、两用式、调温式、恒温式、直热式、感应式、内热式和外热式。松香可以将多余的锡弄下来,用酒精可以把板擦的干净些。通过视频和查找资料,知道了在焊不同的器件时用的电烙铁的头不同,比如在焊引脚时要用尖头,焊CPU时要用刀口,为防止锡将焊引脚的小孔堵住,用松香把纸条粘在小孔上,把小孔盖住,把CPU的引脚对齐,用锡先涂满两边,固定好芯片,在焊另外两边,然后用尖头的电烙铁沾着松香将多余的锡弄下来。 本次课程设计的是信号发生器,信号发生器在EDA课程,数字信号处理课程中都曾涉及,所以还是较为熟悉的,在设计之前查阅了一些相关书籍,也从网上查找了一些相关资料,程序代码中运用到了C语言,将程序加入到嵌入式结构框架中,进行定义变量,端口,设定所用的GPIO参数等等。 在焊接的过程中我不仅学到了知识,而且让我深深地体会到一个团队中各成员合作的重要性,要善于团队合作,在进行团队合作的时候,还要耐心听取每个成员的意见,每个人都有长处和短处,只有在包容别人的同时我们才可以取长补短,不断完善和不断进步,交到更多的朋友,学到更多的知识。同时还让我明白:做任何事都要一心一意,严谨认真,反复琢磨,不能畏惧,要有信心和勇气,一定要做好充分的准备。不能盲目去做,要坚持,还要学会反思跟总结,我们不是为了完成任务而完成,这还是一个学习跟提高的过程。 在大学里学的不是知识,而是一种叫做自学的能力。在这个知识爆炸的时代,知识更新太快,靠原有的一点知识肯定不行。以后的工作中肯定会用到一些新的

实验1(嵌入式开发环境实验)

实验1:嵌入式Linux开发环境 一、实验目的 熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。使用Linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。 二、实验内容 1、在linux系统下,利用C语言来编写应用程序,并进行交叉编译,生成可在目标实验台上运行的目标文件。 2、建立宿主机与目标实验台仿真终端连接,为目标实验台建立Linux系统终端窗口。 3、建立宿主机与目标实验台的共享连接,以便下载和运行最终可执行文件。 三、预备知识 C语言的基础知识、程序调试的基础知识和方法,Linux的基本操作。 四、实验设备及工具(包括软件调试工具) 硬件:UP-NETARM2410-S嵌入式实验平台、PC机Pentium 500以上, 硬盘10G以上。 软件:PC机操作系统REDHAT LINUX 9.0+MINICOM+ARM-LINUX开发环境 五、主要实验步骤: 1、打开PC宿主机电源,选择进入Linux系统。在PC宿主机的/arm2410s/exp/Basic目录中创建用户个人工作目录,例如“cao”。 2、单击鼠标右键选择“新建终端”,建立宿主机Linux命令终端窗口,在[root@localhost root]#命令提示符下进入个人工作目录“cao”中。 即:[root@localhost root]#cd /arm2410s/exp/basic/cao 3、利用“vi”编辑hello应用程序,并保存为hello.c文件。 即:#cd /arm2401s/exp/Basic/cao #vi hello.c 进入vi编辑窗口,编辑hello.c文件…… 4、利用“gcc –o”命令对hello.c文件进行编译,生成可在PC宿主机上执行的目标文件hello.pc。 即:#gcc –o hello.pc hello.c, 为了验证结果正确性,可在PC宿主机上执行hello.pc文件。 即:#./hello.pc 5、为了在实验台上下载运行hello文件,需要对hello源文件进行交叉编译,以便生成能够在实验台上运行的目标文件。利用“armv4l-unknown–Linux-gcc –o命令”进行交叉编译,生存目标文件hello.o。 即:# armv4l-unknown-Linux-gcc -o hello.o hello.c (注意:这里的“armv4l-unknown–Linux-gcc –o”交叉编译命令输入方法是使用键盘输

嵌入式开发学习心得

个人学习嵌入式心得体会 就我个人而言,从最开始对嵌入式一窍不通到现在越学越感兴趣,当然相应在嵌入式方面的提高也是很明显的。学习潜入式越来越成为我学习生活的一部分,现在把我的学习过程与大家一起分享,希望那些和我一样对嵌入式想学而又迷茫,不知从哪入手的同学朋友有所帮助。 一、语言基础 嵌入式开发很大一部分靠C语言,尤其在底层驱动等用的很多,当然在应用开发还用到诸如C++等其他语言,但我想对于一个初学者有C基础就足够了,等到学到一定程度再去扩展。所以,C 基础是学嵌入式的前提。 二、单片机等知识的储备 我觉得单片机、嵌入式等这一类都有很大的相似性,知识功能不一样,但工作的原理、控制原理都和大的相似。就我个人而言,能比较快的进入嵌入式的学习与提高,很大一部分依赖于对单片机的原理有较深入的学习和理解,单片机比较简单,学习起来相对比较容易,所以我建议哪些想学潜入式的同学,可以和我一样从单片机入手,那样不仅可以理解这些微处理器、微控制器的操作与控制原理,当然还可以顺便学学汇编语言,这对后面的嵌入式学习都有很大的帮助。 三、接受培训 暑假,我在学院的组织下参加过ICC的嵌入式培训,虽然接触的都是皮毛,但是对我进入嵌入式的学习起了一个很好的引导作用。所以,如果有条件的可以去报名正规的专门的培训班,这样如果遇到问题也可以比较容易的得到老师或专业人士的指导,提高学习效率。 四、买开发板自己动手做 个人觉得这是最重要的一种做法。这东西没自己亲手做,程序没亲手写,没有进行调试等,都是很难学到东西,因为很多东西感觉看的都懂,其实真正做起来就什么都不会了。因此买块板来自己做,这样才能真正将所学的应用到实际中去。而且这样做映像很深,死记硬背原理及规则不但不可行还会拖垮你的学习兴趣,自然学不下。 总之,我觉得,基础知识很重要,但是动手做更重要!我能说的就这些了,能力有限,不好的地方请指教!

嵌入式实习报告总结

嵌入式实习报告总结 随着信息化技术的发展和数字化产品的普及,以计算机技 术、芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用的热点,通信、计算机、消费电子技术(3C)合一的趋势正在逐步形成,无所不在的网络和无所不在的计算( , )正在将人类带入一个崭新的信息社会。 二、实习目的 学习和了解了嵌入式在生活中的重要作用和发展过程,熟练掌握硬件体系结构,熟悉下的嵌入式编程流程,积累自己的软件编写经验,能够参与并实现一个真实和完整的嵌入式项目,为今后的学习和将从事的技术工作打下坚实的基础 三、实习任务 第一阶段操作和编程基础 主要介绍的基本命令和基础编程知识,包括 的文件操作和目录操作命令,编辑器,编译器,调试器和项目管理工具等知识。 第二阶段嵌入式C语言编程基础 主要介绍在嵌入式开发编程中C语言的重要概念和编程技巧中的重点难点,以复习串讲和实例分析的形式,重点介绍包括函数与程序结构,指针、数组和链表,库函数的使用等知识。

第三阶段上C强化编程训练 主要包括整数算法训练,递归和栈编程训练,位操作训练,指针训练,字符串训练和常用C库函数编程接口实践,强化学员对下基本编程开发的理解和编码调试的能力。 第四阶段环境高级编程及项目开发编程实践 主要包括系统编程(信号/系统调用/管道消息队列/共享内存等),文件编程(文件描述符/文件读写接口/原子操作/阻塞与非阻塞等,多任务和多线程编程(进程标识/ 用户标识与多线程概念/线程同步等),网络编程(网络基本概念/套接口编程/网络字节次序结构编程);掌握下编程的开发流程,熟悉网络编程的调用接口函数和相关数据结构,使学员初步具备在上进行系统编程开发的能力。同时综合之前所学内容和编程技术,以小组为单位进行一个团队合作项目的开发,考核内容包括文件编程,多线程编程,网络编程和项目文档编写。 第五阶段嵌入式处理器体系结构及编程实践 主要介绍体系结构及其基本编程知识,包括指令分类,寻址方式、指令集、存储系统、异常中断处理、汇编语言以及C\和汇编语言的混合编程等知识。同时结合嵌入式开发板硬件设计原理和基本硬件设计流程,分析各种外设的工作原理和驱动机制,并自己动手实践完成一个开发板上的编程大作业。

嵌入式心得体会解读

嵌入式心得体会 嵌入式心得体会一:嵌入式学习心得体会 4月10号,为期一个阶段的Linux开发基础培训课程圆满结束,回首这些天所留下的点点滴滴,感触深深,学习上知识点的积累,灵活运用的过程中感受到了Linux操作的快速高效性能,这也是我所追求的效率! 当初初涉培训课程的第一门课程时,都说Linux操作很繁琐复杂,心里总有些顾忌,带着种种不安与些许拼博的决心,开始了自我提升阶段的“充电”,由徐海兵老师教授我们基础课程的培训,我们则像着小学生般认真的记着笔记,仔细听着并学会如何去在实践中运用所学的Linux下的各种强大的命令集。 在Unit 1中,徐老师详细生动的为我们讲述了有关Linux的诞生、初成长以及辉煌的发展至今,今后应用范围则愈来愈广泛,讲解了为Linux这个伟大的OS做出巨大贡献的一位位出色的、伟大的人物,他们那种学习钻研的精神、锲而不舍的信念、勇于把握住难得的机会,从小处着手,踏踏实实的创造出了对人类科技发展做出卓越贡献的Linux(Unix)系统,他们的种种,都值得我们去深刻反省、刻苦学习、传承并永远发展下去。 查看ip地址和重启网络服务是我学的第一个命令: ifconfig eth0、ifconfig eth0 IP 地址、service network restart。了解到远程登录软件可用xmanager。 secureCRT是我们常用的,安装好后利用其登录到了Red hat Linux,需要知道Linux 主机的ip 地址。徐老师为我们介绍了重要内容:SHELL,即运行程序的程序,如echo $$SHELL可查看SHELL的环境变量是csh还是bash。指令pwd可查看当前所在路径,passwd:更改Linux下的密码,仅限root用户有此权限,当然我们是利用虚拟机VMware 程序来运行Linux OS的,懂得了如何设置虚拟机的网卡设置、暂停、恢复、全屏等。 简单的学习后进入Unit 2,命令行的句法让我懂得了用法规则,一系列的命令功能强大:

嵌入式系统开发环境实验

嵌入式系统开发环境实验 一实验目的与要求 1.熟悉Linux系统环境。 2.了解实验板的结构组成。 3.了解嵌入式系统开发的基本知识。 4. 熟悉嵌入式Linux交叉编译环境的建立过程,并通过一个HelloWorld程序的编写、编译、下载运行及调试过程,了解嵌入式开发的基本方法和流程。 二实验设备与软件环境 1.硬件:SemitARM9200开发板,PC机PIII800MHz,256MB以上,串口线(公母)1条,网线1条,7.5V 电源1个。 2.软件:RedHat 9.0以上Linux操作系统. 三实验原理 1.宿主机开发环境 绝大多数的Linux软件开发都是以Native方式进行的,即本机(Host)开发、调试,本机运行的方式。这种方式通常不适合于嵌入式系统的软件开发,因为嵌入式系统没有足够的资源在本机(即板子上系统)运行开发工具和调试工具。通常的嵌入式系统的软件开发采用一种交叉编译调试的方式,交叉编译调试环境建立在宿主机(即一台PC机)上,对应的开发板叫做目标板。如下图所示。 开发时使用宿主机上的交叉编译、汇编及链接工具形成可执行的二进制代码,(这种可执行代码不能在宿主机上执行,而只能在目标板上执行)然后把可执行文件下载到目标机上运行。一般调试的方法包括串口调试和以太网口调试。对于本实验板,目前可采用串口调试,操作系统经过修改可以实现以太网口调试。宿主机和目标板的处理器一般都不相同,宿主机为Intel或AMD处理器,而目标板如本实验板的处理器为ATMEL AT91RM9200 。GNU编译器提供这样的功能,在编译时可以选择开发所需的宿主机和目标机从而建立开发环境。所以在进行嵌入式开发前第一步的工作就是要安装一台装有指定操作系统的PC机作宿主开发机,宿主机上的操作系统一般要求安装Linux,但Linux由多个发行版本,在此,我们推荐使用Redhat 9.0作为本实验板的宿主机PC操作系统(https://www.360docs.net/doc/0b16306843.html,可以下载)。然后要在宿主机上建立交叉编译调试的开发环境。环境的建立需要许多的软件模块协同工作,这将是一个比较繁杂的工作,但现在只要安装我们提供的光盘,开发软件包及GNU编译工具已完全自动完成了。 当开发环境安装完毕后,会在根目录下生成两个目录:工作目录/home/arm和交叉编译环境目录/usr/local/arm。

嵌入式linux学习心得(精选多篇)

嵌入式linux学习心得(精选多篇) 第一篇:嵌入式linux学习内容 知识结构 1嵌入式处理器与裸机程序开发2linux系统管理3linux 应用程序开发4linux驱动程序开发5linux内核开发与系统移植 一、处理器 1arm处理器工作模式2arm系统寄存器3arm寻址方式4arm汇编指令集5arm环境c语言编程6arm中断与异常7ads 集成开发环境 8裸机程序开发(串口、lcd、时钟、led、按键……) 二、系统管理 1linux定制安装2linux命令详解 3samba、nfs、tftp、wireshark使用4shell编程 三、应用程序开发 1gcc、gdb、makefile2文件、时间编程

3多进程、多线程程序设计4进程间通讯5网络编程 6qt图形化应用程序开发7android图形化应用程序开发 四、内核开发 1linux内核配置与裁剪2linux内核模块开发3根文件系统制作4进程子系统5内存子系统6proc文件系统7系统调用8内核定时器9内核异常分析 五、驱动程序开发 1字符设备驱动程序2总线、设备、驱动模型3硬件访问技术4中断处理5input设备驱动6platform驱动程序7pci、usb 驱动程序8网卡驱动程序9触摸屏驱动程序xx串口驱动程序 学习顺序 1嵌入式处理器与裸机程序开发2linux系统管理3linux 应用程序开发4linux内核开发基础5嵌入式linux环境搭建6linux驱动程序开发7深入学习linux内核 第二篇:嵌入式linux学习步骤 嵌入式linux学习步骤 作者:phantom时间:xxxx-8-6文章来源:来自网络

嵌入式系统学习心得总结

嵌入式系统学习心得总结 嵌入式系统学习心得总结 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。以下为你带来嵌入式系统学习心得总结,希望对你有所帮助! 嵌入式系统学习心得总结篇1 嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。 看到了嵌入式系统的范围,你也应该知道嵌入式系统工程师是做什么的,就是开发上面的那些电子产品的工程师。 关于如何学习嵌入式? 学习嵌入式,该学习什么基本的知识呢? 首先C语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对C语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用C语言,你说不掌握它可以吗?至于如何学习C语言,我想这些基础的知识每个人都有自己的方法,关键要去学习,看书也好,网上找些视频看也好。很多人会问,

C语言要学到怎么样,我觉得这没有标准的答案。我想至少你在明白了一些基础的概念后,就该写代码了,动手才是最重要的,当你动手了,遇到问题了,再反过来学习,反过来查查课本,那时的收获就不是你死看书能得到的。 其次,应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的,当然,不是看书就能把这些理解透,如果不是一时能理解,没关系,多看看,结合以后的项目经验,会有更好的理解的。 还有应该学习嵌入式系统,如linux或者wince下的编程,这些对以后做应用的编程很有帮助,当然,如果做手机的话,那可以学习MTK、塞班、Android等操作系统,Android是以后发展的趋势,现在很热门,Android也是基于linux系统封装的,所以建议先学习下linux。 还有,应该学习下单片机或者ARM或者MIPS,很多人说我没有单片机的经验,直接学ARM可以吗?我觉得那完全没有问题的,当然如果你学习过单片机,那最好不过了,以后学习ARM就更简单了。 最后如果你把以上的知识都有所了解后,就该去阅读阅读一些优秀的代码,比如结合arm芯片手册学习去学习下UBOOT的源代码,了解下最小的系统开发,那对你整个嵌入式开发的非常有帮助的,可以的话,还可以学习下linux的源代码,当然如果你直接阅读2.6的代码,我想你会很痛苦的,可以先看看linux 代码早期的版本,比如0.12 的代码等等,麻雀虽小,五脏俱全,如果你全看完了,那我想

嵌入式学习心得体会5篇

嵌入式学习心得体会5篇 心得体会是指一种读书、实践后所写的感受性文字。一般分为学习体会,工作体会,教学体会,读后感,观后感。以下是小编整理的嵌入式学习心得体会5篇,欢迎阅读参考! 嵌入式学习心得体会(一) 首先我声明,我是基于嵌入式系统平台级设计的,硬件这个方向我相对来讲比较有发言权,如果是其它方面所要具备的基本技能还要和我们培训中心其它专业级讲师沟通。他们的方面上我只能说是知道些,但不是太多,初级的问题也可以问我。 对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的modem射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15k以上。 另一类就是数字部分了,在大方向上又可分为51/arm的单片机类,dsp类,fpga类,国内fpga的工程师大多是在ic设计公司从事ip核的前端验证,这部分不搞到门级,前途不太明朗,即使做个ic前端验证工程师,也要搞上几年才能胜任。dsp硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。 而arm单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互pk,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单的连接,比如pxa255处理器i2c要求速度在100kbps,如果把一个i2c外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接lcd,但为什么这种lcd就不能挂在arm的总线上,还有arm7总线上可以外接个winband的sd卡控制器,但为什么这种控制器接不到arm9或是xscale处理器上,这些都是问题。

嵌入式学习心得体会例文

嵌入式学习心得体会例文 篇一 1、熟悉CPU。x86中存在实模式和保护模式,CPU一上电后进入的是实模式,要进入保护模式则需要做一定的设置,最后做一个长跳转,就能进入保护模式。对于这一处理器的熟悉和了解,使得我对于处理器有一个很好的认识。此外,还得明白什么是芯片组、PCI的原理和配置方法、SDRAM如何配置、IDE 的PIO模式如何工作。 2、熟悉uC/OSRTOS并对其进行扩展。理解任务是如何实现的、任务是如何被调度的、Mutex和Semaphore是如何实现的、对处理器进行开关中断的目的是什么且要注意什么,等等。对于RTOS的扩展则包括实现了一个采用malloc/free进行内存分配的堆管理模块,这一管理模块是参照XINU操作系统来实现的;对任务调度部分进行修改以方便中断服务程序的管理。 3、MINUX操作系统的文件系统移植到我们的DVR上。MINUX 中采用的就是UNIX中的i-node的方式来管理文件的,这种方式在现在的Linux中也能看到。由于MINUX的文件系统是针对小型存储设备的,所以对其代码要进行修改,以适应当时所采用的上G的硬盘。 4、XINU中的TCP协议栈移植到DVR上。 以上的工作内容让嵌入式技术人员对于操作系统的原理和

实现得到了很好的实操。不过在嵌入式系统开发领域中这也只 是入门级别。后续还有处理器操作、RTEMS操作系统、编译器 和C语言的使用等都需要嵌入式开发人员慢慢精通。 篇二 学期开始,我们开始学习《嵌入式系统及应用》,由于初次接触嵌入式系统,感觉蛮难的,所以收获不是很大,很多的概 念都比较模糊,等到学期结束开始做嵌入式课程设计时,真是 茫然无从下手,自从拿到设计主题后,我就像热锅上的蚂蚁, 一个字急。最后实在没有办法,逼着自己去学习,查资料,总 算对嵌入式有了浅层理解。 嵌入式系统本身是一个相对模糊的定义,一个手持的mp3 和一个pc104的微型工业控制计算机都可以认为是嵌入式系统。总体来说,嵌入式系统是用于控制,监视或者辅助操作机器和 设备的装备。一个典型的桌面linux系统包括3个主要的软件层---linux内核、c库和应用程序代码。内核是可以完全控制硬 件的层,内核驱动程序代表应用程序与硬件之间进行会话。内 核之上是c库,负责把posixapi转换为内核可以识别的形式,然后调用内核,从应用程序向内核传递参数。应用程序依靠驱 动内核来完成特定的任务。 在了解了基础知识之后,我开始进行上机操作,当然,其 中遇到很多的难题,很多东西都是第一次接触,又没有别人在 旁边指导操作,完全凭借自己去摸索练习。其中的困难可想而

嵌入式学习心得体会

嵌入式学习心得体会 BAKYANNMYRADOV 01 这学期才接触嵌入式系统感觉还称不上入门,我通过学习知道了嵌入式的发展前景很大,各个领域都用到了嵌入式,学好嵌入式不愁没饭吃。 广义上讲,凡是带有微处理器的专用软硬件系统都是嵌入式系统。如各类单片机和DSP系统。从狭义上讲,那些使用嵌入式微处理器构成独立系统,具有自己操作系统,具有特定功能,用于特定场合的专用软硬件系统称为嵌入式系统。嵌入式系统由嵌入式硬件与嵌入式软件组成; 嵌入式硬件以芯片、模板、组件、控制器形式埋藏于设备部。理解“嵌入”的概念主要从三个方面上来理解。 1、从硬件上,将基于CPU的处围器件,整合到CPU芯片部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU部,还有PC机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址,可用于网关交换用,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。IXP系列最高主频可以达到1.8G,支持2G存,1G×10或10G×1的以太网口或Febre channel的光通道。IXP系列应该是目标基于ARM体系统结构下由intel进行整合后成Xscale核的最高的处理器了。

2016arm嵌入式学习心得

2016arm嵌入式学习心得 嵌入式ARM学习心得【1】 本人大学学的是电子信息科学与技术专业,其实这个专业和嵌入式没有多大的关系,要说有关系就是简单的讲了下C语言语法,学完之后还不知道什么是C语言,只记住了,char,int,string等占几个字节,if,for,while循环什么的,感觉也就能算一些小学就会的题目,全国计算机等级二级也就糊涂的过了。 我这个专业没学过C++,一开始不知道什么是向对象,什么叫面向过程,这可能让大家笑话了。不过这说的是实话,大学的时候比较喜欢动手,喜欢硬件方面的东西,也喜欢看书。在大一的时候就听学长说,单片机很难学,在没事的时候就从图书管借了本关于51的书,一开始还真是不怎么懂,然后硬着头皮去看,当我把51的结构看完了,就不像一开始那样一头雾水了,自己在纸上把51的结构图默画一遍,然后再把各个寄存器功能写一下,各个功能口的结构也画一遍,然后就不觉得51有什么难了。其实有些时候不是这个东西你不会,而是在不会的时候自己先告诉自己这个太难了,自己先放弃了。我们学习51芯片,是为了以后的打基础,知道是怎么通过配置寄存器来实现功能。 大二下学期的时候,我们开了51的课,这个课几乎就没怎么去,因为我认为没有必要去听自己会的东西了。后来听别人说avr的资源会比51的丰富的很多,所以就想试试,看看有什么难的,就从网上买了本马潮老师《AVR单片机嵌入式系统原理与应用实践》,一边看书,一边想自己画一个板了,一开始想实现一个点阵屏,实现滚动效果,后来想想做个板也花不少钱呢,为什么不多加一些功能呢,还能多学到些知识,所以就加了温感,红外,铁电存储器等并把所有的扩展口都扩展了出来,备以后用,那时还挺自豪的呢,同学们都很羡慕,不过现在想想其实也没什么了。 大学也听说过嵌入式这个词,不过不太明白是什么意思,09年的时候从网上找到中嵌视频,有四张DVD(大约13G),下载下来后,从头到尾的看了一遍,没什么印象,只记得讲一些不知所云的函数,然后莫名其妙的讲怎么使用那个44b0的开发板,不过听完了,还是有很大收获的,就有一种想装一个linux的冲动,我是大二下学期才有的自己电脑,不过电脑的配置比较低,1g内存,跑虚拟机就像个蜗牛,所以就想着怎么才能装个linux,自己用XP习惯了,如果全换了又舍不得,那时从书上知道linux的文件系统和windows 不一样,只有一个根分区,所以也害怕一装linux全盘就被格式化了,不过最后还是欲望战胜了担心,买了张redhat9的光盘,小心的装这个系统,里边的英文也不是太难,还是知道大概意思的,所以一步步的装,最后装到我的硬盘的最后空间,重新启动,竟可以选择进入哪一个系统了,从这之后,自己就不害怕怎么装系统了,应了那句言,纸上得来终觉浅,绝知此事要躬行。所以我认为,买一个开发板是完全有必要的,拿到实物操作一下就不会感觉太抽象了。 后来也想学学arm,但不知道arm是什么东西,所以就买了本《从51到arm》,讲的是关于arm的大体结构,看完后感觉,原来arm就是一个速度更快,接口更丰富的单片机啊。 如果想做linux设备驱动的同学应该对arm硬件有一些了解。如果对驱动不感兴趣,完全没有必要去看。交叉编译器会帮我们做好这些事情,他比我们更了解arm结构。 大三下学期开始准备考研了,所以自己这些兴趣就先放下了,报的北邮的信通学院通信专业,当时就是想一定要上个好学校好专业,也没想太多,结果考了的成绩差了点,没有被录取,也不想调剂一个二流的学校,然后就参加工作了,工作中每天都用的到开发板,当我看到一个小板上还可以跑系统的时候感觉很不可思议,以为要很大工程。后来

相关文档
最新文档