在linux嵌入式系统中,经常需要一些底层操作,Linux就如window一样,也对底层BSP进行了封装,对device driver进行了封装,使用的话基本就是文件读写的方式来读取,所以也大大简化了上层应用对底层硬件的访问难度。
比如要对GPIO口进行访问,在Qt中有几种方法:
使用命令行方式访问:
#include <sys/un.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <linux/types.h>
#include <linux/netlink.h>
void visitGPIO(string sysCMD)
{
FILE * ptr;
if((ptr=popen(sysCMD, "r"))!=NULL)
{
rewind(ptr);
fread(bufData, 256,1, ptr);
// XXX,对数据进行处理
pclose(ptr);
}
直接执行方式访问:
用户空间可通过sysfs访问控制GPIO:
# echo 11 > /sys/class/gpio/export 执行此命令会在gpio/下生成gpio11目录
# echo out > gpio11/direction 设置GPIO11方向为输出
# echo 1 > gpio11/value 设置GPIO11为高电平
# echo 0 > gpio11/value