s3c2410的bootloader(vivi)源代码分析----基于s3c2410处理器内容摘要:
_cfg_val /******************* @ @ Data Area @ @ Memory configuration values .align 4 mem_cfg_val: ;定义好的13*4=52 个字节初值 .long vBWSCON ;在/vivi/include/platform/ 中赋值 /****** SDRAM 从 32 位变成 16 位,需要修改 vBWSCON 的值 ******/ .long vBANKCON0 .long vBANKCON1 .long vBANKCON2 .long vBANKCON3 /********** 网卡控制器 vBANKCON3 的值可能需要修改 **************/ .long vBANKCON4 .long vBANKCON5 .long vBANKCON6 /****** SDRAM 从 32 位变成 16 位,可能需要修改 vBANKCON6 的值 ******/ .long vBANKCON7 .long vREFRESH .long vBANKSIZE /****** SDRAM 从 64MB 变成 32MB,需要修改 vBANKSIZE 的值 ******/ .long vMRSRB6 .long vMRSRB7 ********************/ add r3, r1, 52 1: ldr r4, [r2], 4 str r4, [r1], 4 cmp r1, r3 bne 1b ;循环操作,直到 13 个寄存器赋值完成 mov pc, lr *******************************/ ifdef CONFIG_PM ; vivi考虑不需要使用电源管理 @ Check if this is a wakeup from sleep ldr r1, PMST_ADDR ldr r0, [r1] tst r0, (PMST_SMR) bne WakeupStart ;查看状态,判断是否需要跳转到 WakeupStart endif ifdef CONFIG_S3C2410_SMDK ; SMDK 开发板使用 @ All LED on ;点亮开发板上的 LED mov r1, GPIO_CTL_BASE add r1, r1, oGPIO_F ; LED 使用 GPIOF 组的管脚 ldr r2,=0x55aa ;使能 EINT0, EINT1, EINT2, EINT3, ;另四个管脚配置成输出,屏蔽 EINT4, 5, 6, 7 str r2, [r1, oGPIO_CON] mov r2, 0xff str r2, [r1, oGPIO_UP] ; disable the pullup function mov r2, 0x00 str r2, [r1, oGPIO_DAT] endif if 0 @ SVC mrs r0, cpsr bic r0, r0, 0xdf orr r1, r0, 0xd3 msr cpsr_all, r1 endif @ set GPIO for UART ;设置串口 mov r1, GPIO_CTL_BASE add r1, r1, oGPIO_H ;设置 GPIO_H 组管脚为串口 ldr r2, gpio_con_uart str r2, [r1, oGPIO_CON] ldr r2, gpio_up_uart str r2, [r1, oGPIO_UP] /************************* @ inital values for GPIO gpio_con_uart: .long vGPHCON ; vGPHCON 在 /vivi/include/platform/ 中赋值 ; define vGPHCON 0x0016faaa ; GPIO_H 配置为 nCTS0, nRTS0, RXD0,TXD0, RXD1, ; TXD1, nCTS1, nRTS1, /**** 三个串口都使能,可能需要修改 define vGPHCON 0x0016aaaa ****/ gpio_up_uart: .long Vgphup ;同上 define vGPHUP 0x000007ff ; The pullup function is disabled. ************************/ bl InitUART ;跳转到 InitUART 串口初始化函数 /*******@ Initialize UART @ @ r0 = number of UART port InitUART: ldr r1, SerBase /******************* .align 4 ;缺省情况下在 vivi 中只初始化了 UART0 SerBase: if defined(CONFIG_SERIAL_UART0) .long UART0_CTL_BASE ;基地址在 /vivi/include/ 中定义 elif defined(CONFIG_SERIAL_UART1) .long UART1_CTL_BASE elif defined(CONFIG_SERIAL_UART2) .long UART2_CTL_BASE else error not defined base address of serial endif ********************/ mov r2, 0x0 str r2, [r1, oUFCON] str r2, [r1, oUMCON] mov r2, 0x3 str r2, [r1, oULCON] ldr r2, =0x245 str r2, [r1, oUCON] define UART_BRD ((50000000 / (。s3c2410的bootloader(vivi)源代码分析----基于s3c2410处理器
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。