欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2440裸板程序之时钟初始化

程序员文章站 2022-06-08 21:30:47
...

LED对应的引脚是GPF4、GPF5、GPF6。
使用的编译器为arm-linux-gcc-4.5.1。
包括四个文件head.S main.c main.lds Makefile。


实验目的:把CPU主频提高到400Mhz。(FCLK:400 HCLK:100 PCLK:50)

2440裸板程序之时钟初始化
2440使用MPLL和UPLL将来自晶振或外部时钟倍频至合适的频率,UPLL输出时钟供USB使用,MPLL输出时钟经过分频供CPU和AHB、APB使用。ARM920T使用FCLK,Memory、LCD、CAM等使用HCLK,PCLK供给WDT、PWM、ADC等使用。
ARM920T有三种工作方式,fastBus mode、synchronous、asynchronous。(异步总线和同步模式介绍 http://blog.csdn.net/qq_33160790/article/details/75668461)快总线时ARM920T运行在HCLK,当FCLK不等于HCLK时,必须切换至asynchronous模式。(通过设置协处理器CP15 http://blog.csdn.net/qq_33160790/article/details/75570898

相关的寄存器:

2440裸板程序之时钟初始化

2440裸板程序之时钟初始化

2440裸板程序之时钟初始化


只需要把http://blog.csdn.net/qq_33160790/article/details/78915744中的Head.S更新为以下即可。

@clock manegment
.equ MPLLCON  ,0x4C000004
.equ CLKDIVN  ,0x4C000014
@memory controller
.equ BWSCON   ,0x48000000
.equ BANKCON0 ,0x48000004
.equ BANKCON1 ,0x48000008
.equ BANKCON2 ,0x4800000C
.equ BANKCON3 ,0x48000010
.equ BANKCON4 ,0x48000014
.equ BANKCON5 ,0x48000018
.equ BANKCON6 ,0x4800001C
.equ BANKCON7 ,0x48000020
.equ REFRESH  ,0x48000024
.equ BANKSIZE ,0x48000028
.equ MRSRB6   ,0x4800002C
.equ MRSRB7   ,0x48000030
.text
.global _start
_start:
            ldr     r0, =0x53000000     @Close WATCHDOG
            mov     r1, #0x0                     
            str     r1, [r0]

            ldr     r0,=MPLLCON         @Clock Init 400:100:50
            ldr     r1,=(192<<12)|(4<<4)|(1<<0)
            str     r1,[r0]

            ldr     r0,=CLKDIVN
            ldr     r1,=(2<<1)|(1<<0)
            str     r1,[r0]

            mrc p15,0,r0,c1,c0,0
            orr r0,r0,#0xc0000000//R1_nF:OR:R1_iA
            mcr p15,0,r0,c1,c0,0

            ldr     r0,=BWSCON          @Init sdram
            ldr     r1,=0x22011110
            str     r1,[r0]

            ldr     r0,= BANKCON6
            ldr     r1,=0x00018005
            str     r1,[r0]

            ldr     r0,=REFRESH
            ldr     r1,=0x008c07a3
            str     r1,[r0]

            ldr     r0,=BANKSIZE
            ldr     r1,=0x000000b1
            str     r1,[r0]

            ldr     r0,=MRSRB6
            ldr     r1,=0x00000030
            str     r1,[r0]

            mov     r1,#0x400           @Relacate
            ldr     r2,=0x30000000
            mov     r3,#0x600
1:
            ldr     r4,[r1],#4
            str     r4,[r2],#4
            cmp     r1,r3
            bne     1b

            ldr     sp, =1024*4         @Call C
            ldr     lr,=loop

            @bl      main
            ldr     pc,=0x30000000    @main             @0x800
loop:
            b       loop

实验结果:
led闪烁频率明显加快。