⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mxc_setup_mxc91331.h

📁 i.mx31 3DS平台Nandboot引导程序源码
💻 H
📖 第 1 页 / 共 3 页
字号:
#ifdef ARMHIPG_52_52_52        ldr r1, =0xFF80051C          /* ARM=52MHz, HCLK=52MHz, IPG=52MHz */        str r1, [r0, #CLKCTL_PDR0]        ldr r1, =MPCTL_PARAM_208        str r1, [r0, #CLKCTL_MPCTL]#endif#if defined(ARMHIPG_399_133_66) || defined(ARMHIPG_399_66_66)        ldr r1, =0x0        ldrb r2, [r1, #0x60]         /* See if pass 1 silicon */        cmp r2, #0x1        ldr r1, =0xFF800550          /* ARM=399MHz, HCLK=133MHz, IPG=66.5MHz */        ldreq r1, =0xFF800528        /* For pass 1, HCLK=66.5MHz*/        //ldreq r1, =0xFF800328        /* For pass 1, HCLK=66.5MHz sri NFC 16.625Mhz*/                                                        str r1, [r0, #CLKCTL_PDR0]        ldr r1, =MPCTL_PARAM_399        str r1, [r0, #CLKCTL_MPCTL]#endif        /* Set to default values */        /* Removed 2 fit in 2k         ldr r1, =0x2910AC56        str r1, [r0, #CLKCTL_PDR1]        ldr r1, =0x00011401        str r1, [r0, #CLKCTL_UPCTL]*//* * End of Step 6: Clock setup */        /* * Step 7: M3IF/WEIM/ESDCTL setup */        /* M3IF setup */        /* Configure M3IF registers */        ldr r1, =M3IF_BASE        /*        * M3IF Control Register (M3IFCTL)        * MRRP[0] = TMAX not on priority list (0 << 0)        = 0x00000000        * MRRP[1] = SMIF not on priority list (0 << 0)        = 0x00000000        * MRRP[2] = MAX0 not on priority list (0 << 0)        = 0x00000000        * MRRP[3] = MAX1 not on priority list (0 << 0)        = 0x00000000        * MRRP[4] = SDMA not on priority list (0 << 0)        = 0x00000000        * MRRP[5] = MPEG4 not on priority list (0 << 0)       = 0x00000000        * MRRP[6] = IPU on priority list (1 << 6)             = 0x00000040        * MRRP[7] = SMIF-L2CC not on priority list (0 << 0)   = 0x00000000        *                                                       ------------        *                                                       0x00000040         */        ldr r0, =0x00000040        str r0, [r1]  /* M3IF control reg */        /* WEIM setup */        /* CS0 setup */#ifndef FLASH_BURST_MODE_ENABLE        /*         * Sync mode (AHB Clk = 133MHz ; BCLK = 44.3MHz):         */        /* Flash reset command */        ldr     r0, =CS0_BASE_ADDR        ldr     r1, =0xF0F0        strh    r1, [r0]        /* 1st command */        ldr     r2, =0xAAA        add     r2, r2, r0        ldr     r1, =0xAAAA        strh    r1, [r2]        /* 2nd command */        ldr     r2, =0x554        add     r2, r2, r0        ldr     r1, =0x5555        strh    r1, [r2]        /* 3rd command */        ldr     r2, =0xAAA        add     r2, r2, r0        ldr     r1, =0xD0D0        strh    r1, [r2]        /* Write flash config register */        ldr     r1, =0x56CA        strh    r1, [r2]        /* Flash reset command */        ldr     r1, =0xF0F0        strh    r1, [r0]        /* WEIM setup */        ldr r0, =WEIM_BASE_ADDR        ldr r1, =0x23524E80        str r1, [r0, #CSCRU]        ldr r1, =0x10000D03        str r1, [r0, #CSCRL]        ldr r1, =0x00720900        str r1, [r0, #CSCRA]#else        /* Async flash mode */        ldr r0, =WEIM_CTRL_CS0        ldr r1, =0x11414C80        str r1, [r0, #CSCRU]        ldr r1, =0x30000D03        str r1, [r0, #CSCRL]        ldr r1, =0x00310800        str r1, [r0, #CSCRA]#endif        /* CPLD on CS4 setup */        ldr r0, =WEIM_CTRL_CS4        ldr r1, =0x0000D843        str r1, [r0, #CSCRU]        ldr r1, =0x22252521        str r1, [r0, #CSCRL]        ldr r1, =0x22220A00        str r1, [r0, #CSCRA]init_sdram:  /* Get here only when not boot out of SDRAM */        /* Assuming DDR memory first */        ldr r3, =0x82226080     /* 32 bit memory */        init_ddr_sdram        /* Testing if it is truly DDR */        ldr r1, =SDRAM_COMPARE_CONST1        ldr r0, =SDRAM_BASE_ADDR        str r1, [r0]        ldr r2, =SDRAM_COMPARE_CONST2        str r2, [r0, #0x4]        ldr r2, [r0]        cmp r1, r2        beq HWInitialise_skip_SDRAM_setup        ldr r3, =0x82216080     /* 16 bit memory */        init_ddr_sdram        /* Testing if it is truly DDR */        ldr r1, =SDRAM_COMPARE_CONST1        ldr r0, =SDRAM_BASE_ADDR        str r1, [r0]        ldr r2, =SDRAM_COMPARE_CONST2        str r2, [r0, #0x4]        ldr r2, [r0]        cmp r1, r2        beq HWInitialise_skip_SDRAM_setup        /* Reach here ONLY when SDR */        ldr r3, =0x82126180     /* 32 bit memory */        init_sdr_sdram        /* Still test to make sure SDR */        ldr r1, =SDRAM_COMPARE_CONST1        ldr r0, =SDRAM_BASE_ADDR        str r1, [r0]        ldr r2, =SDRAM_COMPARE_CONST2        str r2, [r0, #0x4]        ldr r2, [r0]        cmp r1, r2        beq HWInitialise_skip_SDRAM_setup        ldr r3, =0x82116180     /* 16 bit memory */        init_sdr_sdram        /* Still test to make sure SDR */        ldr r1, =SDRAM_COMPARE_CONST1        ldr r0, =SDRAM_BASE_ADDR        str r1, [r0]        ldr r2, =SDRAM_COMPARE_CONST2        str r2, [r0, #0x4]        ldr r2, [r0]        cmp r1, r2        beq HWInitialise_skip_SDRAM_setup        /* Reach hear means memory setup problem. Try to          * increase the HCLK divider */        ldr r0, =CRM_MCU_BASE_ADDR        ldr r1, [r0, #CLKCTL_PDR0]        and r2, r1, #0x38        cmp r2, #0x38        beq loop_forever        add r1, r1, #0x8        str r1, [r0, #CLKCTL_PDR0]        b init_sdramloop_forever:        b loop_forever  /* shouldn't get here */HWInitialise_skip_SDRAM_setup:/* * End of Step 7: M3IF/WEIM/ESDCTL setup */HWInitialise_skip_SDRAM_copy:#ifdef DSP_RESET_REQUIRED/* * Deal with DSP reset */        /* Set DSP to LE */        ldr r0, =0x5001C808        ldr r1, [r0]        cmp r1, #0x0        beq skip_dsp_reset        ldr r1, =0x0        str r1, [r0]        ldr r0, =0x43F84024        /* Put DSP in reset */        ldr r1, =0x00000010        str r1, [r0]        /* Hold for some time */        ldr r2, =0x80000dsp_reset_delay:        subs r2, r2, #0x1        bne dsp_reset_delay        /* Put DSP out of reset */        ldr r1, =0x0        str r1, [r0]#endif  /* DSP_RESET_REQUIRED */skip_dsp_reset:/* End of DSP reset */NAND_ClockSetup:    .endm    .macro  init_ddr_sdram        ldr r0, =ESDCTL_BASE        ldr r2, =SDRAM_BASE_ADDR        ldr r1, =0x0075E73A        str r1, [r0, #0x4]        ldr r1, =0x2            // reset        str r1, [r0, #0x10]        ldr r1, =0x4            // DDR        str r1, [r0, #0x10]        // Hold for more than 200ns        ldr r1, =0x100001:        subs r1, r1, #0x1        bne 1b        ldr r1, =0x92100000        str r1, [r0]        ldr r1, =0x12344321        ldr r12, =0x80000F00        str r1, [r12]        ldr r1, =0xA2100000        str r1, [r0]        ldr r1, =0x12344321        str r1, [r2]        str r1, [r2]        ldr r1, =0xB2100000        str r1, [r0]        ldr r1, =0xDA        strb r1, [r2, #0x33]        ldr r1, =0xFF        ldr r12, =0x81000000        strb r1, [r12]        str r3, [r0]        ldr r1, =0xDEADBEEF        str r1, [r2]        ldr r1, =0x0000000C        str r1, [r0, #0x10]    .endm// SDR SDRAM setup    /* r3 = value for ESDCTL0 */    .macro  init_sdr_sdram        ldr r0, =ESDCTL_BASE        ldr r2, =SDRAM_BASE_ADDR        ldr r1, =0x0075E73A        str r1, [r0, #0x4]        ldr r1, =0x2            // reset        str r1, [r0, #0x10]        ldr r1, =0x0            // sdr        str r1, [r0, #0x10]        // Hold for more than 200ns        ldr r1, =0x100001:        subs r1, r1, #0x1        bne 1b        ldr r1, =0x92126080        str r1, [r0]        ldr r1, =0x0        ldr r12, =0x80000400        str r1, [r12]        ldr r1, =0xA2126080        str r1, [r0]        ldr r1, =0x0        str r1, [r2]        str r1, [r2]        ldr r1, =0xB2126080        str r1, [r0]        ldr r1, =0x0        strb r1, [r2, #0x37]        ldr r12, =0x81000000        str r1, [r12]        str r3, [r0]        ldr r1, =0x0        str r1, [r2]    .endm#endif  /* defined(__ASSEMBLER__) */#endif  /* MXC_SETUP_MXC91331_H */

⌨️ 快捷键说明

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