zybo的linux开发教程,Zybo全栈开发入门教程——连载三:创建Linux设备驱动和应用程序...

a31d7502c0ad5280fdea6c41371131f9.png

作者:Commanderfranz,编译: kenshin

通过前面两篇文章我们不仅创建的自定义IP模块还移植了Linux操作系统,今天这篇文章的内容是将这两部分联系起来,其实我们创建的myLed IP相对于Linux操作系统可以是它的一个底层设备,因为PS总线为myLed IP分配了寻址地址,这样我们就可以创建myLed IP模块的硬件驱动,然后搭建应用程序,实现软硬件协同设计。

当然开始之前还需要大家了解一下Linux驱动的基础知识,以及Makefile的用法。

步骤一:设置工作目录,创建Makefile308621e1df34c3dfa920a66eaf24cdda.png

f68a217be7c157b60631c1d40af3ba8d.png

我们先建立drivers的工作目录,并在此目录下编写好Makefile文件(如上图)。Makefile文件定义了编译规则,只需要使用make命令就可以实现整个工程的自动化编译。

步骤二:编写myLed模块驱动源文件

我们的要求是当这个模块加载后会在linux的/proc/目录创建一个可操作的文件myled,通过向这个文件写入数据可以控制zybo板卡上led灯的亮灭状态(根据myLed IP功能逻辑相关)。

步骤三:编译驱动程序,生成驱动模块bc1aa6b5a3434e0667b8255032111e4b.png

直接使用make命令即可,但是注意make命令之前确保已经配置了交叉编译环境。生成的myLed.ko文件就是我们需要的驱动模块。

步骤四:修改设备树文件d9b286863d8de7ddf1cec270d41d8dbd.png

从上图我们可以看到myLed模块的寻址空间为0x43c30000—0x43c3FFFF,因此我们要在设备数源码文件中加入这个设备节点。b89c321089b5e66c9c64707b0a42c625.png

cef4b4428ca62e26020b96034af4d685.png

源码修改完成后我们要重新编译生成devicetree.dtb文件3f376497bd00a3ceaed0ba60805a9a9b.png

步骤五:测试驱动模块

我们将驱动模块myLed.ko文件和修改后的devicetree.dtb文件拷贝到SD卡,重新让zybo以SD卡模式启动。026d088f1c7043146e1b2abdf82f3c47.png

通过insmod和rmmod命令我们可以加载和卸载驱动模块,加载myled.ko模块后我们可以看到在/proc/目录下可以看到myled文件,并且支持数据的读写操作,说明驱动程序一切正常。

步骤六:创建应用程序led_blink.c0748df165909e3949b8c5c162e83c577.png

在目录内创建user_app文件夹,然后创建led_blink.c程序。这个应用程序通过向/proc/myled文件分别写入0x0F和0x00数据实现四个Led灯的亮灭,达到闪烁的效果。

步骤七:编译应用程序dc0598e60ef26a0b52300feddfac0bbe.png

编译方式我们同样采用Makefile方式,编译规则如上图所示,修改makefile。245ec3607ea898a01a4a68dd867e7ea1.png

通过make命令生成了可执行应用程序led_blink。

步骤八:功能测试

我们需要将上一步中生成的led_blink拷贝到SD卡,然后zybo重新上电以SD卡模式启动203999d7012bb69399b420999fba288a.png

fc85c69546aa31c4f9369feac51125b1.png

启动完毕后我们手动挂载SD卡到/mnt/目录下,然后通过insmod myled.ko命令安装驱动模块,最后执行我们的应用程序(./led_blink),我们会看到zybo板卡上的四个led灯的闪烁状态。

至此zybo全栈开发入门教程也告一段落,Zynq开发方式不同于传统的FPGA或者ARM开发,它将两者友好的进行了结合,实现了软硬件协同设计。当然在实际的项目中工程量比较大也是需要进行任务分工的,本系列入门教程只是让大家对zynq全面的开发模式具有了一个了解,当然更深入的内容还需要各位亲自动手来体会。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zybo开发板介绍: ZYBO (Zynq Board) 是一款基于 Z-7010 而构建的功能丰富入门级嵌入式即用型软件和数字电路开发平台。 具有板上存储器、视频与音频 I/O、双模 USB、以太网和 SD 插槽等丰富配置,无需添加任何硬件即可使您的设计运行就绪。此外,还提供五个 Pmod 连接器,便于对任何设计进行升级。 ZYBO 可用于设计各种复杂程度的系统,例如运行多个服务器串联应用的完整操作系统,或者用来控制 LED 的简单裸机程序。如需要操作系统,Digilent 可提供一种专门在 ZYBO 上运行的现成的 Linux 解决方案,以及相关技术文档,用于介绍如何对其进行最佳调节以适应您的目的要求。Xilinx 工具和 Linux 解决方案都无需附加费用即可与 ZYBO 搭配使用。 关键特性: 128Mb 串行 Flash w/ QSPI 接口 16 位每像素 VGA 端口 1G Ethernet, USB 2.0, SDIO 512MB x32 DDR3 w/ 1066Mbps 带宽 667Mhz 双核Cortex-A9处理器 带耳机输出孔、麦克风和线路插口的音频编解码器 带 8 DMA 通道的 DDR3 内存控制器 五个 Pmod 连接器(1 个处理器专用,1 个双路模拟/数字) GPIO:6 个按钮,4 个滑动开关,5 个 LED 低带宽外设控制器: SPI, UART, CAN, I2C MicroSD slot (支持 Linux 文件系统) 板上 JTAG 编程和 UART 至 USB 转换器 态 (1Gbit/100Mbit/10Mbit) Ethernet PH 目标应用: 嵌入式开发 嵌入式处理 高级 Digilent 设计 Zybo原理图截图:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值