zynq利用petalinux工具进行字符设备驱动开发

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里面。有几点需要注意一下:

  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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜻蜓队长c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值