日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]這幾天晚上一直折騰S3C6410的裸機(jī)SD卡啟動(dòng),不大想使用UBOOT,我是搞硬件的,對(duì)底層非常感興趣,不喜歡已經(jīng)寫好的,因此自己一直在嘗試,其實(shí)很早之前就試過(guò)SD卡啟動(dòng),也就是ARM11上電后會(huì)把SD卡倒數(shù)第9KB開(kāi)始的8KB(倒數(shù)0x2

這幾天晚上一直折騰S3C6410的裸機(jī)SD卡啟動(dòng),不大想使用UBOOT,我是搞硬件的,對(duì)底層非常感興趣,不喜歡已經(jīng)寫好的,因此自己一直在嘗試,其實(shí)很早之前就試過(guò)SD卡啟動(dòng),也就是ARM11上電后會(huì)把SD卡倒數(shù)第9KB開(kāi)始的8KB(倒數(shù)0x2400B偏移量)復(fù)制到內(nèi)部SRAM中執(zhí)行,這個(gè)比較簡(jiǎn)單,但是代碼量只有8K,不能像STM32一樣玩,因此查閱相關(guān)資料,得知啟動(dòng)方式為L(zhǎng)0加載L1,L1加載L2,簡(jiǎn)單來(lái)說(shuō),就是上電啟動(dòng)后,固化在S3C6410內(nèi)部的L0代碼啟動(dòng),將NAND,SD卡等外部存儲(chǔ)器映射或者復(fù)制到內(nèi)部SRAM,這個(gè)從SD卡或者flash復(fù)制過(guò)去的代碼稱之為L(zhǎng)1,也就是用戶的啟動(dòng)代碼,在電腦上相當(dāng)于硬盤主分區(qū)的啟動(dòng)代碼和BIOS,用來(lái)初始化外時(shí)鐘以及外設(shè),并啟動(dòng)系統(tǒng),,這部分代碼只有8KB因此完成的工作有限,因此可以使用這段代碼完成初始化并復(fù)制操作系統(tǒng)或者更大的代碼到內(nèi)存,這部分代碼就是L2了,只有L1將內(nèi)存初始化后才能使用內(nèi)存,再此之前內(nèi)存只有8KB,就是內(nèi)部SRAM,從SD卡啟動(dòng)的時(shí)候映射到0x0c000000,從NAND可以是0,也可以是0x0c000000.

目前只實(shí)現(xiàn)了L1,無(wú)需uboot,只需要燒寫到SD卡的指定位置即可,需要將開(kāi)發(fā)板選擇為SD卡啟動(dòng).


啟動(dòng)代碼,完成了關(guān)閉看門狗,初始化時(shí)鐘,SDRAM內(nèi)存,堆棧,VIC,中斷等操作(啟動(dòng)代碼來(lái)自互聯(lián)網(wǎng))


INCLUDES3C6410.inc

PRESERVE8

AREAInit,CODE,READONLY

STACK_BASEADDRESSEQU0x0c000400;0x52000000

SVCStackEQU(STACK_BASEADDRESS);管理模式

UndefStackEQU(STACK_BASEADDRESS-0x300);指令終止模式

AbortStackEQU(STACK_BASEADDRESS-0x300);數(shù)據(jù)訪問(wèn)終止模式

IRQStackEQU(STACK_BASEADDRESS-0x200);中斷模式

FIQStackEQU(STACK_BASEADDRESS-0x100);快速中斷模式

;---------------------------

;CPSRModeBitDefinition

;---------------------------

Mode_USREQU(0x10)

Mode_FIQEQU(0x11)

Mode_IRQEQU(0x12)

Mode_SVCEQU(0x13)

Mode_ABTEQU(0x17)

Mode_UNDEQU(0x1B)

Mode_SYSEQU(0x1F)

Mode_MASKEQU(0x1F)

NOINTEQU(0xC0)

I_BitEQU(0x80)

F_BitEQU(0x40)

;異常處理函數(shù)

;---------------------------------------------------------------------------------------------------

IMPORTmain

EXPORTResetHandler

ResetHandler

ldrr0,=0x70000013;BaseAddres:0x70000000,Size:256MB(0x13)

mcrp15,0,r0,c15,c2,4;告訴CPU外設(shè)寄存器的基地址和地址空間重要

;設(shè)置為SVC模式

MRSR0,CPSR

BICR0,R0,#0x1F

ORRR0,R0,#0xD3

MSRCPSR_cxsf,R0

;未知模式堆棧

mrsr0,cpsr

bicr0,r0,#Mode_MASK

orrr1,r0,#Mode_UND|NOINT

msrcpsr_cxsf,r1;UndefMode

ldrsp,=UndefStack

;異常模式堆棧

orrr1,r0,#Mode_ABT|NOINT

msrcpsr_cxsf,r1;AbortMode

ldrsp,=AbortStack

;中斷模式堆棧

orrr1,r0,#Mode_IRQ|NOINT

msrcpsr_cxsf,r1;IRQMode

ldrsp,=IRQStack

;管理模式堆棧

bicr0,r0,#Mode_MASK|NOINT

orrr1,r0,#Mode_SVC

msrcpsr_cxsf,r1;SVCMode

ldrsp,=SVCStack

;禁止看門狗

LDRR0,=rWTCON

LDRR1,=0x0

STRR1,[R0]

;禁止cache和mmu

LDRR0,=0x0

MRCp15,0,R0,c1,c0,0

LDRR1,=0xFFFF

BICR0,R0,R1

MCRp15,0,R0,c1,c0,0

;禁止所有中斷

LDRR0,=rVIC0INTENCLEAR

LDRR1,=0xFFFFFFFF

STRR1,[R0]

LDRR0,=rVIC1INTENCLEAR

LDRR1,=0xFFFFFFFF

STRR1,[R0]

;---------------------------------------------------------------------------------------------------

;設(shè)置時(shí)鐘源

LDRR0,=rOTHERS

LDRR1,[R0]

ORRR1,R1,#(1<<6)

LDRR0,=rCLK_SRC

LDRR1,=(1<<13)|7

STRR1,[R0]

LDRR0,=rCLK_SRC2

LDRR1,=0x0

STRR1,[R0]

;設(shè)置時(shí)鐘分頻

LDRR0,=rCLK_DIV0

LDRR1,=0x01043310

STRR1,[R0]

LDRR0,=rCLK_DIV1

LDRR1,=0x0

STRR1,[R0]

LDRR0,=rCLK_DIV2

LDRR1,=3<<16

STRR1,[R0]

;使能時(shí)鐘

LDRR0,=rHCLK_GATE

LDR R1,=0xFFFFFFFF

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉