• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于X 86單芯片計(jì)算機(jī)的BIOS軟件設(shè)計(jì)

      2011-03-15 14:30:32解光軍
      關(guān)鍵詞:單芯片開發(fā)板扇區(qū)

      果 鵬, 解光軍

      (合肥工業(yè)大學(xué)電子科學(xué)與應(yīng)用物理學(xué)院,安徽合肥 230009)

      1 總體設(shè)計(jì)思想

      所謂單芯片計(jì)算機(jī)(Computer On a Chip,簡(jiǎn)稱CoC)即是將傳統(tǒng)PC機(jī)主板上集成于芯片組的板卡控制器、CPU、內(nèi)存等最大限度地集成在單個(gè)芯片中[1-3]。本設(shè)計(jì)基于單芯片計(jì)算機(jī),并以SD卡存儲(chǔ)器代替?zhèn)鹘y(tǒng)機(jī)械式磁性存儲(chǔ)器,完成FreeDOS操作系統(tǒng)的啟動(dòng)。SD卡是一種基于Flash的存儲(chǔ)器,它著重?cái)?shù)據(jù)存儲(chǔ)的安全,而且價(jià)格低廉,性能優(yōu)異,存儲(chǔ)容量大[4-6]。SD卡(Secure DigitalM emory Card)相比于磁性介質(zhì)來(lái)說(shuō)不僅減少了空間,而且降低了功耗,是許多便攜式電子產(chǎn)品如數(shù)碼相機(jī)、手提電話、PDA等移動(dòng)便攜式設(shè)備理想的外部存儲(chǔ)介質(zhì),并且在存儲(chǔ)市場(chǎng)占有極大份額,目前在各個(gè)領(lǐng)域運(yùn)用廣泛?;赟D卡的以上優(yōu)點(diǎn),本設(shè)計(jì)采用SD卡作為存儲(chǔ)器,實(shí)現(xiàn)單芯片計(jì)算機(jī)的全硅化。

      由于X 86單芯片計(jì)算機(jī)的結(jié)構(gòu)由PC而來(lái),其功能復(fù)雜,初始化硬件和引導(dǎo)操作系統(tǒng)仍然由BIOS(Basic InOut System,基本輸入輸出系統(tǒng))來(lái)完成。BIOS軟件的主要作用是初始化硬件和引導(dǎo)操作系統(tǒng)?;赟D卡的諸多優(yōu)點(diǎn),本設(shè)計(jì)將SD卡存儲(chǔ)器代替?zhèn)鹘y(tǒng)的磁性介質(zhì)存儲(chǔ)器作為主存儲(chǔ)設(shè)備,連接到X 86單芯片計(jì)算機(jī)的APB (Advanced Peripheral Bus)總線上,并通過(guò)FPGA開發(fā)板的硬件資源和SD卡接口實(shí)現(xiàn)硬件部分。本設(shè)計(jì)BIOS的主要意義就在于不僅對(duì)X86單芯片計(jì)算機(jī)特定的硬件進(jìn)行配置,而且依據(jù)SD卡的協(xié)議,為單芯片計(jì)算機(jī)定制的設(shè)計(jì)引導(dǎo)程序。

      本設(shè)計(jì)利用Cygw in、W inhex和W in Image軟件建立了一整套的BIOS軟件編譯開發(fā)平臺(tái),對(duì)比了傳統(tǒng)的Cygw in與NASM和MASM等BIOS開發(fā)工具,由于NASM和MASM的操作復(fù)雜,每次編譯都要設(shè)置編譯路徑和目標(biāo)文件等重復(fù)性操作,消耗大量研發(fā)時(shí)間,不利于本設(shè)計(jì)的開發(fā)調(diào)試,因此本設(shè)計(jì)采用Cygw in編譯器,通過(guò)編寫m akefile腳本來(lái)設(shè)定編譯對(duì)象和目標(biāo)文件及路徑,而且操作簡(jiǎn)單,大大減少了重復(fù)性的操作,節(jié)省了研發(fā)實(shí)驗(yàn)的調(diào)試時(shí)間。

      2 軟件設(shè)計(jì)

      BIOS是固化在計(jì)算機(jī)中的核心軟件系統(tǒng),它直接對(duì)計(jì)算機(jī)系統(tǒng)中的輸入輸出設(shè)備進(jìn)行設(shè)備級(jí)、硬件級(jí)的底層控制,是連接操作系統(tǒng)和硬件設(shè)備之間的樞紐[2,7]。本設(shè)計(jì)BIOS的主要作用有初始化SD卡、對(duì)SD卡進(jìn)行讀寫操作以及boot加載操作系統(tǒng)。

      2.1 BIOS對(duì)SD卡的初始化

      BIOS對(duì)SD卡初始化有2個(gè)目的:使SD卡工作于SPI接口模式,設(shè)置讀寫單模塊數(shù)據(jù)的長(zhǎng)度。SD卡的SPI模式通信由BIOS控制,SPI通信由指令、響應(yīng)和數(shù)據(jù)組成。每一個(gè)指令或數(shù)據(jù)塊由8位的字節(jié)和CS標(biāo)志構(gòu)成。SD卡指令格式見表1所列。

      表1 SD卡指令格式

      SD卡上電復(fù)位后處于SD總線模式,主機(jī)先將SD卡的片選CS置低,激活SD卡進(jìn)入工作狀態(tài)[8]。要使SD卡進(jìn)入SPI接口模式,BIOS需要在片選信號(hào)CS為低電平時(shí)發(fā)送命令CMD0,使SD卡處于IDLE狀態(tài)。根據(jù)SD卡的標(biāo)準(zhǔn),CMD0命令為:40H 00H 00H 00H 00H 95H。BIOS向SD卡發(fā)送完CMD0命令后,接收RESPONSE響應(yīng)信號(hào),判斷SD卡是否正確接收命令。RESPONSE響應(yīng)信號(hào)方式內(nèi)容見表2所列。

      CMD0命令使SD卡進(jìn)入休眠狀態(tài),需要發(fā)送CMD1(SEND_OP_COND)激活SD卡的初始化過(guò)程,隨后接收RESPONSE響應(yīng)信號(hào),判斷SD卡是否正確脫離休眠狀態(tài)。為了實(shí)現(xiàn)對(duì)SD卡的模塊讀寫操作,BIOS必須設(shè)置讀寫模塊的大小。BIOS向SD卡發(fā)送CMD16(SET_BLOCK_ LEN)命令,之后設(shè)置讀寫操作的數(shù)據(jù)模塊大小。本設(shè)計(jì)設(shè)定BIOS對(duì)SD卡進(jìn)行單模塊讀寫操作,每次讀寫512字節(jié),即每次對(duì)一個(gè)扇區(qū)進(jìn)行操作。SD初始化流程如圖1所示。

      表2 SD卡SPI模式RESPONSE響應(yīng)信號(hào)

      圖1 SD卡初始化流程

      2.2 BIOS對(duì)SD卡讀操作

      SD卡與標(biāo)準(zhǔn)硬盤的尋址方式類似,都使用LBA(Logical Block Add ressing)尋址方式。在LBA地址中,地址不再表示硬盤的實(shí)際物理地址(柱面、磁頭和扇區(qū))。LBA編址方式將CHS這種三維尋址方式轉(zhuǎn)變?yōu)橐痪S的線性尋址,它把硬盤所有的物理扇區(qū)的C/H/S編號(hào)通過(guò)一定的規(guī)則轉(zhuǎn)變?yōu)橐痪€性的編號(hào),系統(tǒng)效率得到大大提高,避免了煩瑣的磁頭/柱面/扇區(qū)的尋址方式。因此BIOS需要將int19傳遞到int13的CHS尋址的參數(shù)轉(zhuǎn)換成SD卡的邏輯地址。

      本設(shè)計(jì)在PC機(jī)上使用Winhex軟件以物理磁盤的方式查看SD卡的隱藏扇區(qū)、扇區(qū)的分配和偏移量,以及BIOS參數(shù)表,進(jìn)而確定CHS的值。再利用(1)式計(jì)算SD卡的邏輯扇區(qū)(log_sector)。根據(jù)SD卡的不同,引導(dǎo)扇區(qū)在SD卡中的偏移量也是不同的。在PC機(jī)上可以使用Winhex軟件以物理磁盤的方式查看SD卡的隱藏扇區(qū)、扇區(qū)的分配和偏移量。

      logic_sector的地址是32位的,最后9位是Block地址,前面的是Sector地址。當(dāng)Block!= 0時(shí),讀寫指令的相應(yīng)信號(hào)RESPONSE會(huì)報(bào)錯(cuò)。對(duì)SD卡的logic_sector的調(diào)整見(2)式:

      BIOS向 SD卡發(fā)送讀單模塊數(shù)據(jù)指令CMD17(READ_SINGLE_BLOCK)。SD卡接收到CMD17之后,主機(jī)首先從SD卡地址端口讀取一個(gè)字節(jié)長(zhǎng)度的RESPONSE響應(yīng)信號(hào)。信號(hào)的值為0表示SD卡成功響應(yīng)指令;不為0,表示出錯(cuò),主機(jī)重新讀取響應(yīng)信號(hào),一直到信號(hào)為0。之后SD卡向主機(jī)發(fā)送一個(gè)起始數(shù)據(jù)令牌(START _BLOCK_TOKEN),其值為0xFE,表示接下來(lái)發(fā)送的是一個(gè)512字節(jié)的數(shù)據(jù)模塊,最后是2個(gè)字節(jié)的CRC校驗(yàn)碼。BIOS讀SD卡單模塊數(shù)據(jù)的流程如圖2所示。

      圖2 SD卡單模塊讀操作流程

      BIOS讀SD卡單模塊數(shù)據(jù)的核心代碼如下:

      2.3 BIOS對(duì)SD卡寫操作

      BIOS向SD卡中寫入數(shù)據(jù)塊和讀取數(shù)據(jù)塊相似。

      BIOS首先設(shè)置寫數(shù)據(jù)塊的源地址和目的地址,再向SD卡端口發(fā)送CMD24(WRITE_SINGLE_BLOCK)指令啟動(dòng)寫操作過(guò)程。

      SD卡接收到CMD24后,向主機(jī)發(fā)送RESPONSE響應(yīng)信號(hào)。信號(hào)的值為0表示SD卡成功響應(yīng)指令;不為0,表示出錯(cuò),主機(jī)重新讀取響應(yīng)信號(hào),一直到信號(hào)為0,表示SD卡已經(jīng)準(zhǔn)備好接受數(shù)據(jù)塊。

      BIOS向SD卡發(fā)送數(shù)據(jù)起始令牌(START_ BLOCK_TOKEN),其值為0xFE,表示接下來(lái)發(fā)送的是一個(gè)512字節(jié)的數(shù)據(jù)模塊。

      SD卡接收到數(shù)據(jù)后,發(fā)送數(shù)據(jù)相應(yīng)信號(hào)DA TA_RESPONSE,表征需要寫入的數(shù)據(jù)是否完成,最后發(fā)送2個(gè)字節(jié)的CRC校驗(yàn)碼。BIOS向SD卡寫入數(shù)據(jù)塊流程如圖3所示。

      圖3 SD卡單模塊寫操作流程

      對(duì)寫入數(shù)據(jù)的響應(yīng)信號(hào) DATA_RESPONSE,SD卡標(biāo)準(zhǔn)定義見表3所列。

      表3 SD卡SPI接口對(duì)寫入數(shù)據(jù)的響應(yīng)信號(hào)

      表中狀態(tài)的含義如下:

      *010:接收數(shù)據(jù);

      *101:數(shù)據(jù)校驗(yàn)錯(cuò);

      *110:寫入數(shù)據(jù)錯(cuò)。

      當(dāng)SD卡正確接收數(shù)據(jù)模塊時(shí),狀態(tài)的值為010,即數(shù)據(jù)響應(yīng)信號(hào)DATA_RESPONSE的值為0x05。

      2.4 BIOS引導(dǎo)操作系統(tǒng)

      首先,通過(guò)軟件開發(fā)編譯平臺(tái)將BIOS編譯成機(jī)器碼,將編譯好的機(jī)器碼燒寫進(jìn)FPGA開發(fā)板片上Flash存儲(chǔ)器的E000:0000處;其次,利用QuartusⅡ軟件調(diào)用開發(fā)板的資源實(shí)現(xiàn)單芯片計(jì)算機(jī)的硬件電路(已由前期研究設(shè)計(jì)完成)[1]。

      開發(fā)板上電之后,首先執(zhí)行片上Flash存儲(chǔ)器的E000:0000處的BIOS機(jī)器碼,對(duì)SD卡進(jìn)行初始化操作的程序,主要是對(duì)SD卡進(jìn)行SPI模式設(shè)置和讀寫數(shù)據(jù)長(zhǎng)度的設(shè)置。BIOS對(duì)SD卡的初始化設(shè)置執(zhí)行完畢之后,程序執(zhí)行int19中斷[9],通過(guò)ax、cx和dx通用寄存器從int19號(hào)中斷向int13號(hào)中斷傳遞CHS(Cy linder/Head/ Sector)參數(shù)。程序通過(guò)傳遞過(guò)來(lái)的ah的值確定調(diào)用int13號(hào)中斷的02號(hào)子功能讀取SD卡的引導(dǎo)扇區(qū)。BIOS利用(1)式和(2)式計(jì)算出引導(dǎo)扇區(qū)的位置,再通過(guò)對(duì)SD卡的讀操作,把SD卡的引導(dǎo)扇區(qū)讀入到片上存儲(chǔ)器上指定的位置0000: 7c00處。再通過(guò)把段地址和偏移地址壓棧和彈棧操作,使指針指向0000:7c00處,并把指揮權(quán)交給引導(dǎo)扇區(qū),執(zhí)行引導(dǎo)扇區(qū)的指令。

      引導(dǎo)扇區(qū)的指令繼續(xù)重復(fù)地調(diào)用int13中斷的2號(hào)子功能讀取SD卡扇區(qū),將存儲(chǔ)在SD卡上的FreeDOS操作系統(tǒng)的 Kernel文件和 Command.com系統(tǒng)文件加載到片上存儲(chǔ)器的指定位置,最終完成啟動(dòng)FreeDOS操作系統(tǒng)。

      3 結(jié)束語(yǔ)

      本文提出了從SD卡啟動(dòng)單芯片計(jì)算機(jī)的設(shè)想,并基于單芯片計(jì)算機(jī)SD卡設(shè)計(jì)了BIOS軟件,同時(shí)闡述了BIOS軟件主要的開發(fā)設(shè)計(jì)步驟。本設(shè)計(jì)BIOS利用SD卡作為主存儲(chǔ)設(shè)備,基于SD卡SPI接口的基本協(xié)議,完成初始化和單模塊讀寫等命令。為了實(shí)現(xiàn)BIOS的研發(fā)和調(diào)試工作的方便,本設(shè)計(jì)使用ALTERA DE2 FPGA開發(fā)板作為硬件開發(fā)平臺(tái)。由于FPGA開發(fā)板上帶有Flash存儲(chǔ)器,F(xiàn)lash存儲(chǔ)器的非易失性和可重復(fù)燒寫的特性正適合存儲(chǔ)BIOS程序;而且在硬件電路部分可以調(diào)用FPGA開發(fā)板的資源實(shí)現(xiàn)X86硬件電路;另外該開發(fā)板自帶一個(gè)SD卡接口,是本實(shí)驗(yàn)與設(shè)計(jì)的理想開發(fā)平臺(tái)。

      最后本設(shè)計(jì)實(shí)現(xiàn)了總體方案設(shè)計(jì),從SD卡成功地啟動(dòng)FreeDOS操作系統(tǒng)。所設(shè)計(jì)的BIOS軟件在 Bochs模擬器上也成功地啟動(dòng)了FreeDOS操作系統(tǒng),增加了所設(shè)計(jì)的BIOS軟件的通用性和可移植性,促進(jìn)了便攜式產(chǎn)品的開發(fā)。

      [1] 孫 璐,陶 晶,舒 展,等.基于8086 CPU的單芯片計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)[J].中國(guó)集成電路,2008,17(9):32-37.

      [2] 沈美明,溫冬嬋.80X 86匯編語(yǔ)言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2001:45-164.

      [3] 汪明亮,解光軍.用于W LED驅(qū)動(dòng)的電流檢測(cè)放大器的設(shè)計(jì)[J].合肥工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2008,31(8): 1330-1333,1342.

      [4] UPDATE:mem ory breakfast through drivesm iniaturization [Z].1990.

      [5] W eber S.Look Out EPROMs,Here Comes Flash[J].E lectronics,Nov,1990:44-50.

      [6] 王 清,劉新寧.SD卡硬件啟動(dòng)和數(shù)據(jù)存儲(chǔ)的控制邏輯的設(shè)計(jì)實(shí)現(xiàn)[J].計(jì)算機(jī)工程應(yīng)用技術(shù),2008,4(4):990-991.

      [7] 陳文欽.BIOS研發(fā)技術(shù)剖析[M].北京:清華大學(xué)出版社,2001:70-164.

      [8] SD M emory Card Specifications,Part 1:Physical Layer Specification,Version 1.01[S].2001.

      [9] AM IBIOS 98 Technical Reference[M].American M egatrends Inc,1998.

      猜你喜歡
      單芯片開發(fā)板扇區(qū)
      分階段調(diào)整增加扇區(qū)通行能力策略
      南北橋(2022年2期)2022-05-31 04:28:07
      U盤故障排除經(jīng)驗(yàn)談
      RDA宣布推出高性能藍(lán)牙音頻系統(tǒng)單芯片RDA5836
      電子制作(2017年18期)2017-12-30 09:53:45
      Microchip最新推出兩款PIC32 Curiosity開發(fā)板
      基于TEA1532反激式開關(guān)電源的設(shè)計(jì)與調(diào)試
      淺析單片機(jī)開發(fā)板的設(shè)計(jì)與制作
      電子制作(2017年22期)2017-02-02 07:10:14
      基于貝葉斯估計(jì)的短時(shí)空域扇區(qū)交通流量預(yù)測(cè)
      重建分區(qū)表與FAT32_DBR研究與實(shí)現(xiàn)
      Mouser為您呈上開發(fā)關(guān)鍵之STMicroelectronics Nucleo開發(fā)板
      Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
      郴州市| 衡东县| 天峨县| 孟村| 南部县| 马关县| 苏尼特右旗| 沭阳县| 兴业县| 噶尔县| 北流市| 棋牌| 黑河市| 盐山县| 阿克苏市| 布拖县| 三河市| 北流市| 洱源县| 梁山县| 原平市| 长宁县| 临潭县| 萍乡市| 巴楚县| 濮阳县| 鄂尔多斯市| 丹凤县| 大田县| 都安| 枞阳县| 夹江县| 弋阳县| 元氏县| 福贡县| 斗六市| 武城县| 灵寿县| 巴彦县| 渝北区| 资阳市|