前段时间就开始学习I.MX6Q了,但是最近工作实在是忙,间断了一些时间了。为了提高移植效率,还是考虑移植Freescale维护的3.10版本的内核。

源码获取

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

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

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

git branch -a

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

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进行的,执行指令:

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

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

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,执行如下指令:

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

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

mx6q_tqimx6q                 arm         armv7       mx6q_tqimx6q        freescale      mx6             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相关的参数在之前的移植文章中已经有了。

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

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

DATA 4, 0x020e0798, 0x000C0000
DATA 4, 0x020e0758, 0x00000000
DATA 4, 0x020e0588, 0x00000030
DATA 4, 0x020e0594, 0x00000030
DATA 4, 0x020e056c, 0x00000030
DATA 4, 0x020e0578, 0x00000030
DATA 4, 0x020e074c, 0x00000030
DATA 4, 0x020e057c, 0x00000030
DATA 4, 0x020e058c, 0x00000000
DATA 4, 0x020e059c, 0x00000030
DATA 4, 0x020e05a0, 0x00000030
DATA 4, 0x020e078c, 0x00000030
DATA 4, 0x020e0750, 0x00020000
DATA 4, 0x020e05a8, 0x00000018
DATA 4, 0x020e05b0, 0x00000018
DATA 4, 0x020e0524, 0x00000018
DATA 4, 0x020e051c, 0x00000018
DATA 4, 0x020e0518, 0x00000018
DATA 4, 0x020e050c, 0x00000018
DATA 4, 0x020e05b8, 0x00000018
DATA 4, 0x020e05c0, 0x00000018
DATA 4, 0x020e0774, 0x00020000
DATA 4, 0x020e0784, 0x00000018
DATA 4, 0x020e0788, 0x00000018
DATA 4, 0x020e0794, 0x00000018
DATA 4, 0x020e079c, 0x00000018
DATA 4, 0x020e07a0, 0x00000018
DATA 4, 0x020e07a4, 0x00000018
DATA 4, 0x020e07a8, 0x00000018
DATA 4, 0x020e0748, 0x00000018
DATA 4, 0x020e05ac, 0x00000018
DATA 4, 0x020e05b4, 0x00000018
DATA 4, 0x020e0528, 0x00000018
DATA 4, 0x020e0520, 0x00000018
DATA 4, 0x020e0514, 0x00000018
DATA 4, 0x020e0510, 0x00000018
DATA 4, 0x020e05bc, 0x00000018
DATA 4, 0x020e05c4, 0x00000018
DATA 4, 0x021b0800, 0xa1390003
DATA 4, 0x021b080c, 0x001F001F
DATA 4, 0x021b0810, 0x001F001F
DATA 4, 0x021b480c, 0x001F001F
DATA 4, 0x021b4810, 0x001F001F
DATA 4, 0x021b083c, 0x43270338
DATA 4, 0x021b0840, 0x03200314
DATA 4, 0x021b483c, 0x431A032F
DATA 4, 0x021b4840, 0x03200263
DATA 4, 0x021b0848, 0x4B434748
DATA 4, 0x021b4848, 0x4445404C
DATA 4, 0x021b0850, 0x38444542
DATA 4, 0x021b4850, 0x4935493A
DATA 4, 0x021b081c, 0x33333333
DATA 4, 0x021b0820, 0x33333333
DATA 4, 0x021b0824, 0x33333333
DATA 4, 0x021b0828, 0x33333333
DATA 4, 0x021b481c, 0x33333333
DATA 4, 0x021b4820, 0x33333333
DATA 4, 0x021b4824, 0x33333333
DATA 4, 0x021b4828, 0x33333333
DATA 4, 0x021b08b8, 0x00000800
DATA 4, 0x021b48b8, 0x00000800
DATA 4, 0x021b0004, 0x00020036
DATA 4, 0x021b0008, 0x09444040
DATA 4, 0x021b000c, 0x8A8F7955
DATA 4, 0x021b0010, 0xFF328F64
DATA 4, 0x021b0014, 0x01FF00DB
DATA 4, 0x021b0018, 0x00001740
DATA 4, 0x021b001c, 0x00008000
DATA 4, 0x021b002c, 0x000026d2
DATA 4, 0x021b0030, 0x008F1023
DATA 4, 0x021b0040, 0x00000047
DATA 4, 0x021b0000, 0x841A0000
DATA 4, 0x021b001c, 0x04088032
DATA 4, 0x021b001c, 0x00008033
DATA 4, 0x021b001c, 0x00048031
DATA 4, 0x021b001c, 0x09408030
DATA 4, 0x021b001c, 0x04008040
DATA 4, 0x021b0020, 0x00005800
DATA 4, 0x021b0818, 0x00011117
DATA 4, 0x021b4818, 0x00011117
DATA 4, 0x021b0004, 0x00025576
DATA 4, 0x021b0404, 0x00011006
DATA 4, 0x021b001c, 0x00000000/* set the default clock gate to save power */
DATA 4, 0x020c4068, 0x00C03F3F
DATA 4, 0x020c406c, 0x0030FC03
DATA 4, 0x020c4070, 0x0FFFC000
DATA 4, 0x020c4074, 0x3FF00000
DATA 4, 0x020c4078, 0x00FFF300
DATA 4, 0x020c407c, 0x0F0000F3
DATA 4, 0x020c4080, 0x000003FF/* enable AXI cache for VDOA/VPU/IPU */
DATA 4, 0x020e0010, 0xF00000CF
/* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */
DATA 4, 0x020e0018, 0x007F007F
DATA 4, 0x020e001c, 0x007F007F

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

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

iomux_v3_cfg_t const uart1_pads[] = {// MX6_PAD_CSI0_DAT10__UART1_TXD | MUX_PAD_CTRL(UART_PAD_CTRL),MX6_PAD_SD3_DAT7__UART1_TXD | MUX_PAD_CTRL(UART_PAD_CTRL),// MX6_PAD_CSI0_DAT11__UART1_RXD | MUX_PAD_CTRL(UART_PAD_CTRL),MX6_PAD_SD3_DAT6__UART1_RXD | MUX_PAD_CTRL(UART_PAD_CTRL),
};

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

iomux_v3_cfg_t const usdhc2_pads[] = {MX6_PAD_SD2_CLK__USDHC2_CLK     | MUX_PAD_CTRL(USDHC_PAD_CTRL),MX6_PAD_SD2_CMD__USDHC2_CMD     | MUX_PAD_CTRL(USDHC_PAD_CTRL),MX6_PAD_SD2_DAT0__USDHC2_DAT0   | MUX_PAD_CTRL(USDHC_PAD_CTRL),MX6_PAD_SD2_DAT1__USDHC2_DAT1   | MUX_PAD_CTRL(USDHC_PAD_CTRL),MX6_PAD_SD2_DAT2__USDHC2_DAT2   | MUX_PAD_CTRL(USDHC_PAD_CTRL),MX6_PAD_SD2_DAT3__USDHC2_DAT3   | MUX_PAD_CTRL(USDHC_PAD_CTRL),// MX6_PAD_NANDF_D4__USDHC2_DAT4        | MUX_PAD_CTRL(USDHC_PAD_CTRL),// MX6_PAD_NANDF_D5__USDHC2_DAT5        | MUX_PAD_CTRL(USDHC_PAD_CTRL),// MX6_PAD_NANDF_D6__USDHC2_DAT6        | MUX_PAD_CTRL(USDHC_PAD_CTRL),// MX6_PAD_NANDF_D7__USDHC2_DAT7        | MUX_PAD_CTRL(USDHC_PAD_CTRL),// MX6_PAD_NANDF_D2__GPIO_2_2   | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
};iomux_v3_cfg_t const usdhc3_pads[] = {MX6_PAD_SD3_CLK__USDHC3_CLK   | MUX_PAD_CTRL(USDHC_PAD_CTRL),MX6_PAD_SD3_CMD__USDHC3_CMD   | MUX_PAD_CTRL(USDHC_PAD_CTRL),MX6_PAD_SD3_DAT0__USDHC3_DAT0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),MX6_PAD_SD3_DAT1__USDHC3_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),MX6_PAD_SD3_DAT2__USDHC3_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),MX6_PAD_SD3_DAT3__USDHC3_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),MX6_PAD_SD3_DAT4__USDHC3_DAT4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),MX6_PAD_SD3_DAT5__USDHC3_DAT5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),// MX6_PAD_SD3_DAT6__USDHC3_DAT6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),// MX6_PAD_SD3_DAT7__USDHC3_DAT7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),MX6_PAD_NANDF_D0__GPIO_2_0    | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
};

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

#define USDHC2_CD_GPIO  IMX_GPIO_NR(1, 4)

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

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make mx6q_tqimx6q

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

烧写启动

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

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

启动Log如下:

U-Boot 2013.04-04987-g98fdbdc-dirty (May 01 2015 - 23:15:34)CPU:   Freescale i.MX6Q rev1.2 at 792 MHz
CPU:   Temperature 24 C, calibration data: 0x54e4bb69
Reset cause: POR
Board: MX6Q/SDL-SabreSD
I2C:   ready
DRAM:  1 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
MMC: no card present
MMC init failed
Using default environmentNo panel detected: default to Hannstar-XGA
Display: Hannstar-XGA (1024x768)
In:    serial
Out:   serial
Err:   serial
MMC: no card present
mmc0(part 0) is current device
Net:   Phy not found
PHY reset timed out
FEC [PRIME]
Warning: failed to set MAC addressNormal Boot
Hit any key to stop autoboot:  0
MMC: no card present
mmc0(part 0) is current device
MMC: no card present
Booting from net ...
*** ERROR: `ethaddr' not set
*** ERROR: `ethaddr' not set
Wrong Image Format for bootm command
ERROR: can't get kernel image!
U-Boot > 

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

本文链接:http://blog.csdn.net/girlkoo/article/details/45420977

本文作者:girlkoo

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之u-boot移植相关推荐

  1. I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之声卡驱动移植

    经过前面的移植,tqimx6q已经可以正常驱动触摸屏了,本文我们来移植声卡驱动. DTS编写 由于tqimx6q搭载的声卡是sgtl5000芯片,因此,参考dts目录下其它开发板的相应信息,我们可以在 ...

  2. I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之根文件系统挂载

    经过前面的移植,新版BSP的uboot和kernel已经能够在tqimx6q开发板上运行了,接下来我们来挂载文件系统. DTB整理 前面的文章中提到,新版BSP的DTB管理感觉不是太好,在之前移植的B ...

  3. I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之kernel移植

    前篇文章已经在tqimx6q上成功跑起了新版BSP的uboot,本文来配置下新版BSP的kernel,使kernel能在tqimx6q上正常启动. 准备工作 每次移植kernel的时候都会做的工作就是 ...

  4. I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之LCD移植

    经过前面的移植,eMMC已经可以在tqimx6q上正常运行了,本文将来移植LCD驱动. DTS编写 imx6的LCD控制器与之前的芯片略有不同,详细的信息可以阅读芯片手册.参考sabrelite开发板 ...

  5. I.MX6Q(TQIMX6Q/TQE9)学习笔记——U-Boot移植

    其实Freescale的BSP移植文档已经将u-boot的移植步骤讲述的非常详细了,但为了以后方便查阅,还是按照自己的理解记录在这里. 获取源码 根据前一篇文章搭建好LTIB环境后就可以非常方便的导出 ...

  6. I.MX6Q(TQIMX6Q/TQE9)学习笔记——LTIB安装配置

    Freescale提供了I.MX6的BSP开发包,可以在Freescale的官网下载到.为了与天嵌提供的版本一致,本文使用的BSP版本是:L3.0.35_4.1.0_130816_source,这版本 ...

  7. Spring学习笔记:第一个Spring Boot程序HelloWorld

    Spring学习笔记:第一个Spring Boot程序HelloWorld 一.跟着 Spring 了解技术趋势 1.看看 Spring 5.x 的改变暗示了什么 2.Spring Boot 和 Sp ...

  8. 小猫爪:i.MX RT1050学习笔记16-启动流程(Boot Flow)

    小猫爪:i.MX RT1050学习笔记16-启动流程(Boot Flow) 1 前言 2 bootROM的流程 2.1低功耗唤醒启动 2.2 正常启动 2.2.1 Serial Download 2. ...

  9. 【LVGL】学习笔记--(1)Keil中嵌入式系统移植LVGL

    一 LVGL简介 最近emwin用的比较烦躁,同时被LVGL酷炫的界面吸引到了,所以准备换用LVGL试试水. LVGL(轻量级和通用图形库)是一个免费和开源的图形库,它提供了创建嵌入式GUI所需的一切 ...

  10. ZYNQ开发学习笔记(一):BOOT.bin,fsbl文件,将程序固化到板上的QSPI_Flash中

    文章目录 1.环境介绍: 2.正文: vivado工程方面: vitis工程方面: 3.参考文献: 1.环境介绍: ZYNQ-7000 MZ7XA板卡 vivado 2020.1 vitis 2020 ...

最新文章

  1. 报名 | 极简大数据决策,培养数据化思维讲座
  2. 制作模块-制作模块压缩包
  3. jzoj6343-[NOIP2019模拟2019.9.7]Medium Counting【记忆化dfs,dp】
  4. 【RabbitMQ】6、rabbitmq生产者的消息确认
  5. 对中级Linux用户有用的20个命令
  6. 远程mysql用ssh连接_使用SSH密钥连接到远程MySQL服务器
  7. Waymo无人车,每天能绕地球一圈
  8. juniper srx 3400 双机 配置
  9. 成功销售的六个关键步骤
  10. 下载英文电子书网站,推荐
  11. 百度开放平台-快递物流解决方案
  12. 资阳与“华为”携手共建资阳天府云计算中心
  13. mfw 攻防世界web题 (Git泄露)
  14. 1.HTML5文件的基本结构
  15. 01 | Java入门级学习指南
  16. subset selection
  17. 26个为开发项目准备的免费优质矢量素材网站
  18. maven明明本地仓库有依赖包,还会远程下载的问题
  19. 2165: 黄金矿工(有依赖的背包转化为分组背包)
  20. 按键精灵,简单游戏脚本

热门文章

  1. CCS中的linked resource
  2. 中国石油大学《物理化学》第一阶段在线作业
  3. 【小强推歌】---奥斯卡金曲MP3[下载]
  4. SLAM学习 | 世界坐标系转经纬度误差分析
  5. 荣耀magicbook15C语言,荣耀 MagicBook 15评测 聊聊目前性价比最高的大屏轻薄本
  6. 内网渗透篇-信息收集
  7. 白起真的坑杀了四十万赵卒吗?_我是亲民_新浪博客
  8. html 标签置底,学习笔记:让元素永久置底的几种方案(css only)
  9. SD卡容量变小恢复方法
  10. node.js中express框架的使用