stm32与arm7比较(经典)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我觉得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体系处理器的了解, 看杜春蕾的<ARM体系架构与编程>吧,里面讲有汇编指令,有异常模式、MMU等。
也就这3块内容需要你了解。
程序的基本概念,王道当然是去看编译原理了。
可惜,这类书绝对是天书级别的。
劝你若非超级天才还是别去看了。
就看我写的
<嵌入式Linux应用开发完全手册>和第1期视频吧,别担心,不用花钱。
照着视频把硬件相关的实验做了,这些概念就清楚了。
我还没有
发现第2套讲这些概念的书或视频,允许我盲目吹嘘一回。
对于bootloader,我学习时是先看了<ARM体系架构与编程>,然后自己写程序把各个硬件的实验都做了一遍,比如GPIO、时钟、
SDRAM、UART、NAND。
把它们都弄清楚了,组台在一起就很容易看懂u-boot了
总结一下,看懂硬件原理图、看芯片手册,这需要你自己去找资料。
剩下的,就按<嵌入式Linux应用开发完全手册>和第1期视频的章
节目录去学习吧。
二、内核:
想速成的人,先跨过内核的学习,直接学习怎么写驱动。
想成为高手,内核必须深刻了解。
注意,我说的是了解,我没奢望去写出一个内核。
要对里面的调度机制、内存管理机制、文件管理机制等等有所了解。
推荐两本书:
1. 通读<linux内核完全注释>,请看薄的那本(浮燥的社会讲求速度, 呵),
2. 选读<Linux内核情景分析>, 想了解哪一块就读哪一节
三、驱动:
驱动包含两部分:硬件本身的操作、驱动程序的框架。
又是硬件,还是要看得懂原理图、读得懂芯片手册,多练吧。
说到驱动框架,有一些书介绍一下。
LDD3,即<Linux设备驱动>,老外写的那本,里面介绍了不少概念,值得一读。
但是,它的作用
也就限于介绍概念了。
我基本上是入门之前用它来熟悉一下概念,入门后就扔掉了。
驱动方面比较全的介绍,应该是宋宝华的<linux设备驱动开发详解>了,老实说我只看过目录,有不少人说好,这里推荐一下。
要想深入了解某一块,<Linux内核情景分析>绝对是超5星级推荐。
你别指望把它读完,1800多页,上下两册呢。
我是某一块不清楚
时,就去翻一下它。
任何一部分,这书都可以讲上2、3百页,非常详细。
并且是以某个目标来带你分析内核源码。
它以linux 2.4为例,
但是原理相通,同样适用于其它版本的linux。
还有没有其他介绍?呵呵,当然有了,韦东山Linux视频第2期。
<嵌入式Linux应用开发完全手册>里对驱动讲得不多,不够深入。
于是我录制了这期视频。
不仅仅教你怎么写怎么改驱动,还教你为什么这样写这样改驱动。
每一个驱动都是现场编写:
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进程做的事情了。
当然,也可以看<嵌入式Linux应用开发完全手册>里构建根文件系统那章。
说一下我的学习经历吧。
1. 我在学校时读的是物理电子专业,其实课程里没有教怎么设计电路,只是教了些电子电路方面的知识。
PCB的设计
是在实验室里自学的,只设计过2层板,现在忘记得差不多了。
但是保留了看原理图、看芯片手册的能力。
2. 选修了软件学位,对软件设计挺感兴趣,但是也只是学了C语言、数据库而已。
凭着兴趣做了不少竞赛题。
没能力去
参加竞赛,但是把C语言练得很扎实。
3. 在实验室、在第1家公司,就是设计些简单的PCI卡,写一下windows的驱动程序
4. 在第2家公司,用51单片机做车载电话,开始走上纯软件的道路。
5. 开始感到单片机的不足,辞职半年闭门学Linux,从red hat怎么操作开始。
步骤就是先看<ARM体系架构与编程>,
再自己写裸板程序操作硬件,接着到分析u-boot。
同时看<linux内核完全注释>,对LINUX 框架有所了解。
在写裸板时,建议各位加强对中断的理解,内核就是用中断来完成各种功能的。
6. 分析完u-boot,就开始进行简单的驱动编程了,这时候,能力还很弱。
7. 开始去中兴上班,工作2年,编写各类驱动、解决各类问题(驱动问题、帮助定位应用问题),能力得到煅炼。
总结一下:
1. 硬件方面的书: 微机原理、数字电路,高校里的教材。
毕业多年,忘名了。
2. Linux方面的书:
<ARM体系架构与编程>
<嵌入式Linux应用开发完全手册>
<Linux设备驱动>,老外写的那本
<linux设备驱动开发详解>
<linux内核完全注释>
<Linux内核情景分析>
选择ARM处理器,ARM7还是Cortex-M3
要使用低成本的32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI 内核的处理器。
如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。