u-boot
u-boot源码地址 Version: 2018.1
依照 zynq_zybo
板移植U-boot,依次操作(<ubootdir>
= /home/myhome/Xilinx/u-boot-xlnx/):
-
首次配置u-boot,进入到uboot根目录,做一次
make distclean
-
获取配置文件 zynq_my_new_board_defconfig 和 zynq_my_new_board.h
依照zybo修改,即该将zynq_zybo
改为zynq_my_new_board
cd <ubootdir>/configs/ cp zynq_zybo_defconfig zynq_my_new_board_deconfig cd <ubootdir>/include/configs/ cp zynq_zybo.h zynq_my_new_board.h
-
获取设备树 zynq-my-new-board.dts
cd <ubootdir>/arch/arm/dts/ cp zynq-zybo.dts zynq-my-new-board.dts # 根据需求修改设备树 ... # vim zynq-my-new-board.dts
-
获取设备树编译器:
sudo apt-get install device-tree-compiler
-
导入配置并进入图形配置界面:
cd <ubootdir> make ARCH=arm zynq_my_new_board_deconfig make ARCH=arm menuconfig
-
进入图形界面:
-
修改设备树文件名:
Device Tree Control —> (zynq-my-new-board) Default Device Tree for DT control -
修改板名:
ARM architecture —>(zynq_my_new_board) Board configuration name 该名称在uboot编译时决定包含哪个配置文件,这个配置将引用#/include/configs/zynq_my_new_board.h
-
其他 控制器驱动程序 或 设备驱动程序 配置
-
将新的配置文件保存为默认配置
cp .config configs/zynq_my_new_board_deconfig
-
-
编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
,在<ubootdir>
下生成u-boot
文件。
kernel
Kernel 源码: xlnx_rebase_v4.19_2019.2: kernel version 4.19.0
-
获取内核板级配置文件: my_new_board_defconfig
tar xvf linux-xlnx-xlnx_rebase_v4.19_2019.2.tar.gz cd linux-xlnx-xlnx_rebase_v4.19_2019.2/ cd arch/arm/configs/ # 由于主芯片系列为zynq,因此以 zynq 作为 配置模板 cp xilinx_zynq_defconfig my_new_board_defconfig
-
驱动移植
以移植
Digilent AXI Dynamic Clock
为例:-
获取源文件
cp clk-dglnt-dynclk.c <kernel_root>/drivers/clk
-
添加编译规则
cd <kernel_root>/drivers/clk vim Makefile # Makefile 新增 obj-$(CONFIG_COMMON_CLK_DGLNT_DYNCLK) += clk-dglnt-dynclk.o
-
向menuconfig中增加目录
cd <kernel_root>/drivers/clk vim Kconfig
新增以下信息:
config COMMON_CLK_DGLNT_DYNCLK tristate "Digilent axi_dynclk Driver" depends on ARCH_ZYNQ || MICROBLAZE help ---help--- Support for the Digilent AXI Dynamic Clock core for Xilinx FPGAs.
-
-
内核配置
cd <kernel_root> make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- my_new_board_defconfig make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig # Enable Digilent AXI Dynamic Clock driver Device Drivers ---> Common Clock Framework ---> <*> Digilent axi_dynclk Driver
保存修改后的内核配置
cd <kernel_root> cp .config arch/arm/configs/my_new_board_defconfig
-
为板卡创建设备树
内核目录新增 :
arch/arm/boot/dts/my-new-board-top.dts
在
arch/arm/boot/dts/Makefile
中添加 :# 略.... dtb-$(CONFIG_ARCH_ZYNQ) += \ # 略.... # 添加 my-new-board-top.dtb # 略....
-
编译
- 设备树编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
- 内核编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- UIMAGE_LOADADDR=0x00008000 uImage
- 设备树编译