freq.s

来自「该BSP是基于PXA270+WINCE的BSP」· S 代码 · 共 106 行

S
106
字号
;
; Copyright (c) Microsoft Corporation.  All rights reserved.
;
;
; Use of this source code is subject to the terms of the Microsoft end-user
; license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
; If you did not accept the terms of the EULA, you are not authorized to use
; this source code. For a copy of the EULA, please see the LICENSE.RTF on your
; install media.
;
;------------------------------------------------------------------------------
;
;   File:  freq.s
;
;   Kernel startup routine for the Intel Mainstone II board.
;
;------------------------------------------------------------------------------

    INCLUDE kxarm.h
    INCLUDE mainstoneii.inc
    INCLUDE xlli_bulverde_defs.inc

    IMPORT xlli_GPIO_init
    IMPORT xlli_setClocks
    IMPORT xlli_freq_change
    
    TEXTAREA

;-------------------------------------------------------------------------------
;
; OALXScaleSetFrequencies: Configures the Bulverde core and memory clock
;                          frequencies.
;
; Inputs: None.
; 
; On return: N/A.
;
; Register used: r9
;
;-------------------------------------------------------------------------------
;
    ALIGN
    NESTED_ENTRY OALXScaleSetFrequencies
    ; TODO - we don't have a stack yet, but need to save the caller's return address...
    mov r9, lr
    PROLOG_END

    bl      xlli_GPIO_init 

    ; Route the 32768 Hz Oscillator to the RTC, and provide for
    ; trimming the accuracy of that crystal.

    ldr	r1, =xlli_CLKREGS_PHYSICAL_BASE    ; OSCC = OON | TOUT
    mov	r2, #(xlli_OSCC_OON :OR: xlli_OSCC_TOUT_EN)
    str	r2, [r1, #xlli_OSCC_offset]

    ; Trim the RTC accuracy. If it uses the 13 MHz clock as the reference
    ; frequency, this is required since it divides down by 400 to 32500,
    ; not 32768.
    ; If it uses the actual watch crystal, it should be 32768 +- the error,
    ; and may or may not be required. The error could be due to the uncalibrated 
    ; watch crystal or the parasitic capacitance inherent in the board layout.
    ; Some empirical timing over an hour on a mainstone did not reveal any
    ; error. Hence leaving the crystal freq. to its original value 32768 Hz.
    ; Uncomment the code below and set ACTUAL_CRYSTAL_FREQ if the measured
    ; frequency is different from 32.768 kHz.
    
;ACTUAL_CRYSTAL_FREQ	EQU	32768	; Measured frequency may or may not be 32768

;    ldr	r1, =xlli_RTCREGS_PHYSICAL_BASE
;    ldr	r2, =ACTUAL_CRYSTAL_FREQ - 1            ; Load the crystals actual frequency - 1
;    str	r2, [r1, #xlli_RTTR_offset]             ; Store this in the RTC Trim Register

    bl      xlli_setClocks

    bl      xlli_freq_change


;-------------------------------------------------------
    ; Do Mainstone-Specific Board Initialization
    ;
    ldr     r2,  =MAINSTONEII_BASE_REG_PA_FPGA

    ; setup MISC_WR1,2 to their initial states
    ;
    ldr     r1, =MISCWR1_VAL
    str     r1, [r2, #MISCWR1_OFFSET]

    ldr     r1, =MISCWR2_VAL
    str     r1, [r2, #MISCWR2_OFFSET] 
;-------------------------------------------------------    
    mov     lr, r9
    
  IF Interworking :LOR: Thumbing
    bx  lr
  ELSE
    mov  pc, lr          ; return
  ENDIF
 
    ENTRY_END
    
    END 

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

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?