嵌入式系統(tǒng)原理與應(yīng)用技術(shù)課程設(shè)計(jì)基于ARM9的BootLoader啟動(dòng)設(shè)計(jì)_第1頁
嵌入式系統(tǒng)原理與應(yīng)用技術(shù)課程設(shè)計(jì)基于ARM9的BootLoader啟動(dòng)設(shè)計(jì)_第2頁
嵌入式系統(tǒng)原理與應(yīng)用技術(shù)課程設(shè)計(jì)基于ARM9的BootLoader啟動(dòng)設(shè)計(jì)_第3頁
嵌入式系統(tǒng)原理與應(yīng)用技術(shù)課程設(shè)計(jì)基于ARM9的BootLoader啟動(dòng)設(shè)計(jì)_第4頁
嵌入式系統(tǒng)原理與應(yīng)用技術(shù)課程設(shè)計(jì)基于ARM9的BootLoader啟動(dòng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、長治學(xué)院課程設(shè)計(jì)報(bào)告課程名稱:課程名稱: 嵌入式系統(tǒng)原理與應(yīng)用技術(shù)嵌入式系統(tǒng)原理與應(yīng)用技術(shù) 設(shè)計(jì)題目設(shè)計(jì)題目: bootloader 程序設(shè)計(jì) 系系 別:別: 計(jì)算機(jī)系 專專 業(yè):業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 組組 別:別: 學(xué)生姓名學(xué)生姓名: : 學(xué)學(xué) 號(hào)號(hào): 08407106 起止日期起止日期: 2011 年 12 月 15 日 - 2011 年 12 月 22 日 指導(dǎo)教師指導(dǎo)教師: 目錄第一章 概述.11.1 課程設(shè)計(jì)名稱 .11.2 課程設(shè)計(jì)目的 .11.3 要求 .1第二章 背景分析.12.1 bootloader的概念.12.2 bootloader的主要任務(wù)與典型結(jié)構(gòu)框架.1第三章

2、bootloader 串口驅(qū)動(dòng)程序的設(shè)計(jì) .24.1 uart 寄存器簡介.24.2 uart 串口工作原理.54.3 uart 驅(qū)動(dòng)程序詳細(xì)設(shè)計(jì).5第四章 總結(jié).9參考文獻(xiàn).101第一章 概述 1.1 課程設(shè)計(jì)名稱bootloader 程序設(shè)計(jì)1.2 課程設(shè)計(jì)目的串口驅(qū)動(dòng)和網(wǎng)口驅(qū)動(dòng)程序的設(shè)計(jì),可以通過串口或網(wǎng)口接收數(shù)據(jù)或文件,并且可以寫到 flash 中1.3 要求編寫 bootloader 程序 uart.h uart.c 串口驅(qū)動(dòng)測試程序 main.c第二章 背景分析2.1 bootloader 的概念簡單地說,bootloader 就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過這段小

3、程序,可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。2.2 bootloader 的主要任務(wù)與典型結(jié)構(gòu)框架從操作系統(tǒng)的角度看,bootloader 的總目標(biāo)就是正確地調(diào)用內(nèi)核來執(zhí)行。另外,由于 bootloader 的實(shí)現(xiàn)依賴于 cpu 的體系結(jié)構(gòu),因此大多數(shù)bootloader 都分為 stage1 和 stage2 兩大部分。依賴于 cpu 體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在 stage1 中,而且通常都用匯編語言來實(shí)現(xiàn),以達(dá)到短小精悍的目的。而 stage2 則通常用 c 語言來實(shí)現(xiàn),這樣可以

4、實(shí)現(xiàn)更復(fù)雜的功能,而且代碼會(huì)具有更好的可讀性和可移植性。bootloader 的 stage1 通常包括一下步驟(以執(zhí)行的先后順序):(1) 硬件設(shè)備初始化。(2) 為加載 bootloader 的 stage2 準(zhǔn)備 ram 空間。2(3) 復(fù)制 bootloader 的 stage2 到 ram 空間中。(4) 設(shè)置好堆棧。(5) 跳轉(zhuǎn)到 stage2 的 c 入口點(diǎn)。bootloader 的 stage2 通常包括一下步驟(以執(zhí)行的先后順序):(1) 初始化本階段要使用的硬件設(shè)備。(2) 檢測系統(tǒng)內(nèi)存映射。(3) 將 kernel 映像和根文件系統(tǒng)映像從 flash 上獨(dú)到 ram 空間

5、中。(4) 為內(nèi)核設(shè)置啟動(dòng)參數(shù)。(5) 調(diào)用內(nèi)核。第三章 bootloader 串口驅(qū)動(dòng)程序的設(shè)計(jì)3.1 uart 寄存器簡介s3c2440auart 控制器,提供 3 個(gè)獨(dú)立的異步串行 i/o 端口,每個(gè)端口都可以在中斷模式或 dma 模式下工作。uart 可以產(chǎn)生中斷請(qǐng)求或 dma 請(qǐng)求,以便在 cpu 和 uart 之間傳輸數(shù)據(jù)。在使用系統(tǒng)時(shí)鐘的情況下,uart 可以支持最高 115.2kbps 的傳輸速率。如果外部設(shè)備通過 uextclk 為 uart 提供時(shí)鐘,那么 uart 的傳輸速率可以更高。每個(gè) uart 通道包含兩個(gè)用于接收和發(fā)送數(shù)據(jù)的 16 字節(jié)的 fifo 緩沖寄存器。由

6、于 uart 是串行異步通信方式,因此在 uart 通信過程中每次只能傳輸1 位(bit),若干位組成一個(gè)數(shù)據(jù)幀(frame),幀是 uart 通信中最基本單元,它主要包含開始位、數(shù)據(jù)位、校驗(yàn)位(如果開啟了數(shù)據(jù)校驗(yàn),要包含校驗(yàn)位)和停止位。uart 在通信之前要在發(fā)送端和接受端約定好幀的結(jié)構(gòu),也就是約定好傳輸數(shù)據(jù)幀格式。(1) 開始位:必須包含在數(shù)據(jù)幀中,表示一個(gè)幀的開始。(2) 數(shù)據(jù)位:可選 5、6、7、8 位,該長度可由編程人員指定。(3) 校驗(yàn)位:如果在開啟了數(shù)據(jù)校驗(yàn)時(shí),該位必須指定。(4) 停止位:可選 1、2 位,該位長度可由編程人員指定。通信雙方約定好幀格式后,指定同一波特率,以保

7、證雙方數(shù)據(jù)傳輸?shù)耐健?uart 串口驅(qū)動(dòng)需要設(shè)置的寄存器及其具體特性如表 4-1表 4-8 所示:表 3-1 uart0 串行控制寄存器(ulcon0)寄存器名地址是否讀寫描述復(fù)位默認(rèn)值ulcon00 x50000000r/w串口 0 串行控制寄存器0 x00ulcon0位描述初始值保留70紅外模式6選擇串口 0 是否使用紅外模式:0 = 正常通信模式 1 = 紅外通信模式0校驗(yàn)?zāi)J?:3設(shè)置串口 0 在數(shù)據(jù)接收和發(fā)送時(shí)采用的校驗(yàn)方式:0 xx = 無校驗(yàn) 100 = 奇校驗(yàn) 101 = 偶校驗(yàn) 110 = 強(qiáng)制校驗(yàn)/檢測是否為 1111 = 強(qiáng)制校驗(yàn)/檢測是否為 0000停止位2設(shè)置串口

8、0 停止位數(shù):0 = 每個(gè)數(shù)據(jù)幀一個(gè)停止位1 = 每個(gè)數(shù)據(jù)幀二個(gè)停止位0數(shù)據(jù)位1:0設(shè)置串口 0 數(shù)據(jù)位數(shù):00 = 5 個(gè)數(shù)據(jù)位 01 = 6 個(gè)數(shù)據(jù)位10 = 7 個(gè)數(shù)據(jù)位 11 = 8 個(gè)數(shù)據(jù)位00表 3-2 uart0 串口控制寄存器(ucon0)寄存器名地址是否讀寫描述復(fù)位默認(rèn)值ucon00 x50000004r/w串口 0 控制寄存器0 x00ucon0位描述初始值fclk 分頻因子15:12當(dāng) uart0 選擇 fclk 作為時(shí)鐘源時(shí),設(shè)置其fclk 的分頻因子uart0 工作時(shí)鐘頻率 = fclk/fclk 分頻因子 + 60000uart 時(shí)鐘源選擇11:10選擇 uart0

9、 的工作時(shí)鐘pclk,uextclk,fclk/n:00,10 = pclk 01 = uextclk11 = fclk/n00發(fā)送數(shù)據(jù)中斷產(chǎn)生類型9設(shè)置 uart0 中斷請(qǐng)求類型,在非 fifo 傳輸模式下,一旦發(fā)送數(shù)據(jù)緩沖區(qū)為空,立即產(chǎn)生中斷信號(hào),在 fifo 傳輸模式下達(dá)到發(fā)送數(shù)據(jù)觸發(fā)條件時(shí)立即產(chǎn)生中斷信號(hào):0 = 脈沖觸發(fā) 1 = 電平觸發(fā)0接收數(shù)據(jù)中斷產(chǎn)生類型8設(shè)置 uart0 中斷請(qǐng)求類型,在非 fifo 傳輸模式下,一旦接收到數(shù)據(jù),立即產(chǎn)生中斷信號(hào),在 fifo 傳輸模式下達(dá)到接收數(shù)據(jù)觸發(fā)條件時(shí)立即產(chǎn)生中斷信號(hào):0 = 脈沖觸發(fā) 1 = 電平觸發(fā)0接收數(shù)據(jù)超時(shí)7設(shè)置當(dāng)接收數(shù)據(jù)時(shí),

10、如果數(shù)據(jù)超時(shí),是否產(chǎn)生接收中斷:0 = 不開啟超時(shí)中斷 1 = 開啟超時(shí)中斷04接收數(shù)據(jù)錯(cuò)誤中斷6設(shè)置當(dāng)接收數(shù)據(jù)時(shí),如果產(chǎn)生異常,如傳輸中止,幀錯(cuò)誤,校驗(yàn)錯(cuò)誤時(shí),是否產(chǎn)生接收中斷:0 = 不產(chǎn)生錯(cuò)誤狀態(tài)中斷 1 = 產(chǎn)生錯(cuò)誤狀態(tài)中斷0回送模式5設(shè)置該位時(shí) uart 會(huì)進(jìn)入回送模式,該模式僅用于測試0 = 正常模式 1 = 回送模式0發(fā)送終止信號(hào)4設(shè)置該位時(shí),uart 會(huì)發(fā)送一個(gè)幀長度的終止信號(hào),發(fā)送完畢后,該位自動(dòng)恢復(fù)為 00 = 正常傳輸 1 = 發(fā)送終止信號(hào)0發(fā)送模式3:2設(shè)置采用哪個(gè)方式執(zhí)行數(shù)據(jù)寫入發(fā)送緩沖區(qū)00 = 無效 01 = 中斷請(qǐng)求或查詢模式10 = dma0 請(qǐng)求00接收模式

11、1:0設(shè)置采用哪個(gè)方式執(zhí)行數(shù)據(jù)寫入接收緩沖區(qū)00 = 無效 01 = 中斷請(qǐng)求或查詢模式10 = dma0 請(qǐng)求0表 3-3 uart fifo 控制寄存器(ufcon0)寄存器名地址是否讀寫描述復(fù)位默認(rèn)值ufcon00 x50000008r/w串口 0 fifo 控制寄存器0 x00ufcon0位描述初始值發(fā)送數(shù)據(jù)觸發(fā)級(jí)別7:6設(shè)置 fifo 發(fā)送模式的觸發(fā)級(jí)別:00 = fifo 為空觸發(fā) 01 = 16 字節(jié)觸發(fā)10 = 32 字節(jié)觸發(fā) 11 = 48 字節(jié)觸發(fā)0接收數(shù)據(jù)觸發(fā)級(jí)別5:4設(shè)置 fifo 接收模式的觸發(fā)級(jí)別:00 = fifo 為空觸發(fā) 01 = 16 字節(jié)觸發(fā)10 = 32

12、 字節(jié)觸發(fā) 11 = 48 字節(jié)觸發(fā)00保留30發(fā)送 fifo 重置2在重置 fifo 后自動(dòng)清除發(fā)送緩沖區(qū)0 = 正常模式 1 = 自動(dòng)清除0接收 fifo 重置1在重置 fifo 后自動(dòng)清除接收緩沖區(qū)0 = 正常模式 1 = 自動(dòng)清除0啟用 fifo00 = 不啟用 fifo 1 = 啟用 fifo0表 3-4 uart modem 控制寄存器(umcon0)寄存器名地址是否讀寫描述復(fù)位默認(rèn)值umcon00 x5000000cr/w串口 0 modem 控制寄存器0 x00umcon0位描述初始值保留7:5必須全部置 00afc 自動(dòng)流控40 = 不開啟流控 1 = 開啟流控0保留3:1必

13、須全部置 00005請(qǐng)求發(fā)送0如果啟用 afc,該位無效,s3c2440a 會(huì)自動(dòng)控制nrts,如果不啟用 afc,nrts 必須由軟件控制0 = 高電平激活 nrts 1 = 低電平激活 nrts0表 3-5 uart 發(fā)送/接收狀態(tài)寄存器(utrstat0)寄存器名地址是否讀寫描述復(fù)位默認(rèn)值utrstat00 x50000010r/w串口 0 發(fā)送/接收狀態(tài)寄存器0 x06utrstat0位描述初始值發(fā)送器為空2當(dāng)發(fā)送緩存寄存器中沒有數(shù)據(jù)要發(fā)送且發(fā)送移位寄存器為空時(shí),自動(dòng)置 10 = 非空 1 = 發(fā)送器為空1發(fā)送緩存寄存器為空1當(dāng)發(fā)送緩存寄存器為空時(shí),自動(dòng)置 10 = 發(fā)送緩存寄存器非空

14、1 = 發(fā)送緩存寄存器為空1接收緩存寄存器為空0當(dāng)接收緩存寄存器有數(shù)據(jù)到達(dá)是,自動(dòng)置 10 = 接收緩存寄存器為空1 = 緩存寄存器接收數(shù)據(jù)0表 3-6 uart 發(fā)送緩存寄存器(utxh0)寄存器名地址是否讀寫描述復(fù)位默認(rèn)值utxh00 x50000020(l)0 x50000023(b)w串口 0 發(fā)送緩存寄存器表 3-7 uart 接收緩存寄存器(urxh0)寄存器名地址是否讀寫描述復(fù)位默認(rèn)值urxh00 x50000024(l)0 x50000027(b)r串口 0 接收緩存寄存器表 3-8 uart 比特率除數(shù)寄存器(ubrdiv0)寄存器名地址是否讀寫描述復(fù)位默認(rèn)值ubrdiv00

15、 x50000028r/w串口 0 比特率除數(shù)寄存器0 x00ubrdiv0位描述初始值比特率除數(shù)15:0設(shè)置比特率除數(shù)(大于 0)使用外部輸入時(shí)可以置 03.2 uart 串口工作原理每個(gè) uart 包含一個(gè)波特率產(chǎn)生器、發(fā)送器、接收器和一個(gè)控制單元。波特率發(fā)生器的時(shí)鐘可以由 pclk 或 uextclk 提供。發(fā)送器和接收器包含 64 字節(jié)的 fifo 緩沖寄存器和數(shù)據(jù)移位器。發(fā)送時(shí),數(shù)據(jù)被寫入 fifo,然后拷貝到發(fā)送移位器中(1 字節(jié)大小),接下來數(shù)據(jù)通過發(fā)送數(shù)據(jù)引腳(txdn)被發(fā)送。6接收時(shí),接收到的數(shù)據(jù)從接收數(shù)據(jù)引腳(rxdn)移入,然后從移位器(1 字節(jié)大小)拷貝到 fifo

16、中。3.3 uart 驅(qū)動(dòng)程序詳細(xì)設(shè)計(jì)uart 驅(qū)動(dòng)程序設(shè)計(jì)到的函數(shù)主要有初始化函數(shù)、串口發(fā)送字節(jié)函數(shù)、串口發(fā)送字符串函數(shù)、串口接收字節(jié)函數(shù)新建 uart.h 頭文件,編寫代碼如下:#ifndef _uart_h#define _uart_h/串口寄存器宏定義#define rulcon0 (*(volatile unsigned long *)0 x50000000)#define rucon0 (*(volatile unsigned long *)0 x50000004)#define rufcon0 (*(volatile unsigned long *)0 x50000008)#de

17、fine rumcon0 (*(volatile unsigned long *)0 x5000000c)#define rutrstat0 (*(volatile unsigned long *)0 x50000010)#define rutxh0 (*(volatile unsigned long *)0 x50000020)#define rurxh0 (*(volatile unsigned long *)0 x50000024)#define rubrdiv0 (*(volatile unsigned long *)0 x50000028)#define rgphcon (*(vol

18、atile unsigned long *)0 x56000070)#define rgphdat (*(volatile unsigned long *)0 x56000074)#define rgphup (*(volatile unsigned long *)0 x56000078)extern int uart_select(uint8 no);extern void uart_init(void);extern void uart_sendbyte(uint8 data);extern void uart_sendstr(char const *str);extern int uar

19、t_getkey(void);#endif新建 uart.c 文件,用于具體實(shí)現(xiàn)上述函數(shù),代碼如下:#include config.h/串口初始化函數(shù)7void uart_init(void) int i;rgphup = rgphup | (0 x032);rgphcon = (rgphcon & (0 x000000f0) | (0 x000000a0);rufcon0 = 0 x00; / 禁止 fifo 功能rumcon0 = 0 x00; / afc(流控制)禁能rulcon0 = 0 x03; / 禁止 irda,無奇偶校驗(yàn),1 位停止位,8 位數(shù)據(jù)位rucon0 = 0 x245

20、; / 使用 pclk 來生成波特率,發(fā)送中斷為電平觸發(fā)模式,接收中斷為邊沿觸發(fā)模式,禁止接收超時(shí)中斷,使能接收錯(cuò)誤中斷,正常工作模式,中斷或查詢方式(非 dma)rubrdiv0=(int)(pclk/16.0/uart_bps + 0.5) -1; / 串口波特率設(shè)置for(i=0;i100;i+);/串口發(fā)送字節(jié)函數(shù)void uart_sendbyte(uint8 data) int i; while(!(rutrstat0 & 0 x02);/ 等待發(fā)送器為空for(i=0; i10; i+);rutxh0 = data;/ 發(fā)送數(shù)據(jù)/串口發(fā)送字符串函數(shù)void uart_sendst

21、r(char const *str) while(*str != 0) if(*str = n) uart_sendbyte(r); 8 uart_sendbyte(*str+);/ 發(fā)送數(shù)據(jù) /串口接收字節(jié)函數(shù)int uart_getkey(void) int i;while(!(rutrstat0 & 0 x1);for(i=0; i10; i+);return(rurxh0);編寫 main.c,內(nèi)容如下:int main(void)char cmd20;uint8 rece256;memset(cmd,0,20);uart_select(0);uart_init();clk_init();delayns(10);uart_sendstr(串口初始化完成!rn);uart_sendstr(時(shí)鐘初始化完成!rn);while(1) memset(cmd,0,20);uart_receive(cmd);/uart_sendstr(cmd);if(memcmp(cmd,exit,4) = 0) break; 9uart_sendstr(rngood bye!rn); return 0;第四章 總結(jié)課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論