赞
踩
petalinux工具对于zynq linux开发是一把利器,俗话说“磨刀不误砍柴工”,“工欲善其事必先利其器”。petalinux的使用,需要一点一点的积累!下面简单记录一下利用petalinux工具进行字符设备驱动开发的简单过程。
- 利用windows平台下的vivado导出hdf文件(如下图zynq_petalinux.sdk文件夹),然后利用petalinux创建一个工程,然后在此工程下进行驱动开发。(前面这些过程这里就不进行赘述)
- 修改.bashrc文件(命令:gedit ~/.bashrc)
- 添加100行-116行代码到.bashrc中,如下图所示
- source ~/.bashrc(让修改的内容马上生效,也可以重启ubuntu)
100 alias petalinux201803='source /opt/pkg/petalinux/2018.3/settings.sh' 101 alias petalinuxcreatproject='petalinux-create -t project --template zynq -n zynq_linux' 102 alias petalinuxconfighw='petalinux-config --get-hw-description /media/sf_Share/zynq_petalinux.sdk/' 103 alias petalinuxconfiguboot='petalinux-config -c u-boot' 104 alias petalinuxconfigkernel='petalinux-config -c kernel' 105 alias petalinuxconfigrootfs='petalinux-config -c rootfs' 106 alias vidtsi='vi project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi' 107 alias geditdtsi='gedit project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi' 108 alias petalinuxbuild='petalinux-build' 109 alias petalinuxsd='petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force' 110 alias petalinuxqspi='petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --kernel --force' 111 #单独编译命令 112 alias petalinuxbuilduboot='petalinux-build -c u-boot' 113 alias petalinuxbuildkernel='petalinux-build -c kernel' 114 alias petalinuxbuildrootfs='petalinux-build -c rootfs' 115 alias petalinuxcreatmodules='petalinux-create -t modules --name hellworld' 116 export PATH=$PATH:/opt/pkg/petalinux/2018.3/tools/linux-i386/gcc-arm-linux-gnueabi/bin
- cd ~
- mkdir work
- mkdir petalinux
- 终端执行上面的命令,创建文件夹(如下图已创建好),等会在petalinux文件夹中创建module模板。
- cd work/petalinux
- petalinux201803
- 上方的命令是配置petalinux工具环境变量。如下图所示
- petalinuxcreatproject(如下图)
- cd zynq_linux(如下图)
- petalinuxconfighw(图形界面里保持默认保存,退出)
- petalinuxcreatmodules(如下图)
- cd /home/chen/work/petalinux/zynq_linux/project-spec/meta-user/recipes-modules/hellworld/files
- 可以看见创建的module模板中的helloworld.c
- cd退回工程的根目录下,也就是zynq_linux下
- petalinux-build -c hellworld ,等待编译hellworld.c生成.ko驱动模块。(突然发现hellworld少了一个o,哈哈哈,尴尬了!)
- cd /home/chen/work/petalinux/zynq_linux/build/tmp/sysroots-components/plnx_zynq7/hellworld/lib/modules/4.14.0-xilinx-v2018.3/extra
- 可以查看编译出来的.ko模块(如下图所示)
- 通过cp命令拷贝hellworld.ko到 /media/sf_share共享文件夹中 (如下图所示)
- 将hellworld.ko拷贝到板子上,可以使用tftp、ftp、ssh。(需要将板子和电脑通过网线连接到同一个路由器下)
- 启动板子上的linux系统,登录完成后,输入命令:ifconfig eth0 192.168.31.220 up;可以ping一下看看是不是通了。
- 打开filezille 新建站点,添加站点,加密只使用明文、输入上方的ip、用户名root、密码root,即可进行连接。
- 使用TFTP工具时,若传输不通过,可以关掉电脑的防火墙再重试。
- hellworld.ko 文件成功拷贝到板子上的/mnt/目录下(如下图所示)
- 直接挂载hellworld.ko,命令为:insmod hellworld.ko;卸载驱动命令为:rmmod hellworld.ko;查看已挂载的驱动命令为:lsmod(如下图所示)
也可以通过petalinux定制linux系统的方法,进行驱动开发,加载module到rootfs中,编译生成BOOT.BIN,通过SDK将BOOT.BIN和zynq.elf烧录到板子的qspi_flash里面。有几点需要注意一下:
- petalinuxcreatmodule (首先创建好module工程)
- petalinuxconfigrootfs (将module加载到rootfs上,如下图进入modules--—-->>>hellworld,按键盘y就可以选中了,保存退出。)
- petalinuxbuild (编译整个系统)
- petalinuxqspi (生成BOOT.BIN文件)
- cd /lib/modules/4.14.0-xilinx-v2018.3/extra (内部可以找到hellworld.ko文件)
注:
- zynq系列用到的交叉编译器为:arm-linux-gnueabihf-gcc
- zynqMP系列用到的交叉编译器:aarch64-linux-gnu-gcc
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。