gpio_set_value(30, 1);
void gpio_set_value(unsigned int gpio, unsigned int out)
{
unsigned int *addr = (unsigned int *)GPIO_IN_OUT_ADDR(gpio);
unsigned int val = 0;
val = readl(addr);
val &= ~(0x2);
val |= out << 1;
writel(val, addr);
}
#define TLMM_BASE 0x01000000
#define GPIO_CONFIG_ADDR(x) (TLMM_BASE + (x)*0x1000)
#define GPIO_IN_OUT_ADDR(x) (TLMM_BASE + 0x4 + (x)*0x1000)
gpio30转化为十六进制为0x1e
0x01000000 + 0x4 + 0x1e*0x1000 = 0x0101e004
点灯:mw 101e004 0
查看内存值:
ZCOM# md 101e004
0101e004: 00000000 000000e2 00000000 00000000 ................
灭灯:mw 101e004 3(set value 1被函数转为3 ,val &= ~(0x2); val为1;val |= out << 1;val为3)
查看内存值:
ZCOM# md 101e004
0101e004: 00000003 000000e2 00000000 00000000 ................