使用SylixOS进行驱动开发, 需要快速验证板上的外设是否完好. 嫌弃官方的SDK占用磁盘空间巨大, 本教程直接使用 github 上的源码进行快速编译运行.
交叉编译此 ARM 源代码,请导出环境变量
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
make distclean
make xilinx_zynq_defconfig
make menuconfig
make -j4 ARCH=arm UIMAGE_LOADADDR=0x8000 uImage CROSS_COMPILE=~/Downloads/zynq/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf- dtbs
如果构建过程成功,则 Linux 内核映像zImage和uImage将在 /
根文件系统映像
单独的Linux内核实际上没有用,因为它甚至没有用户界面。Shell,或使Linux内核有用的所有必要工具称为“发行版”。Shell 位于根文件系统中,并在挂载根文件系统时执行。
为了简单起见,我们将使用虚拟硬盘(initrd)作为根文件系统。initrd 被加载到
DRAM 中,然后作为根文件系统挂载。因此,重新启动设备时它将丢失。从 Xilinx wiki 下载.
这必须转换为 U-Boot 映像文件(添加包装器以使其可被 U-Boot 识别)。为此,请使用 U-Boot 源代码树中的“mkimage”实用程序。
export PATH=${PATH}://tools
mkimage -A arm -T ramdisk -C gzip -d arm_ramdisk.image.gz uramdisk.image.gz
然后,将生成U-Boot“uramdisk.image.gz”的虚拟硬盘映像。
所以现在,所有必要的文件都准备好了,可以启动 Linux。将所有这些文件(BOOT.bin,uImage,zynq_zc706.dtb和uramdisk.image.gz)复制到SD卡的启动分区中。插入SD卡并打开电源,将串行控制台连接到USB-UART。
当U-Boot启动时,我们要做的是;
fatload mmc 0:1 0x8000 uImagefatload mmc 0:1 0x500000 zynq-zc706.dtbfatload mmc 0:1 0x600000 uramdisk.image.gz
从内存启动 Linux
要加载这些文件,请在 U-Boot 提示符下键入命令
bootm
所以现在,通过键入以下内容来启动 Linux。
bootm 0x8000 0x600000 0x500000
如果 Linux 内核被引导,它将显示 Linux shell。如果有一些错误,那么U-Boot或Linux内核会告诉你出了什么问题。
上一篇:TypeScrip Class类
下一篇:react 跨级举荐通信