在linux设备驱动程序中注册级别访问

时间:2014-09-30 14:04:04

标签: linux linux-device-driver gpio angstrom-linux

我在Linux驱动程序开发方面只有2周的经验,但在嵌入式c编程方面有很好的经验。我只在linux中尝试过字符设备驱动程序。现在我想为一组连接到GPIO的LED尝试设备驱动程序。我正在使用BeagleBone Black。我希望从寄存器级别访问它,而不是只调用任何驱动程序。 (我这样做是为了学习基础知识)

我希望我的驱动程序GPIO访问代码有点像下面

void SetLED(unsigned char LED,unsigned char Status){
    //Read the port register
    //BitWise Operation according to function parameters
    //Write back to the register
}

但我需要一些关于如何直接在linux中访问寄存器的帮助。我从数据表中得到了端口OUT寄存器的实际地址为0x4804C13C

请原谅我,如果我打破了我的问题中的任何基础知识。我是linux的新手。

1 个答案:

答案 0 :(得分:0)

您的司机必须致电

struct resource *request_mem_region(unsigned long start, unsigned long len, char *name);

注册对该内存区域的独占访问。

然后必须使用ioread8()ioread16()等,iowrite8()iowrite16()等。