1. 程式人生 > >Tiny4412邏輯程式--點亮LED燈

Tiny4412邏輯程式--點亮LED燈

一、測試平臺

開發板: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

[2] https://blog.csdn.net/eshing/article/details/37111207

http://www.techbulo.com/1313.html