天嵌 ARM开发社区

 找回密码
 注册
查看: 5619|回复: 5

I.MX6Q学习笔记——新版BSP之u-boot移植

[复制链接]
freewing 发表于 2015-5-21 17:13:24 | 显示全部楼层 |阅读模式
  本文由博主girlkoo编写,关于E9与TQIMX6Q开发平台u-boot移植的文章。

  前段时间就开始学习I.MX6Q了,但是最近工作实在是忙,间断了一些时间了。为了提高移植效率,还是考虑移植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     
复制代码
  1.   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,修改后的文件内容如下:
  1. DATA 4, 0x020e0798, 0x000C0000  
  2. DATA 4, 0x020e0758, 0x00000000  
  3. DATA 4, 0x020e0588, 0x00000030  
  4. DATA 4, 0x020e0594, 0x00000030  
  5. DATA 4, 0x020e056c, 0x00000030  
  6. DATA 4, 0x020e0578, 0x00000030  
  7. DATA 4, 0x020e074c, 0x00000030  
  8. DATA 4, 0x020e057c, 0x00000030  
  9. DATA 4, 0x020e058c, 0x00000000  
  10. DATA 4, 0x020e059c, 0x00000030  
  11. DATA 4, 0x020e05a0, 0x00000030  
  12. DATA 4, 0x020e078c, 0x00000030  
  13. DATA 4, 0x020e0750, 0x00020000  
  14. DATA 4, 0x020e05a8, 0x00000018  
  15. DATA 4, 0x020e05b0, 0x00000018  
  16. DATA 4, 0x020e0524, 0x00000018  
  17. DATA 4, 0x020e051c, 0x00000018  
  18. DATA 4, 0x020e0518, 0x00000018  
  19. DATA 4, 0x020e050c, 0x00000018  
  20. DATA 4, 0x020e05b8, 0x00000018  
  21. DATA 4, 0x020e05c0, 0x00000018  
  22. DATA 4, 0x020e0774, 0x00020000  
  23. DATA 4, 0x020e0784, 0x00000018  
  24. DATA 4, 0x020e0788, 0x00000018  
  25. DATA 4, 0x020e0794, 0x00000018  
  26. DATA 4, 0x020e079c, 0x00000018  
  27. DATA 4, 0x020e07a0, 0x00000018  
  28. DATA 4, 0x020e07a4, 0x00000018  
  29. DATA 4, 0x020e07a8, 0x00000018  
  30. DATA 4, 0x020e0748, 0x00000018  
  31. DATA 4, 0x020e05ac, 0x00000018  
  32. DATA 4, 0x020e05b4, 0x00000018  
  33. DATA 4, 0x020e0528, 0x00000018  
  34. DATA 4, 0x020e0520, 0x00000018  
  35. DATA 4, 0x020e0514, 0x00000018  
  36. DATA 4, 0x020e0510, 0x00000018  
  37. DATA 4, 0x020e05bc, 0x00000018  
  38. DATA 4, 0x020e05c4, 0x00000018  
  39. DATA 4, 0x021b0800, 0xa1390003  
  40. DATA 4, 0x021b080c, 0x001F001F  
  41. DATA 4, 0x021b0810, 0x001F001F  
  42. DATA 4, 0x021b480c, 0x001F001F  
  43. DATA 4, 0x021b4810, 0x001F001F  
  44. DATA 4, 0x021b083c, 0x43270338  
  45. DATA 4, 0x021b0840, 0x03200314  
  46. DATA 4, 0x021b483c, 0x431A032F  
  47. DATA 4, 0x021b4840, 0x03200263  
  48. DATA 4, 0x021b0848, 0x4B434748  
  49. DATA 4, 0x021b4848, 0x4445404C  
  50. DATA 4, 0x021b0850, 0x38444542  
  51. DATA 4, 0x021b4850, 0x4935493A  
  52. DATA 4, 0x021b081c, 0x33333333  
  53. DATA 4, 0x021b0820, 0x33333333  
  54. DATA 4, 0x021b0824, 0x33333333  
  55. DATA 4, 0x021b0828, 0x33333333  
  56. DATA 4, 0x021b481c, 0x33333333  
  57. DATA 4, 0x021b4820, 0x33333333  
  58. DATA 4, 0x021b4824, 0x33333333  
  59. DATA 4, 0x021b4828, 0x33333333  
  60. DATA 4, 0x021b08b8, 0x00000800  
  61. DATA 4, 0x021b48b8, 0x00000800  
  62. DATA 4, 0x021b0004, 0x00020036  
  63. DATA 4, 0x021b0008, 0x09444040  
  64. DATA 4, 0x021b000c, 0x8A8F7955  
  65. DATA 4, 0x021b0010, 0xFF328F64  
  66. DATA 4, 0x021b0014, 0x01FF00DB  
  67. DATA 4, 0x021b0018, 0x00001740  
  68. DATA 4, 0x021b001c, 0x00008000  
  69. DATA 4, 0x021b002c, 0x000026d2  
  70. DATA 4, 0x021b0030, 0x008F1023  
  71. DATA 4, 0x021b0040, 0x00000047  
  72. DATA 4, 0x021b0000, 0x841A0000  
  73. DATA 4, 0x021b001c, 0x04088032  
  74. DATA 4, 0x021b001c, 0x00008033  
  75. DATA 4, 0x021b001c, 0x00048031  
  76. DATA 4, 0x021b001c, 0x09408030  
  77. DATA 4, 0x021b001c, 0x04008040  
  78. DATA 4, 0x021b0020, 0x00005800  
  79. DATA 4, 0x021b0818, 0x00011117  
  80. DATA 4, 0x021b4818, 0x00011117  
  81. DATA 4, 0x021b0004, 0x00025576  
  82. DATA 4, 0x021b0404, 0x00011006  
  83. DATA 4, 0x021b001c, 0x00000000  
  84.   
  85. /* set the default clock gate to save power */  
  86. DATA 4, 0x020c4068, 0x00C03F3F  
  87. DATA 4, 0x020c406c, 0x0030FC03  
  88. DATA 4, 0x020c4070, 0x0FFFC000  
  89. DATA 4, 0x020c4074, 0x3FF00000  
  90. DATA 4, 0x020c4078, 0x00FFF300  
  91. DATA 4, 0x020c407c, 0x0F0000F3  
  92. DATA 4, 0x020c4080, 0x000003FF  
  93.   
  94. /* enable AXI cache for VDOA/VPU/IPU */  
  95. DATA 4, 0x020e0010, 0xF00000CF  
  96. /* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */  
  97. DATA 4, 0x020e0018, 0x007F007F  
  98. DATA 4, 0x020e001c, 0x007F007F
复制代码



  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移植没有太大区别,思路差不多。有什么问题可以留言。




cbs 发表于 2015-7-19 17:38:12 | 显示全部楼层
您好,我按照你上面的做法做后,U-BOOT启动不起来,一上电,就进入了烧录的模式。不知道什么原因
yeasang 发表于 2015-7-20 00:25:44 | 显示全部楼层
zhegeyaoding
yeasang 发表于 2015-7-20 00:26:37 | 显示全部楼层
haohaohaohaohao
zhangguoq44 发表于 2016-4-15 16:36:24 | 显示全部楼层
u-boot源码在哪里下载,什么版本的,有木有下载地址?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-20 08:00 , Processed in 1.078125 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表