1. 程式人生 > 實用技巧 >002_linux之點燈(彙編深度解析)

002_linux之點燈(彙編深度解析)

002_linux之點燈(彙編深度解析)

1.開發板採用韋山東的開發板

2.晶片CPU三星S3C2440A

3. 控制引腳:GPF4

4. linux作業系統

5. 晶片手冊下載地址:https://eyun.baidu.com/s/3b1UtLc

看晶片手冊三星S3C2440A中GPF4的功能:(280/P)

由下面的晶片手冊可以看出GPF4的功能可以用作普通IO的輸入輸出,和外部中斷。(下圖)

5. IO口控制:(282/P)

由晶片手冊中282頁中的描述,控制IO口輸出只需控制埠控制暫存器(GPXCON)和埠資料暫存器(GPXDAT)即可,當然還有其他的沒有截圖出來,控制IO口沒用到。(下圖)

6.使用點燈IO口GPF的控制地址如圖:(292/P)

由第四點中資料手冊知道,只需控制GPFCON和GPFDAT中地址資料即可完成對IO的控制。(下圖)

7. GPFCON的控制:

由下圖中GPFCON可看出控制GPF4是控制bit[9:8]位,控制LED選用01 = output

8. GPFDAT控制:

由下圖可知控制GPF4高低電平只需:

GPFDTA[4] = 0; //低電平

GPFDTA[4] = 1; //高電平

9.由晶片在手冊中所描述並進行分析,控制IO口電平只要控制GPFCON和GPFDAT的暫存器就可以了。不用那麼麻煩。。。。。。。。。上面只是手冊中所提取的。。。。。。。。。。。原理。。。。。。。。。。。。。。。

重點來了:

10.首先往GPFCON的bit[9:8]中送入01就可以控制GPF4為輸出模式了,第7點中;然後由

《暫存器位檢視小工具.exe》程式中將0x00000100送入0x56000050(第6點GPFCON地址)就行了,這裡就是GPFCON的控制了。

11.然後到控制GPFDATA了,原理和上面的差不多,前面第8點說:

GPFDTA[4] = 1; //高電平

將0x00000010送入0x56000054就可以實現控制高電平了。

GPFDTA[4] = 0; //低電平

將0x00000000送入0x56000054就全部都是低電平了,送全0會影響其他位,這裡只控制一盞燈,所以其他的多少都無所謂,簡單粗暴的方法。

然後上面的原理說完了,再下來該是程式了,使用的程式是彙編的。使用到的幾個彙編指令:

程式:

.text

.global _start

_start:

ldr r1, = 0x56000050

ldr r0, = 0x100

str r0, [r1]

ldr r1, = 0x56000054

ldr r0, = 0

str r0, [r1]

halt:

b halt

上面的程式碼是.S檔案的,下面再新建一個沒有後綴的Makefile檔案寫下面的東西.

Makefile這個主要是編譯執行的命令,整合到一個檔案裡面能夠快速編譯,這個後面再講。

led_on.bin : led_on.S

arm-linux-gcc-g -c -o led_on.o led_on.S

arm-linux-ld-Ttext 0x0000000 -g led_on.o -o led_on_elf

arm-linux-objcopy-O binary -S led_on_elf led_on.bin

clean:

rm-f led_on.bin led_on_elf *.o

然後得到兩個檔案了

嗯,寫完程式後通過Windows和linux聯通經過半個多小時操作後編譯成功bin檔案。

然後燒寫到開發板就能點亮燈了,MMP。

1.使用source Insight將上述程式寫成.S檔案

2.使用fileZilla連線到linux系統

3.將1中的檔案通過fileZilla上傳到linux的/work中去,最好是資料夾

4.使用MobaXterm_Personal_10.4連線到linux系統中

5.在用MobaXterm_Personal_10.4使用linux命令編譯成bin檔案

6.在fileZilla將bin檔案從linux中拖回Windows中

7.使用Windows的cmd命令下載到開發板中去

8.重新上電就能點燈了

9.MMP……..

10.如何將linux,Windows,開發板三個連線起來涉及ping的問題。

總結: 如何燒寫看個人開發板,這個只是彙編的解析如何進行點燈的具體原理,當然,彙編完之後編譯裡面還有機器碼,如何去了解機器碼的內部就不說了,機器碼涉及AMR架構那些,初學沒必要了解,以後只要知道就行了,下一篇寫C的點燈的,也是在這篇的原理上更改。知道如何去看晶片手冊之後就很簡單了。上面的截圖是我在晶片手冊中擷取的有效內容,當然還有很多無關的就沒有截圖下來。

發表於 2018-09-22 15:40 陸小果哥哥 閱讀(...) 評論(...) 編輯 收藏 重新整理評論重新整理頁面返回頂部