当前位置:首页 > 单片机 > 单片机
[导读]这几天晚上一直折腾S3C6410的裸机SD卡启动,不大想使用UBOOT,我是搞硬件的,对底层非常感兴趣,不喜欢已经写好的,因此自己一直在尝试,其实很早之前就试过SD卡启动,也就是ARM11上电后会把SD卡倒数第9KB开始的8KB(倒数0x2

这几天晚上一直折腾S3C6410的裸机SD卡启动,不大想使用UBOOT,我是搞硬件的,对底层非常感兴趣,不喜欢已经写好的,因此自己一直在尝试,其实很早之前就试过SD卡启动,也就是ARM11上电后会把SD卡倒数第9KB开始的8KB(倒数0x2400B偏移量)复制到内部SRAM中执行,这个比较简单,但是代码量只有8K,不能像STM32一样玩,因此查阅相关资料,得知启动方式为L0加载L1,L1加载L2,简单来说,就是上电启动后,固化在S3C6410内部的L0代码启动,将NAND,SD卡等外部存储器映射或者复制到内部SRAM,这个从SD卡或者flash复制过去的代码称之为L1,也就是用户的启动代码,在电脑上相当于硬盘主分区的启动代码和BIOS,用来初始化外时钟以及外设,并启动系统,,这部分代码只有8KB因此完成的工作有限,因此可以使用这段代码完成初始化并复制操作系统或者更大的代码到内存,这部分代码就是L2了,只有L1将内存初始化后才能使用内存,再此之前内存只有8KB,就是内部SRAM,从SD卡启动的时候映射到0x0c000000,从NAND可以是0,也可以是0x0c000000.

目前只实现了L1,无需uboot,只需要烧写到SD卡的指定位置即可,需要将开发板选择为SD卡启动.


启动代码,完成了关闭看门狗,初始化时钟,SDRAM内存,堆栈,VIC,中断等操作(启动代码来自互联网)


INCLUDES3C6410.inc

PRESERVE8

AREAInit,CODE,READONLY

STACK_BASEADDRESSEQU0x0c000400;0x52000000

SVCStackEQU(STACK_BASEADDRESS);管理模式

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

AbortStackEQU(STACK_BASEADDRESS-0x300);数据访问终止模式

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)

;异常处理函数

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

IMPORTmain

EXPORTResetHandler

ResetHandler

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

mcrp15,0,r0,c15,c2,4;告诉CPU外设寄存器的基地址和地址空间重要

;设置为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]

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

;设置时钟源

LDRR0,=rOTHERS

LDRR1,[R0]

ORRR1,R1,#(1<<6)

LDRR0,=rCLK_SRC

LDRR1,=(1<<13)|7

STRR1,[R0]

LDRR0,=rCLK_SRC2

LDRR1,=0x0

STRR1,[R0]

;设置时钟分频

LDRR0,=rCLK_DIV0

LDRR1,=0x01043310

STRR1,[R0]

LDRR0,=rCLK_DIV1

LDRR1,=0x0

STRR1,[R0]

LDRR0,=rCLK_DIV2

LDRR1,=3<<16

STRR1,[R0]

;使能时钟

LDRR0,=rHCLK_GATE

LDR R1,=0xFFFFFFFF

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

使用XVI编辑器切断移动电话可能是一项非常困难的任务,尤其是如果您不了解移动电话。16 12289组合区域中的16个区域;随着时间的推移,它的一些操作更难执行赫伦·艾尔·西西有三颗恒星,4G星系几乎同样困难。fb...

关键字: Android market sd

针对传统类人机器人在控制系统实时性和视觉识别方面的不足,以S3C6410作为主控芯片,设计了具有视觉识别功能的类人机器人控制系统,通过改进和简化视频识别算法取得了良好的目标识别效果。实验表明,基

关键字: s3c6410 机器人 机器视觉

SDA协会今天正式发布了SD Express存储卡的新一代标准规范SD 8.0,过引入PCIe 4.0总线协议,可获得最高接近4GB/s的传输速度,媲美旗舰级SSD固态硬盘。 2017年的SD 6.0

关键字: 4.0 8.0 pcie sd sd卡 存储卡

本文将对Superior V30 SDXC UHS-I和Superior Pro V90 SDXC UHS-II的高性能SD卡予以介绍,如果你想对它的具体情况一探究竟,或者想要增进对它的认识,不妨请看以下内容哦。

关键字: pro sd superior v90 v30

当前,随着物联网、大数据、云计算、人工智能等新一代高新技术的快速发展,传感器技术也得到了很大的发展。如今,越来越多的企业都纷纷加入到传感器行业中来,它们都希望在传感器行业这个大蛋糕上分得属于自己的一块奶酪。

关键字: sd 传感器 机器

SDA协会去年发布了SD 7.0标准规范,引入PCIe,定义了全新的SD Express存储卡规格,现在Realtek(瑞昱)展示了第一款符合SD 7.0规范的主控制器“RTS5261”,相关产品也不

关键字: express realtek sd sd卡 主控 存储卡 瑞昱

SLC、MLC、TLC、QLC……一路发展下来,存储密度和容量越来越高,成本越来越低,但是性能、可靠性、寿命却是越来越短,只能不断通过闪存、主控的各种优化来维持。 虽然很多

关键字: sd ssd tlc 固态硬盘 存储卡 工业级 闪存

SD存储卡是一个完全开放的标准(系统),多MP3、数码摄像用于机、数码相机、电子图书、AV器材等等,尤其是被广泛应用在超薄数码相机上。

关键字: sd 存储 存储技术 s3c24101

一年前,SD 7.0存储卡规范正式发布,首次引入PCIe 3.0、NVMe 1.3技术,带来了全新的SD Express存储卡(SD UC),使得SD卡无论容量还是读写速度都达到了SSD的级别,随后升

关键字: 7.1 express microsd sd 存储卡 群联主控 ps5047 expess
关闭
关闭