亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 9177 | 回復(fù): 4
打印 上一主題 下一主題

[BootLoader] uboot初始化中,為何要設(shè)置CPU為SVC模式而不是設(shè)置為其他模式 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-04-17 23:44 |只看該作者 |倒序瀏覽
uboot初始化中,為何要設(shè)置CPUSVC模式而不是設(shè)置為其他模式

在看Ubootstart.S文件時候,發(fā)現(xiàn)其最開始初始化系統(tǒng),做的第一件事情,就是將CPU設(shè)置為SVC模式,但是S3C2440CPUcoreARM920T,其有7種模式,為何非要設(shè)置為SVC模式,而不是設(shè)置為其他模式呢?對此,經(jīng)過一些求證,得出如下原因:


首先,先要了解ARMCPU7種模式是哪些:

http://www.docin.com/p-73665362.html


圖表 22 ARMCPU的模式

處理器模式說明備注
用戶
(usr)
正常程序工作模式此模式下程序不能夠訪問一些受操作系統(tǒng)保護(hù)的系統(tǒng)資源,應(yīng)用程序也不能直接進(jìn)行處理器模式的切換。
系統(tǒng)
(sys)
用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)
快中斷
(fiq)
支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時進(jìn)入此模式
中斷
(irq)
用于通用中斷處理IRQ異常響應(yīng)時進(jìn)入此模式
管理
(svc)
操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進(jìn)入此模式
中止
(abt)
用于支持虛擬內(nèi)存和/或存儲器保護(hù)ARM7TDMI沒有大用處
未定義
(und)
支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時進(jìn)入此模式


另外,7種模式中,除用戶usr模式外,其它模式均為特權(quán)模式。


對于為何此處是svc模式,而不是其他某種格式,其原因,可以從兩方面來看:

【第一方面】

我們先簡單的來分析一下那7種模式:

中止abt和未定義und模式:

首先可以排除的是,中止abt和未定義und模式,那都是不太正常的模式,此處程序是正常運行的,所以不應(yīng)該設(shè)置CPU為其中任何一種模式,所以可以排除。

快中斷fiq和中斷irq模式:

其次,對于快中斷fiq和中斷irq來說,此處uboot初始化的時候,也還沒啥中斷要處理和能夠處理,而且即使是注冊了終端服務(wù)程序后,能夠處理中斷,那么這兩種模式,也是自動切換過去的,所以,此處也不應(yīng)該設(shè)置為其中任何一種模式。

用戶usr模式:

雖然從理論上來說,可以設(shè)置CPU為用戶usr模式,但是由于此模式無法直接訪問很多的硬件資源,而uboot初始化,就必須要去訪問這類資源,所以此處可以排除,不能設(shè)置為用戶usr模式。

系統(tǒng)sys模式 vs 管理svc模式:

首先,sys模式和usr模式相比,所用的寄存器組,都是一樣的,但是增加了一些訪問一些在usr模式下不能訪問的資源。

svc模式本身就屬于特權(quán)模式,本身就可以訪問那些受控資源,而且,比sys模式還多了些自己模式下的影子寄存器,所以,相對sys模式來說,可以訪問資源的能力相同,但是擁有更多的硬件資源。

所以,從理論上來說,雖然可以設(shè)置為syssvc模式的任一種,但是從uboot方面考慮,其要做的事情是初始化系統(tǒng)相關(guān)硬件資源,需要獲取盡量多的權(quán)限,以方便操作硬件,初始化硬件。


uboot的目的是初始化硬件的角度來說,設(shè)置為svc模式,更有利于其工作。

因此,此處將CPU設(shè)置為SVC模式。


【第二方面】

uboot作為一個bootloader來說,最終目的是為了啟動Linuxkernel,在做好準(zhǔn)備工作(即初始化硬件,準(zhǔn)備好kernelrootfs等)跳轉(zhuǎn)到kernel之前,本身就要滿足一些條件,其中一個條件,就是要求CPU處于SVC模式的。

(關(guān)于滿足哪些條件,詳情請參考:

ARM Linux Kernel Boot Requirements

http://www.arm.linux.org.uk/developer/booting.php

或者Linux內(nèi)核文檔:

kernel_source_root\documentation\arm\booting

中也是同樣的解釋:

The CPU must be in SVC mode”)

所以,uboot在最初的初始化階段,就將CPU設(shè)置為SVC模式,也是最合適的。


綜上所述,uboot在初始化階段,就應(yīng)該將CPU設(shè)置為SVC模式。

論壇徽章:
0
2 [報告]
發(fā)表于 2011-04-19 23:12 |只看該作者
呵呵學(xué)習(xí)咯

論壇徽章:
0
3 [報告]
發(fā)表于 2011-08-24 14:25 |只看該作者
分析的不錯

論壇徽章:
0
4 [報告]
發(fā)表于 2012-01-19 17:59 |只看該作者
回帖是一種美德,謝謝樓主的分享,頂上先

論壇徽章:
1
水瓶座
日期:2014-10-18 20:17:41
5 [報告]
發(fā)表于 2012-01-24 07:56 |只看該作者
謝謝LZ分享
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP