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

2022-08-11 09:45:13 字數 2999 閱讀 6330

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

2.      晶元cpu三星s3c2440a

3.  控制引腳:gpf4

4.  linux作業系統

看晶元手冊三星s3c2440a中gpf4的功能:(280/p)

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

5. io口控制:(282/p)

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

由第四點中資料手冊知道,只需控制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中

8.      重新上電就能點燈了

9.      mmp……..

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

(002)linux開發經驗

1 三種模式 2 命令模式下 3 末行模式下 4 配置檔案 1 gcc編譯的4個階段 2 gcc的一些其他引數 優化程式 o0不優化,o1,o2,o3最高優化 編譯時輸出警告資訊 wall 新增除錯資訊 g 可執行程式會變得稍大一些,便於gdb除錯 1 靜態庫 命名規則 製作靜態庫 發布靜態庫 特點...

002 linux 控制台的使用

1.桌面控制台 2.字元控制台 預設6個字元控制台。獨立執行 互不影響 多使用者 多工 tty 控制台的使用 開始進入的是圖形圖面 tty1 就是圖形介面。圖形介面切換到字元介面終端 ctrl alt f2 6 字元終端切換到影象介面 ctrl alt f1 pty 控制台的使用 虛擬終端pty,我...

Linux裸機開發 彙編點燈

彙編目前應用開發已經很少用到了,但是作為嵌入式開發人員還是需要有一定彙編基礎 需要用彙編初始化一些soc外設。使用彙編初始化ddr,i.mx6u i.mx內部的rom,nxp在內部96kb的rom中存放了自己編寫的啟動 這些啟動 可以讀取ddr配置資訊,並且完成ddr的初始化 設定sp指標,一般指向...