[uboot]E9-i.MX6Q-uboot移植

参照:http://blog.csdn.net/girlkoo/article/details/45420977

文档参照:

  • 《i.MX BSP Porting Guide-2015/12, Rev.0》---------uboot porting steps
  • 《E9_TQIMX6Q_V1_20131031.pdf》------------------E9 schematics
  • 《E9_User_Manual-V3.1.0》---------------------------Burned methods

BSP版本:L3.14.52.1.1.0

Step1:创建单板board目录,这里选择mx6sabresd作为参考

1 $cp -R board/freescale/mx6sabresd/ board/freescale/mx6q_tqE9/

Step2:创建board配置config文件,这里面设定了dtb文件名称,Stack/Heap大小,DDR大小,zImage装载地址

1 $cp include/configs/mx6sabresd.h include/configs/mx6q_tqE9.h

Step3:<UBOOT_DIR>/configs/目录,创建config选项配置文件, 复制mx6qsabresd_defconfig --> mx6q_tqE9_defconfig, 然后修改为:

1 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6q_tqE9.cfg,MX6Q"
2 CONFIG_ARM=y
3 CONFIG_TARGET_MX6Q<customer_board>=y
4 CONFIG_SYS_MALLOC_F=y
5 CONFIG_SYS_MALLOC_F_LEN=0x400
6 CONFIG_DM=y
7 CONFIG_DM_THERMAL=y

Step4:文件重命名

1 board/freescale/mx6q_tqE9/mx6sabresd.c --> board/freescale/mx6q_tqE9/mx6q_tqE9.c
2 board/freescale/mx6q_tqE9/mx6qp.cfg --> board/freescale/mx6q_tqE9/mx6q_tqE9.cfg

Step5: 修改board/freescale/mx6q_tqE9目录的Makefile

1 obj-y:= mx6sabresd.o --> obj-y  := mx6q_tqE9.o

Step6: 修改Kconfig

  • arch/arm/Kconfig

添加:

1 config TARGET_MX6Q_TQE9
2   bool "Support mx6q_tqE9"
3   select CPU_V7
4 source "board/freescale/mx6q_tqE9/Kconfig"
  • board/freescale/mx6q_tqE9/Kconfig

修改为:

 1 if TARGET_MX6Q_TQE9
 2
 3 config SYS_BOARD
 4     default "mx6q_tqE9"
 5
 6 config SYS_VENDOR
 7     default "freescale"
 8
 9 config SYS_SOC
10     default "mx6"
11
12 config SYS_CONFIG_NAME
13     default "mx6q_tqE9"
14
15 endif

 Step7:创建编译脚本

1 #!/bin/bash
2 export ARCH=arm
3 export CROSS_COMPILE=/opt/Embedsky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/bin/arm-fsl-linux-gnueabi-
4 make distclean;
5 make mx6q_tqE9_defconfig
6 make

Step8:参照@girlkoo:

1. 定制DDR,目录为board/freescale/mx6q_tqE9/mx6q_tqE9.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  

2. 定制board端子,board/freescale/mx6q_tqE9/mx6q_tqE9.c

<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_CSI0_DAT11__UART1_RXD | MUX_PAD_CTRL(UART_PAD_CTRL),
4         MX6_PAD_SD3_DAT7__UART1_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
5         MX6_PAD_SD3_DAT6__UART1_RX_DATA | 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 };  

<3>.定制Card Detect端子,否则SD卡插入会检测不到

1 #define USDHC2_CD_GPIO  IMX_GPIO_NR(1, 4)  

Step9: 编译

1 ./build_uboot.sh 

Step10: 烧写,下载:

烧写SD卡:

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

更改E9为SD卡启动:

Jumper为1~7: 1 0 0 0 0 0 1.

输出log:

 1 U-Boot 2015.04-imx_v2015.04_3.14.52_1.1.0_ga+g6cf684a (Oct 05 2016 - 23:57:59)
 2
 3 CPU: Freescale i.MX6Q rev1.2 at 792 MHz
 4 CPU: Temperature -140462619 C
 5 Reset cause: POR
 6 Board: MX6-TQE9
 7 I2C: ready
 8 DRAM: 2 GiB
 9 Can‘t find PMIC:PFUZE100
10 initcall sequence 8ff93570 failed at call 178036e8 (err=-19)
11 ### ERROR ### Please RESET the board ###

Issue: 这里遇到一个问题就是串口管脚的修改,E9的管脚UART1_TXD(SD3_DAT7)和UART1_RXD(SD3_DAT6),所以需要修改,而原有在sabresd板子中配置为MX6_PAD_CSI0_DAT10__UART1_TX_DATA和MX6_PAD_CSI0_DAT11__UART1_RX_DATA,使用grep并找不到定义,所以也就找不到此版本下SD3_DAT7和SD3_DAT6应该怎么表示,刚开始修改不对,uboot打印一直不出现。

后来通过mx6q_tqE9.c包含头文件找到arch/arm/include/asm/arch-mx6/mx6q_pins.h:851:

1 MX6_PAD_DECL(SD3_DAT7__UART1_TX_DATA, 0x0690, 0x02A8, 1, 0x0000, 0, 0)

而在arch/arm/include/asm/arch-mx6/mx6-pins.h中有这样定义:

1 #elif defined(CONFIG_MX6Q)
2 enum {
3 #define MX6_PAD_DECL(name, pco, mc, mm, sio, si, pc) 4 MX6_PAD_DECLARE(MX6_PAD_,name, pco, mc, mm, sio, si, pc),
5 #include "mx6q_pins.h"
6 };

进而有同样在arch/arm/include/asm/arch-mx6/mx6-pins.h:

1 #define MX6_PAD_DECLARE(prefix, name, pco, mc, mm, sio, si, pc) 2     prefix##name = IOMUX_PAD(pco, mc, mm, sio, si, pc) 

这样也就有了串口MX6_PAD_SD3_DAT7__UART1_TX_DATA的定义。

问题:

1. SD卡格式化

mkfs.ext4 /dev/sdc

2. 格式化完后分区

3. 以上的编译使用的工具链还是较老的工具链,E9光盘安装,并没有更新

时间: 2024-10-08 03:34:14

[uboot]E9-i.MX6Q-uboot移植的相关文章

uboot在s3c2440上的移植(4)

一.移植环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二.移植步骤 在这一篇中,我们首先让开发板对CS8900或者DM9000X网卡的支持,然后再分析实现u-boot怎样来引导Linux内核启动.因为测试u-boot引导内核我们要用到网络下载功能. 7)u-boot对CS8900或者DM9000X网

uboot在s3c2440上的移植(6)

一.移植环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二.移植步骤 10)u-boot利用tftp服务下载内核和利用nfs服务挂载nfs文件系统. 知识点: tftp服务的安装与配置及测试: nfs服务的安装与配置及测试: u-boot到kernel的参数传递(重点). 我们知道使用tftp下载内核

基于335X平台的UBOOT中交换芯片驱动移植

基于335X平台的UBOOT中交换芯片驱动移植 一.软硬件平台资料 1.开发板:创龙AM3359核心板,网口采用RMII形式. 2.UBOOT版本:U-Boot-2016.05,采用FDT和DM. 3.交换芯片MARVELL的88E6321. 4.参考文章:本博客基于335X的UBOOT网口驱动分析. 二.移植主要步骤 1.准备工作: (1).必须熟悉U-Boot-2016.05中的网口驱动构架,熟悉其中各个网口设备结构体的意义,网口初始化流程.重点详细分析常规基于phydev的驱动初始化的过程

u-boot学习(两):u-boot简要分析

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 看到不错的文章.不要加入收藏夹,想着以后有时间再看.由于非常有可能你以后再也不会看它们了. 想写总结的文章.不要想着等到以后有时间了再总结,由于非常有可能你以后更没有时间总结它们了. --送给自己 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

u-boot学习(二):u-boot简要分析

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 看到不错的文章,不要添加收藏夹,想着以后有时间再看,因为很有可能你以后再也不会看它们了. 想写总结的文章,不要想着等到以后有时间了再总结,因为很有可能你以后更没有时间总结它们了. --送给自己 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

u-boot学习(一):u-boot概述

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 看到不错的文章,不要添加收藏夹,想着以后有时间再看,因为很有可能你以后再也不会看它们了. 想写总结的文章,不要想着等到以后有时间了再总结,因为很有可能你以后更没有时间总结它们了. --送给自己 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

u-boot学习(三):u-boot源码分析

建立域模型和关系数据模型有着不同的出发点: 域模型: 由程序代码组成, 通过细化持久化类的的粒度可提高代码的可重用性, 简化编程 在没有数据冗余的情况下, 应该尽可能减少表的数目, 简化表之间的参照关系, 以便提高数据的访问速度 Hibernate 把持久化类的属性分为两种: 值(value)类型: 没有 OID, 不能被单独持久化, 生命周期依赖于所属的持久化类的对象的生命周期 实体(entity)类型: 有 OID, 可以被单独持久化, 有独立的生命周期(如果实体类型包含值类型,这个值类型就

tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——移植u-boot.bin(打印串口控制台)

在之前我们移植的代码中,都没看到明显的效果,这节我们实现控制台的信息打印. 在上节.我们看到调用 relocate_code 重定位.在 u-boot 的帮助文档 doc/README.arm-relocation 中对重定位有说明. u-boot 为了生成位置无关码,在链接时指定了-pie 选项,这个选项在 u-boot-2014.04/arch/arm/config.mk 中指定: 当使用-pie 选项后.链接器会生成一个修正表(fixup  tables).在终于的二进制文件 u-boot

uboot在s3c2440上的移植(5)

一.移植环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二.移植步骤 9)实现u-boot对yaffs/yaffs2文件系统下载的支持. 注意:此篇对Nand的操作是基于MTD架构方式,在“u-boot-2009.08在2440上的移植详解(三)”中讲到过. 通常一个Nnad Flash存储设备由若干

uboot在s3c2440上的移植(2)

一.移植环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二.移植步骤 4)准备进入u-boot的第二阶段(在u-boot中添加对我们开发板上Nor Flash的支持).通常,在嵌入式bootloader中,有两种方式来引导启动内核:从Nor Flash启动和从Nand Flash启动.u-boot中默