天嵌E9 u-boot移植

开发板:天嵌 E9_v2

参考文献:http://blog.csdn.net/zxr1521904712/article/details/51379578

1.下载 u-boot

https://github.com/Freescale/u-boot-fslc/tree/v2015.04

2.构建u-boot

   cd  u-boot 代码文件夹内

$ mkdir board/EmbedSky

$cp -R board/freescale/common board/EmbedSky/common

$cp -R board/freescale/mx6sabresd/ board/EmbedSky/mx6q_tqe9/

$cp include/configs/mx6sabresd.h include/configs/mx6q_tqe9.h

$cp configs/mx6qsabresd_defconfig configs/mx6q_tqe9_defconfig

修改mx6q_tqe9_defconfig如下(粗体为修改部分):

CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/EmbedSky/mx6q_tqe9/mx6q_4x_mt41j128.cfg,MX6Q,SYS_USE_SPINOR"

CONFIG_ARM=y

CONFIG_TARGET_MX6Q_TQE9=y

CONFIG_DM=y

CONFIG_DM_THERMAL=y

$mv board/EmbedSky/mx6q_tqe9/mx6sabresd.c board/EmbedSky/mx6q_tqe9/mx6q_tqe9.c

把board/EmbedSky/mx6q_tqe9/Makefile中的下面一行

obj-y  := mx6sabresd.o

改成如下一行

obj-y  := mx6q_tqe9.o

修改board/EmbedSky/mx6q_tqe9/Kconfig 添加

if TARGET_MX6Q_TQE9

config SYS_BOARD

default "mx6q_tqe9"

config SYS_VENDOR

default "EmbedSky"

config SYS_SOC

default "mx6"

config SYS_CONFIG_NAME

default "mx6q_tqe9"

endif

修改arch/arm/Kconfig,在TARGET_MX6SABRESD下面增加TARGET_MX6Q_TQE9的配置(粗体部分):

config TARGET_MX6SABRESD

bool "Support mx6sabresd"

select CPU_V7

select SUPPORT_SPL

config TARGET_MX6Q_TQE9

bool "Support mx6q_tqe9"

select CPU_V7

select SUPPORT_SPL

source "board/EmbedSky/mx6q_tqe9/Kconfig"

3.编写创建镜像脚本build_u-boot.sh:

export ARCH=arm

export CROSS_COMPILE=arm-none-linux-gnueabi-

make distclean

make mx6q_tqe9_defconfig

make

若能正常生成镜像则说明移植代码可用

4.修改我们板子的DCD
         接下来修改我们板子的DCD,天嵌提供的uboot源码是基于1.3.4版本,DCD是在板目录的flash_header.S中配置,我们的uboot版本中DCD是以xxxx.cfg配置文件的形式存在的,而天嵌只给出了一个module,这里当然可以直接反汇编出会汇编源码,然后修改我们的uboot,但这里还是采用飞思卡尔的工具配置DCD,一下步骤在windows上操作。

       首先下载DDR_Stress_Tester_V1.0.3.zip和I.MX6DQSDL DDR3 Script Aid V0.10.xlsx两个工具,

DDR_Stress_Tester_V1.0.3.zip:https://community.nxp.com/docs/DOC-96412

I.MX6DQSDL DDR3 Script Aid V0.10.xlsx:https://community.nxp.com/docs/DOC-94917

解压DDR_Stress_Tester_V1.0.3.zip到window c盘根下,把I.MX6DQSDL DDR3 Script Aid V0.10.xlsx放到C:\DDR_Stress_Tester_V1.0.3\Binary,打I.MX6DQSDL DDR3 Script Aid V0.10.xlsx,根据板子上的DDR3芯片的芯片手册配置Register Configuration标签页,如下图:


此时RealView .inc标签页将生成相应的配置信息。

切换到RealView .inc页,另存为,文件类型选择  文本文件(制表符分隔)(*.txt),文件名V0.10.txt(可为其他),存到C:\DDR_Stress_Tester_V1.0.3\Binary目录。

打开V0.10.txt注掉setmem /160x020bc000 =0x30一行:

//setmem /160x020bc000 =0x30

保存。

把板子拨码开关拨到USB下载模式。

打开cmd依次输入以下指令:

>cd c:\DDR_Stress_Tester_V1.0.3\Binary\

>DDR_Stress_Tester.exe -t mx6x -df V0.10.txt

进入DDR_Stress_Tester.exe软件指令界面。

输入数字1,选择ARM工作核心为800MHz;

输入数字0,选择2GB容量;

输入'y',选择DDR工作频率528MHz;

输入'y',运行write leveling calibration;

输入 V0.10.txt中MR1寄存器值得高四个十六进制位0004;

此时得到write leveling calibration的调校结果:

MMDC_MPWLDECTRL0 ch0 after write level cal: 0x00150009

MMDC_MPWLDECTRL1 ch0 after write level cal: 0x00220015

MMDC_MPWLDECTRL0 ch1 after write level cal: 0x0013002C

MMDC_MPWLDECTRL1 ch1 after write level cal: 0x0009002A

用以上四个值修改V0.10.txt:

// For target board, may need to run write leveling calibration to fine tune these settings.

setmem /320x021b080c  =0x00150009

setmem /320x021b0810 =0x00220015

setmem /320x021b480c  =0x0013002C

setmem /320x021b4810 =0x0009002A

输入'y'继续后三项调校,这个将会等上3分钟左右,然后得到结果如下:

Read DQS Gating calibration

MPDGCTRL0 PHY0 (0x021b083c) = 0x03340348

MPDGCTRL1 PHY0 (0x021b0840) = 0x03340328

MPDGCTRL0 PHY1 (0x021b483c) = 0x034C0358

MPDGCTRL1 PHY1 (0x021b4840) = 0x03480308

Read calibration

MPRDDLCTL PHY0 (0x021b0848) = 0x48383C38

MPRDDLCTL PHY1 (0x021b4848) = 0x423E3844

Write calibration

MPWRDLCTL PHY0 (0x021b0850) = 0x3A38423E

MPWRDLCTL PHY1 (0x021b4850) = 0x4A304840

用以上结果修改V0.10.txt,

////Read DQS Gating calibration

setmem /320x021b083c =0x03340348// MPDGCTRL0 PHY0

setmem /320x021b0840 =0x03340328// MPDGCTRL1 PHY0

setmem /320x021b483c =0x034C0358// MPDGCTRL0 PHY1

setmem /320x021b4840 =0x03480308// MPDGCTRL1 PHY1

//Read calibration

setmem /320x021b0848 =0x48383C38// MPRDDLCTL PHY0

setmem /320x021b4848 =0x423E3844// MPRDDLCTL PHY1

//Write calibration

setmem /320x021b0850 =0x3A38423E// MPWRDLCTL PHY0

setmem /320x021b4850 =0x4A304840// MPWRDLCTL PHY1

回到linux系统,把官方sabresd中的cfg文件操被一份作为我们的cfg基础

$cp board/EmbedSky/mx6q_tqe9/mx6q_4x_mt41j128.cfg board/EmbedSky/mx6q_tqe9/mx6q_tqe9_ddr3.cfg

根据V0.10.txt修改我们的mx6q_tqe9_ddr3.cfg。

修改configs/mx6q_tqe9_defconfig文件:

CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/EmbedSky/mx6q_tqe9/mx6q_tqe9_ddr3.cfg,MX6Q,SYS_USE_SPINOR"

CONFIG_ARM=y

CONFIG_TARGET_MX6Q_TQE9=y

CONFIG_DM=y

CONFIG_DM_THERMAL=y

回到linux系统,把官方sabresd中的cfg文件操被一份作为我们的cfg基础

$cp board/EmbedSky/mx6q_tqe9/mx6q_4x_mt41j128.cfg board/EmbedSky/mx6q_tqe9/mx6q_tqe9_ddr3.cfg

根据V0.10.txt修改我们的mx6q_tqe9_ddr3.cfg。

修改configs/mx6q_tqe9_defconfig文件:

CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/EmbedSky/mx6q_tqe9/mx6q_tqe9_ddr3.cfg,MX6Q,SYS_USE_SPINOR"

CONFIG_ARM=y

CONFIG_TARGET_MX6Q_TQE9=y

CONFIG_DM=y

CONFIG_DM_THERMAL=y

E9的串口终端IO跟sabresd不太一样,使用了SD3_DAT7、SD3_DAT分别作UART1_TXD、UART1_RXD,所以这里需要做相应的改变。

修改board/EmbedSky/mx6q_tqe9/mx6q_tqe9.c  :

static iomux_v3_cfg_t const uart1_pads[] = {

MX6_PAD_SD3_DAT7__UART1_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),

MX6_PAD_SD3_DAT6__UART1_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),

};

由于MX6_PAD_SD3_DAT7、MX6_PAD_SD3_DAT6已经被USDHC3占用,继续修改board/EmbedSky/mx6q_tqe9/mx6q_tqe9.c  :

static iomux_v3_cfg_t const usdhc3_pads[] = {

MX6_PAD_SD3_CLK__SD3_CLK   | MUX_PAD_CTRL(USDHC_PAD_CTRL),

MX6_PAD_SD3_CMD__SD3_CMD   | MUX_PAD_CTRL(USDHC_PAD_CTRL),

MX6_PAD_SD3_DAT0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

MX6_PAD_SD3_DAT1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

MX6_PAD_SD3_DAT2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

MX6_PAD_SD3_DAT3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

MX6_PAD_SD3_DAT4__SD3_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

MX6_PAD_SD3_DAT5__SD3_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

//MX6_PAD_SD3_DAT6__SD3_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

//MX6_PAD_SD3_DAT7__SD3_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

//MX6_PAD_NANDF_D0__GPIO2_IO00    | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD      */

};

E9的sd卡槽使用的是USDHC2控制器,并且与sabresd不同的是该SD CARD电路的CD引脚使用的是GPIO_4,继续修改board/EmbedSky/mx6q_tqe9/mx6q_tqe9.c  :

引脚配置:

//MX6_PAD_NANDF_D2__GPIO2_IO02    | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */

MX6_PAD_GPIO_4__GPIO1_IO04    | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */

sd卡槽cd引脚宏定义:

#define USDHC2_CD_GPIO  IMX_GPIO_NR(1, 4)

5.编译uboot,烧写sd卡

$./build_u-boot.sh

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

运行开发板报错:

Can't find PMIC:PFUZE100

天嵌这块板子没有使用sabresd官方使用的PFUZE100,故要关掉相应驱动。

include/configs/mx6q_tqe9.h +:

/* PMIC */

/*************************************

#define CONFIG_POWER

#define CONFIG_POWER_I2C

#define CONFIG_POWER_PFUZE100

#define CONFIG_POWER_PFUZE100_I2C_ADDR  0x08

**************************************/

board/EmbedSky/mx6q_tqe9/mx6q_tqe9.c +973:

使用#if 0/#endif 注掉static struct pmic *pfuze;和int power_init_board(void)

./include/configs/mx6_common.h +48:

/*#define CONFIG_LDO_BYPASS_CHECK*/

重新编译烧写u-boot

$./build_u-boot.sh

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

6.烧写EMMC

打开文件夹Mfgtools-Rel-1.1.0_121218_MX6Q_UPDATER

修改cfg.ini

[profiles]

chip = MX6Q Linux Update

[platform]

board = SabreSD

[LIST]

name =Linux-SabreSD-eMMC

修改:Mfgtools-Rel-1.1.0_121218_MX6Q_UPDATER\Profiles\MX6Q Linux Update\OS Firmware\files  ucl2.xml文件内容 找到Linux-SabreSD-eMMC

替换:

修改内容为:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容