想在bootloader中加入初始化PLL,请问有没有C6455的PLL初始化的.asm汇编代码可以参考?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
想在bootloader中加入初始化PLL,请问有没有C6455的PLL初始化的.asm汇编代码可以参考?
user5896786 说:想在bootloader中加入初始化PLL,请问有没有C6455的PLL初始化的.asm汇编代码可以参考?
类似的,无非就是对寄存器地址写值。你可以自己照着画一个。下面是一个类似芯片的代码。参考一下。这是放在.c里的,所以加了asm().
/* ============================================================================
* Copyright (c) Texas Instruments Inc 2008
*
* Use of this software is controlled by the terms and conditions found
* in the license agreement under which this software has been supplied.
* ===========================================================================
*/
/*
for TI_EVM
CFGHPI_ENA_PU .equ 0x00000001
otherwise
CFGHPI_ENA_PU .equ 0x00000011
*/
/*
for CU1
PLL_M_PU .equ 0x0000000A
for CUSTOMER2
PLL_M_PU .equ 0x0000000C
otherwise
PLL_M_PU .equ 0x00000015
*/
/*
for CU1
EMIF_SDTIMR_PU .equ 0x31114610
EMIF_SDCR_PU .equ 0x00000721
EMIF_A1CR_PU .equ 0x08344229
for CU2
EMIF_SDTIMR_PU .equ 0x31114610
EMIF_SDCR_PU .equ 0x00000720
EMIF_A1CR_PU .equ 0x08344229
otherwise
EMIF_SDTIMR_PU .equ 0x31114610
EMIF_SDCR_PU .equ 0x00000721
EMIF_A1CR_PU .equ 0x04102105
*/
asm(" .global _EMIF_SDTIMR_CU,_EMIF_SDCR_CU,_EMIF_A1CR_CU ");
asm(" .global _CFGHPI_ENA_CU,_PLL_M_CU ");
asm(" .global _target_id,_target_var,_rt_version ");
asm(" .option D,T ");
asm(" .length 102 ");
asm(" .width 140 ");
asm("TI_VAR_PU .equ 0x00000001 ");
//asm("TI_VAR_PU .equ 0x00000002 ");
asm("TI_EVM_PU .equ 0x00000001 ");
//asm("TI_EVM_PU .equ 0x00000005 ");
asm("PLL_RST_TO .equ 0x00000400 ");
asm("PLL_RST_RELEASE_TO .equ 0x00010000 ");
asm(" ");
asm("CFGHPI_ENA_PU .equ 0x00000001 ");
//asm("CFGHPI_ENA_PU .equ 0x00000011 ");
asm("PLL_M_PU .equ 0x00000015 ");
//asm("PLL_M_PU .equ 0x0000000a ");
asm(" ");
asm("EMIF_SDSRETR_PU .equ 0x00000006 ");
asm("EMIF_SDRCR_PU .equ 0x0000061A ");
asm("EMIF_SDTIMR_PU .equ 0x31114610 ");
asm("EMIF_SDCR_PU .equ 0x00000721 ");
asm("EMIF_A1CR_PU .equ 0x04102105 ");
//asm("EMIF_A1CR_PU .equ 0x0834422a ");
asm(" ");
asm("CFGPIN1_NHCS .equ 0x00000020 ");
asm(" ");
asm("TRANSFER_MAGIC_16 .equ 0x01010101 ");
asm("TRANSFER_REQUEST .equ 0x02020202 ");
asm("TRANSFER_DONE .equ 0x03030303 ");
asm("DIV1 .equ 0x00000000 ");
asm("DIV2 .equ 0x00000001 ");
asm("DIV3 .equ 0x00000002 ");
asm(" ");
asm("DEVICE_CONFIG_REG_START .equ 0x40000000 ");
asm("UHPI_REG_START .equ 0x43000000 ");
asm("PLL_REG_START .equ 0x41000000 ");
asm("EMIF_REG_START .equ 0xF0000000 ");
asm(" ");
asm("EMIF_SDCR .equ 0x00000008 ");
asm("EMIF_SDRCR .equ 0x0000000c ");
asm("EMIF_A1CR .equ 0x00000010 ");
asm("EMIF_SDTIMR .equ 0x00000020 ");
asm("EMIF_SDSRETR .equ 0x0000003c ");
asm(" ");
asm("PLL_CSR .equ 0x41000100 ");
asm("PLL_M .equ 0x41000110 ");
asm("PLL_DIV0 .equ 0x41000114 ");
asm("PLL_DIV1 .equ 0x41000118 ");
asm("PLL_DIV2 .equ 0x4100011C ");
asm("PLL_DIV3 .equ 0x41000120 ");
asm("PLL_CMD .equ 0x41000138 ");
asm(" ");
asm("CSR_PLLEN .equ 0x00000001 ");
asm("CSR_PLLPWRDN .equ 0x00000010 ");
asm("CSR_OSCPWRDN .equ 0x00000004 ");
asm("CSR_PLLRST .equ 0x00000008 ");
asm("CSR_PLLPWRDN .equ 0x00000010 ");
asm("CSR_PLLSTABLE .equ 0x00000040 ");
asm("DIV_ENABLE .equ 0x00008000 ");
asm("CMD_GOSET .equ 0x00000001 ");
asm(" ");
asm("CFGPIN1 .equ 0x40000004 ");
asm("CFGHPI .equ 0x40000008 ");
asm(" .sect .boot_load ");
asm(" .global _BOOT2 ");
asm(" .global ___binit__ ");
asm("_BOOT2_HANDSHAKE: .word TRANSFER_MAGIC_16 ");
asm("_BOOT2: ");
asm(" MVKL PLL_CSR,A1 ");
asm(" MVKH PLL_CSR,A1 ");
asm(" LDW *A1,A3 ");
asm(" MVKL PLL_RST_TO,B0 ");
asm(" MVKH PLL_RST_TO,B0 ");
asm(" MVKL ~(CSR_PLLPWRDN | CSR_PLLEN),B1 ");
asm(" MVKH ~(CSR_PLLPWRDN | CSR_PLLEN),B1 ");
asm(" AND A3,B1,A3 ");
asm(" MVKL CSR_PLLRST,B1 ");
asm(" MVKH CSR_PLLRST,B1 ");
asm(" OR A3,B1,A3 ");
asm(" STW A3,*A1 ");
asm("PLLDELAY: ");
asm(" [B0] B PLLDELAY ");
asm(" SUB B0,1,B0 ");
asm(" NOP 5 ");
asm(" ");
asm(" MVKL DIV_ENABLE+0,B1 ");
asm(" MVKH DIV_ENABLE+0,B1 ");
asm(" MVKL PLL_DIV0,A0 ");
asm(" MVKH PLL_DIV0,A0 ");
asm(" STW B1,*A0 ");
asm(" MVKL _PLL_M_CU,B1 ");
asm(" MVKH _PLL_M_CU,B1 ");
asm(" LDW *B1,B2 ");
asm(" MVKL PLL_M,A0 ");
asm(" MVKH PLL_M,A0 ");
asm(" NOP 2 ");
asm(" STW B2,*A0 ");
asm(" ");
asm(" LDW *A1,A2 ");
asm(" MVKL PLL_CMD,A0 ");
asm(" MVKH PLL_CMD,A0 ");
asm(" STW B1,*A0 ");
asm(" MVKL ~CSR_PLLRST,B1 ");
asm(" MVKH ~CSR_PLLRST,B1 ");
asm(" AND B1,A2,B1 ");
asm(" STW B1,*A1 ");
asm(" MVKL PLL_RST_RELEASE_TO,B0 ");
asm(" MVKH PLL_RST_RELEASE_TO,B0 ");
asm("RESETDELAY: ");
asm(" [B0] B RESETDELAY ");
asm(" SUB B0,1,B0 ");
asm(" NOP 5 ");
asm(" ");
asm(" MVKL CSR_PLLEN,B2 ");
asm(" MVKH CSR_PLLEN,B2 ");
asm(" OR B2,B1,B1 ");
asm(" STW B1,*A1 ");
asm(" ");
asm(" MVKL EMIF_REG_START,A0 ");
asm(" MVKH EMIF_REG_START,A0 ");
asm(" MVKL _EMIF_SDTIMR_CU,B0 ");
asm(" MVKH _EMIF_SDTIMR_CU,B0 ");
asm(" LDW *B0,B1 ");
asm(" NOP 4 ");
asm(" STW B1,*+A0[EMIF_SDTIMR>>2] ");
asm(" MVKL EMIF_SDSRETR_PU,B0 ");
asm(" MVKH EMIF_SDSRETR_PU,B0 ");
asm(" STW B0,*+A0[EMIF_SDSRETR>>2] ");
asm(" MVKL EMIF_SDRCR_PU,B0 ");
asm(" MVKH EMIF_SDRCR_PU,B0 ");
asm(" STW B0,*+A0[EMIF_SDRCR>>2] ");
asm(" MVKL _EMIF_SDCR_CU,B0 ");
asm(" MVKH _EMIF_SDCR_CU,B0 ");
asm(" LDW *B0,B1 ");
asm(" NOP 4 ");
asm(" STW B1,*+A0[EMIF_SDCR>>2] ");
asm(" MVKL _EMIF_A1CR_CU,B0 ");
asm(" MVKH _EMIF_A1CR_CU,B0 ");
asm(" LDW *B0,B1 ");
asm(" NOP 4 ");
asm(" STW B1,*+A0[EMIF_A1CR>>2] ");
asm(" ");
asm(" MVKL CFGPIN1,A4 ");
asm(" MVKH CFGPIN1,A4 ");
asm(" MVKL CFGPIN1_NHCS, B3 ");
asm(" MVKH CFGPIN1_NHCS, B3 ");