1 uboot移植
l 移植linux之前需要先移植一个bootlader代码,主要用于启动linux内核,
l Linux系统包括u-boot、内核、根文件系统(rootfs)
l 引导程序的主要作用将内核映像从硬盘读到RAM中,然后跳转到内核的入口点去运行,启动加载程序。
l Bootloader是操作系统运行前的执行的一段小程序,主要用于初始化硬件设备、建立内存空间的映射表,建立系统软硬件环境。
l U-boot编译,编译后在/images/linux/目录下生成u-boot.elf文件。
l 查看板子的信息,使用“bdinfo”
l Setenv bootdelay 5
Saveenv
l 启动linux,需要先将linux镜像文件拷贝到DRAM中,如果使用设备树,需要将设备树拷贝到DRAM中,然后使用bootm命令启动。
l 将image.ub下载到0x1000000地址处,然后使用命令bootm启动
Tftpboot 10000000 image.ub
Bootm 1000000
l Setenv bootcmd ‘tftpboot 1000000 image.ub;bootm’
Boot
2.内核移植
修改设备树文件 将文件中的串口换成uart0
l 修改
arch/arm/boot/dts/Makefile,文件,找到dtb-$(CONFIG_ARCH_ZYNQ) 配置项,在此配置项中加入设备树文件。
l 内核启动后需要根文件系统,根文件系统的存放位置由bootargs环境变量指定。
l 在linux内核中查找可以参考的板子,一般都是半导体厂商自己做的开发板
l 编译出参考板子对应的zImage和.dtb文件
l 使用参考板子的zImage文件和.dtb文件在我们使用的板子上启动linux内核,看能否启动
l 如果不能启动,需要修改内核和设备树,启动内核一般需要使用DRAM和串口