虛擬機器環境:oracle vm virtualbox
linux系統:ubuntu_14.04.6
交叉編譯工具:[100ask分享的所有檔案](
100ask分享的所有檔案 > 002_jz2440資料光碟_20180516(免費) > 資料光碟 > a盤 > tools.zip > arm-linux-gcc-4.3.2.tar.bz2
gcc-3.4.5-glibc-2.3.6/bin
第一步:檢視原理圖
輸出低電平點亮led燈
輸出高電平熄滅led燈
第二步:檢視晶元手冊
相應引腳配置為輸出
輸出低電平
第三步:編寫程式
led_on.s:
.text
.global _start
_start:
ldr r0,=0x56000050
mov r1,#0x00001000
str r1,[r0]
ldr r0,=0x56000054
mov r1,#0x00000000
str r1,[r0]
main_loop:
b main_loop
第四步:編寫makefile
makefile:
arm_linux_***=/home/xlbtlmy/desktop/arm_linux/gcc-3.4.5-glibc-2.3.6/bin
cc=$(arm_linux_***)/arm-linux-gcc
ld=$(arm_linux_***)/arm-linux-ld
objcopy=$(arm_linux_***)/arm-linux-objcopy
objdump=$(arm_linux_***)/arm-linux-objdump
target=$(opt)
src=$(shell ls *.s)
objs=$(patsubst %.s,%.o,$(src))
bin=$(target).bin
elf=$(target).elf
dis=$(target).dis
$(bin):$(objs)
$(ld) -ttext 0x00000000 $^ -o $(elf)
$(objcopy) -o binary -s $(elf) $(bin)
$(objdump) -d -m arm $(elf) > $(dis)
%.o:%.s
$(cc) -c -o $@ $<
.phony:clean
clean:
rm -f *.o *.bin *.elf *.dis
make opt=led_on
第五步:燒錄執行
eop.bat:
@echo off
:jtag(0:openjtag 1:donglejtag 2:wiggler)
set jtag=0
:cpu(0:s3c2410 1:s3c2440 2:s3c6410)
set cpu=1
:flash(0:nand 1:nor)
set flash=0
:access(0:write 1:read)
set access=0
:offset()
set offset=0
:file()
set file=led_on.bin
oflash %jtag% %cpu% %flash% %access% %offset% %file%
pause
第五步:觀察實驗現象
左邊的led燈被點亮
測試:
.text
注釋掉之後編譯
無提示資訊
.global _start
注釋掉之後編譯
提示「warning: cannot find entry symbol _start; defaulting to 00000000」
s3c2440裸機串列埠UART
串列埠收發資料 115200,8n1。每一位的時間是t 1 115200。傳輸乙個位元組需要10位 包括起始位1位,資料位8位,停止位1位,需要的時間是t 10 115200。每秒傳輸的的位元組數 1 t 115200 10 11520byte。回環模式 一發出資料就立刻收到,用於測試。main.c...
S3C2440裸機 時鐘
目錄 1.s3c2440的時鐘體系 1.1.s3c2440結構框圖 1.2 s3c2440時鐘樹 1.3 s3c2440上電順序 2.暫存器配置 2.1clkdivn暫存器 2.2mpllcon暫存器 2.3設定cpu為非同步模式 3.程式設計 4.實驗 從上面的結構圖可以看出,s3c2440主要分...
s3c2440裸機 ADC程式設計
模數轉換器即a d轉換器,或簡稱adc,通常是指乙個將模擬訊號轉變為數碼訊號的電子元件。如圖,是把可變電阻上的電壓值變換的模擬訊號通過adc轉換,輸出數碼訊號。對於數碼訊號我們需要得到它的2個屬性 1.轉換精度 用多少位來儲存這個資料 假如是10 bit 那麼最大值0b111111111對應3.3v...