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,然后开始移植.
- PMIC 没有,放心全部删除.
- QSPI 没有,放心全部删除.
- LCD 复位,实际不存在,可以删除.
- mem_ddr 内存容量需要修正.
- 添加GPIO遍历代码以便初始化所有IO.
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
这里配置文件模仿现有或者自己创建都可以,移植完成.