我的第一个控制:LED点亮

前面搭建完了开发环境了,下面可以尝试别的简单方法,跑一下板载的外部资源,控制一个LED亮灭(通常称电灯实验)是一个比较常见的板载资源测试功能之一。下面来尝试一下控制板子上的下面这颗用户的LED灯。
从图中可以看出,D1这颗LED灯接在了PG11引脚上,通过R1电阻接到VCC电源进行限流,并使用CQA34N00这颗N沟道MOS管进行控制,而控制引脚PG11接了2K的电阻进行上拉。给出厂的板子上电,这颗LED保持常亮。

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_核心板

下面通过文件操作的方法控制一下这个LED灯
首先进行一下引脚编号的计算。
根据 #define PIN_NO(port, line) (((port) - 'A') * 0x20 + (line))进行计算
其中 port 为 gpio 端口,line 为该 gpio 对应引脚,((port)-'A')代表 ASCII 码相减。
如这颗LED的引脚 PG11对应的 pin 引脚编号为IN_NO('G',11)=(0x47-0x41)*0x20+11=(71-65)*32+11=107。
也就是说,这颗LED的引脚实际使用编号就为203.
然后登录一下板子的系统,通过如下命令查看文件GPIO,同时也进入到GPIO文件夹中,方便后续测试操作。

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_引脚_02

可以看到已经有了export和unexport

接下去使用
Echo 203 > /sys/class/gpio/export
进行引脚导出命令,就能看到多出了gpio203文件夹

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_设备树_03

进入gpio203文件夹,看看内含文件

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_引脚_04

其中,direction为gpio的输入输出方向配置,value则为输入输出的值了。可以配置前者为输出,后者为1和0分别控制led的亮和灭了。
使用
echo "out" > /sys/class/gpio/gpio203/direction
将引脚的方向设置为输出,并使用
cat /sys/class/gpio/gpio203/direction
查看上面的设置输出是否成功正确。

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_设备树_05

这时候板载的这颗LED状态就熄灭了,因为默认的value值从哪读取来看应该为0

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_核心板_06

接下去就可以通过写value文件的内容为1和0,分别控制LED灯的亮和灭了。

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_设备树_07

设备树那边也定义了一个T113-i核心板上的板载LED,这颗LED默认也就是作为Linux核心板的“心跳”功能使用的。

在sys/class下面

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_设备树_08

可以发现有一个heartbeat的文件夹,并可以发现其里面的如下的文件

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_引脚_09

其中控制brightness文件内容即可控制这颗LED的亮灭状态了,也就是写1和0分别就可以控制其亮和灭的状态。

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_核心板_10

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_设备树_11

还可以从板子设备树的具体文件夹具体文件中的leds中找到对应的引脚定义,可以暗道使用引脚就是PG16,GPIO_ACTIVE_HIGH指定了其点亮的电平为高电平。

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_引脚_12

以上就是通过设备树中的gpio和leds来控制核心板和底板上的led的亮灭状态功能了。

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_设备树_13

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_设备树_14

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_核心板_15

确认可执行文件的权限并更新

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_引脚_16

然后通过sftp,传给开发板的home/my_test路径下,并通过ls命令确认

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_核心板_17

执行,输入对应的引脚编号就可以看到翻转三次了

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_核心板_18

其主要实现代码为
输入引脚编号

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_设备树_19

Export引脚到文件

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_设备树_20

设置方向为out

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_引脚_21

翻转三次

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_核心板_22

最后还需要unexport

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制_引脚_23