




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
我觉得ARM7会被STM32取代,STM32偏向不带系统的工业控制,外围设备甚至比ARM7、ARM9更丰富,而ARM7带不了大系统,想带系统至少也要从ARM9开始。要么直接上ARM9学学系统,要么就顺便学学STM32裸奔,ARM7不上不下没必要去学。追问stm32有什么好书籍吗?发现资料挺少的回答ARM微控制器应用设计与实践个人觉得还是先学习ARM7 ,等学会了之后你自然也就会动的STM32!两者肯定是有区别的,但是这是基本的学习过程。我也是这样走过来的coretex-m3 是现在企业用的最多的cpu ,是arm7的升级版,我觉得arm7 - 微内核 -arm9 -Linux 是做好的学习路径stm32是armv7内核 arm7是armv4内核,构架不同。进阶学习,是选择STM32好还是ARM7,还是ARM9?本人会51,而且做过相应的开发项目,最近想提升自己的能力,但是不知道是选择哪一个为好,是STM32、arm7,arm9,msp430,dsp?没有头绪,请大神指点我建议您选择转向STM32,从开发角度来讲,STM32比51的编程更加简单,厂家的工程代码中提供了很多的库函数来操作GPIO,UART,SPI,AD,TIMER等资源,不需要像51一样去记忆各个特殊寄存器的属性和用途。 STM32是现在市场上性价比非常高的一款ARM产品,使用的是Cortex-M3内核,在同等价位下,其内部资源比51要丰富更多。STM32同系列的产品,在软件和硬件上兼容性很好,尤其是从PIN脚少的芯片更换为PIN脚多的芯片的时候,代码都无需修改就能直接应用。 基于价格和使用性能的因素,STM32在很多产品中得到广泛应用,市场供货基本没有问题,现货相当充足,目前我们公司95%的产品都是基于STM32的。如果你想从事嵌入式应用程序的开发,直接上ARM9开发,学习LINUX或安卓去。如果你想从事嵌入式驱动程序的开发,或者想成为一名博学多才的主管,又或者未来你想成为一名架构师,你需要单片机给你打下硬件基础,那你可以以“低端单片机-高端单片机-低端ARM-高端ARM”来学。我现在就是工作中用STM32,晚上回去自学ARM9。楼主的进阶是指从51到ARM还是指已经基本掌握32位单片机?如果有单片机基础,但是没有玩过ARM,建议学习STM32,甚至说没有玩过单片机想入门的也可以选择STM32,因为STM32例程丰富,资源比较多,市面上成熟的开发板也比较多,而且基本价格都在300以内。而如果楼主已经对32位单片机比较了解,想学习嵌入式系统Linux/WIN CE等,可以考虑6410,或者楼主预算非常充足,可以考虑Cortex-A8/A9的开发板。我个人是比较熟悉STM32,没有玩过ARM9,稍稍玩过ARM7,现在是在学飞凌的6410了。追问我玩的是51系列的单片机,感觉想提升一下,玩32位的,stm32貌似跑不起LINUX系统和WINCE系统,所以就是比较纠结选择哪一个开始作为学习回答其实从51跨到LINUX还是有一定难度的,楼主可以考虑玩ARM9。我个人的学习轨迹是AVR-STM32(UCOSII)- 6410(LINUX)循序渐进,先易后难追问谢谢你,我现在正式在自学ARM9和LINUX系统中两者肯定是有区别的,但是这是基本的学习过程。我也是这样走过来的coretex-m3 是现在企业用的最多的cpu ,是arm7的升级版,我觉得arm7 - 微内核 -arm9 -Linux 是做好的学习路径stm32使用的是ARM公司开发的Cortex-M3内核,就是ARM芯片的一种,使用的是最新的ARM V7内核架构,Cortex还有A、R两个系列专家的建议,初学者学三星的S3C44B0很好,虽然这块芯片被业界用烂了,不是处理器越高的就一定越好,学ARM9,要学Linux,精通Linux内核,这比精通ucosII难度大多了,专家建议先学ucosII,一个非常好的小的嵌入式实时操作系统。相对来说STM32应用更广泛一些,既适合ARM也适合X86。嗯,之前我也纠结过;后来我退回去把51学的烂熟;然后就上了ARM9linux;一路走过来累的半死;就是因为一下上的太多先学完了RAM9的基础,然后又上linux系统移植和内核实在是差的太多吃不透;偶然的一次机会接触了ARM7和stm32;觉得STM32是我用过最好用的ARM芯片;但是缺点也有不能上大系统(也有上大系统的,但是去研究不又从蹈覆辙了吗),主要用于工控。 所以建议先用STM32 容易理解些;向上大的系统的有操作系统的经验,现在工作了才开始研究ucos,先从简单的来,linux可以学对理解系统有帮助不能馅的太深,那是一个深不可测的黑洞。只要好好学都能学好的,希望对你有帮助。学过 简单的 STC单片机 CPLD&FPGA是不是ARM越高端的越好啊,功能越全?是不是 ARM 7,9 和Cotex 上的内容,ARM 11都能干?STM好像很便宜,只是ARM11很贵啊。它们之间具体有哪些区别?不要从硬件角度说,说说编程上的区别和可以实现的功能上说。谢谢ARM 的 内存很大 STM 32 的很小,STM32上面是不是不能装系统?装不上系统,差别大不大?ARM只是一个系列化的核,不同的厂商在它的核周边加上不同的外设而已.STM系列ARM定位在控制器上,也就是说,它的定位相当于高速的8051(只是说可以这么理解,实际比8051要好用的多,不仅仅是速度).从相当一部分来讲,CORTEX M3都能胜任并且强过ARM7,当然不是全部.STM32也可以跑操作系统,比如UCOS一类的.象ARM9,ARM11已经不再是当做单片机了(当然,做单片机也是可以的),通常跑个LINUX,WINCE等等操作系统.装上操作系统与裸奔的最大区别就是编程的时候不用太计较硬件操作,移植好OS以后编程基本上就是使用OS的API而不是象8051那样对硬件直接操作了. 是不是ARM越高端的越好啊,功能越全? A:可以这么说,如果不计算成本的话.是不是 ARM 7,9 和Cotex 上的内容,ARM 11都能干? A:同上STM好像很便宜,只是ARM11很贵啊。 A: 是的,STM最便宜10块左右, ARM11核的芯片都在60以上.而且ARM11还要配DDR RAM, FLASHROM,所以不能只看CPU价格.它们之间具体有哪些区别? A:看上面那一段废话.提问者评价谢啦,第第三个说的也不错,ARM11 过时了.肯定是STM32,基于Cortex-M3架构的STM32本来就是代替上一代的ARM7的以前玩过单片机,做过些小项目,最近想玩玩ARM,不知Cortex-M3的STM32与ARM7学哪个好,同学有玩STM32的,但感觉和单片机差不多,不过功能更强大些,不能上系统。不知工作中哪种用的比较多,高手指教下,谢了!我也是从51到ARM7,ARM9,再到ARM-CORTEX的,你可以先从ARM CORTEX-M3下手。CORTEX是新鲜产物,才推出不到3年,各大厂商ST.NXP,TI.ATMEL都有推出它的产品,ARM7已经上市久了,大家都玩过的。而cortex是ARM公司主推的新架构产品,前景很看好。CORTEX很容易上手,它和51是同样的哈佛架构, 不象ARM7和ARM9是冯架构。可以用KEIL编译器,又让我找回了当年玩51的感觉。中文资料也很多,厂商的封装库也很齐全.特别适合从51转过去的初学者. 要是有不懂的地方可以找我提问者评价谢谢哦啊,呵呵不用去学AVR的,除非非常有必要。51,AVR,ARMv7(STM32),ARM9之间没有必然的联系,不用一步一步去学。51属于简单的单片机,用来了解单片机工作原理什么的,是不错的选择。学习怎么操作单片机寄存器什么的,还有养成良好的编程习惯。AVR使用也不少,你要精通51,将来工作中要用到AVR的话,也就花几天熟悉一下就可以了。STM32跟ARM7不是一回事,STM32的核是CORTEX M3,内核版本是ARMv7不是ARM7。STM32功能,速度,位宽跟51都不一样,强大很多。STM32可以使用UCOS,一般没必要,裸奔挺好,你要学习UCOS的话另说。ARM9已是昨日黄花,工业上应用还好,消费级的都是CORTEX A8/A9了。至于ARM9还是CORTEX A8,本质上相差不大,都是利用别人做好的WINCE,LINUX/ANDROD操作系统上进行开发,NB点的做做移植什么的。想必你应该明白,你说的四种处理芯片互相之间没有多少的联系,不要认为那是进阶一步一步的走。追问主要想参加飞思卡尔小车竞赛,想51熟了,再学一个强大点儿的,那stm32应该就能满足要求的吧?还有推荐一款开发板呗,谢谢!回答飞思卡尔的小车竞赛应该有他们的赞助吧?这个东西没玩过,如果只是寻线够了,要是图像识别的话肯定不够。开发板建议用STM32 DISCOVERY,理由是这个开发板自带JTAG调试工具,USB供电不需要外加电源,价格便宜(100块以下)。缺点是板上集成度很低。如果只是为了小车,建议你上淘宝买专用成品电路板,自己做比买的要高的多。我做了半年51,还有快半年的STM8+STM32。我给你的建议是先把51所有模块学精,然后再学STM32或者ARM9,AVR真的是没必要学了,性价比远没有STM32来的高,甚至STM8都更便宜更好用。STM32多用于工业控制,STM32与ARM9的区别就是STM32的模块数(比如串口数量)可能会更多,唯一不好的是不适合加载操作系统,可以说ARM9裸奔就是STM32。你如果有充足的时间,那你可以学完51直接ARM9,ARM9的资料很多,你的思想要从寄存器操作转向库的操作,难点就是库+操作系统,这时你学的会非常痛苦。据说自学时间在半年。如果你即将工作了,时间很有限,你可以学好51后花一个月时间学STM32,先找一份单片机的工作,熟悉库的操作,用业余时间学学操作系统,等学ARM9学的差不多时你再换一份嵌入式的工作。其实,多学几块芯片是有用的,这些知识都是触类旁通的,而且这样对你视野有帮助。STM8与STM32类似,但是资料很少,并且软件没有KEIL好用,而且下载器又贵,有兴趣可以去了解下。我从事单片机行业快1年,觉得单片机很有限,在考虑做满一年去找一份嵌入式的工作,所以现在买了块MINI2440,用业余时间看看。追问主要想参加飞思卡尔小车竞赛,想51熟了,再学一个强大点儿的,那stm32应该就能满足要求的吧?还有推荐一款开发板呗,谢谢!回答可以满足啊,你上淘宝搜下销量排行就知道买哪块了。追问野火的怎么样?回答应该是不错的,我只用过杂牌的最小系统板,因为便宜公司就用这个。不要只认牌子,杂牌一样可以很好用,主要看模块全不全,以及资料丰不丰富,资料好能让你事半功倍。追问谢谢你啊,决定等51差不多了,入手野火的stm32,不过楼上回答的也挺好的,所以分给她了,别在意,谢谢了不错,我现在也在学习STM32,买了个开发板一年多了,没怎么玩过 UCOS也没跑过我之前从51转到AVR的时候,自己买了二个ATMEGA16 一个13块钱 自己焊了个学习板,主要是你不怕麻烦。追问51转AVR,不是买个芯片还有那个转换线就行了吗?ATMEGA16是什么?刚入门51不太懂回答ATMEGA16 就是AVR中一种不是买个芯片还有那个转换线就行,它也有最小系统,跟51一样你用到什么硬件要自己搭51跟AVR的接口不一样,如果你有一个51学习板,需要一个AVR转51的转接板才可以做实验追问外围硬件准备就用51的外围硬件了,转接板应该逃班上有卖的吧?你是自己焊接的吗?这个应该比较难做吧回答没什么难的,我09年也是自学的51 后来自学AVR 以及现在的STM32 其实硬件电路都比较简单,因为都是数字电路,也不是高频,网上都有很多现成的如果自己有条件可以自己焊接一个学习板 或者 把所有模块加上去自己画个PCB楼上说的没错,单片机的特点就是互相之间相互比较独立,你要是没有用过单片机的话,可以先从51入手熟悉,然后根据具体的工程需求选择适合的单片机方案。裸奔的话CORTEX M3内核就很强大了,如果上操作系统,那么编程和选什么单片机就不重要了,主要去学几个主流操作系统编程。arm7是arm公司推出的以V4指令集设计出来的arm核,基于arm7可以生产出很多CPU芯片,其代表的芯片有s3c44b0等;arm9是arm公司推出的以V5指令集设计出来的arm核,基于arm9其它公司推出了自己的CPU芯片,如三星推出了S3C2440。还有TI啊,ATMEL啊,高通啊都基于arm9推出了自己的CPU芯片。cortex是arm公司推出的以V7指令集设计出来的一系列arm核,其中包括Cortex-M1,Cortex-M0,Cortex-M4,包括你说的Cortex-M3,还有高端的,Cortex-A8,Cortx-A9,Cortex-A15等;基于Cortex其它公司可以生产自己的CPU芯片,如你说的ST公司生产的STM32是就是基于Cortex-M3这个核生产的CPU。现在高端手机中的CPU一般都是基于Cortex-A8,Cortex-A9生产的。以下是简单的arm公司arm核的发展arm7 使用V4指令集 arm9 使用V5指令集arm10 使用V5指令集arm11 使用V6指令集cortex 使用V7指令集小弟最近想自学ARM嵌入式,模数电知识一般,C51没怎么接触,会点C/C+编程和linux下的C编程(进程管理通信以及socket网络编程),以后想往应用发展(内核和驱动对我来说难度太大)。请各位大虾给点学习建议。谢谢你51接触不多,嗯arm9很成熟了,而且有跑裸机的可以看成高级单片机,不过功能更多,然后再来过渡到linux下文来字韦老师的建议: 作为一个新人,怎样学习嵌入式Linux?被问过太多次,特写这篇文章来回答一下。 在学习嵌入式Linux之前,肯定要有C语言基础。汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会)。C语言要学到什么程度呢?越熟当然越好,不熟的话也要具备基本技能。比如写一个数组排序、输入数字求和什么的。学C语言唯一的方法是多写程序多练习,编译出错没关系,自己去解决;执行出错没关系,自己去分析。以前我是用VC来练习C语言的,经常去尝试着写一些C语言竞赛的题目。它们是纯C、纯数学、纯逻辑的题目,不涉及界面这些东西,很适合煅炼你的编程能力。 回到主题,首先我们要明白你的目的是什么,大概来说所谓嵌入式Linux可以分为两部分:底层系统、应用开发。 如果你是想做应用开发,那么你去把C语言、数据结构、JAVA什么的学好吧。嵌入式应用开发和PC上的应用开发并没有什么特别要注意的。也许你说在嵌入式上要做些优化,是的,要优化,但是未经优化的程序和PC上的程序开发没什么差别。另外,当你有能力去优化时,你已经不用来问这个问题了。具体到某个例子,比如说开发界面,在PC上我们用VC;在嵌入式Linux里也许我们用QT也许用Android,这个时候你应该去学学QT、Android的编程。但是基础还是C或JAVA,在此基础上去熟悉它们的接口。你学过VC的话,也是要花时间去了解那些类、控件的。 如果你的目的是想学习底层系统,这是我的专长,倒是可以说一点。 在回答这个问题之前,我先回答:不少人问我,到底是学驱动还是学应用? 我只能说凭兴趣,并且驱动和应用并不是截然分开的 1. 我们说的驱动,其实并不局限于硬件的操作,还有操作系统的原理、进程的休眠唤醒调度等概念。 想写出一个好的应用,想比较好的解决应用碰到的问题,这些知识你应该懂 2. 做应用门槛低,特别是现在的ANDROID,纯JAVA。做应用的发展路径个人认为就是业务纯熟。 比如在通信行业、IPTV行业、手机行业,你了解行业的需求。所以,当领导的人,多是做应用的。3. 做驱动,其实我不想称为“做驱动”,而是想称为“做底层系统”,做好了这是通杀各行业。我工作几年, 做过手机、IPTV、会议电视,但是这些产品对我毫无差别,因为我只做底层。他们的业务跟我没关系。 当应用出现问题,他们解决不了时,我就会从内核角度给他们出主意,给他们提供工具。 做底层的发展方向,个人认为是技术专家。 4. 其实,做底层还是做应用,之间并没有一个界线,有底层经验,再去做应用,你会感觉很踏实。 有了业务经验,你再了解一下底层,很快就可以组成一个团队。 回到怎么学的问题上。嵌入式Linux底层系统包含哪些东西?不要急,举一个例子你就知道了。1. 电脑一开机,那些界面是谁显示的?是BIOS,它做什么?一些自检,然后从硬盘上读入windows,并启动它。 类似的,这个BIOS对应于嵌入式Linux里的bootloader。这个bootloader要去Flash上读入Linux内核,并启动它。2. 启动windows的目的是什么?当然是上网聊天什么的了。这些上网、聊天工具在哪? 在C盘、D盘上。所以, windows要先识别出C盘、D盘。在Linux下我们称为根文件系统。3. windows能识别出C盘、D盘,那么肯定能读写硬盘才行。这涉及的东西称为驱动程序。当然不仅仅是硬盘,还有网卡、USB等等。 嵌入式Linux能从Flash上读出并执行应用程序,肯定也得有Flash的驱动程序啊,当然也不仅仅是Flash。 先说到这里吧,嵌入式LINUX里含有bootloader, 内核, 驱动程序、根文件系统这4大块。一、bootloader: 它就是一个稍微复杂的裸板程序。但是要把这裸板程序看懂写好一点都不容易。Windows下好用的工具弱化了我们的编程能力。很多人一玩嵌入式就用ADS、KEIL。你能回答这几个问题吗?1. 一上电,CPU从哪里取指令执行? 答:一般从Flash上指令。2. 但是Flash一般是只能读不能直接写的,如果我用到全局变量,这些全局变量在哪里? 答:全局变量应该在内存里3. 那么谁把全局变量放到内存里去? 答:长期用ADS、KEIL的朋友,你能回答吗?这需要重定位。在ADS或KEIL里,重定位的代码是制作这些工具的公司帮你写好了。 你可曾去阅读过?4. 内存那么大,我怎么知道把原来存在Flash上的内容读到内存的哪个地址去? 答:这个地址用链接脚本决定,在ADS里有scatter文件,KEIL里也有类似的文件。但是,你去研究过吗?5. 你说重定位是把程序从Flash复制到内存,那么这个程序可以读Flash啊? 答:是的,要能操作Flash。当然不仅仅是这些,还有设置时钟让系统运行得更快等等。 先自问自答到这里吧,bootloader这一个裸板程序,其实有3部分要点:1. 对硬件的操作2. 对ARM体系处理器的了解3. 程序的基本概念:重定位、栈、代码段数据段BSS段什么的。 对硬件的操作,需要看原理图、芯片手册。这需要一定的硬件知识,不求你能设计硬件,但是至少能看懂; 不求能看懂模拟电路,但是要能看懂数字电路。这方面的能力我是在学校里学到的,微机原理、数字电路这2本书(书名忘了)就足够了。但是我怀疑你有无耐心把这2本书看完。我不知道现在有没有更快捷的书。想速成的话,就先放掉这块吧,不懂就问GOOGLE、发贴。另外,芯片手册是肯定要读的,别去找中文的,就看英文的。开始是非常痛苦,以后就会发现那些语法、词汇一旦熟悉后,读任何芯片手册都很容易。对ARM体系处理器的了解, 看杜春蕾的吧,里面讲有汇编指令,有异常模式、MMU等。也就这3块内容需要你了解。程序的基本概念,王道当然是去看编译原理了。可惜,这类书绝对是天书级别的。劝你若非超级天才还是别去看了。就看我写的和第1期视频吧,别担心,不用花钱。照着视频把硬件相关的实验做了,这些概念就清楚了。我还没有发现第2套讲这些概念的书或视频,允许我盲目吹嘘一回。对于bootloader,我学习时是先看了,然后自己写程序把各个硬件的实验都做了一遍,比如GPIO、时钟、SDRAM、UART、NAND。把它们都弄清楚了,组台在一起就很容易看懂u-boot了总结一下,看懂硬件原理图、看芯片手册,这需要你自己去找资料。剩下的,就按和第1期视频的章节目录去学习吧。二、内核:想速成的人,先跨过内核的学习,直接学习怎么写驱动。想成为高手,内核必须深刻了解。注意,我说的是了解,我没奢望去写出一个内核。要对里面的调度机制、内存管理机制、文件管理机制等等有所了解。推荐两本书:1. 通读,请看薄的那本(浮燥的社会讲求速度, 呵), 2. 选读, 想了解哪一块就读哪一节三、驱动:驱动包含两部分:硬件本身的操作、驱动程序的框架。又是硬件,还是要看得懂原理图、读得懂芯片手册,多练吧。说到驱动框架,有一些书介绍一下。LDD3,即,老外写的那本,里面介绍了不少概念,值得一读。但是,它的作用也就限于介绍概念了。我基本上是入门之前用它来熟悉一下概念,入门后就扔掉了。驱动方面比较全的介绍,应该是宋宝华的了,老实说我只看过目录,有不少人说好,这里推荐一下。要想深入了解某一块,绝对是超5星级推荐。你别指望把它读完,1800多页,上下两册呢。我是某一块不清楚时,就去翻一下它。任何一部分,这书都可以讲上2、3百页,非常详细。并且是以某个目标来带你分析内核源码。它以linux 2.4为例,但是原理相通,同样适用于其它版本的linux。还有没有其他介绍?呵呵,当然有了,韦东山Linux视频第2期。里对驱动讲得不多,不够深入。于是我录制了这期视频。不仅仅教你怎么写怎么改驱动,还教你为什么这样写这样改驱动。每一个驱动都是现场编写: 1. 用绘图板画图讲解相当于学校里老师在黑板上画图讲解,很直观 绝对不是对着PPT念。2. 用source insight当场写程序,从第1行开始写,每一课都是这样。我讲了20多个驱动,就写了20多个程序。3. 写完就编译、测试。4. 很全面,字符设备驱动、块设备、网卡驱动3大类齐全,硬件介绍、驱动框架分析、测试3大类齐全。 培训机构里教的内容,远不及这期视频丰富。我在多个培训机构讲过课,从没看到哪个老师敢每一课都当场讲解当场编写代码当场测试,除我之外!也没看到哪个培训机构讲完这些内容因为时间不够,讲完起码要一个月,但是这部分基本只有2周授课时间。把你手上的开发板所涉及的硬件,都去尝试写一个驱动吧。有问题就先痛苦地思考,思考的过程中你会把很多不相关的知识串联起来,最终贯通。四、根文件系统:大家有没有想过这2个问题:1. 对于Linux做出来的产品,有些用作监控、有些做手机、有些做平板。那么内核启动后,挂载根文件系统后,应该启动哪一个应用程序呢? 答:内核不知道也不管应该启动哪一个用户程序。它只启动init这一个应用程序,它对应/sbin/init。 显然,这个应用程序就要读取配置文件,根据配置文件去启动用户程序(监控、手册界面、平板界面等等) 这个问题提示我们,文件系统的内容是有一些约定的,比如要有/sbin/init,要有配置文件2. 你写的hello,world程序,有没有想过里面用到的printf是谁实现的? 答:这个函数不是你实现的,是库函数实现的。它运行时,得找到库。 这个问题提示我们,文件系统里还要有库。 简单的自问自答到这里,要想深入了解,可以看一下busybox的init.c,就可以知道init进程做的事情了。 当然,也可以看里构建根文件系统那章。说一下我的学习经历吧。1. 我在学校时读的是物理电子专业,其实课程里没有教怎么设计电路,只是教了些电子电路方面的知识。PCB的设计 是在实验室里自学的,只设计过2层板,现在忘记得差不多了。但是保留了看原理图、看芯片手册的能力。2. 选修了软件学位,对软件设计挺感兴趣,但是也只是学了C语言、数据库而已。凭着兴趣做了不少竞赛题。没能力去 参加竞赛,但是把C语言练得很扎实。3. 在实验室、在第1家公司,就是设计些简单的PCI卡,写一下windows的驱动程序4. 在第2家公司,用51单片机做车载电话,开始走上纯软件的道路。5. 开始感到单片机的不足,辞职半年闭门学Linux,从red hat怎么操作开始。步骤就是先看, 再自己写裸板程序操作硬件,接着到分析u-boot。同时看,对LINUX框架有所了解。 在写裸板时,建议各位加强对中断的理解,内核就是用中断来完成各种功能的。6. 分析完u-boot,就开始进行简单的驱动编程了,这时候,能力还很弱。7. 开始去中兴上班,工作2年,编写各类驱动、解决各类问题(驱动问题、帮助定位应用问题),能力得到煅炼。总结一下:1. 硬件方面的书: 微机原理、数字电路,高校里的教材。毕业多年,忘名了。2. Linux方面的书: ,老外写的那本 选择ARM处理器,ARM7还是Cortex-M3 要使用低成本的32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。1ARM实现方法ARM Cortex-M3是一种基于ARM7v架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼结构下,数据和指令共用一条总线)。从本质上来说,哈佛结构在物理上更为复杂,但是处理速度明显加快。根据摩尔定理,复杂性并不是一件非常重要的事,而吞吐量的增加却极具价值。ARM公司对Cortex-M3的定位是:向专业嵌入式市场提供低成本、低功耗的芯片。在成本和功耗方面,Cortex-M3具有相当好的性能,ARM公司认为它特别适用于汽车和无线通信领域。和所有的ARM内核一样,ARM公司将内该设计授权给各个制造商来开发具体的芯片。迄今为止,已经有多家芯片制造商开始生产基于Cortex-M3内核的微控制器。ARM7TDMI(包括ARM7TDMIS)系列的ARM内核也是面向同一类市场的。这类内核已经存在了十多年之久,并推动了ARM成为处理器内核领域的主导者。众多的制造商出售基于ARM7系列的处理器以及其他配套的系统软件、开发和调试工具。在许多方面,ARM7TDMI都可以称得上是嵌入式领域的实干家。2两者差异除了使用哈佛结构,Cortex-M3还具有其它显著的优点:具有更小的基础内核,价格更低,速度更快。与内核集成在一起的是一些系统外设,如中断控制器、总线矩阵、调试功能模块,而这些外设通常都是由芯片制造商增加的。Cortex-M3还集成了睡眠模式和可选的完整的八区域存储器保护单元。它采用THUMB-2指令集,最大限度降低了汇编器使用率。3指令集ARM7可以使用ARM和Thumb两种指令集,而Cortex-M3只支持最新的Thumb-2指令集。这样设计的优势在于:免去Thumb和ARM代码的互相切换,对于早期的处理器来说,这种状态切换会降低性能。Thumb-2指令集的设计是专门面向C语言的,且包括If/Then结构(预测接下来的四条语句的条件执行)、硬件除法以及本地位域操作。Thumb-2指令集允许用户在C代码层面维护和修改应用程序,C代码部分非常易于重用。Thumb-2指令集也包含了调用汇编代码的功能:Luminary公司认为没有必要使用任何汇编语言。综合以上这些优势,新产品的开发将更易于实现,上市时间也大为缩短。4中断Cortex-M3的另一个创新在于嵌套向量中断控制器NVIC(Nested Vector Interrupt Controller)。相对于ARM7使用的外部中断控制器,Cortex-M3内核中集成了中断控制器,芯片制造厂商可以对其进行配置,提供基本的32个物理中断,具有8层优先级,最高可达到240个物理中断和256个中断优先级。此类设计是确定的且具有低延迟性,特别适用于汽车应用。NVIC使用的是基于堆栈的异常模型。在处理中断时,将程序计数器,程序状态寄存器,链接寄存器和通用寄存器压入堆栈,中断处理完成后,在恢复这些寄存器。堆栈处理是由硬件完成的,无需用汇编语言创建中断服务程序的堆栈操作。中断嵌套是可以是实现的。中断可以改为使用比之前服务程序更高的优先级,而且可以在运行时改变优先级状态。使用末尾连锁(tail-chaining)连续中断技术只需消耗三个时钟周期,相比于32个时钟周期的连续压、出堆栈,大大降低了延迟,提高了性能。如果在更高优先级的中断到来之前,NVIC已经压堆栈了,那就只需要获取一个新的向量地址,就可以为更高优先级的中断服务了。同样的,NVIC不会用出堆栈的操作来服务新的中断。这种做法是完全确定的且具有低延迟性。5睡眠Cortex-M3的电源管理方案通过NVIC支持Sleep Now,Sleep on Exit,(退出最低优先级的ISR)和SLEEPDEEP modes这三种睡眠模式。为了产生定期的中断时间间隔,NVIC还集成了系统节拍计时器,这个计时器也可以作为RTOS和调度任务的心跳。这种做法与先前的ARM架构的不同之处就在于不需要外部时钟。6存储器保护单元存储器保护单元是一个可选组建。选用了这个选项,内存区域就可以与应用程序特定进程按照其他进程所定义的规则联系在一起。例如,一些内存可以完全被其他进程阻止,而另外一部分内存能对某些进程表现为只读。还可以禁止进程进入存储器区域。可靠性,特别是实时性因此得到重大改进。7调试对Cortex-M3处理器系统进行调试和追踪是通过调试访问端口(Debug Access Port)来实现的。调试访问端口可以是一个2针的串行调试端口(Serial Wire Debug Port)或者串行JTAG调试端口(Serial Wire JTAG Debug Port)。通过Flash片、断点单元、数据观察点、跟踪单元,以及可选的嵌入式跟踪宏单元(Embedded Trace Macrocell)和指令跟踪宏单元(Instrumentation Trace Macrocell)等一系列功能相结合,在内核部分就可以采用多种类型的调试方法及监控函数。例如,可以设置断点、观察点、定义缺省条件或执行调试请求、监控停止操作或继续操作。所有的这些功能在ARM架构的产品中已经实现,只是Cortex-M3将这些功能整合起来,方便开发人员使用。8应用范围虽然ARM7内核并没有像Cortex系列那样集成很多外设,但是大量的基于ARM7的器件,从通用MCU,到面向应用的MCU、SOC甚至是Actel公司基于ARM7内核的FPGA,都拥有更为众多的外围设备。大约有150种MCU是基于ARM7内核的(根据不同的统计方法,这个数字可能会更高)。你会发现ARM7都可以实现几乎所有的嵌入式应用,或采用定制的方式来满足需求。基于标准内核,芯片厂商可以加入不同类型、大小的存储器和其他外围设备,比如串行接口、总线控制器、存储器控制器和图形单元,并针对工业、汽车或者其他要求苛刻的领域,使用不同的芯片封装,提供不同温度范围的芯片版本。芯片厂商也可能绑定特定的软件,比如TCP/IP协议栈或面向特定应用的软件。例如,STMicroelectronics公司的STR7产品线有三个主要系列共45个成员,具有不同的封装和存储器。每一个系列都针对特定的应用领域,具有不同外设集合。比如STR730家族是专为工业和汽车应用设计的,因此具有可扩展的温度范围,包括多个I/O口和3个CAN总线接口。STR710则是面向于消费市场以及高端的工业应用,它具有多个通信接口,比如USB、CAN、ISO7816以及4个UART,还有大容量的存储器和一个外部存储器接口。芯片厂商也可以选择利于开发人员开发产品的措施,比如采用ARM的嵌入式跟踪宏单元ETM(Embedded Trace Macrocell),并提供开发和调试工具。Luminary、STMicroelectronics这两家公司已经有基于Cortex-M3的芯片,其他公司如NXP、Atmel也宣布生产该类产品。9配套工具ARM7应用已经非常普及,它已经有非常多第三方的开发和调试工具支持。在ARM的网站上有超过130家工具公司名称列表。大多数厂商提供了基本的开发板,并提供下载程序的接口、调试工具以及外部设备的驱动,包括LED灯的显示状态或者屏幕上的单行显示。通常,开发套件包括编译器、一些调试软件以及开发板。更为高级的套件包括第三方的集成开发环境(IDE),IDE中包含编译器、链接器、调试器、编辑器和其他工具,也可能包括仿真硬件,比如说JTAG仿真器。内电路仿真器(ICE)是最早的也是最有用的调试工具形式之一,很多厂商都在ARM7上提供了这一接口。软件开发工具范围很广:从建模到可视化设计,到编译器。现在很多的产品也用到实时操作系统(RTOS)和中间件,以加速开发进程、降低开发难度。另外,还有一个非常重要的因素,很多的开发人员对ARM7的开发经验非常丰富。虽然现在已经有新兴的Cortex-M3工具,但显然还是有一定的差距。不过,Cortex-M3的集成调试性能使调试变得简单且有效,且无需用到内电路仿真器ICE。10决策那么,你应该如何做出何种选择呢?如果成本是最主要考虑因素,您应该选择Cortex-M3;如果在低成本的情况下寻求更好的性能和改进功耗,您最好考虑选用Cortex-M3;特别是如果你的应用是汽车和无线领域,最好也采用Cortex-M3,这正是Coretex-M3的主要定位市场。由于Cortex-M3内核中的多种集成元素以及采用Thumb-2指令集,其开发和调试比ARM7TDMI要简单快捷。然而,由于重定义ARM7TDMI的应用不是一件困难的事,特别是在使用了RTOS的情况下。保守者可能会沿用ARM7TDMI内核的芯片,并避免使用那些会使重定义变得复杂的功能。IAR Systems公司是最早做C编译器的厂商,提供一系列ARM开发工具,包括IAR visualSTATE 建模工具、IAR Embedded Workbench for ARM集成开发环境、IAR PowerPac实时操作系统和中间件、J-Link硬件仿真工具以及开发套件。不管用户的选择是ARM7还是Cortex-M3,IAR都会让开发变得简单而有趣。最后修改于2008-11-25 17:25 给我一个不选STM32的理由?最近,看到论坛上很多朋友讨论,1,AVR涨价.2,AVR/STM32缺货.3,STM8和AVR性能对比. 其实,识别下来,就是STM和AVR的对抗. 低端: AVR PK STM8. 高端:STM32 PK AVR32 低端市场,我用过AVR,没用过STM8.AVR是很成功的一款芯片,功耗低,性能强.较之前的51,性能提升了好几个档次.如果一个初学者,学完了51,在学AVR,肯定就会对AVR爱不释手.我也是这么过来的,AVR对当时的我来说可谓是要啥有啥.所以从大二开始,一直用到毕业.PIC据说也不错,但是很遗憾,我们学校,没看到几个搞PIC的,因为这个东西价格太高了,对我们学生来说,基本上不考虑.当然,有钱人例外.其次,AVR的下载也是很方便的.和51的可以通用.这其中双龙电子对avr的支持,至少在国内来说,爱特梅尔是要感谢他们的.至于STM8,我没有详细了解,我估计他存在的目的,就是要把8位市场给占领了.他最大的对手,估计就是AVR和51了.目前AVR的局势,岌岌可危,如果真要涨价,很可能就快要退出历史舞台了.STM8目前最低端的是STM8S103F2 最少引脚数是20脚的,淘宝最低售价是3.5元,AVR同样配置(仅仅指SRAM和FLASH)的芯片,价格在3块左右.基本不分上下.其他功能方面也很相似.STM8最高端的,STM8S208MB,淘宝价格在15元左右,而同样配置的avr芯片只有MEGA128了,还少了2k的ram和CAN控制器,不过多了总线控制器.但是MEGA128的价格,在30块钱左右,毫无竞争力了,这就.这样的价格,STM32F103都能买到很好的芯片了.15块钱左右,基本只够买个MEGE32,而mega32和S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新型城镇化建设项目房场地租赁合同范本
- 2025年度智能车间租赁服务合同范本
- 2025年度能源设备监造服务合同范本
- 2025年度消费信贷担保合同代理服务条款
- 2025年城市综合体玻璃幕墙安装与检修承包合同
- 2025年房建泥工班组劳务分包及建筑废弃物填埋场建设合同
- 2025年度房产买卖合同范本(含违约金计算)
- 2025年度旅游行业实习生就业协议
- 2025版跨国自愿离婚合同示范文本
- 2025年度旅游景点场地租赁专项合同
- 美容院股权分配协议书
- 医院药物使用流程及监控机制
- 绿化工程挂靠合同协议
- 2025年消防设施操作员(中级)职业技能鉴定参考试题库(500题含答案)
- 2025年交管12123驾驶证学法减分题库(含答案)
- ISO27001:2022信息安全管理体系全套文件+表单
- 2024年一级注册结构工程师专业考试试题及答案(下午卷)
- 环境保护与水土保持监理实施细则
- 顾问项目进驻与退出管理办法
- 2025年部编版小学二年级语文上册全册教案
- 国有企业采购管理办法
评论
0/150
提交评论