一、概述
在这一篇文章,我们使用PetaLinux生成BOOT.bin、image.ub内核文件,用于下一步播放音乐调试。我们使用的Linux环境是Ubuntu14.04.4,软件为petalinux 2015.4; vivado 2015.4.
二、准备工作
1、建立工程文件夹。
~$ mkdir zed_sound_csdn
2、拷贝硬件
将 “\Test01_adau1761.sdk\system_wrapper.hdf” 拷贝至当前Linux目录。
3、下载ADI Linux Kernel:
https://github.com/analogdevicesinc/linux
点击 “ Branch: master ” 使用2015_R2版本。(xcomm_zynq_4_0,petalinux-build时编译内核会报错)
# unzip linux-2015_R2
将 “ linux-2015_R2.zip ” 解压到 “ /opt/petalinux-v2015.4-final/components/linux-kernel ” 下,与 “ xlnx-4.0 ” 同级。
三、新建工程
$ source /opt/petalinux-v2015.4-final/settings.sh
$ petalinux-create --type project --template zynq --name zed_sound
...
--- copy system_wrapper.hdf to current project ---
...
$ petalinux-config --get-hw-description=.
linux Components Selection -> kernel -> linux-2015_R2 -> Save -> Exit
注:本章节后的命令如果有操作错误的,可以使用命令,清空工程:
--- 重新打开配置MENU,选择内核 ---
$ petalinux-config
--- 如误操作,可使用此命令clean工程 ---
$ petalinux-build -x mrproper
四、修改设备树
进入 “ zed_sound/subsystems/linux/configs/device-tree ” 目录,如果是zedboard开发板,只需要在 “ pl.dtsi ” 加入代码,其他文件默认。修改后的文件如下,也可在资料包中找到该文件。注意,将AXI-I2C控制器中断源从“29”改到“30”,原理可参考:
1、https://blog.csdn.net/jackyard/article/details/30485841
2、ug585 Chapter 7: Interrupts
五、配置工程
$ petalinux-config -c kernel
1、Device Drivers -> I2C support -> I2C Hardware Bus support 按两下空格,<*> 选中 “Xilinx I2C Controller”。
2、Device Drivers -> Sound card support -> Advanced Linux Sound Architecture -> ALSA for SoC audio support
<*> 选中 “AXI-I2S support” 和 “ZED board sound support”,即使不是zedboard,也要选中。
3、Save -> Exit
以上两步见下图:
1、新建驱动:
$ petalinux-create -t modules --name audio_module --enable
2、拷贝文件:
将 “ adau1761.bin、audio_module.c ” 拷贝至 “ components/modules/audio_module ”
注:更详细内容请参考UG1144(v2015.4) PetaLinux Tools Reference Guide
$ petalinux-config –c rootfs
Modules -> [*] 选中 audio_module -> Save -> Exit
六、编译工程
$ petalinux-build
$ cd /zed_sound/images/linux
$ source /opt/Xilinx/SDK/2015.4/settings64.sh
$ petalinux-package --boot --fsbl zynq_fsbl.elf --fpga system_wrapper.bit --u-boot
将当前目录BOOT.BIN image.ub拷贝至SD卡,打开串口,给开发板上电。出现下图本例成功。
使用用户名和密码:root,登入开发板
七、结语:
到此,使用PetaLinux工具,简单的Linux内核驱动移植完毕。
转载请注明原作者及原文出处。