




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、在嵌入式編程里,特別是32bit CPU里,各種各樣五花八門的動作是CPU通過對外設(shè)的驅(qū)動來完成的.因?yàn)榈讓泳幊檀蟛糠止ぷ骶褪峭庠O(shè)編程。 CPU本身幾乎每一種外設(shè)都是通過讀寫設(shè)備上的寄存器來進(jìn)行操作的。外設(shè)寄存器也稱為“I/O端口”,通常包括:控制寄存器、狀態(tài)寄存器和數(shù)據(jù)寄存器三大類,而且一個外設(shè)的寄存器通常被連續(xù)地編址。注意,這里的外設(shè)是相對于CPU來講的,比如S3C2440除了ARM920T的內(nèi)核以外,還在同一塊CPU里集成很多模塊,這一些模塊也稱為外設(shè)。CPU對外設(shè)IO端口物理地址的編址方式 有兩種:一種是I/O映射方式(I/Omapped)稱為端口映射,另一種是存儲空間映射方式(Mem
2、orymapped),稱為內(nèi)存映射。而具體采用哪一種則取決于CPU的體系結(jié)構(gòu)。內(nèi)存映射有些體系結(jié)構(gòu)的CPU(如,PowerPC、m68k等)通常只實(shí)現(xiàn)一個物理地址空間(RAM)。在這種情況下,外設(shè) I/O端口的物理地址就被映射到CPU的單一物理地址空間中,而成為存儲空間的一部分。此時,CPU可以象訪問一個內(nèi)存單元那樣訪問外設(shè)I/O端口,而不需要 設(shè)立專門的外設(shè)I/O指令。這就是所謂的“存儲空間映射方式”(Memorymapped)。ARM體系的CPU均采用這一模式.簡而言之,就是內(nèi)存(一般是SDRAM)與外設(shè)寄存器統(tǒng)一編址。端口映射而另外一些體系結(jié)構(gòu)的CPU(典型地如X86)則為外設(shè)專門實(shí)現(xiàn)了
3、一個單獨(dú)地地址空間,稱為“I/O地址空間”或者“I/O端口空間”。這是一個 與CPU地RAM物理地址空間不同的地址空間,所有外設(shè)的I/O端口均在這一空間中進(jìn)行編址。CPU通過設(shè)立專門的I/O指令(如X86的IN和OUT指 令)來訪問這一空間中的地址單元(也即 I/O端口)。這就是所謂的“I/O映射方式”(I/Omapped)。與RAM物理地址空間相比,I/O地址空間通常都比較小,如x86 CPU的I/O空間就只有64KB(00xffff)。這是“I/O映射方式”的一個主要缺點(diǎn)。而且必須要專門的匯編語言才能處理.內(nèi)存映射模式下,對寄存器的訪問就是某一個地址的操作,因此C語言的指針即可完成此操作。
4、這樣編程相當(dāng)方便。Linux 最早是在在X86運(yùn)行,對硬件地址采用端口映射,后來又?jǐn)U展到ARM之類運(yùn)行.為了簡化操作,Linux在所以CPU上都采用I/O端口概念.如果是象ARM這樣內(nèi)存映射.也被模擬成端口.SOC的外設(shè)地址編址-對于S3C2440/S3C6410這種集成很多外設(shè)模塊的SOC來說,外設(shè)的地址編址分成兩種類型。一種是CPU內(nèi)部集成的外設(shè),這里物理地址是固定的。這個查CPU的DataSheet即可知道。另外一種是物理上與CPU分離的IC,如Nor Flash,SDRAM網(wǎng)絡(luò)控制器,它們通過片選信號來確定自己的物理地址.還有一類IC的不直接映射到物理空間之上。這一類往往通過相應(yīng)寄存器
5、來間接控制。不在此討論之列內(nèi)部模塊固定地址比如S3C2440內(nèi)部模塊地址S3C6410的映射地址 外部模塊地址分配在CPU上都會引出多個片選線。每一個片選線表示對應(yīng)一個固定的地址范圍,在術(shù)語上稱為(Bank).以S3C2440為例,參見如下對應(yīng)關(guān)系在硬件設(shè)計(jì)上,第一片的SDRAM的片選線接在nGCS36上,參考上表,這片SDRAM的物理地理就是0x30000000.DM9000的網(wǎng)絡(luò)控制接在nGCS3這個硬件聯(lián)線上,這樣網(wǎng)絡(luò)處理器的硬件地址起始地址在0x18000000.以S3C6410為為例,它的第一步選是片選線nGCS3,SDRAM的起始地址是0x5000000之上.軟件如何讀寫外設(shè)-在內(nèi)
6、存映射模式下。對于外設(shè)的訪問實(shí)際就是對內(nèi)存地址的訪問.在C語言里,即指針操作。為了增加閱讀性,往往采用如下的宏定義.#define rGPGCON (*(volatile unsigned *)0x56000060)/Port G control 這個宏定義非常之復(fù)雜,所以我經(jīng)常用如下五個問題來問學(xué)生或者來面試講師的人。1.為什么要用絕對地址,地址怎么來的?2. unsigned *表示什么? 3.為什么要用unsigned? 4.最左邊的*表示什么?5. volatile表示什么含意?6.完成同樣一個功能,在不同字節(jié)序下,設(shè)置的寄存器的數(shù)字是不是一樣?第一個問題比較好答.內(nèi)存映射模式是直接內(nèi)
7、存訪問。編址的來源看上兩節(jié) 2. unsigned *表示什么? unsigned int 縮寫, unsigned *表示取后面四個byte空間的寬度, 同理還有(*(volatile unsigned short *)0x56000060) 表示取后面兩個字節(jié)空間。 3.為什么要用unsigned? 禁止算術(shù)移位,采用邏輯移位.因?yàn)榍度胧骄幊檀罅坎捎靡莆徊僮?。如果用帶符號,會形成算術(shù)移位,即最高位符號不參與移位,這是錯誤操作。 4.第一*表示什么? 表取指針指向空間.*(unsigned *) 上述表達(dá)式相當(dāng)如下代碼的簡寫, int val; int * p = &val; *p = 0x
8、100000;5.volatile表示什么含意? 其中volatile 是C的保留字,表禁止編譯器對變量訪問優(yōu)化. 即源碼中有多少讀寫操作,編譯后生產(chǎn)多少機(jī)器操作指令.否則如下代碼,將不產(chǎn)生指令 int a; a+ ; a- ;但是在硬件編程中,一次操作都可能表示特定含意.如果省略,往往出錯。6.完成同樣一個功能,在不同字節(jié)序下,設(shè)置的寄存器的數(shù)字是不是一樣? 不一樣,小端字節(jié)序是與手冊相同順序,即個數(shù)位表示第0位。大端字節(jié)序正好相反.基本操作向寄存器賦值 rGPBCON = 0x1000;向寄存器取值 unsigned int val =rGPBCON;位操作-置位操作把第0位置1rGPGC
9、ON | = 0x1;把第3位置1 rGPGCON |= 0x8;把第n位置1 rGPGCON |= (0x1 n);把第12,13位分別置1 rGPGON|= (0x3) 12;把第10,15位分別置1 rGPGON | = ( 0x01 10 ) | (0x01 15) ;把(0x0 n)表示什么含意? rGPGON = (0x01 2) | (0x0 1) | (0x0 0);表示占位,對應(yīng)位是默認(rèn)值不變.位操作-清位操作 把第1位清0 rGPGCON &= (0x1);第3位清洗0 rGPGCON &= (0x8);第n位清0 rGPGCON &= (0x1 n);第12,13清0 rGPGCON &= (0x3 12);第10,15位清0 rGPGCON &= (0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高端住宅用地土地使用權(quán)轉(zhuǎn)讓與住宅配套服務(wù)合同
- 實(shí)驗(yàn)室精密儀器全面維護(hù)保養(yǎng)服務(wù)協(xié)議
- 跨境電商智能零售供應(yīng)鏈金融風(fēng)險防控合同
- 城市配送物流調(diào)度員派遣合作協(xié)議
- 《情緒與工作滿意度》課件
- 學(xué)習(xí)《中小學(xué)教師職業(yè)道德規(guī)范》
- 上虞民宿運(yùn)營管理方案
- 中石化管理模式
- 單個菜品培訓(xùn)講解
- 小班健康活動《我會擦屁股》教學(xué)方案
- 寧波市施工圖設(shè)計(jì)常見問題及質(zhì)量通病
- JGT 486-2015 混凝土用復(fù)合摻合料
- 校服授權(quán)生產(chǎn)協(xié)議合同范本
- 碼頭維修保養(yǎng)投標(biāo)方案(技術(shù)方案)
- 2024年北京市高考數(shù)學(xué)真題試卷及答案
- 07SG531鋼網(wǎng)架設(shè)計(jì)圖集
- DL∕T 2025.2-2019 電站閥門檢修導(dǎo)則 第2部分:蝶閥
- DL∕T 1033.6-2014 電力行業(yè)詞匯 第6部分:新能源發(fā)電
- 黃腐植酸肥項(xiàng)目投資計(jì)劃書
- 小學(xué)數(shù)學(xué)二年級下冊-第七、八單元教材分析
- 敦煌研學(xué)旅行方案
評論
0/150
提交評論