9260的啟動方式!一小段總結如下:
1.9260的儲存器為32bit,這樣總共的儲存空間為4g,一共分成了16個每個256mb的bank,其中bank1-bank8的8個bank被對映到外部儲存器,分別對應片選0到片選7;bank0被對映到內部儲存器使用。內部只有兩個儲存器:rom和sram。
2.因為9260總是從0位址啟動,所以重點關注誰被對映到位址0。對映由兩個引數決定,乙個硬體引數,乙個軟體設定引數,硬體引數是bms引腳,軟體引數是remap引數。啟動時候,(猜測)remap是reset為0的。所以,當檢測到bms引腳為1時,內部rom被對映到位址0;檢測到bms為0時,上面說到的片選0,也就是bank1的被對映到位址0,這樣,通過通過bms的引腳設定,實現了2種啟動方式。
3.先分析bms為0的情況,我們知道bank1也就是片選0是ebi,就是外部匯流排介面,這裡接的是外部儲存器,我們知道通常情況下,我們一般從norflash啟動或者nandflash啟動,而處理器內部已經為nandflash預留了片選3.所以,這裡我們如果把norflash接在片選0,我們就可以實現norflash啟動。
4.現在分析bms為1的情況,此時內部rom被對映到位址0,此時啟動過程在5中描述
5.rom被對映到位址0時候,程式優先掃瞄兩個spi dataflash,查詢是否有相應的8個異常向量,即檢測前28bytes的內容,如果是異常向量,表明能夠引導系統,此時根據向量6的大小,確定要裝載到sram的大小,之後remap下,這樣sram就變成了位址0,之後程式跳轉到0位址執行。如果兩個spi dataflash沒有相應的向量,則轉向nand flash檢測,如果檢測到8個異常向量,表明nand flash能夠引導,方法跟以上相同。
6.綜上:
當我們需要從nor flash啟動的話,bms要設定0,即低,這樣nor flash所在的儲存器bank1,也就是ebi片選0,被對映到位址0,此時實現從nor flash啟動;當我們需要從nand flash啟動的話,bms要設定成1,即高,這樣當rom被對映到位址0,rom中的程式,檢測過兩個spi dataflash之後,當檢測到nand flash有相應的向量的時候,就會把nand flash中向量6標記的大小的**自動複製到sram中,之後重對映下remap,這樣sram被對映到了位址0,跳到位址0,開始系統執行了;此處,之所以要remap,是因為方便程式的開發,從0位址開始就行了~
當我們從nor flash啟動時候,沒有特別需要說的,此時我們忽略bank0的內容,即sram和rom中的內容,我們可以利用容量更大的sdram來做事情。當我們從nand flash啟動時候,nand flash啟動**中的一小部分被copy到了sram中(此時rom被對映到0,sram在其後),之後remap後,sram被對映到了位址0,cpu自動跳到0位址,即我們的小部分啟動**那執行,此時,啟動**也可以用容量更大的sdram來做事情了~
ARM9260內部中斷和外部中斷觸發方式
1.內部中斷 0 31 內部中斷可以有4中觸發方式static struct irq chip at91 aic chip static int at91 aic set type struct irq data d,unsigned type smr at91 aic read at91 aic ...
Spark 啟動方式
1 spark 提交任務方式 spark on yarn bin spark submit class org.apache.spark.examples.sparkpi master yarn cluster num executors 3 driver memory 4g executor me...
bash shell 啟動方式
使用者登入或輸入bash命令啟動的互動式shell 執行指令碼的非互動式shell shell會從4個不同的檔案裡讀取命令 1.etc profile,匯出全域性環境變數,裡面還會遍歷 etc profile.d目錄下的指令碼 2.home bash profile,使用者定製 3.home bas...