1.首先拿到一个原厂uboot,先编译一下;查找根目录下config目录里自己需要的配置文件,通过在根目录新建如下脚本imx_emmc.sh后,执行 ./imx_emmc.sh后完成编译工作
1 2 3 4 |
|
2.把编译得到的uboot.bin烧进板子就可以看到那些部分是支持,那些是不支持的,不支持的就需要我们的移植工作了;既然如此,那就新建一套自己板子的uboot,感受一下一整套流程
2.1:添加配置文件
cd configs
cp mx6ull_14x14_evk_emmc_defconfig mx6ull_alientek_emmc_defconfig
1 2 3 4 5 |
|
2.2:添加头文件
cd include/configs
cp mx6ullevk.h mx6ull_alientek_emmc.h
记得修改预处理,这个头文件的主要内容就是配置或者裁剪 uboot
2.3:添加板级文件夹
cd board/freescale/
cp mx6ullevk/ -r mx6ull_alientek_emmc
cd mx6ull_alientek_emmc
mv mx6ullevk.c mx6ull_alientek_emmc.c
2.3.1:修改Makefile
1 2 3 4 5 6 7 8 9 10 |
|
2.3.2:修改imximage.cfg
1 |
|
2.3.3:修改Kconfig
1 2 3 4 5 6 7 8 9 10 11 12 |
|
2.3.4:修改 MAINTAINERS
1 2 3 4 5 |
|
2.4:修改uboot图形界面配置文件:arch/arm/cpu/armv7/mx6/Kconfig
1 2 3 4 5 6 7 8 9 |
|
2.5:新建脚本编译新建的uboot
1 2 3 4 |
|
2.6:修改lcd驱动,(1)检查gpio引脚;(2)检查lcd信息结构体参数(lcd控制器需要设置的参数)
2.6.1:一般驱动的配置都在xxx.h与.c文件中,在mx6ull_alientek_emmc.c中修改如下(board_init_r > init_sequence_r > stdio_add_devices > drv_video_init > board_video_skip > displays[])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
2.6.2:在mx6ull_alientek_emmc.h文件中修改如下:
1 |
|
2.7:网络驱动修改,看原理图可知,网络信号通过以太网接口,传给phy芯片处理后,再交给ENET1/2控制器处理;imx的ENET_MDIO通过不同的器件地址来访问某个phy芯片;开发板 ENET1 上连接的LAN8720A器件地址为 0X0,所示我们要修改 ENET1 网络驱动;(1)ENET1 复位引脚初始化。(2)LAN8720A 的器件 ID。(3)LAN8720 驱动。 ENET2同理
2.7.1:在mx6ull_alientek_emmc.c中修改地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
2.7.2:在mx6ull_alientek_emmc.c中删除掉74LV595 的驱动代码;复位引脚修增加如下
1 2 |
|
2.7.3:在mx6ull_alientek_emmc.c中添加复位引脚驱动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
2.7.4:修改 drivers/net/phy/phy.c 文件中的函数 genphy_update_link,添加如下代码段
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
作者:lzd626
出处:lzd626 - 博客园