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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 學(xué)習(xí)方法與實(shí)踐 > 新手學(xué)堂 嵌入式開發(fā)都需要學(xué)習(xí)什么

          新手學(xué)堂 嵌入式開發(fā)都需要學(xué)習(xí)什么

          ——
          作者: 時(shí)間:2007-04-23 來源: 收藏
          這是一個(gè)初學(xué)者常問的問題,也是初學(xué)者問嵌入式該如何入門的根源。我感覺有兩個(gè)方面,偏硬和偏軟.我不認(rèn)為軟件占絕對(duì)比重,相反,軟硬件都懂,才是嵌入式高手所應(yīng)該追求的,也是高手的必由之路。

            硬件道路:

            第一步: pcb設(shè)計(jì),一般為開發(fā)板的電路裁減和擴(kuò)充,由開發(fā)板原理圖為基礎(chǔ),畫出PCB和封裝庫,設(shè)計(jì)自己的電路。

            第二步: SOPC技術(shù),一般為FPGA,CPLD開發(fā),利用VHDL等硬件描述語言做專用芯片開發(fā),寫出自己的邏輯電路,基于ALTER或XILINUX的FPGA做開發(fā)。

            第三步: SOC設(shè)計(jì),分前端,后端實(shí)現(xiàn),這是硬件設(shè)計(jì)的核心技術(shù):芯片設(shè)計(jì).能做到這步,已經(jīng)不屬于平凡的技術(shù)人員。

            軟件道路:

            第一步:bootloader的編寫,修改, 通過這步熟悉ARM硬件結(jié)構(gòu),學(xué)習(xí)ARM匯編語言,閱讀ARM的芯片手冊(cè),感覺就是像操作51單片機(jī)一樣操作ARM芯片.這一步最好的兩個(gè)參考資料就是:芯片手冊(cè)和bootloader源代碼。

            第二步:系統(tǒng)移植, 驅(qū)動(dòng)開發(fā), 我只做過linux方向,所以也推薦學(xué)習(xí)嵌入式linux系統(tǒng),作為標(biāo)準(zhǔn)體系,他開源而且可以獲得大量學(xué)習(xí)資料.操作系統(tǒng)是整個(gè)計(jì)算機(jī)科學(xué)的核心,熟悉 kernel實(shí)屬不易,kernel, 驅(qū)動(dòng)開發(fā)的學(xué)習(xí),沒有什么捷徑,只有多讀代碼,多寫代碼,熟悉系統(tǒng)API.. understanding linux kernel , linux device driver 都是不可多得的好書,值得一看。

            第三步:應(yīng)用程序的編寫,各種GUI的移植,qt , minigui都被大量采用,兩種思想都類似,熟悉一種就可以。

            軟件道路中,驅(qū)動(dòng),系統(tǒng)應(yīng)該是最深入的部分,不是短時(shí)間可以掌握的,需要有勇氣和耐心。,軟硬結(jié)合,因?yàn)橛布l件比PC差很多,所以肯定會(huì)遇見不少問題,因此實(shí)踐的勇氣更加重要.有問題就解決問題,無數(shù)次的實(shí)驗(yàn),也許是解決問題的必由之路。


          關(guān)鍵詞: 嵌入式開發(fā)

          評(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); })();