飞凌OK6410开发板之u-boot-2011.06-rc2移植之愚见(三)

2014-11-24 10:36:38 · 作者: · 浏览: 1
道是UBOOT没跑起来,还是OK6410板子上的串口没有初始化,网上找了好久也没找出个问题所在,关键还是要靠自己啊 ,没办法,只好去参考哈UBOOT1.16内的代码了,但是那么多的东西,该看啥呢,呵呵,对了,这个也是需要好好琢磨的,所以多看哈子源代码会很有用的,通过代码大致翻阅最终被我锁定在了/u-boot-2011.06-rc2/board/feilin/ok6410/lowlevel_init.S这个文件上,其实这个文件就是板载资源底层初始化,发现其内缺少UBOOT内存搬运代码以及串口初始化部分的代码有点问题,毕竟这个是SMDK6400的板载代码,现在是OK6410,所以需要修改,于是参考UBOOT1.16内的部分代码:第一处

第二处

在其后加上
//<-add by hwq
ldr r1, =0x2222
str r1, [r0, #GPBCON_OFFSET]
ldr r0, =ELFIN_UART_CONSOLE_BASE @0x7F005000
mov r1, #0x0
str r1, [r0, #UFCON_OFFSET]
str r1, [r0, #UMCON_OFFSET]
mov r1, #0x3 @was 0.
str r1, [r0, #ULCON_OFFSET]
#if defined(CONFIG_CLKSRC_CLKUART)
ldr r1, =0xe45 /* UARTCLK SRC = 11 => EXT_UCLK1*/
#else
ldr r1, =0x245 /* UARTCLK SRC = x0 => PCLK */
#endif
str r1, [r0, #UCON_OFFSET]
#if defined(CONFIG_UART_50)
ldr r1, =0x1A
#elif defined(CONFIG_UART_66)
ldr r1, =0x22
#else
ldr r1, =0x1A
#endif
str r1, [r0, #UBRDIV_OFFSET]
#if defined(CONFIG_UART_50)
ldr r1, =0x3
#elif defined(CONFIG_UART_66)
ldr r1, =0x1FFF
#else
ldr r1, =0x3
#endif
str r1, [r0, #UDIVSLOT_OFFSET]
ldr r1, =0x4f4f4f4f
str r1, [r0, #UTXH_OFFSET] @'O'
//->
,通过修改后,再次编译,成功,然后将其u-boot.bin再一次通过DNW加载进OK6410的SDRAM内运行,奇迹出现了,呵呵,截图如下:

截图显示FLASH 失败,其实是由于还没有移植FLASH驱动的缘故,基本这个移植版本还是雏形,啥子也做不了,因为驱动都还没搞定,但是说明UBOOT可以跑了毕竟看上面的时间还是我昨晚1点43分才测试好的,呵呵,哎写这篇文章又花了不少时间,觉得既然有心得体会,还是写出来供大家交流,后面有时间会逐步去完善的,当然了后期的工作量估计会更大啊,呵呵。