📄 init.s
字号:
/********************************************************************
' 创建日期: 2006/04/18
' 文件名称: init.S
' 文件作者: GENE.SHAO (E-Mail: sjiang1981@163.com)
'
' 文件功能: 基本的硬件初始化
' 文件描述: 该程序在Samsung的s3c2410处理器上测试通过,你可以重新发
布或修改该程序,如果对该程序有何疑问请通过Email联系作者。
*********************************************************************/
#include "header.h"
.global _start
_start:
/* 中断向量表*/
b reset @ 复位
ldr pc, undefined_instruction @ 未定义的指令
ldr pc, software_interrupt @ 软件中断
ldr pc, prefetch_abort @ 指令预取终止
ldr pc, data_abort @ 数据访问终止
ldr pc, not_used @ 保留
ldr pc, irq @ 外部中断请求
ldr pc, fiq @ 快速中断请求
undefined_instruction:
software_interrupt:
prefetch_abort:
data_abort:
not_used:
irq:
fiq:
.balign 4
reset:
/*禁用看门狗 */
ldr r0,=WTCON
mov r1,#0x0
str r1,[r0]
/*屏蔽所有的中断*/
ldr r0,=INTMSK
mvn r1,#0x0
str r1,[r0]
/*屏蔽所有的子中断*/
ldr r0,=INTSUBMSK
ldr r1,=0x3ff
str r1,[r0]
/*初始化LED外部输出口*/
ldr r0, =GPFCON @ 4个LED使用GPF4, GPF5, GPF6, GPF7四个IO端口
ldr r1, =0x55aa @ 将GPF4-GPF7设置为输出口, 可参考s3c2410处理器手册。
str r1, [r0]
ldr r0, =GPFUP
mov r1, #0xff
str r1, [r0]
/*设置时钟周期 */
ldr r0,=LOCKTIME
mvn r1,#0xff000000
str r1,[r0]
ldr r0,=CLKDIVN @ FCLK:HCLK:PCLK = 1:2:4
mov r1,#0x3
str r1,[r0]
ldr r0,=MPLLCON
ldr r1,=((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV) @ CPU 时钟设置为200MHz
str r1,[r0]
ldr r1,=MISCCR
ldr r0,[r1]
bic r0,r0,#SCK_NORMAL
str r0,[r1]
.align 2
.global call_main
call_main:
ldr sp,STACK_START @ 设置堆栈底地址
mov fp,#0
mov a1, #0
mov a2, #0 @ 设置main函数的参数
bl main @ 跳转到main函数
STACK_START:
.word STACK_BASE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -