当前位置:   article > 正文

zynq利用petalinux工具进行字符设备驱动开发_利用petalinux搭建zynq的linux系统及相关驱动移植

利用petalinux搭建zynq的linux系统及相关驱动移植

petalinux工具对于zynq linux开发是一把利器,俗话说“磨刀不误砍柴工”,“工欲善其事必先利其器”。petalinux的使用,需要一点一点的积累!下面简单记录一下利用petalinux工具进行字符设备驱动开发的简单过程。

  •  利用windows平台下的vivado导出hdf文件(如下图zynq_petalinux.sdk文件夹),然后利用petalinux创建一个工程,然后在此工程下进行驱动开发。(前面这些过程这里就不进行赘述)

  •  修改.bashrc文件(命令:gedit ~/.bashrc)
  • 添加100行-116行代码到.bashrc中,如下图所示
  • source ~/.bashrc(让修改的内容马上生效,也可以重启ubuntu)

  1. 100 alias petalinux201803='source /opt/pkg/petalinux/2018.3/settings.sh'
  2. 101 alias petalinuxcreatproject='petalinux-create -t project --template zynq -n zynq_linux'
  3. 102 alias petalinuxconfighw='petalinux-config --get-hw-description /media/sf_Share/zynq_petalinux.sdk/'
  4. 103 alias petalinuxconfiguboot='petalinux-config -c u-boot'
  5. 104 alias petalinuxconfigkernel='petalinux-config -c kernel'
  6. 105 alias petalinuxconfigrootfs='petalinux-config -c rootfs'
  7. 106 alias vidtsi='vi project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi'
  8. 107 alias geditdtsi='gedit project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi'
  9. 108 alias petalinuxbuild='petalinux-build'
  10. 109 alias petalinuxsd='petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force'
  11. 110 alias petalinuxqspi='petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --kernel --force'
  12. 111 #单独编译命令
  13. 112 alias petalinuxbuilduboot='petalinux-build -c u-boot'
  14. 113 alias petalinuxbuildkernel='petalinux-build -c kernel'
  15. 114 alias petalinuxbuildrootfs='petalinux-build -c rootfs'
  16. 115 alias petalinuxcreatmodules='petalinux-create -t modules --name hellworld'
  17. 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里面。有几点需要注意一下:

  1. petalinuxcreatmodule    (首先创建好module工程)
  2. petalinuxconfigrootfs     (将module加载到rootfs上,如下图进入modules--—-->>>hellworld,按键盘y就可以选中了,保存退出。)
  3. petalinuxbuild                (编译整个系统)
  4. petalinuxqspi                 (生成BOOT.BIN文件)
  5. cd /lib/modules/4.14.0-xilinx-v2018.3/extra     (内部可以找到hellworld.ko文件)

 注:

  1. zynq系列用到的交叉编译器为:arm-linux-gnueabihf-gcc
  2. zynqMP系列用到的交叉编译器:aarch64-linux-gnu-gcc
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/346141?site
推荐阅读
相关标签
  

闽ICP备14008679号