2013-06-12 187 views
2

我一直在關注這個教程 http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/ok01.html 和我想控制GPIO無需更換OS,我只想編譯彙編代碼,然後像一個程序運行它,分段故障

而且我已經改變了節目的開始,

.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 

然後做這些的皮

as -o gpio.o main.s 
gcc -o gpio gpio.o 

但是當我做

./gpio 

我有段故障

當我做

sudo ./gpio 

沒有分割的錯,但它什麼都不做,它假定光則導致環路請幫助 我將非常感謝與如何使用ARM程序集訪問gpio而無需替換kernel.img相關的任何內容。

回答

4

您所遵循的示例是針對直接在硬件上運行的獨立(「裸機」)軟件,並且您正試圖在Linux下運行它。內核內存管理正確地阻止您嘗試訪問未映射到進程內存空間的內容。

如果你檢查你的sudo命令的返回值,你會發現它仍然返回139(段錯誤)。

實現你正在嘗試的一種方法是編寫一個內核驅動程序。 但更實際的一種可能是利用已經可用於樹莓派上的Linux的軟件庫之一。例如(隨機搜索,沒有使用它)WiringPi