2

我一直在关注本教程 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。

4

1 回答 1

4

您所遵循的示例适用于直接在硬件上运行的独立(“裸机”)软件,并且您正尝试在 Linux 下运行它。内核内存管理正确地阻止您尝试访问未映射到进程内存空间的内容。

如果你检查你的 sudo 命令的返回值,你会发现它仍然返回 139(segmentation fault)。

实现您正在尝试的一种方法是编写内核驱动程序。但更实用的方法可能是利用树莓派上已经可用于 Linux 的软件库之一。例如(随机搜索,未使用过)WiringPi之类的东西。

于 2013-06-12T13:52:07.330 回答