iTop4412 裸機開發 LED

2022-08-26 06:51:08 字數 2905 閱讀 8402

平台:itop4412 scp 2g

開發板有兩個可控制的led燈:分別接到引腳:kp_col0和vdd50_en

kp_col0就是gpl2_0

vdd50_en就是gpk1_1

配置gpx_con對應位為輸出功能,設定gpx_dat相應管腳輸出為1,就可以點亮led燈了。

實現**如下:

原始碼1:start.s 

.global _start

#include

"s3c4412_gpio.h

".word 0x2000

.word 0x0

.word 0x0

.word 0x0

_start:

ldr r0, =0x1002330c

ldr r1, [r0]

orr r1, r1, #0x300

strr1, [r0]

ldr r0, =0x11000c08

ldr r1, =0x0

strr1, [r0]

ldr r0, =gpl2con

mov r1, #(0x01 << 0

)

strr1, [r0]

ldr r0, =gpk1con

mov r1, #(0x01 << 4

)

strr1, [r0]1:

ldr r0, =gpk1dat

movr1, #0x2

strr1, [r0]

ldr r0, =gpl2dat

movr1, #0x0

strr1, [r0]

b 1b

halt:

b halt

原始碼2: s3c4412_gpio.h 

#ifndef s3c4412_gpio_h

#define s3c4412_gpio_h

#define gpx1con (0x11000000 + 0x0c20)

#define gpx1dat (0x11000000 + 0x0c24)

#define gpx1pud (0x11000000 + 0x0c28)

#define gpx1drv (0x11000000 + 0x0c2c)

#define gpk1con (0x11000000 + 0x0060)

#define gpk1dat (0x11000000 + 0x0064)

#define gpk1pud (0x11000000 + 0x0068)

#define gpk1drv (0x11000000 + 0x006c)

#define gpl2con (0x11000000 + 0x0100)

#define gpl2dat (0x11000000 + 0x0104)

#define gpl2pud (0x11000000 + 0x0108)

#define gpl2drv (0x11000000 + 0x010c)

#endif

原始碼3: link.lds 

sections

.rodata align(

4) :

.data align(

4) :

.bss align(

4) :

}

原始碼4: 

cross_compile = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-

%.o : %.s

$(cross_compile)gcc -o $@ $< -c

%.o : %.c

$(cross_compile)gcc -o $@ $< -c

led.bin : start.o

$(cross_compile)ld -t link.

lds-o led.elf $^

$(cross_compile)objcopy -o binary led.elf led.bin

$(cross_compile)objdump -d led.elf > led.dis

.phony : clean

clean :

rm -rf *.o *.elf *.bin *.dis

完成或修改了源**需每次重複操作以下三個步驟:

步驟1: 編譯生成目標檔案,執行  make led.bin

步驟2:因為這個裸機是s3c4412 datasheet 中所描述的 bl1, 所以編譯出的led.bin頭16個位元組需要處理下,才能正常執行。 執行./mk4412 led.bin

步驟3:燒寫處理好的led.bin到sd卡裡頭,執行 

sudo mkfs.vfat -f 32 -i /dev/sdb

sudo dd if=/dev/zero of=/dev/sdbbs=512 seek=1 iflag=dsync oflag=dsync count=2048

sudo dd if=./led.bin of=/dev/sdbbs=512 seek=1 iflag=dsync oflag=dsync

請注意加粗標紅得"sdb", 也可能是sdc,沒插u盤執行df -l,再插入u盤執行df -l,觀察多出來得就是sdx就是你的u盤。

最後就能看到開發板上led2滅,led3被點亮了。

如果需要led2也點亮,則start.s中修改:

ldr r0, =gpl2dat

movr1, #0x1

strr1, [r0]

iTOP 4412開發板刷ubuntu

此文章講解了itop 4412開發板上刷寫ubuntu的流程。android qt 最小linux系統的刷寫也可以此為參考,但這三個系統更建議使用fastboot刷寫方式,速度更快,更簡單。準備工具 2g以上大小tf卡乙個 ubuntu虛擬機器 其他linux虛擬機器也可 乙個 超級終端 secur...

itop4412學習記錄

01 核心開發基礎 02 drivermodule 03 menuconfig kconfig 04 makefile編譯 05 匯流排 裝置 驅動註冊流程 06 裝置註冊 07 驅動註冊 08 生成裝置節點 09 編寫簡單的應用程式呼叫驅動 13 gpio初始化 14 led驅動 gpio 15 ...

itop 4412之裝置註冊

1.裝置註冊需要用到結構體 2.裝置註冊流程 ifdef config led ctl struct platform device s3c device led ctl endif config led ctl bool enable led config default y help enabl...