我的第一个控制:LED点亮
前面搭建完了开发环境了,下面可以尝试别的简单方法,跑一下板载的外部资源,控制一个LED亮灭(通常称电灯实验)是一个比较常见的板载资源测试功能之一。下面来尝试一下控制板子上的下面这颗用户的LED灯。
从图中可以看出,D1这颗LED灯接在了PG11引脚上,通过R1电阻接到VCC电源进行限流,并使用CQA34N00这颗N沟道MOS管进行控制,而控制引脚PG11接了2K的电阻进行上拉。给出厂的板子上电,这颗LED保持常亮。
下面通过文件操作的方法控制一下这个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文件夹中,方便后续测试操作。
可以看到已经有了export和unexport
接下去使用
Echo 203 > /sys/class/gpio/export
进行引脚导出命令,就能看到多出了gpio203文件夹
其中,direction为gpio的输入输出方向配置,value则为输入输出的值了。可以配置前者为输出,后者为1和0分别控制led的亮和灭了。
使用
echo "out" > /sys/class/gpio/gpio203/direction
将引脚的方向设置为输出,并使用
cat /sys/class/gpio/gpio203/direction
查看上面的设置输出是否成功正确。
这时候板载的这颗LED状态就熄灭了,因为默认的value值从哪读取来看应该为0
接下去就可以通过写value文件的内容为1和0,分别控制LED灯的亮和灭了。
设备树那边也定义了一个T113-i核心板上的板载LED,这颗LED默认也就是作为Linux核心板的“心跳”功能使用的。
可以发现有一个heartbeat的文件夹,并可以发现其里面的如下的文件
其中控制brightness文件内容即可控制这颗LED的亮灭状态了,也就是写1和0分别就可以控制其亮和灭的状态。
还可以从板子设备树的具体文件夹具体文件中的leds中找到对应的引脚定义,可以暗道使用引脚就是PG16,GPIO\_ACTIVE\_HIGH指定了其点亮的电平为高电平。
以上就是通过设备树中的gpio和leds来控制核心板和底板上的led的亮灭状态功能了。
然后通过sftp,传给开发板的home/my\_test路径下,并通过ls命令确认