我一直在关注本教程 http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/ok01.html 因为我想在不更换操作系统的情况下控制gpio,我只想编译汇编代码,然后像程序一样运行它,
我已经改变了程序的开始,
.global main
.func main
ldr r0,=0x20200000
mov r1,#1
lsl r1,#18
str r1,[r0,#4]
mov r1,#1
lsl r1,#16
str r1,[r0,#40]
loop:
b loop
然后在Pi上做这些
as -o gpio.o main.s
gcc -o gpio gpio.o
但是当我做的时候
./gpio
我有分段错误
当我做的时候
sudo ./gpio
没有分段错误,但它没有做任何事情,它假设led灯然后循环,请帮忙 我将非常感谢有关如何使用ARM程序集访问gpio而不替换kernel.img。
答案 0 :(得分:4)
您所遵循的示例是直接在硬件上运行的独立(“裸机”)软件,并且您正尝试在Linux下运行它。内核内存管理正确地阻止您尝试访问未映射到进程内存空间的内容。
如果检查sudo命令的返回值,您会发现它仍然返回139(分段错误)。
实现您尝试的方法的一种方法是编写内核驱动程序。 但更实际的可能是在raspberry pi上使用已经可用于Linux的软件库之一。例如(随机搜索,尚未使用它)WiringPi。