uboot和linux内核移植流程简述

  • Post author:
  • Post category:linux




一、移植uboot流程



1、从半导体芯片厂下载对应的demo,然后编译测试demo版的uboot

  • 开发板基本都是参考半导体厂商的 dmeo 板,而半导体厂商会在他们自己的开发板上移植好 uboot、linux kernel 和 rootfs 等,最终制作好 BSP包提供给用户。我们可以在官方提供的 BSP 包的基础上添加我们的板子,也就是俗称的移植。

  • 一般 uboot 中需要解决串口、NAND、EMMC 或 SD 卡、网络和 LCD 驱动,因为 uboot

    的主要目的就是启动 Linux 内核,所以不需要考虑太多的外设驱动。



2、在uboot中添加自己的硬件



(1)添加默认配置文件

  • 在include/configs/ 目录下创建配置文件 (复制mx6ull_14x14_evk_emmc_defconfig,然后重命名) 。



(2)添加开发板对应的头文件

  • 目 录 include/configs 下 添 加开发板对应的头文件( 复 制include/configs/mx6ullevk.h,并重命名)
  • mx6ull_alientek_emmc.h 文件中基本都是“CONFIG_”开头的宏定义,这也说明 mx6ull_alientek_emmc.h 文件的主要功能就是配置或者裁剪 uboot。如果需要某个功能的话就在里面添加这个功能对应的 CONFIG_XXX 宏即可,如果不需要某个功能的话就删除掉对应的宏即可



(3)添加开发板对应的板级文件夹

  • 复制 board/freescale / mx6ullevk,将其重命名 mx6ull_alientek_emmc,
  • 将 其 中 的 mx6ullevk.c 文 件 重 命 名 为mx6ull_alientek_emmc.c
  • uboot 中每个板子都有一个对应的文件夹来存放板级文件,比如开发板上外设驱动文件等



(4)修改开发板对应的板级文件夹内容

  • 修改 mx6ull_alientek_emmc 目录下的 Makefile
  • 修改 镜像配置文件 mx6ull_alientek_emmc 目录下的 imximage.cfg
  • 修改 mx6ull_alientek_emmc 目录下的 Kconfig



(5)修改U-Boot 图形配置文件



(6)修改相关驱动(LCD 网口)



(7)编译验证



(8)设置bootcmd 和 和 bootargs 环境变量



二、linux内核kernel移植流程



1. 在 Linux 内核中查找可以参考的板子,编译出参考板子对应的 zImage 和.dtb 文件



2. 使用参考板子的 zImage 文件和.dtb 文件在我们所使用的板子上启动 Linux 内核

  • 能启动的话就万事大吉
  • 不能启动需要调试 Linux 内核,Linux 内核启动用到的外设为,DRAM(Uboot 都初始化好的)和串口



3.添加开发板信息



(1)添加开发板默认配置文件

  • arch/arm/configs 目录下的 imx_v7_mfg_defconfig重新复制一份 ,命名为 imx_alientek_emmc_defconfig



(2)添加开发板对应的设备树文件

  • 入目录 arch/arm/boot/dts 中,复制一份 imx6ull-14×14-evk.dts,然后将其重命名为 imx6ull-alientek-emmc.dts



(3)修改相应的驱动

  • NAND Flash、EMMC、SD 卡等驱动官方的 Linux 内核都是已经提供好了,基本不会出问题。重点是网络驱动



(4)内核启动后构建根文件系统



版权声明:本文为qq_44814825原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。