Hi3536 GPIO的读写操作,有两种方法:
1、重新编写GPIO的驱动程序,在通过访问设备进行GPIO的读写。
2、根据海思提供的工具himm,进行寄存器值的读写。
我是采用第二种方案,毕竟轮子已经有没有必要再造轮子了。
step1:
修改himm.c文件,添加一个读寄存器值的操作。代码修改如下:
else if (argc == 3)
{
if(memcmp(argv[2], "r", 1) == 0)
{
if( StrToNumber(argv[1], &ulAddr) == HI_SUCCESS)
{
pMem = memmap(ulAddr, DEFAULT_MD_LEN);
ulOld = *(U32*)pMem;
printf("Read: %s=0x%08lx \n", argv[1], ulOld);
}
return ulOld;
}
}
step2:
编写应用层的GPIO读写代码,实现读写的功能。代码如附件。
/*********************************************
Function: gpio_io_write
Description: set gpio's value
Param: in
1.port: gpio port
2.pin: gpio pin
3.value: 0--low 1--high
out: None
**********************************************/
static void gpio_io_write(unsigned char port, unsigned char pin, un