ZedBoard Linux开发 - GPIO驱动详解
更新时间:2023-11-14 15:37:01 阅读量: 教育文库 文档下载
- zedboard推荐度:
- 相关推荐
ZedBoard Linux开发 --- GPIO驱动详解
2014-04-08 15:31:57| 分类: ZedBoard | 标签:gpiolib sysfs gpio |举报 |字号大中小 订阅 下载LOFTER客户端
本来这是要作为ZedBoard Linux的第一个学习实例,不过由于一开始实在找不到内核中针对ZedBoard GPIO具体操作的代码在哪里,所以只能先从OLED开始看起,在学习完OLED驱动之后有了不少发现,比如OLED驱动中就有使用GPIO的操作,后来发现这些操作都被Linux内核中的GPIOLIB库管理着,相关的文档在Documentation/gpio.txt中有介绍,通读一遍之后就会有不少发现的,相关的GPIOLIB库文件位于drivers/gpio/gpio-lib.c文件中,不过这部分文件只是提供了库函数,而真正在ZedBoard启动时进行GPIO注册管理的文件是drivers/gpio/gpio-xilinxps.c,可以在这个文件中找到这样一个宏定义:
#define XGPIOPS_NR_GPIOS 118 这里一共注册了118个GPIO口,看看Datasheet就知道这里的意思应该是MIO[0:53]+EMIO[54:117],也就是54个MIO加上64个EMIO,看到这里我还是有一些疑问,因为并不是所有的IO口都作为GPIO来使用的,有很大一部分是进行IO复用的,下面是我在XPS中的MIO配置截图:
可以看到MIO中真正作为GPIO口使用的也就只有MIO[0,7,9:15,50:51],我当时就有疑问:如果我在Linux中申请了这一部分被复用的GPIO,这会不会与正在复用的那些功能起冲突?(至少在MCU中有很多复用功能是在配置了GPIO方向之后才能正常复用的)后来看来一下zynq的UG585手册,找到了下面这张图才解决了问题:
可以看到所有GPIO与其他复用的功能最后都是经过MIO网络路由到外部的GPIO端口的,也就是说即使在相应的GPIO寄存器中配置了GPIO的功能,那么这部分功能也不会生效!而配置这些复用功能的寄存器是在slcr(System Level Control Registers)寄存器中操作的,可以在UG585上找到这些寄存器具体的参数:
而在Digilent Linux内核中,slcr相关的文件可以在linux-digilent/arch/arm/mach-zynq/slcr.c中找到。另外除了MIO,还有
EMIO的配置,可以在上面的截图中看到XPS中配置了60个EMIO,并且在xps的ucf文件中可以找到配置相关注释:
############################################################# # # # GPIO Interface # # # ############################################################# ……………………………… ############################ # # # On-board OLED # # # # Voltage control and # # Bitbanged SPI over GPIO # # # ############################ net processing_system7_0_GPIO<1> LOC = U11 | IOSTANDARD = LVCMOS33; # OLED-VBAT net processing_system7_0_GPIO<2> LOC = U12 | IOSTANDARD = LVCMOS33; # OLED-VDD net processing_system7_0_GPIO<3> LOC = U9 | IOSTANDARD = LVCMOS33; # OLED-RES net processing_system7_0_GPIO<4> LOC = U10 | IOSTANDARD = LVCMOS33; # OLED-DC net processing_system7_0_GPIO<5> LOC = AB12 | IOSTANDARD = LVCMOS33; # OLED-SCLK net processing_system7_0_GPIO<6> LOC = AA12 | IOSTANDARD = LVCMOS33; # OLED-SDIN ############################ # # # On-board LED's # # # ############################ net processing_system7_0_GPIO<7> LOC = T22 | IOSTANDARD = LVCMOS33; # LD0 net processing_system7_0_GPIO<8> LOC = T21 | IOSTANDARD = LVCMOS33; # LD1 net processing_system7_0_GPIO<9> LOC = U22 | IOSTANDARD = LVCMOS33; # LD2 net processing_system7_0_GPIO<10> LOC = U21 | IOSTANDARD = LVCMOS33; # LD3 net processing_system7_0_GPIO<11> LOC = V22 | IOSTANDARD = LVCMOS33; # LD4 net processing_system7_0_GPIO<12> LOC = W22 | IOSTANDARD = LVCMOS33; # LD5 net processing_system7_0_GPIO<13> LOC = U19 | IOSTANDARD = LVCMOS33; # LD6 net processing_system7_0_GPIO<14> LOC = U14 | IOSTANDARD = LVCMOS33; # LD7 ############################ # # # On-board Slide Switches # # # ############################ net processing_system7_0_GPIO<15> LOC = F22 | IOSTANDARD = LVCMOS33; # SW0
正在阅读:
ZedBoard Linux开发 - GPIO驱动详解11-14
中医内科学B复习题04-10
薄膜太阳能电池基板项目可行性研究报告编写格式及参考(模板word)09-02
共青团建团100年心得参考范本07-25
基于micro850 PLC的丝杠运动(位移控制) - 图文12-15
外发生管流程04-30
2016上海中考英语学生词汇过关默写表(单词 词组 ,可自动批阅)05-23
高考专项指导:成语、熟语05-05
MPACC联考逻辑一点通12-17
吉华油墨控制管理规范05-14
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 详解
- ZedBoard
- 驱动
- 开发
- Linux
- GPIO
- 数据库原理及应用SQL - 习题集(含答案)
- 《计算机软件技术基础》复习答案
- 电路 第四版 答案(第八章)
- 中国文明史(上)参考答案尔雅WORD版
- 基础会计作业
- 南京方圆画室教职工兼职聘用合同
- PMP微博习题完整版1-162
- 2019年高考真题汇编--语言文字运用
- 化学同步苏教版高二选修5学案:专题5 - 第二单元 - 氨基酸 - 蛋白质 - 核酸 - word版含解析
- 数字钟文献综述
- 新疆幼儿园双语教学存在问题和改进措施
- 思修与法律 2015年修订版 目录及绪论
- 2016年下半年福建省内审师《内部审计基础》:底稿编制技术考试试卷
- 4、勤读
- 致远小学五年级课外阅读知识练习
- 2014奥鹏《地方政府学》模拟练习题答案
- 国家专项研发资金、补助资金会计核算的指导性意见(开发支出、无形资产、研发费用、递延收益)
- 西南财经大学科研管理规范
- (灵)苏教版四年级数学上册《认识垂直》教学设计
- 西安交通大学16年9月课程考试《工程热力学》作业考核试题