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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STR71xF嵌入式系統(tǒng)設(shè)計和實踐

          STR71xF嵌入式系統(tǒng)設(shè)計和實踐

          作者: 時間:2012-03-29 來源:網(wǎng)絡(luò) 收藏

          復(fù)位芯片采用 IMP809S,主時鐘為16MHz,ADC接口電路可外接模擬信號或用板上模擬電壓。

          3.2 軟件

          3.2.1 BootLoader

          簡單地說,BootLoader 就是在操作內(nèi)核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。通常,Boot Loader 是嚴重地依賴于硬件而實現(xiàn)的,特別是在世界。因此,在世界里建立一個通用的 Boot Loader 幾乎是不可能的。另外,由于 Boot Loader 的實現(xiàn)依賴于 CPU 的體系結(jié)構(gòu),因此大多數(shù) Boot Loader 都分為 stage1 和 stage2 兩大部分。依賴于 CPU 體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在 stage1 中,而且通常都用匯編語言來實現(xiàn),以達到短小精悍的目的。而 stage2 則通常用C語言來實現(xiàn),這樣可以實現(xiàn)給復(fù)雜的功能,而且代碼會具有更好的可讀性和可移植性。

          Boot Loader 的 stage1 通常包括以下步驟(以執(zhí)行的先后順序):

          硬件設(shè)備初始化。

          為加載 Boot Loader 的 stage2 準(zhǔn)備 RAM 空間。

          拷貝 Boot Loader 的 stage2 到 RAM 空間中。

          設(shè)置好堆棧。

          跳轉(zhuǎn)到 stage2 的 C 入口點。

          Boot Loader 的 stage2 通常包括以下步驟(以執(zhí)行的先后順序):

          初始化本階段要使用到的硬件設(shè)備。

          檢測系統(tǒng)內(nèi)存映射(memory map)。

          將 kernel 映像和根文件系統(tǒng)映像從 flash 上讀到 RAM 空間中。

          為內(nèi)核設(shè)置啟動參數(shù)。

          調(diào)用內(nèi)核。

          3.2.2 應(yīng)用程序

          本實例主要用FIQ來設(shè)計一個時鐘,實現(xiàn)一小時計時,由于需要4個7段數(shù)碼管,考慮到I/O口的數(shù)量,所以采用動態(tài)顯示方式。要點是要掌握ARM7TDMI的快速中斷原理和定時器原理,能正確地分配時鐘。程序流程圖如圖8 所示。

          43.jpg
          圖8 時鐘程序流程框圖

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


          評論


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