新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > s3c2440 NAND與NOR啟動(dòng)方式詳解

        s3c2440 NAND與NOR啟動(dòng)方式詳解

        作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
        一:地址空間的分配

        1:s3c2440是32位的,所以可以尋址4GB空間,內(nèi)存(SDRAM)和端口(特殊寄存器),還有ROM都映射到同一個(gè)4G空間里.

        本文引用地址:http://www.104case.com/article/201611/316880.htm

        2:開發(fā)板上一般都用SDRAM做內(nèi)存flash(nor、nand)來當(dāng)做ROM。其中nand flash沒有地址線,一次至少要讀一頁(yè)(512B).其他兩個(gè)有地址線

        3:nandflash不用來運(yùn)行代碼,只用來存儲(chǔ)代碼,NORflash,SDRAM可以直接運(yùn)行代碼)

        4:s3c2440總共有8個(gè)內(nèi)存banks
        6個(gè)內(nèi)存bank可以當(dāng)作ROM或者SRAM來使用
        留下的2個(gè)bank除了當(dāng)作ROM或者SRAM,還可以用SDRAM(各種內(nèi)存的讀寫方式不一樣)
        7個(gè)bank的起始地址是固定的
        還有一個(gè)靈活的bank的內(nèi)存地址,并且bank大小也可以改變

        5:s3c2440支持兩種啟動(dòng)模式:NAND和非NAND(這里是nor flash)。
        具體采用的方式取決于OM0、OM1兩個(gè)引腳

        OM[1:0所決定的啟動(dòng)方式

        OM[1:0]=00時(shí),處理器從NAND Flash啟動(dòng)

        OM[1:0]=01時(shí),處理器從16位寬度的ROM啟動(dòng)

        OM[1:0]=10時(shí),處理器從32位寬度的ROM啟動(dòng)。

        OM[1:0]=11時(shí),處理器從Test Mode啟動(dòng)。


        當(dāng)從NAND啟動(dòng)時(shí)

        cpu會(huì)自動(dòng)從NAND flash中讀取前4KB的數(shù)據(jù)放置在片內(nèi)SRAM里(s3c2440是soc),同時(shí)把這段片內(nèi)SRAM映射到nGCS0片選的空間(即0x00000000)。cpu是從0x00000000開始執(zhí)行,也就是NAND flash里的前4KB內(nèi)容。因?yàn)镹AND FLASH連地址線都沒有,不能直接把NAND映射到0x00000000,只好使用片內(nèi)SRAM做一個(gè)載體。通過這個(gè)載體把nandflash中大代碼復(fù)制到RAM(一般是SDRAM)中去執(zhí)行

        當(dāng)從非NAND flash啟動(dòng)時(shí)

        nor flash被映射到0x00000000地址(就是nGCS0,這里就不需要片內(nèi)SRAM來輔助了,所以片內(nèi)SRAM的起始地址還是0x40000000).然后cpu從0x00000000開始執(zhí)行(也就是在Norfalsh中執(zhí)行)。

        總結(jié):

        Arm的啟動(dòng)都是從0地址開始,所不同的是地址的映射不一樣。在arm開電的時(shí)候,要想讓arm知道以某種方式(地址映射方式)運(yùn)行,不可能通過你寫的某段程序控制,因?yàn)檫@時(shí)候你的程序還沒啟動(dòng),這時(shí)候arm會(huì)通過引腳的電平來判斷。

        1當(dāng)引腳OM0跟OM1有一個(gè)是高電平時(shí),這時(shí)地址0會(huì)映射到外部nGCS0片選的空間,也就是Norflash,程序就會(huì)從Norflash中啟動(dòng),arm直接取Norflash中的指令運(yùn)行。

        2當(dāng)OM0跟OM1都為低電平,則0地址內(nèi)部bootbuf(一段4k的SRAM)開始。系統(tǒng)上電,arm會(huì)自動(dòng)把NANDflash中的前4K內(nèi)容考到bootbuf(也就是0地址),然后從0地址運(yùn)行。

        這時(shí)NANDFlash中的前4K就是啟動(dòng)代碼(他的功能就是初始化硬件然后在把NANDFlash中的代碼復(fù)制到RAM中,再把相應(yīng)的指針指向該運(yùn)行的地方)

        為什么會(huì)有這兩種啟動(dòng)方式,關(guān)鍵還是兩種flash的不同特點(diǎn)造成,NOR FLASH容量小,速度快,穩(wěn)定性好,輸入地址,然后給出讀寫信號(hào)即可從數(shù)據(jù)口得到數(shù)據(jù),適合做程序存儲(chǔ)器。NAND FLASH 總?cè)萘看螅亲x寫都需要復(fù)雜的時(shí)序,更適合做數(shù)據(jù)存儲(chǔ)器。這種不同就造成了NORflash可以直接連接到arm的總線并且可以運(yùn)行程序,而NANDflash必須搬移到內(nèi)存(SDRAM)中運(yùn)行。

        在實(shí)際的開發(fā)中,一般可以把bootloader燒入到Norflash,程序運(yùn)行可以通過串口交互,進(jìn)行一定的操作,比如下載,調(diào)試。這樣就很可以很方便的調(diào)試你的一些代碼。Norflash中的Bootloader還可以燒錄內(nèi)核到Norflash等等功能。



        關(guān)鍵詞: s3c2440NANDNOR啟動(dòng)方

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 灵武市| 呼玛县| 禹城市| 涪陵区| 乐安县| 双辽市| 甘孜县| 鹿泉市| 肥西县| 大竹县| 额济纳旗| 达州市| 渭源县| 娄烦县| 治县。| 永丰县| 上林县| 古蔺县| 蒙自县| 蒙山县| 禹城市| 通江县| 来安县| 枞阳县| 武清区| 色达县| 济源市| 桐乡市| 宁晋县| 鹤山市| 兰考县| 德令哈市| 桂东县| 尼勒克县| 周至县| 扎兰屯市| 株洲市| 兴义市| 富平县| 闻喜县| 林州市|