68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

您好,歡迎進入深圳市穎特新科技有限公司官方網(wǎng)站!

您現(xiàn)在的位置:首頁 新聞資訊 >> 新聞頭條 >> (二)啟動代碼分析 02
新聞資訊
NEWS INFORMATION

(二)啟動代碼分析 02

發(fā)布時間:2019-05-22

(二)啟動代碼分析 02

 

首先從開發(fā)板硬件講起:

思考問題: 開發(fā)板上電后,程序是如何啟動呢???

這里分 nor flash 啟動 和 nand flash 啟動

講解 : 

nand flash 啟動:

______________________________________________________________________________________________________________________

由于NAND FLASH是接在NAND FLASH控制器上而不是系統(tǒng)總線上,所以沒有在S3C2440A的8個BANK中分配地址空間。如果S3C2440被配置成從Nand Flash啟動,在S3C2440上電后,Nand Flash控制器的會自動的把Nand Flash上的前4K數(shù)據(jù)搬移到內(nèi)部SRAM中,也就是所謂的”Steppingstone”, 同時把這段片內(nèi)SRAM映射到nGCS0片選的空間(即0x00000000)。系統(tǒng)會從這個內(nèi)部SRAM中啟動,程序員需要完成的工作,就是把最核心的啟動程序放在Nand Flash的前4K中,也就是說,你需要編寫一個長度小于4K的引導程序,作用是將主程序拷貝到RAM (一般是SDRAM)中運行。而在Nand Flash方式啟動的情況下,系統(tǒng)是”看不到”Nor Flash的,因為Nor Flash也是掛在nGCS0上的,而nGCS0的地址空間已經(jīng)被占用了。

________________________________________________________________________________________________________________________

1、系統(tǒng)上電后,首先自動判斷是否是autoboot模式,如果使用 s3c2410是帶有nandflash的,并且被設置成autoboot,從nandflash開始啟動.
2、在判斷是autoboot模式后,mcu內(nèi)置的nandflash控制器自動將nandflash的最前面的4k區(qū)域(這4k區(qū)域存放著 bootloader的最前面4k代碼)拷貝到samsung所謂的"steppingstone"里面(steppingstone是在S3C2440 中,實際上是一塊4k大小的SRAM,).
3、在拷貝完前4k代碼后,nandflash控制器自動將"steppingstone"映射到arm地址空間0x00000000開始的前4k區(qū)域.
4、在映射過程完成后.nandflash控制器將pc指針直接指向arm地址空間的0x00000000位置,準備開始執(zhí)行"steppingstone"上的代碼.
5、而"steppingstone"上從nandflash拷貝過來的4k代碼,是程序員寫的bootloader的前4k代碼.這個 bootloader在之前寫好,并已經(jīng)被燒寫到nandflash的0x00000000開始的最前面區(qū)域..而這"steppingstone"上的 4k代碼就是bootloader的前4k代碼.
6、在pc指向arm地址空間的0x00000000后,系統(tǒng)就開始執(zhí)行指令代碼.這4k代碼的任務是:初始化硬件,設置中斷向量表,設置堆棧,然后一個很重要的任務是,將nandflash的最前面區(qū)域的bootloader(包含4k啟動代碼)拷貝到SDRAM中去,bootloader代碼的大小是寫好bootloader就確定的.然后只需要確定bootloader想映射到SDRAM的起始位置就ok.
7、在完成對nandflash上的bootloader搬移后,找到4k代碼的搬移代碼最后一個指令的下一個指令在SDRAM的bootloader的地址,然后跳轉到該位置,繼續(xù)執(zhí)行bootloader的剩余代碼(引導系統(tǒng)).
 
 
具體可以看: http://blog.csdn.net/r91987/article/details/7625916   雖然沒有圖,但是說得很好啊
 
因為代碼必須從 地址 0x000000 開始啟動,而 nor flash 就是0x000000  但是nand flash 地址確是 0x30000000  行不通,但是我們有個 4KB 的 steping stone(ARM 芯片自己有的)地址是 0x00000,這樣可以 
硬件復制前4KB 代碼到 stepping stone 再轉到 0x30000000 的 SDRAM 中去
 
nor flash 啟動,由于 nor flash 可以存放 bios , 但是 可讀不可寫,但是 bootloader 里面的 RW 段 和 ZI 段 要被寫,自然也要進行代碼的搬遷工作(參考 楊鑄 97頁
————————————————————————————————————————————————————————————————————————————————————————————————————————————————
————————————————————————————————————————————————————————————————————————————————————————————————————————————————
 
啟動代碼詳解: 
 
總得來說,裸機開發(fā) 啟動代碼只有 100 多條 匯編指令, 通過啟動代碼可以近一步熟悉 ARM 匯編指令, 好處是為以后熟練運用 ARM C語言, 匯編語言混合編程以及 uboot的移植打下基礎。
那么怎樣才算ARM匯編 過關呢???? 只要看得懂啟動代碼就可以了。。。。。。。。。。““““ ““ “ “““ “。。。。。。!然后自己會修改就行了!啊啊啊啊啊。岚 “““ ““ “  。。。。。。。。。!
聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

巴南区| 邳州市| 五莲县| 樟树市| 洛阳市| 福安市| 屯门区| 济源市| 册亨县| 广宁县| 马关县| 泗洪县| 玛沁县| 集安市| 淅川县| 沾益县| 桦甸市| 武义县| 来宾市| 平凉市| 突泉县| 从化市| 东兴市| 衡阳市| 改则县| 普定县| 吉木乃县| 安泽县| 塘沽区| 正宁县| 蒙山县| 丰县| 伊春市| 吉木乃县| 临沧市| 淮滨县| 吴桥县| 丹棱县| 花莲市| 抚松县| 汕尾市|