Tiny4412逻辑程序--点亮LED灯

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010011236/article/details/81317806

一、测试平台

开发板: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

猜你喜欢

转载自blog.csdn.net/u010011236/article/details/81317806