基于IMX6Q的u-boot-2017.11的移植(1)->初步移植
2018-01-04 21:14
369 查看
1.下载u-boot 2.tar -xjvf u-boot-2017.11.tar.bz2 3.cd cd u-boot-2017.11/ 4.进入到配置文件夹cd configs/ 5.ls mx6q* mx6qarm2_defconfig mx6qarm2_lpddr2_defconfig mx6qsabrelite_defconfig 经过对这几个配置文件的查看,我最终选择的mx6qarm2_defconfig进行移植修改 6.回到uboot的根目录cd .. 7.vim Makefile VERSION = 2017 PATCHLEVEL = 11 SUBLEVEL = EXTRAVERSION = NAME = #add by xcl ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 8.make mx6qarm2_defconfig 9.make 10.将编译生成的镜像u-boot.imx烧写到sd卡,插入sd卡到电脑执行:sudo dd if=u-boot.imx of=/dev/sdb bs=512 seek=2 注意:这儿的/dev/sdb可能在你的电脑不同,请通过插拔sd卡进行确认 11.修改DCD对内存进行配置:vim ./board/freescale/mx6qarm2/imximage.cfg /* * Copyright (C) 2011-2014 Freescale Semiconductor, Inc. * Jason Liu <r64343@freescale.com> * * SPDX-License-Identifier: GPL-2.0+ * * Refer doc/README.imximage for more details about how-to configure * and create imximage boot image * * The syntax is taken as close as possible with the kwbimage */ /* image version */ IMAGE_VERSION 2 /* * Boot Device : one of * spi, sd (the board has no nand neither onenand) */ BOOT_FROM sd /* * Device Configuration Data (DCD) * * Each entry must have the format: * Addr-type Address Value * * where: * Addr-type register length (1,2 or 4 bytes) * Address absolute address of the register * value value to be stored in the register */ /* DCD */ 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, 0x43180330 DATA 4, 0x021b0840, 0x03180310 DATA 4, 0x021b483c, 0x43200330 DATA 4, 0x021b4840, 0x0320025C DATA 4, 0x021b0848, 0x40363838 DATA 4, 0x021b4848, 0x38362E3C DATA 4, 0x021b0850, 0x3E3C4840 DATA 4, 0x021b4850, 0x44364640 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 0x0F0000C3 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 进行编译下载启动,但是没有输出,继续查找修改...... 12.追踪到./board/freescale/mx6qarm2/mx6qarm2.c static void setup_iomux_uart(void) { imx_iomux_v3_setup_multiple_pads(uart4_pads, ARRAY_SIZE(uart4_pads)); } iomux_v3_cfg_t const uart4_pads[] = { MX6_PAD_KEY_COL0__UART4_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), MX6_PAD_KEY_ROW0__UART4_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), };这儿配置的是串口4,我们需要串口1 修改为: static void setup_iomux_uart(void) { imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads)); } iomux_v3_cfg_t const uart1_pads[] = { MX6_PAD_SD3_DAT6__UART1_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), MX6_PAD_SD3_DAT7__UART1_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), }; 13.vim include/configs/mx6qarm2.h 将#define CONFIG_MXC_UART_BASE UART4_BASE 修改为:#define CONFIG_MXC_UART_BASE UART1_BASE 14.下载到sd卡:sudo dd if=u-boot.imx of=/dev/sdb bs=512 seek=2 插入开发部从sd卡启动串口输出为: U-Boot 2017.11 (Jan 04 2018 - 20:45:47 +0800) CPU: Freescale i.MX6Q rev1.5 at 792 MHz Reset cause: POR Board: MX6Q-Armadillo2 DRAM: 2 GiB MMC: 15.调试发现: ./board/freescale/mx6qarm2/mx6qarm2.c 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_CS0__GPIO6_IO11 | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */ };在这儿我们使用的串口1引脚被重新配置了,所以不能输出。 修改为: 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_CTR 4000 L(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),*//*modefied by xcl*/ MX6_PAD_NANDF_CS0__GPIO6_IO11 | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */ }; 16.下载到开发板:sudo dd if=u-boot.imx of=/dev/sdb bs=512 seek=2 串口输出为: U-Boot 2017.11 (Jan 04 2018 - 20:58:38 +0800) CPU: Freescale i.MX6Q rev1.5 at 792 MHz Reset cause: POR Board: MX6Q-Armadillo2 DRAM: 2 GiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 MMC Device -1 not found *** Warning - No MMC card found, using default environment In: serial Out: serial Err: serial Net: FEC Error: FEC address not set. Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc1(part 0) is current device switch to partitions #0, OK mmc1(part 0) is current device ** Unable to read file boot.scr ** reading zImage 8472784 bytes read in 405 ms (20 MiB/s) Booting from mmc ... ** Unable to read file imx6q-arm2.dtb ** Kernel image @ 0x12000000 [ 0x000000 - 0x8148d0 ] Starting kernel ... 说明:以前我用三星soc的时候的启动的大概流程是,固化rom的代码只拷贝启动设备的前一段代码,然后我们需要在这段代码中进行内存初始化和剩余uboot代码的拷贝,但是由于imx6的启动方式所以代码拷贝的全部工作都被固化的程序做了,这个主要得益于ivt和dcd。
相关文章推荐
- 基于IMX6Q的u-boot-2017.11的移植(1)->初步移植
- 基于IMX6Q的u-boot-2017.11的移植(3)->Ethernet MAC (ENET)移植
- 基于IMX6Q的u-boot-2017.11的移植(2)->MMC移植
- 基于IMX6Q的u-boot-2017.11的移植(3)->Ethernet MAC (ENET)移植
- 基于IMX6Q的u-boot-2017.11的移植(2)->MMC移植
- 基于s3c2410的uboot1.2.0的分析以及移植
- <2012 12 05> FL2440开发板的U-boot-2010.09版本移植(八)LCD的支持
- 0K6410学习之初步Uboot移植
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——配置过程(一)
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——配置过程(二)
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot-spl.bin(时钟初始化)
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植网卡
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——NAND 8位硬件ECC
- u-boot-2011.06在基于s3c2440开发板的移植之DM9000
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot.bin(修改显示信息)
- 基于S3C44B0的UBOOT移植
- U-BOOT-2016.07移植 (第一篇) 初步分析
- 基于OMAP-L138电路板的U-boot移植
- U-BOOT-2016.07移植 (第一篇) 初步分析
- <2012 12 06> FL2440开发板的U-boot-2010.09版本移植(九)NAND Flash启动支持的一种新型方法,利用U-Boot自带nand_spl/nand_boot.c