使用的全志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失败,详见 这里 的说明