国产在线中文字幕亚洲,一区视频国产精品观看,欧美日韩国产高清片,久久久久久AV无码免费网站,亚洲无码一二三四五区,日韩无码www.,sese444

您好,歡迎來到維庫電子市場網(wǎng) 登錄 | 免費注冊

Bootloader技�(shù)
閱讀�6283時間�2011-05-01 11:29:02

  Boot Loader 就是�操作系統(tǒng)�(nèi)核運行之前運行的一段小程序。通過這段小程�,我們可以初始化硬件�(shè)備、建��(nèi)�空間的映射圖,從而將系統(tǒng)的軟硬件�(huán)境帶到一個合適的狀�(tài),以便為最終調(diào)用操作系�(tǒng)�(nèi)核準(zhǔn)備好正確的環(huán)�。通常,Boot Loader 是嚴(yán)重地依賴于硬件而實�(xiàn)�,特別是在嵌入式世界。因�,在嵌入式世界里建立一個通用� Boot Loader 幾乎是不可能�。盡管如�,我�?nèi)匀豢梢�?Boot Loader 歸納出一些通用的概念來,以指導(dǎo)用戶特定� Boot Loader �(shè)計與實現(xiàn)�

Bootloader的操作模�

  大多�(shù) Boot Loader 都包含兩種不同的操作模式�"啟動加載"模式�"下載"模式,這種區(qū)別僅對于開發(fā)人員才有意義。但從最終用戶的角度�,Boot Loader 的作用就是用來加載操作系�(tǒng),而并不存在所謂的啟動加載模式與下載工作模式的區(qū)��

  啟動加載(Boot loading)模式:這種模式也稱�"自主"(Autonomous)模�。也� Boot Loader 從目�(biāo)機上的某個固�(tài)存儲�(shè)備上將操作系�(tǒng)加載� RAM 中運行,整個過程并沒有用戶的介�。這種模式� Boot Loader 的正常工作模�,因此在嵌入式產(chǎn)品發(fā)布的時侯,Boot Loader 顯然必須工作在這種模式��

  下載(Downloading)模式:在這種模式�,目�(biāo)機上� Boot Loader 將通過串口連接或網(wǎng)�(luò)連接等通信手段從主機(Host)下載文�,比如:下載�(nèi)核映像和根文件系�(tǒng)映像�。從主機下載的文件通常首先� Boot Loader 保存到目�(biāo)機的 RAM 中,然后再被 Boot Loader 寫到目標(biāo)機上的FLASH 類固�(tài)存儲�(shè)備中。Boot Loader 的這種模式通常在次安裝�(nèi)核與根文件系�(tǒng)時被使用;此�,以后的系統(tǒng)更新也會使用 Boot Loader 的這種工作模式。工作于這種模式下的 Boot Loader 通常都會向它的終端用戶提供一個簡單的命令行接��

  � Blob � U-Boot 等這樣功能強大� Boot Loader 通常同時支持這兩種工作模式,而且允許用戶在這兩種工作模式之間進行切換。比如,Blob 在啟動時處于正常的啟動加載模�,但是它會延� 10 秒等待終端用戶按下任意鍵而將 blob 切換到下載模式。如果在 10 秒內(nèi)沒有用戶按鍵,則 blob 繼續(xù)啟動 Linux �(nèi)��

Boot Loader 所支持� CPU 和嵌入式�

  每種不同� CPU 體系�(jié)�(gòu)都有不同� Boot Loader。有� Boot Loader 也支持多種體系結(jié)�(gòu)� CPU,比� U-Boot 就同時支� ARM 體系�(jié)�(gòu)和MIPS 體系�(jié)�(gòu)。除了依賴于 CPU 的體系結(jié)�(gòu)外,Boot Loader 實際上也依賴于具體的嵌入式板級設(shè)備的配置。這也就是�,對于兩塊不同的嵌入式板而言,即使它們是基于同一� CPU 而構(gòu)建的,要想讓運行在一塊板子上� Boot Loader 程序也能運行在另一塊板子上,通常也都需要修� Boot Loader 的源程序�

Boot Loader 的安裝媒�

  系統(tǒng)加電或復(fù)位后,所有的 CPU 通常都從某個由 CPU 制造商�(yù)先安排的地址上取指令。比�,基� ARM7TDMI core � CPU 在復(fù)位時通常都從地址 0x00000000 取它的條指令。而基� CPU �(gòu)建的嵌入式系�(tǒng)通常都有某種類型的固�(tài)存儲�(shè)�(比如:ROM、EEPROM � FLASH �)被映射到這個預(yù)先安排的地址上。因此在系統(tǒng)加電�,CPU 將首先執(zhí)� Boot Loader 程序�

  下圖就是一個同時裝� Boot Loader、內(nèi)核的啟動參數(shù)、內(nèi)核映像和根文件系�(tǒng)映像的固�(tài)存儲�(shè)備的典型空間分配�(jié)�(gòu)��

固態(tài)存儲設(shè)備的典型空間分配結(jié)構(gòu)

  � 固態(tài)存儲�(shè)備的典型空間分配�(jié)�(gòu)

Boot loader程序流程

  系統(tǒng)上電�(fù)位后� 在完成各種初始化配置后首先判�0x500地址單元中值是否為0xFF� 如果是,則說明系�(tǒng)從未下載過用戶程�� 系統(tǒng)會一直運行Boot loader程序等待PC 機發(fā)送下載命�� 如果0x500中的值不�0xFF� 則說明系�(tǒng)中已�(jīng)下載過用戶程序了� 這時候根�(jù)0x500中的值來�(shè)置定時器T imer2的初值并開始計時� 如果UART2 在指定的自舉周期�(nèi)未接收到PC 機發(fā)來的下載命令(說明系統(tǒng)不需要下載程�)� 系統(tǒng)會自動跳出Boo tloader程序而去運行已有的用戶代�� 如果UART2在自舉周期內(nèi)接收到了下載命令� Boo tloader程序會進入循環(huán)狀�(tài)等待PC機發(fā)送數(shù)�(jù)。如圖所��

 程序流程圖

  �  程序流程��

  如前文所述, PC 機發(fā)送的�(shù)�(jù)是從. hex 文件中提取的� PC機首先發(fā)送擴展地址部分� 下位機接收保存后會繼�(xù)等待接收32個指令字( 96字節(jié))并保存到RAM 中, 然后根據(jù)接收到的地址擦除FLASH 存儲器中�1�� 擦除FLASH 是通過�(diào)用匯編函�(shù)E raseMem來進行的, 函數(shù)原型如下:

  mov# 0x4041, NVMCON ; 使NVMCON 寄存器為擦除FLASH模式

  mov # 0x55, W 0

  movW0, NVMKEY

  mov # 0xAA, W0

  movW 0, NVMKEY ; �0x55�0xAA 寫入密鑰寄存�

  bsetNVMCON, #WR ; 開始擦除

  nop

  nop

  return

  擦除FLASH存儲器的一行后需要把接收到的32個指令字寫入到FLASH 存儲器寫鎖存器中� 這一過程可以通過函數(shù)W riteLatch 實現(xiàn)� 函數(shù)原型如下:

  movW0, TBLPAG ; 寫表寄存�

  tb lw tlW3, [W1]

  tb lw thW2, [W1] ; 寫入鎖存�

  return

  這一步完成之后就可以將接收到�32個指令字寫入FLASH 存儲器了� 其方法與擦除FLASH 類似� 寫完一行后向PC 機發(fā)送應(yīng)�。待FLASH 存儲器全部寫完之后, PC 機會�(fā)送表示結(jié)束下載的命令� 下位機接收后退出Boo tloader程序� 進入新的用戶程序繼續(xù)運行� 從而完成整個在線自編程過程�

Boo tloader的原�

  Bootloader相當(dāng)于PC主板上的B IOS� 是層的引�(dǎo)軟件。Boo tloader是一段固化在嵌入式系�(tǒng)目標(biāo)系統(tǒng)ROM或者是諸如FLASH 等非易失存儲器中的一段程序, 它的主要作用就是引導(dǎo)操作系統(tǒng)或用戶程序的運行。系�(tǒng)上電后Boo tloader將首先接管系�(tǒng)� 在進行一些最基本的上電自檢后� Bootloader將對系統(tǒng)的硬件進行初始化, 為引�(dǎo)操作系統(tǒng)作好�(zhǔn)�� 接下來, Bootloader需要將操作系統(tǒng)的代碼拷貝到主存儲器的特定地址� Boot loader將控制權(quán)交給操作系統(tǒng)� 由操作系�(tǒng)完成接下來的工作;在不含操作系統(tǒng)的系�(tǒng)�� Bootloader可以完成這樣一些操�: 分配程序存儲空間� 重新映射�(fù)位和中斷向量� 將程序代碼從片外加載到程序區(qū)� �(zhí)行時再將代碼加載到RAM 中以便快速執(zhí)�� 檢測是否需要下載新的用戶代�� 若需要則通過某種通信方式接收新代碼并將其寫入指定程序存儲空間�� 若不需要, 則執(zhí)行原有用戶代��

Bootloader技�(shù)相關(guān)技�(shù)資料更多>>

維庫電子�,電子知�,一查百��

已收錄詞�153979

同心�| 凤山�| 保靖�| 蓝山�| 宿迁�| 灯塔�| 潜江�| 运城�| 定襄�| 曲沃�| 沅江�| 瓦房店市| 彰化�| 布拖�| 石河子市| 高安�| 聊城�| 景洪�| 五华�| 澄迈�| 哈巴河县| 武城�| 卓资�| 昆明�| 清流�| 五家渠市| 夏河�| 托克托县| 香格里拉�| 娱乐| 正宁�| 辽中�| 阿尔山市| 宣恩�| 临泉�| 九龙�| 定安�| 海伦�| 石嘴山市| 永年�| 武强�|