我在飞思卡尔iMX6机械臂处理器上运行带有3.14.14内核的debian。
我在提供细分错误的嵌入式应用程序中拥有此代码。
volatile unsigned int& GPIO2IO26CTRL = *((volatile unsigned int*)0x20e0104);
GPIO2IO26CTRL = 0x5;
还尝试了:
volatile unsigned int* GPIO2IO26CTRL = (volatile unsigned int*)0x20e0104;
*GPIO2IO26CTRL = 0x5;
但是我确实想将0x5写入位置0x20e0104。这告诉iMX6芯片,一条io线将是GPIO而不是spi。
我该如何解决?
最佳答案
这可以从用户空间进行(尽管您可能需要是root用户)。关键是将内存重新映射到进程的地址空间。
有一个叫做devmem2
的程序可以做到这一点。源代码是here。
关于c++ - 嵌入式应用程序写入寄存器时出现段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30354405/