一、硬件说明:
主板上J2901 插座是LED外接插座,电路和板载LED2901相连接.
二、测试软件下载:
linux GPIO/LED 测试软件源码下载:
linux-gpio-test-src-File
三、测试软件编译和测试:
下载测试软件源码,解压后,linux-gpio目录如图:
源码目录结构说明:
文件/文件夹 | 说明 |
---|---|
drv文件夹 | gpio内核映射驱动 |
IOApp.h | gpio/led应用接口头文件 |
IOApp.cpp | gpio/led应用接口源文件 |
test_gpio.cpp | 测试代码main |
Makefile | make编译脚本文件 |
Readme.txt | 编译流程说明文件 |
编译和运行流程如下,下面开始目录是linux-gpio
进行编译操作前,需要先安装基本的编译工具,安装方法请参考"Linux应用程序开发(调用硬件)"说明.
#进入gpio驱动源码目录
user@X1:~/linux-gpio$ cd drv
#编译gpio驱动
user@X1:~/linux-gpio/drv$ make
#返回上一级目录
user@X1:~/linux-gpio/drv$ cd ..
#复制驱动ko到当前目录
user@X1:~/linux-gpio$ cp drv/gpio_drv.ko ./
#编译gpio测试应用程序
user@X1:~/linux-gpio$ make
#执行程序程序
user@X1:~/linux-gpio$ sudo ./test_gpio
以上操作,若没有错误,显示测试结果如下:
$ sudo ./test_gpio
GPIO输出成功,LED控制成功,GPIO-H19输入电平:84000102
特别提醒:因为是控制硬件,需要sudo 来运行测试程序.若是root 账号可以直接运行.
三、gpio应用接口说明:
3.1以下是IOApp.h文件结构说明
#ifndef _IOAPP_H
#define _IOAPP_H
#include <stdint.h>
//5个IO控制地址
#define GPIO_H19_ADR 0xFD6D0730
#define GPIO_H18_ADR 0xFD6D0720
#define GPIO_H17_ADR 0xFD6D0710
#define GPIO_H16_ADR 0xFD6D0700
#define GPIO_H00_ADR 0xFD6D0600
//使用前,需要动态加载驱动:加载模块方式1:(仅加载本模块)
//命令行 chmod 644 gpio_drv.ko
//命令行 insmod gpio_drv.ko
class IOApp
{
//驱动
int fd;
public:
IOApp();
~IOApp();
//连接gpio内核驱动
bool Open();
//释放gpio内核驱动
void Release();
public:
//gpio 输出高低电平
bool Gpio_Out(uint32_t PhysAddr,bool HightLevel);
//gpio 输入电平:若值为0X84000102表示高电平,若值为0X84000100表示低电平
bool Gpio_In(uint32_t PhysAddr,uint32_t *lpVal);
//设置gpio为输出模式
bool Gpio_SetModel_OutPut(uint32_t PhysAddr);
//设置gpio为输入模式
bool Gpio_SetModel_InPut(uint32_t PhysAddr);
//设置gpio为中断模式,尚未实现.
bool Gpio_SetModel_Interrupt(uint32_t PhysAddr);
//以下是LED控制----
//控制红色LED亮灭
bool Led_Ctrl_Red(bool isOn);
//控制红色LED闪烁
bool Led_Ctrl_Red_Flash(bool isOn);
//控制绿色LED亮灭
bool Led_Ctrl_Green(bool isOn);
//控制绿色LED闪烁
bool Led_Ctrl_Green_Flash(bool isOn);
};
#endif
核心控制代码
IOApp 类下:
//控制红色LED亮灭
bool Led_Ctrl_Red(bool isOn);
//控制红色LED闪烁
bool Led_Ctrl_Red_Flash(bool isOn);
//控制绿色LED亮灭
bool Led_Ctrl_Green(bool isOn);
//控制绿色LED闪烁
bool Led_Ctrl_Green_Flash(bool isOn);
四、LED测试样例程序Qt界面(内核映射驱动方式):
在GPIO测试页面,下部分是LED测试
点如软件上的选框,可以观察到对应LED状态变化.
测试程序qt界面样例源码和如何编译使用,请参考如下页面:
http://wiki.youyeetoo.cn/zh/x1/linux/qt-build