系统硬件的一些初始化Word格式.docx
《系统硬件的一些初始化Word格式.docx》由会员分享,可在线阅读,更多相关《系统硬件的一些初始化Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
Mode_SVC--管理模式,供操作系统使用的一种保护模式。
Mode_ABT--数据访问中止模式,用于虚拟存储用存储保护
Mode_UND--未定义指令中止模式,当未定义指令执行时进入此模式。
Mode_SYS--系统模式,用于特权级的操作系统任务。
I_Bit--如果I位被置1,则外部中断被禁止(IRQisdisabled)
F_Bit--如果F位被置1,则快速中断被禁止(FIQisdisabled)
----------------------------------------------------------------------
Mode_USREQU0x10
Mode_FIQEQU0x11
Mode_IRQEQU0x12
Mode_SVCEQU0x13
Mode_ABTEQU0x17
Mode_UNDEQU0x1B
Mode_SYSEQU0x1F
I_BitEQU0x80;
whenIbitisset,IRQisdisabled
F_BitEQU0x40;
whenFbitisset,FIQisdisabled
-----------------------------StackConfiguration-----------------------------------
下面这些主要是栈配置,系统的栈空间设定
UND_Stack_Size--未定义模式的栈大小
SVC_Stack_Size--管理模式的栈大小
ABT_Stack_Size--数据访问终止模式的栈大小
FIQ_Stack_Size--快速中断模式的栈大小
IRQ_Stack_Size--中断模式的栈大小
USR_Stack_Size--用户模式的栈大小
ISR_Stack_Size--总堆栈的大小,也就是所有模式下堆栈相加
-----------------------------------------------------------------------
UND_Stack_SizeEQU0x00000000
SVC_Stack_SizeEQU0x00000008
ABT_Stack_SizeEQU0x00000000
FIQ_Stack_SizeEQU0x00000000
IRQ_Stack_SizeEQU0x00000080
USR_Stack_SizeEQU0x00000400
ISR_Stack_SizeEQU(UND_Stack_Size+SVC_Stack_Size+ABT_Stack_Size+\
FIQ_Stack_Size+IRQ_Stack_Size)
AREA--是一个伪指令,用于段定义。
ARM的汇编程序由段组成,段是相对独立的指令或数据单位,每个段由AREA伪指令定义,并定义段的属性。
STACK--AREA指令的一个参数,定义段名称
NOINIT--AREA指令的一个参数,指定本数据段仅仅保留了内在单元,而将句初始值写入内存单元,也即将内存单元值初始化为0
READWRITE--指定本段为可读可写,数据段默认为READWRITE。
READWRITE(读写)、READONLY(只读)
ALIGN--是一个伪指令,指定对齐方式。
ALIGNn指令的对齐值有两种方案,即n或2^n,这里采用第二种方案即指定后面的指令8字节对齐。
ATPCS规定数据栈必须为FD类型,并且对数据栈的操作时8字节对齐的
下面这句话意思是:
开辟一个堆栈段,段名字为STACK,定义为可读可写,将内存单元初始化为0,
AREASTACK,NOINIT,READWRITE,ALIGN=3
SPACE--伪指令,用于分配一块内存单元,并用0初始化,与%同义
其指令格式为:
{lable}SPACEexpr
lable--内存起始地址标号expr--所要分配的内存字节数
Stack_MemSPACEUSR_Stack_Size;
堆栈内存起始地址标号
__initial_spSPACEISR_Stack_Size;
汇编代码的地址标号
Stack_Top;
堆栈段内容结束,在这里放个标号,用来获得堆栈顶部地址
Heap_SizeEQU0x00000000;
定义堆大小设置
开辟一个名字为HEAP可读可写,不初始化内存单的内存单元。
AREAHEAP,NOINIT,READWRITE,ALIGN=3
__heap_base;
堆的基址
Heap_MemSPACEHeap_Size;
堆内存起始地址标号
__heap_limit;
堆结束
----------------------------内存初始化定义-----------------------------
在一些应用系统中除了扩展Flash,RAM挂接在外部存储器接口上外,可能还有其它
的外设挂接在外部存储器接口上,不同外设的操作时序什么的都是不一样的,所以
在使用这些外设之前必须初始化连接这些外设存储器接口。
这里因为没扩展,所以
只定义一个片上内存基地址。
IRAM_BASEEQU0x40000000;
片上SRAM的基地址,即内存基地址
-------------------------看门狗初始化定义------------------------------
看门狗在防止程序跑飞,进入无限死循环时起着重要作用。
有些应用可能用不上
看门狗功能,也可能有些应用会用到外部看门狗。
在这个时候内部看门狗必须禁
止,所以有时候会在初始化时将内部看门狗禁止,当以后应用用到时再开启它。
看门狗定时器包括三个寄存器:
WTCON--看门狗控制寄存器,设定看门狗定时器模式
WTDAT--看门狗数据寄存器,用于设定超时宽度
WTCNT--看门狗计数寄存器,里面存放的是看门狗定时器当前值
WT_BASE--看门狗定时器基地址
WTCON_OFS--看门狗控制寄存器偏移地址,相对于基址
WTDAT_OFS--看门狗数据寄存器偏移地址,相对于基址
WTCNT_OFS--看门狗计数寄存器偏移地址,相对于基址
WT_SETUP--看门狗设置
WTCON_Val--看门狗控制寄存器设置,关闭看门狗
WTDAT_Val--看门狗数据寄存器设置,初始值即为0x8000
WT_BASEEQU0x53000000;
WatchdogTimerBaseAddress
WTCON_OFSEQU0x00;
WatchdogTimerControlRegisterOffset
WTDAT_OFSEQU0x04;
WatchdogTimerDataRegisterOffset
WTCNT_OFSEQU0x08;
WatchdogTimerCountRegisterOffset
WT_SETUPEQU0
WTCON_ValEQU0x00000000
WTDAT_ValEQU0x00008000
----------------------------时钟与电源管理定义-------------------------
S3C2440A中的时钟控制逻辑可以产生必须的时钟信号,包括CPU的FCLK,AHB总线的
HCLK以及APB总线外设的PCLK3C2440A内部有两个锁相环(PLL):
一个提供FCLK,
HCLK及PCLK,另一个专用于USB模块(48MHz).
CLOCK_BASE--时钟基地址
LOCKTIME_OFS--锁相环锁定时间计数寄存器偏移地址,相对于基址
MPLLCON_OFS--MPLL配置寄存器偏移地址,相对于基址,主时钟源PLL
UPLLCON_OFS--UPLL配置寄存器偏移地址,相对于基址,USB时钟源PLL
CLKCON_OFS--时钟控制寄存器偏移地址,相对于基址
CLKSLOW_OFS--时钟减慢控制寄存器偏移地址,相对于基址
CLKDIVN_OFS--时钟分频器控制寄存器偏移地址,相对于基址
CAMDIVN_OFS--摄像头时钟分频器控制寄存器偏移地址,相对于基址,UPLL提供
CLOCK_SETUP--时钟设置
LOCKTIME_Val--PLL锁定时间计数器值
MPLLCON_Val--MPLL配置寄存器值
UPLLCON_Val--UPLL配置寄存器值
CLKCON_Val--时钟配置寄存器值
CLKSLOW_Val--时钟减慢控制寄存器值
CLKDIVN_Val--时钟分频控制寄存器值
CAMDIVN_Val--摄像头分频控制寄存器值
CLOCK_BASEEQU0x4C000000;
ClockBaseAddress
LOCKTIME_OFSEQU0x00;
PLLLockTimeCountRegisterOffset
MPLLCON_OFSEQU0x04;
MPLLConfigurationRegisterOffset
UPLLCON_OFSEQU0x08;
UPLLConfigurationRegisterOffset
CLKCON_OFSEQU0x0C;
ClockGeneratorControlRegOffset
CLKSLOW_OFSEQU0x10;
ClockSlowControlRegisterOffset
CLKDIVN_OFSEQU0x14;
ClockDividerControlRegisterOffset
CAMDIVN_OFSEQU0x18;
CameraClockDividerRegisterOffset
CLOCK_SETUPEQU0
LOCKTIME_ValEQU0x0FFF0FFF
MPLLCON_ValEQU0x00043011
UPLLCON_ValEQU0x00038021
CLKCON_ValEQU0x001FFFF0
CLKSLOW_ValEQU0x00000004
CLKDIVN_ValEQU0x0000000F
CAMDIVN_ValEQU0x00000000
--------------------存储控制器设置定义---------------------------------
下面这些都是一些关于存储控制器的地址宏定义
MC_BASE--存储控制器基地址
BWSCON_OFS--总线宽度和等待控制寄存器偏移地址
BANKCON0_OFS--BANK1控制寄存器偏移地址
.
BANKCON7_OFS--BANK7控制寄存器偏移地址
REFRESH_OFS--DRAM/SDRAM刷新控制寄存器偏移地址
BANKSIZE_OFS--可调的bank大小寄存器偏移地址
MRSRB6_OFS--bank6模式控制寄存器偏移地址
MRSRB7_OFS--bank7模式控制寄存器偏移地址
MC_SETUP--存储器控制寄存器设置
BWSCON_Val--写入总线宽度和等待控制寄存值
BANKCON0_Val--写入Blank0的值
BANKCON7_Val--写入BANK7的值
REFRESH_Val--写入DRAM/SDRAM刷新控制寄存的值
BANKSIZE_Val--写入可调的bank大小寄存的值
MRSRB6_Val--写入bank6模式控制寄存器的值
MRSRB7_Val--写入bank7模式控制寄存器的值
MC_BASEEQU0x48000000;
MemoryControllerBaseAddress
BWSCON_OFSEQU0x00;
BusWidthandWaitStatusCtrlOffset
BANKCON0_OFSEQU0x04;
Bank0ControlRegisterOffset
BANKCON1_OFSEQU0x08;
Bank1ControlRegisterOffset
BANKCON2_OFSEQU0x0C;
Bank2ControlRegisterOffset
BANKCON3_OFSEQU0x10;
Bank3ControlRegisterOffset
BANKCON4_OFSEQU0x14;
Bank4ControlRegisterOffset
BANKCON5_OFSEQU0x18;
Bank5ControlRegisterOffset
BANKCON6_OFSEQU0x1C;
Bank6ControlRegisterOffset
BANKCON7_OFSEQU0x20;
Bank7ControlRegisterOffset
REFRESH_OFSEQU0x24;
SDRAMRefreshControlRegisterOffset
BANKSIZE_OFSEQU0x28;
FlexibleBankSizeRegisterOffset
MRSRB6_OFSEQU0x2C;
Bank6ModeRegisterOffset
MRSRB7_OFSEQU0x30;
Bank7ModeRegisterOffset
MC_SETUPEQU1
BWSCON_ValEQU0x22000000
BANKCON0_ValEQU0x00000700
BANKCON1_ValEQU0x00000700
BANKCON2_ValEQU0x00000700
BANKCON3_ValEQU0x00000700
BANKCON4_ValEQU0x00000700
BANKCON5_ValEQU0x00000700
BANKCON6_ValEQU0x00018005
BANKCON7_ValEQU0x00018005
REFRESH_ValEQU0x008404F3
BANKSIZE_ValEQU0x00000032
MRSRB6_ValEQU0x00000020
MRSRB7_ValEQU0x00000020
---------------------I/O端口宏定义--------------------------------------
GPA_BASE--端口A基地址
GPJ_BASE--端口J基地址
GPCON_OFS--端口配置寄存器偏移地址
GPDAT_OFS--端口数据寄存器偏移地址
GPUP_OFS--端口上拉寄存器偏移地址
GP_SETUP--端口设置
GPA_SETUP--端口A配置
GPACON_Val--写入端口A配置寄存器的值
GPJ_SETUP--端口J配置
GPJCON_Val--写入端口J配置寄存器的值
GPJUP_Val--写入端口J上拉寄存器的值
GPA_BASEEQU0x56000000;
GPABaseAddress
GPB_BASEEQU0x56000010;
GPBBaseAddress
GPC_BASEEQU0x56000020;
GPCBaseAddress
GPD_BASEEQU0x56000030;
GPDBaseAddress
GPE_BASEEQU0x56000040;
GPEBaseAddress
GPF_BASEEQU0x56000050;
GPFBaseAddress
GPG_BASEEQU0x56000060;
GPGBaseAddress
GPH_BASEEQU0x56000070;
GPHBaseAddress
GPJ_BASEEQU0x560000D0;
GPJBaseAddress
GPCON_OFSEQU0x00;
ControlRegisterOffset
GPDAT_OFSEQU0x04;
DataRegisterOffset
GPUP_OFSEQU0x08;
Pull-upDisableRegisterOffset
GP_SETUPEQU1
端口A配置
GPA_SETUPEQU0
GPACON_ValEQU0x000003FF
端口B配置
GPB_SETUPEQU0
GPBCON_ValEQU0x00000000
GPBUP_ValEQU0x00000000
端口C配置
GPC_SETUPEQU0
GPCCON_ValEQU0x00000000
GPCUP_ValEQU0x00000000
端口D配置
GPD_SETUPEQU0
GPDCON_ValEQU0x00000000
GPDUP_ValEQU0x00000000
---------------------------------------------------------------