本文主要是介绍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的地址是0x110002E0ldr r1, [r0] // 先读出原值bic r1, r1, #0xf // 清除bit[3:0]orr r1, r1, #1 // 设置bit[3:0]为0b0001str r1, [r0] // 写入GPM4CON/** set GPM4_0 as High*/ldr r0, =0x110002E4 // GPM4DAT的地址是0x110002E4ldr r1, [r0] // 先读出原值bic r1, r1, #1 // 清除bit[0]为0str r1, [r0] // 写入GPM4_0halt_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.Sarm-linux-gcc -c -o led.o led.Sarm-linux-ld -Tled.lds -N led.o -o led.elfarm-linux-objcopy -O binary -S led.elf led.binarm-linux-objdump -D -m arm led.elf > led.disclean: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_fusegcc -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
这篇关于Tiny4412逻辑程序--点亮LED灯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!