版权声明:本文为博主原创文章,未经博主允许不得转载。 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