Embedsky007的个人空间 https://www.eechina.com/space-uid-114045.html [收藏] [复制] [分享] [RSS]

博客

【嵌入式分享】TQI.MX6Q系列_新版BSP之u-boot移植

已有 1674 次阅读2015-5-11 10:28 |个人分类:技术文章| 天嵌, 嵌入式, 开发板, uboot, IMX6Q

   配合天嵌最新推出的开发平台TQI.MX6Q,天嵌近期推出一系列关于TQI.MX6Q的嵌入式分享文章。本文由技术博主girlkoo编写,详述新版BSP之u-boot移植流程。

  为了提高移植效率,还是考虑移植Freescale维护的3.10版本的内核。

  源码获取

  Freescale维护的3.10的内核是使用git管理的,但是直接使用git下载代码会比较慢,下面是我下载好的uboot和kernel:

  I.MX6Q BSP源码(Freescale官方维护)

  代码下载好后,先将u-boot解压到工作目录,然后在终端下切换到uboot根目录。由于这个版本的bsp是使用git管理的,因此,需要切换到指定分支。执行指令:

  1. git branch -a  

 

   可以查看freescale维护的uboot的各个分支,我们checkout的分支是“remotes/origin/imx_v2013.04_3.10.17_1.0.0_ga”,执行指令:

  1. git checkout -b tqimx6q imx_v2013.04_3.10.17_1.0.0_ga  

   这样,就在本地创建的分支tqimx6q并将远程分支imx_v2013.04_3.10.17_1.0.0_ga上的代码checkout到这个本地分支。我们之后的修改在tqimx6q分支进行即可。

  U-Boot移植

  新版U-Boot移植也不麻烦,主要是freescale给出了详细的官方手册"i.MX 6 BSP Porting Guide",具体的移植步骤如下:

  Step1. 创建board目录。由于imx6q的很多代码是共通的,跟之前的移植一样,可以参考mx6qsabresd进行的,执行指令:

 

  1. cp board/freescale/mx6qsabresd/ board/freescale/mx6q_tqimx6q -r  

   Step2. 修改board相关文件的名称:

  1. cp board/freescale/mx6q_tqimx6q/mx6qsabresd.c board/freescale/mx6q_tqimx6q/mx6q_tqimx6q.c 

  Step3. 修改Makefile中的文件名。打开board/freescale/Makefile,将mx6qsabresd替换为mx6q_tqimx6q.c。

 

  Step4. 创建board配置文件。同样参考mx6qsabresd,执行如下指令:

  1. cp include/configs/mx6qsabresd.h include/configs/mx6q_tqimx6q.h  

  Step5. 添加编译选项。打开文件boards.cfg,找到配置项"mx6qsabresd"(如果没有改动的话,在277行),复制该行配置并添加在下面,然后修改为如下内容:

  1. mx6q_tqimx6q                 arm         armv7       mx6q_tqimx6q        freescale      mx6            
  2.  mx6qsabresd:IMX_CONFIG=board/freescale/mx6q_tqimx6q/mx6q_tqimx6q_ddr.cfg,MX6Q,DEFAULT_FDT_FILE="imx6q-tqimx6q.dtb",DDR_MB=1024,SYS_USE_SPINOR  

  Step6. 定制DDR配置。其实DDR相关的参数在之前的移植文章中已经有了。

  1. cp board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg board/freescale/mx6q_tqimx6q/mx6q_tqimx6q_ddr.cfg 

  然后修改文件mx6q_tqimx6q_ddr.cfg,修改后的文件内容如下:

 http://pan.baidu.com/s/1nt5ji0h

 

  Step7. 定制board端子。其实有影响的端子在移植老版的uboot时已经知道,因此修改起来也是比较容易。

 

  (1) 修改串口端子。具体修改内容如下:

  1. iomux_v3_cfg_t const uart1_pads[] = {  
  2.         // MX6_PAD_CSI0_DAT10__UART1_TXD | MUX_PAD_CTRL(UART_PAD_CTRL),  
  3.         MX6_PAD_SD3_DAT7__UART1_TXD | MUX_PAD_CTRL(UART_PAD_CTRL),  
  4.         // MX6_PAD_CSI0_DAT11__UART1_RXD | MUX_PAD_CTRL(UART_PAD_CTRL),  
  5.         MX6_PAD_SD3_DAT6__UART1_RXD | MUX_PAD_CTRL(UART_PAD_CTRL),  
  6. };  

 

  (2) 修改SD卡端子。具体修改如下:

  1. iomux_v3_cfg_t const usdhc2_pads[] = {  
  2.         MX6_PAD_SD2_CLK__USDHC2_CLK     | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  3.         MX6_PAD_SD2_CMD__USDHC2_CMD     | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  4.         MX6_PAD_SD2_DAT0__USDHC2_DAT0   | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  5.         MX6_PAD_SD2_DAT1__USDHC2_DAT1   | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  6.         MX6_PAD_SD2_DAT2__USDHC2_DAT2   | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  7.         MX6_PAD_SD2_DAT3__USDHC2_DAT3   | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  8.         // MX6_PAD_NANDF_D4__USDHC2_DAT4        | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  9.         // MX6_PAD_NANDF_D5__USDHC2_DAT5        | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  10.         // MX6_PAD_NANDF_D6__USDHC2_DAT6        | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  11.         // MX6_PAD_NANDF_D7__USDHC2_DAT7        | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  12.         // MX6_PAD_NANDF_D2__GPIO_2_2   | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */  
  13. };  
  14.   
  15. iomux_v3_cfg_t const usdhc3_pads[] = {  
  16.         MX6_PAD_SD3_CLK__USDHC3_CLK   | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  17.         MX6_PAD_SD3_CMD__USDHC3_CMD   | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  18.         MX6_PAD_SD3_DAT0__USDHC3_DAT0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  19.         MX6_PAD_SD3_DAT1__USDHC3_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  20.         MX6_PAD_SD3_DAT2__USDHC3_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  21.         MX6_PAD_SD3_DAT3__USDHC3_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  22.         MX6_PAD_SD3_DAT4__USDHC3_DAT4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  23.         MX6_PAD_SD3_DAT5__USDHC3_DAT5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  24.         // MX6_PAD_SD3_DAT6__USDHC3_DAT6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  25.         // MX6_PAD_SD3_DAT7__USDHC3_DAT7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),  
  26.         MX6_PAD_NANDF_D0__GPIO_2_0    | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */  
  27. };  

  定制cd(card detect)端子,否则uboot将检测不到SD卡插入。打开board/freescale/mx6q_tqimx6q/mx6q_tqimx6q.c修改USDHC2_CD_GPIO:

  1. #define USDHC2_CD_GPIO  IMX_GPIO_NR(1, 4)  

  Step8. 编译uboot。执行如下指令:

  1. export ARCH=arm  
  2. export CROSS_COMPILE=arm-linux-gnueabi-  
  3. make mx6q_tqimx6q  

  其中,CROSS_COMPILE是交叉编译工具链的前缀,根据自己的实际情况修改。如果前面的步骤操作正确,uboot就可以顺利编译通过了。

  烧写启动

 

  经过前面的移植工作,uboot已经可以正常运行在tqimx6q开发板上了。这个版本的uboot与之前版本的uboot编译出的目标文件不同,具体的烧写指令如下:

  1. sudo dd if=u-boot.imx of=/dev/sdb bs=512 seek=2  

  启动Log如下:

  1. U-Boot 2013.04-04987-g98fdbdc-dirty (May 01 2015 - 23:15:34)  
  2.   
  3. CPU:   Freescale i.MX6Q rev1.2 at 792 MHz  
  4. CPU:   Temperature 24 C, calibration data: 0x54e4bb69  
  5. Reset cause: POR  
  6. Board: MX6Q/SDL-SabreSD  
  7. I2C:   ready  
  8. DRAM:  1 GiB  
  9. MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2  
  10. MMC: no card present  
  11. MMC init failed  
  12. Using default environment  
  13.   
  14. No panel detected: default to Hannstar-XGA  
  15. Display: Hannstar-XGA (1024x768)  
  16. In:    serial  
  17. Out:   serial  
  18. Err:   serial  
  19. MMC: no card present  
  20. mmc0(part 0) is current device  
  21. Net:   Phy not found  
  22. PHY reset timed out  
  23. FEC [PRIME]  
  24. Warning: failed to set MAC address  
  25.   
  26. Normal Boot  
  27. Hit any key to stop autoboot:  0   
  28. MMC: no card present  
  29. mmc0(part 0) is current device  
  30. MMC: no card present  
  31. Booting from net ...  
  32. *** ERROR: `ethaddr' not set  
  33. *** ERROR: `ethaddr' not set  
  34. Wrong Image Format for bootm command  
  35. ERROR: can't get kernel image!  
  36. U-Boot >   

 

  总结

 

  经过上文介绍的移植,u-boot已经可以正常启动了。其实,这个版本的uboot移植与之前版本的uboot移植没有太大区别,思路差不多。有什么问题可以留言。

 

相关产品:

TQI.MX6Q套装:http://www.embedsky.com/Index.php?s=/Product/show/id/83.html


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部