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 陸小果哥哥 閱讀(...) 評論(...) 編輯 收藏 重新整理評論重新整理頁面返回頂部