zybo的linux开发教程,Zybo全栈开发入门教程——连载三:创建Linux设备驱动和应用程序...
作者:Commanderfranz,编译: kenshin
通过前面两篇文章我们不仅创建的自定义IP模块还移植了Linux操作系统,今天这篇文章的内容是将这两部分联系起来,其实我们创建的myLed IP相对于Linux操作系统可以是它的一个底层设备,因为PS总线为myLed IP分配了寻址地址,这样我们就可以创建myLed IP模块的硬件驱动,然后搭建应用程序,实现软硬件协同设计。
当然开始之前还需要大家了解一下Linux驱动的基础知识,以及Makefile的用法。
步骤一:设置工作目录,创建Makefile
我们先建立drivers的工作目录,并在此目录下编写好Makefile文件(如上图)。Makefile文件定义了编译规则,只需要使用make命令就可以实现整个工程的自动化编译。
步骤二:编写myLed模块驱动源文件
我们的要求是当这个模块加载后会在linux的/proc/目录创建一个可操作的文件myled,通过向这个文件写入数据可以控制zybo板卡上led灯的亮灭状态(根据myLed IP功能逻辑相关)。
步骤三:编译驱动程序,生成驱动模块
直接使用make命令即可,但是注意make命令之前确保已经配置了交叉编译环境。生成的myLed.ko文件就是我们需要的驱动模块。
步骤四:修改设备树文件
从上图我们可以看到myLed模块的寻址空间为0x43c30000—0x43c3FFFF,因此我们要在设备数源码文件中加入这个设备节点。
源码修改完成后我们要重新编译生成devicetree.dtb文件
步骤五:测试驱动模块
我们将驱动模块myLed.ko文件和修改后的devicetree.dtb文件拷贝到SD卡,重新让zybo以SD卡模式启动。
通过insmod和rmmod命令我们可以加载和卸载驱动模块,加载myled.ko模块后我们可以看到在/proc/目录下可以看到myled文件,并且支持数据的读写操作,说明驱动程序一切正常。
步骤六:创建应用程序led_blink.c
在目录内创建user_app文件夹,然后创建led_blink.c程序。这个应用程序通过向/proc/myled文件分别写入0x0F和0x00数据实现四个Led灯的亮灭,达到闪烁的效果。
步骤七:编译应用程序
编译方式我们同样采用Makefile方式,编译规则如上图所示,修改makefile。
通过make命令生成了可执行应用程序led_blink。
步骤八:功能测试
我们需要将上一步中生成的led_blink拷贝到SD卡,然后zybo重新上电以SD卡模式启动
启动完毕后我们手动挂载SD卡到/mnt/目录下,然后通过insmod myled.ko命令安装驱动模块,最后执行我们的应用程序(./led_blink),我们会看到zybo板卡上的四个led灯的闪烁状态。
至此zybo全栈开发入门教程也告一段落,Zynq开发方式不同于传统的FPGA或者ARM开发,它将两者友好的进行了结合,实现了软硬件协同设计。当然在实际的项目中工程量比较大也是需要进行任务分工的,本系列入门教程只是让大家对zynq全面的开发模式具有了一个了解,当然更深入的内容还需要各位亲自动手来体会。
zybo的linux开发教程,Zybo全栈开发入门教程——连载三:创建Linux设备驱动和应用程序...相关推荐
- (Node+Vue+微信公众号开发)企业级产品全栈开发速成周末班
(Node+Vue+微信公众号开发)企业级产品全栈开发速成周末班 从零到壹全栈部落 产品:个人独立博客,21点见 Vue + Node + MongoDB支持服务端渲染的博客系统(5天) 开发环境技术 ...
- python全栈开发下载_python全栈开发神器 - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn...
将安卓手机打造成你的python全栈开发利器 超神利器- 相信多数安卓用户都使用过Qpython这款移动端的Python编辑器吧?之前我也研究过一阵子这个工具,但因为一次简单的爬虫让我对它失望之极.Q ...
- python全栈开发优势_Python全栈开发多少钱?学Python价格贵吗?
Python全栈开发培训多少钱?学习Python是大家进入编程世界的理想之选,而且Python也是一门非常受欢迎的编程,可以从事的领域有很多. 从目前市场上的行情来说,一般情况下Python培训的费用 ...
- 全栈开发和web开发_成为全栈开发人员
全栈开发和web开发 This popular article has been updated in June 2017 to include modern technologies. 该热门文章已 ...
- linux 批处理教程,最全的批处理入门教程,菜鸟必看
1.这是一篇技术教程,我会用很简单的文字表达清楚自己的意思,你要你识字就能看懂,就能学到知识.写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱可以让事情变的更简单,那么就让它简单吧!看 ...
- python全栈开发网络_Python全栈开发:django网络框架(二)
Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...
- python全栈开发总结_python全栈开发 * 12 知识点汇总 * 180530
⼀. 通⽤装饰器的回顾 1.开闭原则: 对增加功能开放. 对修改代码封闭 2.装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能 3.通⽤装饰器的写法: def wrapper(fn): de ...
- python全栈开发网络_Python 全栈开发:网络编程
一 socket 1.什么是socket 看一看图中socket的位置 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把 ...
- 小米手机 开发app python_python 全栈开发,Day59(小米商城)
小米商城 | MIUI | loT | 云服务 | 小爱开放平台 | 金融 | 有品 | 政企服务 | Select Region 购物车(1) 登录 | 注册 | 消息通知
- python全栈开发中级_python全栈开发中级班全程笔记(第二模块)第一部分:文件处理...
第二模块 第一部分:文件处理与函数 #插曲之人丑就要多读书:读书能够提高个人素质与内涵,提升个人修养与能力,以及层次的提升. 推荐书籍:追风筝的人.白鹿原 电影:阿甘正传.辛德勒的名单 第一节:三元运 ...
最新文章
- mysql 执行cmd,mysql命令行中执行sql的几种方式总结
- HDU 2079 选课时间
- 翻译:Google大表(BigTable)
- boost::function_types::is_member_pointer用法的测试程序
- 租赁笔记本电脑哪里有_广东哪里有离心鼓风机优势-长沙鼓风机厂
- (转) android UI进阶之用gallery实现可滑动的Tab
- unity, 内置shader下载地址
- ROS入门-5.认识ROS及ROS的基本概念
- Mysql数据备份与mysqldump增量备份
- 龙星计划机器学习笔记
- 下载anaconda后配置环境变量
- python在线编辑菜鸟-python菜鸟工具
- windows2008R2新增磁盘处于脱机状态及介质写入受保护解决办法
- 笔记本电脑热点手机无法连接解决方案
- throw Exception
- 解决html图片空隙留白问题
- 顺芯ES8374单声道codec音频解码芯片,集成功放IC
- 中科创达与高通成立合资公司
- 厦门理工学院oj 1107-牲口棚的安全
- 计算时区函数gmt2local(time_t t)