Tiny4412邏輯程式--點亮LED燈
阿新 • • 發佈:2018-12-30
一、測試平臺
開發板:Tiny4412SDK標準版(TinySDK 1506)
交叉編譯工具:arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz
Linux環境:Ubuntu-17.10.1
#二、點亮LED1
##2.1、使用匯編點亮LED1
led資料夾中包含led.S、led.lds、Makefile三個檔案。其中led.S中程式如下所示:
.text .globl _start _start: /* * set GPM4_0 as output */ ldr r0, =0x110002E0 // GPM4CON的地址是0x110002E0 ldr r1, [r0] // 先讀出原值 bic r1, r1, #0xf // 清除bit[3:0] orr r1, r1, #1 // 設定bit[3:0]為0b0001 str r1, [r0] // 寫入GPM4CON /* * set GPM4_0 as High */ ldr r0, =0x110002E4 // GPM4DAT的地址是0x110002E4 ldr r1, [r0] // 先讀出原值 bic r1, r1, #1 // 清除bit[0]為0 str r1, [r0] // 寫入GPM4_0 halt_loop: b halt_loop
led.lds連線檔案如下所示:
SECTIONS {
. = 0x02023400;
.text : { *(.text) }
.rodata ALIGN(4) : {*(.rodata)}
.data ALIGN(4) : { *(.data) }
.bss ALIGN(4) : { *(.bss)*(COMMON) }
}
Makefile檔案如下所示:
led.bin : led.S arm-linux-gcc -c -o led.o led.S arm-linux-ld -Tled.lds -N led.o -o led.elf arm-linux-objcopy -O binary -S led.elf led.bin arm-linux-objdump -D -m arm led.elf > led.dis clean: rm -f *.dis *.bin *.elf *.o
然後把led檔案上傳到Ubuntu-17.10.1的 /work 目錄下,然後 make 生成可執行檔案。但是 make 出現如下圖所示錯誤:
解決方法[1]如下所示:
sudo apt-get install lib32z1
##2.2、程式燒寫
(1)程式碼燒寫過程
cd sd_fuse
gcc -o mkbl2 V310-EVT1-mkbl2.c #生成mkbl2工具
sudo ./fast_fuse.sh /dev/sdb #燒寫檔案
#參考文獻
[1] https://www.cnblogs.com/LoTGu/p/5902941.html
https://blog.csdn.net/weicao1990/article/details/76242249