访问GPIO时出现分段错误

时间:2016-07-14 11:54:03

标签: linux embedded gpio

首先很抱歉这个问题,我已经在这里读过一些类似的问题,但没有一个主题有我的答案。而且我在编程嵌入式Linux方面也是新手,这是我第一次使用linux,所以请礼貌地说:)

所以,我的问题是:我试图用GPIO做嵌入式Linux系统(AT91SAM9260 mcu)的一些基本应用程序 - 闪烁LED或某些按钮。但是当我尝试通过其地址(例如0xE002C00C)访问GPIO时,程序显示"分段错误"。到目前为止我发现它意味着linux不会让我使用我试图访问的内存。许多人建议我应该写自己的司机或其他什么,但正如我所说,我是绝对的新手,我不知道该怎么办。有人可以帮我弄这个吗?分步说明会很棒。

提前致谢,muliku。

1 个答案:

答案 0 :(得分:1)

当您说您正在运行嵌入式Linux时,提供内核版本,BSP由谁或任何构建系统(如Openembedded或buildroot)提供的信息也会很有帮助。如果您运行的是Linux,那么在Linux上访问GPIO的标准方法是来自/ sys / class / gpio。见GPIO sysfs。检查您使用的内核是否已导出它们。

关于您的分段错误,在像Linux这样的单片内核上,存在用户空间和内核空间的分离。一个人无法直接访问任何地址。所有地址都是内存映射的,虚拟地址和物理地址之间存在转换。

如果您有最近的内核或您的供应商Atmel或以其他方式提供了正确配置的内核/ BSP,您应该能够通过sysf访问GPIO,因为将包含GPIO驱动程序和任何必要的支持。