A10平台linux下操作GPIO的两种方法(python库)
来源:互联网 发布:淘宝排名查询在线 编辑:程序博客网 时间:2024/06/05 16:14
使用的全志A10芯片,目前有两种在linux中访问GPIO的方法:
1.使用内核提供的sun4i-gpio驱动,用户只需修改一下fex配置文件,就可以在系统中用读写文件方式控制GPIO
优点:操作简单,无需额外的库,由内核管理gpio,不会发生冲突
缺点:目前驱动功能比较弱,无法在启动系统后修改pin功能,改变输入\输出等
2.使用一个为A13开发的python库
优点:功能相对较强,python程序可以直接使用
缺点:由于直接操作/dev/mem,需要root权限,不受内核控制,操作不慎可能干扰其他外设
下面说下具体方法:
1.使用sun4i-gpio驱动
首先打开配置硬件的fex文件,定位到[gpio_para]节(如果没有添加就是),输入要使用的gpio引脚,例如:其中gpio_num为需要的的gpio个数,接下来gpio_pin_x分别指定具体连接端口(sw的接口图),端口后面的尖括号数字表示功能,一般0=输入,1=输出
改好文件后编译为script.bin并覆盖以前的文件,具体方法见以前的文章
然后请确保sun4i-gpio驱动已编译进内核,或者编译为模块.如果用我编译的内核,可以在这里下载模块
配置文件和内核都搞好以后,进入系统,insmod(如果使用模块的),应该就可以在/sys/devices/virtual/misc/sun4i-gpio/pin/目录看到你指定的gpio了
只需简单读写文件(如 echo 1>pi4 )就可以操作gpio了
虽然这个方法没有封装好的python库,但懂python的同学自己写点文件操作也不困难吧^_^
2. 使用现成的python库
操作gpio的python库修改自Olimex为A13芯片开发的pyA13库.由于A13与A10的寄存器映射相同,所以代码几乎无须修改,我只是把库里面的引脚定义修改成swiftboard的了.详见git: https://github.com/593141477/pyA13_swiftboard
这个库的使用方法很简单,下载代码后,和其他py库一样,使用 sudo python setup.py install 编译安装 .如果一切正常,运行代码:应该就可以在板子扩展口的1脚输出高电平了,函数详细说明见README
这个python库同时还附带了一个软件模拟SPI通讯的库,用如下代码测试在SPI口(PIN4,PIN6,PIN8,PIN10)连接逻辑分析仪可以看到输出
软件模拟SPI的效率不高,但好处是可以自己指定SPI口使用的引脚(在pyA13.c中),不受芯片硬件限制
最后提醒一下,如果不能正常使用库,请检查是不是内核设置了STRICT_DEVMEM导致操作/dev/mem失败,详见这里的说明
1.使用内核提供的sun4i-gpio驱动,用户只需修改一下fex配置文件,就可以在系统中用读写文件方式控制GPIO
优点:操作简单,无需额外的库,由内核管理gpio,不会发生冲突
缺点:目前驱动功能比较弱,无法在启动系统后修改pin功能,改变输入\输出等
2.使用一个为A13开发的python库
优点:功能相对较强,python程序可以直接使用
缺点:由于直接操作/dev/mem,需要root权限,不受内核控制,操作不慎可能干扰其他外设
下面说下具体方法:
1.使用sun4i-gpio驱动
首先打开配置硬件的fex文件,定位到[gpio_para]节(如果没有添加就是),输入要使用的gpio引脚,例如:其中gpio_num为需要的的gpio个数,接下来gpio_pin_x分别指定具体连接端口(sw的接口图),端口后面的尖括号数字表示功能,一般0=输入,1=输出
改好文件后编译为script.bin并覆盖以前的文件,具体方法见以前的文章
然后请确保sun4i-gpio驱动已编译进内核,或者编译为模块.如果用我编译的内核,可以在这里下载模块
配置文件和内核都搞好以后,进入系统,insmod(如果使用模块的),应该就可以在/sys/devices/virtual/misc/sun4i-gpio/pin/目录看到你指定的gpio了
只需简单读写文件(如 echo 1>pi4 )就可以操作gpio了
虽然这个方法没有封装好的python库,但懂python的同学自己写点文件操作也不困难吧^_^
2. 使用现成的python库
操作gpio的python库修改自Olimex为A13芯片开发的pyA13库.由于A13与A10的寄存器映射相同,所以代码几乎无须修改,我只是把库里面的引脚定义修改成swiftboard的了.详见git: https://github.com/593141477/pyA13_swiftboard
这个库的使用方法很简单,下载代码后,和其他py库一样,使用 sudo python setup.py install 编译安装 .如果一切正常,运行代码:应该就可以在板子扩展口的1脚输出高电平了,函数详细说明见README
这个python库同时还附带了一个软件模拟SPI通讯的库,用如下代码测试在SPI口(PIN4,PIN6,PIN8,PIN10)连接逻辑分析仪可以看到输出
软件模拟SPI的效率不高,但好处是可以自己指定SPI口使用的引脚(在pyA13.c中),不受芯片硬件限制
最后提醒一下,如果不能正常使用库,请检查是不是内核设置了STRICT_DEVMEM导致操作/dev/mem失败,详见这里的说明
- A10平台linux下操作GPIO的两种方法(python库)
- Linux 下操作gpio(两种方法,驱动和mmap)
- Linux 下操作gpio(两种方法,驱动和mmap)
- Linux 下操作gpio(两种方法,驱动和mmap)
- linux下操作GPIO
- Windows CE下操作GPIO的方法
- Windows CE下操作GPIO的方法
- Windows CE下操作GPIO的方法
- Windows CE下操作GPIO的方法
- 嵌入式linux下操作GPIO
- 嵌入式linux下操作GPIO
- linux下操作远程主机文件的几种方法
- Linux下操作FTP方法
- Windows CE下操作GPIO的方法(以ARM9 S3C2410为例)
- Windows CE下操作GPIO的方法(以ARM9 S3C2410为例)(转)
- Windows CE(EVC)下操作GPIO的方法——转载
- Windows CE下操作GPIO的方法(以ARM9 S3C2410为例)
- Windows CE下操作GPIO的方法(以ARM9 S3C2410为例)
- ICMP协议详解
- CSS相对定位|绝对定位(五)之z-index篇
- 使用achartengine实现自定义折线图 ----附代码 调试OK
- Jquery ajax调用
- Android Socket编程介绍
- A10平台linux下操作GPIO的两种方法(python库)
- C# ADO基础 SqlHelper
- Erlang千万级用户游戏框架(Openpoker)源码文件分析清单
- 设置"source folder"与"outputfolder"
- Android TextView富文本
- 我在华为这10年:少抱怨空谈,多干事
- python每次处理一个字符的三种方法
- 软件测试工程师相关知识网站
- 利用RVM和Homebrew在Mac OS X 10.8 Mountain Lion上安装Ruby 2.0.0