U-Boot 新平台移植 [迅为IMX6UL]

/ 0评 / 1

U-Boot是移植的第一道门槛,所以内容也相对多一些,按照规范移植虽然步骤比较多,但是日后维护也相对简单很多.

先复制一份官方板的配置:

 cp arch/arm/dts/imx6ul-14x14-evk-gpmi-weim.dts arch/arm/dts/imx6ul-14x14-topeet.dts

展开这一份配置,内存我们只有256M,所以修改.

	memory@80000000 {
		device_type = "memory";
		reg = <0x80000000 0x10000000>;
	};

74HC595的驱动,Q7输出LCD电源,我们也需要,所以修改,另外驱动使用oe-gpios,所以这里也修改一下关键字.

	spi4 {
		compatible = "spi-gpio";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_spi4>;
		status = "okay";
		gpio-sck = <&gpio5 11 0>;
		gpio-mosi = <&gpio5 10 0>;
		cs-gpios = <&gpio5 7 0>;
		num-chipselects = <1>;
		#address-cells = <1>;
		#size-cells = <0>;

		gpio_spi: gpio@0 {
			compatible = "fairchild,74hc595";
			gpio-controller;
			#gpio-cells = <2>;
			reg = <0>;
			registers-number = <1>;
			registers-default = /bits/ 8 <0xD7>;
			oe-gpios = <&gpio5 8 GPIO_ACTIVE_LOW>;
			spi-max-frequency = <100000>;
		};
	};

I2C1,QSPI,TSC,USDHC2和没有用到的引脚可以删除,然后添加编译开关到arch/arm/dts/Makefile,移植dts完成.

复制一份板级初始化.

 cp board/freescale/mx6ul_14x14_evk board/freescale/mx6ul_14x14_topeet -r

先计算出内存参数.

计算结果填写到imximage.cfg内.

不过现在内存参数未必OK,等下还要老化.

设置Kconfig

if TARGET_MX6UL_14X14_TOPEET

config SYS_BOARD
	default "mx6ul_14x14_topeet"

config SYS_VENDOR
	default "freescale"

config SYS_CONFIG_NAME
	default "mx6ul_14x14_topeet"

config SYS_TEXT_BASE
	default 0x87800000
endif

修改MAINTAINERS说明是你干的.

MX6UL TOPEET BOARD
M:	Peng Fan <admin@taterli.com>
S:	Maintained

最后大工程的修改mx6ul_14x14_evk.c到mx6ul_14x14_topeet.c,然后开始移植.

IO遍历代码,做了一些处理,防止他优化:

int setup_io_init(void){
	int ret;
	struct udevice *dev;

	for (ret = uclass_first_device_check(UCLASS_GPIO, &dev);
			dev;
			ret += uclass_next_device_check(&dev)) {
	}
	return ret;
}

int board_early_init_f(void)
{
	setup_io_init();
	
	setup_iomux_uart();

	return 0;
}

接着复制配置文件:

cp include/configs/mx6ul_14x14_evk.h include/configs/mx6ul_14x14_topeet.h

这里是修改分区和一些配置,没什么难度,就不详细说了.

最后创建自己的配置文件.

vim configs/mx6ul_14x14_topeet_defconfig

这里配置文件模仿现有或者自己创建都可以,移植完成.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注