2 S3C6410 裸機開發 LED

2021-06-23 01:44:44 字數 2250 閱讀 2605

相信不要學習微控制器,嵌入式系統的愛好者都是從點亮led 開始的,大家都也形成了這樣的乙個習慣性思維,其實這是熟悉一款微控制器或微處理器的最好的起步方法,gpio 對於 微處理器來說是相對簡單但有時最基本和最重要的,所以,從led 開始學習,可以很好的熟悉這款微處理器的一些特性和程式設計方法,好了,下面就開始實現 s3c6410 的led 點亮之路。

首先是熟悉 開發板的硬體電路,知道led 是怎樣的電路構成,與微處理器是怎麼連線的,我以ok6410 為例,其他開發環境都大致一樣。

開啟原理圖,找到led 與微處理器的電路連線,如下:

可以發現,ok6410 的gpm0~3 與led 相連,那就可以直接讓引腳輸出高低電平控制led 亮或者滅了,但是還要檢視 s3c6410 的手冊來分析 gpio的 暫存器和程式設計方法,

gpm 埠有三個暫存器,是要設定為 output 模式,然後再gpmdat 資料暫存器中設定相應埠電平的高低就可以讓對應埠輸出高低電平了,有了這些,就可以寫程式了,如下:

定義了三個巨集,然後就可以在c 函式中呼叫了,當然,此時還不能直接使用c 環境,首先做的是要編寫啟動檔案 start.s

.globl _start

_start:

/* peri port setup */

ldr r0, =0x70000000

orr r0, r0, #0x13

mcr p15,0,r0,c15,c2,4 @ 256m(0x70000000-0x7fffffff)

/* 關看門狗 */

/* 往wtcon(0x7e004000)寫0 */

ldr r0, =0x7e004000

mov r1, #0

str r1, [r0]

/* 設定棧 */

ldr sp, =8*1024

bl main /* 呼叫c函式 */

halt:

b halt

這樣就可以使用熟悉的 main.c 檔案了,然後再main 函式中呼叫初始化,然後while()迴圈執行:

#include "led.h"

void main()

}

好了,**就寫好了,可是還差一步,別忘了我們是在linux環境下,沒有ide ,所以編譯的過程得靠自己來做,這就是編寫makefile:

led.bin: start.o main.o

arm-linux-ld -ttext 0 -o led.elf start.o main.o

arm-linux-objcopy -o binary led.elf led.bin

arm-linux-objdump -d led.elf > led.dis

start.o : start.s

arm-linux-gcc -o start.o start.s -c

main.o : main.c

arm-linux-gcc -o main.o main.c -c

clean:

rm *.o led.elf led.bin led.dis

注意,如果你的編譯器和我一樣,是 4.3.2,那麼上面的makefile 就可能有問題,編譯是不會通過的,如果通過。。。。那就通過吧,如果不通過,就吧arm-linux-gcc 命令後面加上條件 -nostdlib就可以了,如:arm-linux-gcc -nostdbli -o start.o start.s -c, 其他同之,編寫完後就可以make 了,生產了三個檔案 led.dis 是反彙編檔案,除錯可對比檢視, led.bin 是需要焼寫的檔案。

最後,利用上一遍講得 方法,就可以直接燒寫到 6410 的板子上面了,你就可以看到你的 led 已經亮了。

ok ,就這麼簡單地讓led閃爍了。

S3C6410裸機中斷終於搞定了,

使用vic rel noopener noreferrer s3c6410裸機中斷終於搞定了,不需要彙編 使用vic 劍橋石 經過幾天的努力 終於搞定了 s3c6410 裸機中斷 測試使用的是外部中斷0組的 pn0,使用定時器0。之前一直很鬱悶的是網上的一些 s3c6410 使用的中斷都是像 51微...

S3C2440之裸機之彙編點亮LED燈

虛擬機器環境 oracle vm virtualbox linux系統 ubuntu 14.04.6 交叉編譯工具 100ask分享的所有檔案 100ask分享的所有檔案 002 jz2440資料光碟 20180516 免費 資料光碟 a盤 tools.zip arm linux gcc 4.3.2...

S3c6410在RVDS2 2下裸機浮點問題

近在使用s3c6410裸機的時候用到浮點型時候程式一直無結果輸出,網上查了很久,說需要設定vfpv2 vfpenable equ 0x40000000 vfp使能設定 啟用通過協處理器訪問vfp控制暫存器 mrc p15,0,r0,c1,c0,2 orr r0,r0,0x00f00000 mcr p...