<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 柳暗花明:淺談嵌入式ARM開發(fā)的前世今生

          柳暗花明:淺談嵌入式ARM開發(fā)的前世今生

          —— 淺談嵌入式ARM開發(fā)的前世今生
          作者:Machinnneee 時(shí)間:2014-06-18 來源:電子產(chǎn)品世界 收藏

            在這個(gè)科技高度發(fā)達(dá)的今天,相信很多在校學(xué)生停留在51單片機(jī)上的種種應(yīng)用開發(fā),做一個(gè)小玩意,獲得個(gè)好名次,這在無形中增加了對(duì)單片機(jī)的理解和認(rèn)識(shí),對(duì)以后的工作奠定雄厚的基礎(chǔ):匯編語言的使用,可以讓你在 Bootloader的開發(fā)上如魚得水;各種外圍器件的使用,可以讓你在應(yīng)用開發(fā)中如沐春風(fēng)。但是,如果僅僅停留在這個(gè)階段,或者說停留在低端單片機(jī)的開發(fā)應(yīng)用上,拿到手的“金子”也有限,這就需要你踏入更加廣闊的電子領(lǐng)域---開發(fā)?,F(xiàn)在最流行的是“+”構(gòu)架,如果在這條路上你走的比較遠(yuǎn),那么,這對(duì)你的生活質(zhì)量的提高也大有幫助。

          本文引用地址:http://www.ex-cimer.com/article/248483.htm

            由于“+”構(gòu)架的開發(fā)范圍很廣,如果想全部掌握,需要懂使用、Linux內(nèi)核、Linux驅(qū)動(dòng)、匯編語言、C語言、C++、PCB制作、硬件電路設(shè)計(jì)……,我一直以為貪多未必是好事,所以建議進(jìn)行ARM的開發(fā) 分為兩個(gè)方向:一、偏向硬件,二、偏向軟件。

            首先來說下偏向硬件。在這個(gè)方面,要從硬件設(shè)計(jì)入手。

            第一、設(shè)計(jì)最小系統(tǒng)板:由于ARM的啟動(dòng)方式和單片機(jī)有很大差異,建議搞一個(gè)Flash,SRAM或SDRAM、CPU、JTAG、和復(fù)位信號(hào)的小系統(tǒng)板,留出擴(kuò)展接口。這時(shí),你可以參考一些成熟的設(shè)計(jì),來進(jìn)行設(shè)計(jì),像EEPW論壇中STM32等等都可以。如果使最小系統(tǒng)能夠正常運(yùn)行,你就是很厲害的,畢竟在這方面硬件設(shè)計(jì)會(huì)有一些難點(diǎn),比如內(nèi)存等、長(zhǎng)線等等。

            第二、 寫啟動(dòng)代碼,ARM啟動(dòng)會(huì)使用Bootloader,這時(shí)可以參考一些Bootloader介紹,自己琢磨寫出簡(jiǎn)單的Bootloader,完成一小任務(wù),這會(huì)使你的信心大大增強(qiáng)。在設(shè)計(jì)Bootloader時(shí),你的匯編功底會(huì)讓你左右逢源。

            第三、仔細(xì)研究你所用的芯片的資料,畫外接板,進(jìn)行功能的擴(kuò)展,將你之前的單片機(jī)資源可以搬到這里,通過寫相關(guān)的裸板程序,可以實(shí)現(xiàn)從單片機(jī)向嵌入式ARM方向的轉(zhuǎn)變。

            第四、多學(xué)習(xí)針對(duì)該芯片的DEMO板原理圖。先將原理圖消化,對(duì)該芯片的設(shè)計(jì)做到心中有數(shù),對(duì)常用設(shè)計(jì)達(dá)到隨手畫出。

            第五、學(xué)習(xí)多層板的繪制和布局、走線等。布線時(shí)要先布數(shù)據(jù)地址線,和需要保證的高速線;當(dāng)涉及的CPU速度達(dá)到很高或者信號(hào)的頻率很高時(shí), PCB板上的走線都要看成傳輸線。傳輸線有其特征阻抗做好阻抗匹配和防干擾處理。在設(shè)計(jì)四層板時(shí),通常外層走信號(hào)線,中間兩層分別為電源和地平面,這樣一方面隔離了兩個(gè)信號(hào)層,更重要的是外層的走線與它們所靠近的平面形成稱為"微帶"(Microstrip) 的傳輸線,它的阻抗比較固定性能得到保障。

            如果板子資源比較多,需要用6-10層板進(jìn)行繪制,那么相應(yīng)的層有推薦設(shè)計(jì),可以參考http://forum.eepw.com.cn/thread/233107/1【PCB資料分享】四層六層板設(shè)計(jì)。

            如果你能完成以上五個(gè)基本的步驟,那么你已經(jīng)踏入了嵌入式開發(fā)的硬件世界,以后的發(fā)展,就考自己的修養(yǎng)了。

            說完硬件,理所當(dāng)然的要說說偏向軟件方面了。

            據(jù)我所知,偏向軟件的嵌入式開發(fā)可以分為以下三個(gè)方面:Bootloader設(shè)計(jì),嵌入式驅(qū)動(dòng)開發(fā)和嵌入式應(yīng)用開發(fā)。如果嵌入式跑現(xiàn)在流行的安卓系統(tǒng),也可以把安卓開發(fā)分配到嵌入式應(yīng)用開發(fā)吧。

            首先說下Bootloader開發(fā),前面說道,嵌入式的啟動(dòng)和單片機(jī)的啟動(dòng)有所不同,需要有個(gè)Bootloader引導(dǎo),在Bootloader中實(shí)現(xiàn)一些硬件的初識(shí)和引導(dǎo)嵌入式進(jìn)入Linux系統(tǒng)或者C語言Main函數(shù),總而言之,這個(gè)Bootloader是個(gè)很重要的內(nèi)容,如果想在這方面進(jìn)行發(fā)展,需要有雄厚的匯編語言設(shè)計(jì)功底,需要對(duì)ARM內(nèi)核的工作機(jī)制非常了解,相比硬件設(shè)計(jì)來說這個(gè)有點(diǎn)難度,畢竟有些玩意是需要自己慢慢琢磨的。

            現(xiàn)在我們常聽說的就是嵌入式驅(qū)動(dòng)開發(fā),工資待遇也是杠杠的!相信很多人也想從事這方面的工作或者正在向這方面前進(jìn)。那么恭喜你,只要有足夠的毅力,月薪幾W的工作就在你面前,但是在這之前,需要經(jīng)歷層層的磨練:Linux內(nèi)核機(jī)制,Shell編程、Makefile規(guī)則,硬件數(shù)據(jù)手冊(cè)和電路連接Linux驅(qū)動(dòng)工作流程,簡(jiǎn)單應(yīng)用程序的編寫(一次測(cè)試驅(qū)動(dòng))……不過有牛人說過,在嵌入式驅(qū)動(dòng)開發(fā)的路上,要么登上山頂,要么滾進(jìn)深淵。據(jù)我所知,在一家公司里,做驅(qū)動(dòng)開發(fā)的經(jīng)常是做應(yīng)用開發(fā)的1/5---1/8,足見其功能。

            對(duì)于應(yīng)用開發(fā),相信大家都很愿意去做,只要活得驅(qū)動(dòng)的接口函數(shù),明白其中道理,有足夠的時(shí)間編寫、調(diào)試、完善和優(yōu)化代碼,你就是一名優(yōu)秀的嵌入式應(yīng)用開發(fā)工程師。不過基于Linux的圖形界面開發(fā),現(xiàn)在變得火熱:像QT編程了、安卓開發(fā)了等待都脫離了Linux的形式,但是,這又給碼農(nóng)們有了新的發(fā)展空間,據(jù)我所知,工資待遇也是很客觀的

            最后用一個(gè)圖片來總結(jié)下嵌入式開發(fā)的前世今生吧:

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          51單片機(jī)相關(guān)文章:51單片機(jī)教程


          c語言相關(guān)文章:c語言教程


          linux相關(guān)文章:linux教程


          c++相關(guān)文章:c++教程




          關(guān)鍵詞: ARM Linux 嵌入式

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();