单片机cpu初始化的方法解析
1、设置svc模式设置处理器的模式为svc模式,根据ARM架构参考手册,处理器有七种工作模式:
在程序状态寄存器讲模式设置为10011:
汇编代码如下:set_svc:mrsr0,cpsrbicr0,r0,0x1forrr0,r0,0xd3msrcpsr,r0movpc,lr2、关闭看门狗在对应的芯片手册(我用的是S3C2440)找到看门狗相关的寄存器,并关闭看门狗定时器输出的复位信号:
对应汇编代码:disable_watchdog:ldrr0,pWTCONmovr1,0x0strr1,[r0]movpc,lr3、关闭中断找到对应芯片的中断屏蔽寄存器,并关闭中断:
f对应汇编代码:disable_i
terrupt:mv
r1,0x0ldrr0,4A000008strr1,[r0]movpc,lr4、关闭mmu和catch主要包括:(1)使IDcatch内容失效(2)关闭mmu和IDcatch在ARM920T(ARM9)参考手册找到相关寄存器,主要是寄存器1和寄存器7,并进行相应设置:
对应汇编代码:disable_mmu:mcrp15,0,r0,c7,c7,0mrcp15,0,r0,c1,c0,0bicr0,r0,0x00000007mcrp15,0,r0,c1,c0,0movpc,lr完整代码:textglobal_start_start:bresetldrpc,_u
defi
ed_i
structio
ldrpc,_software_i
terrupt
fldrpc,_prefetch_abortldrpc,_data_abortldrpc,_
ot_usedldrpc,_irqldrpc,_fiq_u
defi
ed_i
strucTIo
:wordu
defi
ed_i
strucTIo
_software_i
terrupt:wordsoftware_i
terrupt_prefetch_abort:wordprefetch_abort_data_abort:worddata_abort_
ot_used:word
ot_used_irq:wordirq_fiq:wordfiqu
defi
ed_i
strucTIo
:
opsoftware_i
terrupt:
opprefetch_abort:
opdata_abort:
op
ot_used:
opirq:
opfiq:
op
freset:blset_svcbldisable_watchdogbldisable_i
terruptbldisable_mmuset_svc:mrsr0,cpsrbicr0,r0,0x1forrr0,r0,0xd3msrcpsr,r0movpc,lrdefi
epWTCON0x53000000disable_watchdog:ldrr0,pWTCONmovr1,0x0strr1,[r0]movpc,lrdisable_i
terrupt:mv
r1,0x0ldrr0,4A000008strr1,[r0]movpc,lrdisable_mmu:mcrp15,0,r0,c7,c7,0mrcp15,0,r0,c1,c0,0bicr0,r0,0x00000007
fmcrp15,0,r0,c1,c0,0
fr