目的:实现点亮一个LED
开发工具:ubutun,Ultraedit,Tiny4412super4412sdk,cuteftp
1、原理
实际上对应的时GPM0-3,不知道是不是写错了;
只用设置配置寄存器(设置输入输出)和数据寄存器(设置高电平还是低电平)即可控制LED
2、编程部分
需要三个文件led1.S、led1.lds、lMakefile
led1.S
.text
.global _mystart
_mystart:
/*设置GPM4_0为输出管脚*/
ldr r0, =0x110002E0 //把配置寄存器的地址赋值给r0
ldr r1, [r0] //把r0地址的内容赋值给r1
mov r1, #0x01 //
str r1, [r0]
/*设置GPM4_0数据为高电平*/
ldr r0, =0x110002E4
ldr r1, [r0]
mov r1, #0x01
str r1, [r0]
loop:
b loop
led1.lds
SECTIONS {
. = 0x02023400;
.text : { *(.text) }
.rodata ALIGN(4) : {*(.rodata*)}
.data ALIGN(4) : { *(.data*) }
.bss ALIGN(4) : { *(.bss) *(COMMON) }
}
Makefile
led1.bin : led1.S
arm-linux-gnueabihf-gcc -c -o led1.o led1.S
arm-linux-gnueabihf-ld -Tled1.lds -N led1.o -o led1.elf
arm-linux-gnueabihf-objcopy -O binary -S led1.elf led1.bin
arm-linux-gnueabihf-objdump -D -m arm led1.elf > led1.dis
clean:
rm -f *.dis *.bin *.elf *.o
3、编译下载
用cuteftp把述三个文件放入Ubutun中临时文件夹中编译,还要把tools文件夹放入到led1目录下如下图所示
book@book-virtual-machine:~/wang/led1$ ls
led1.lds led1.S Makefile tools
book@book-virtual-machine:~/wang/led1$ make
arm-linux-gnueabihf-gcc -c -o led1.o led1.S
arm-linux-gnueabihf-ld -Tled1.lds -N led1.o -o led1.elf
arm-linux-gnueabihf-objcopy -O binary -S led1.elf led1.bin
arm-linux-gnueabihf-objdump -D -m arm led1.elf > led1.dis
book@book-virtual-machine:~/wang/led1$ ls
led1.bin led1.dis led1.elf led1.lds led1.o led1.S Makefile tools
book@book-virtual-machine:~/wang/led1$ cd tools
book@book-virtual-machine:~/wang/led1/tools$ ls
E4412_N.bl1.bin my_mkbl2 my_mktools.c sd_fusing.sh sd_fusing.sh.bak
book@book-virtual-machine:~/wang/led1/tools$ sudo ./sd_fusing.sh /dev/sdc ../led1.bin
[sudo] password for book:
/dev/sdc is NOT identified.
./sd_fusing.sh: 23: exit: Illegal number: -1
book@book-virtual-machine:~/wang/led1/tools$
插入读卡器
book@book-virtual-machine:~/wang/led1/tools$ sudo ./sd_fusing.sh /dev/sdc ../led1.bin
/dev/sdc reader is identified.
---------------------------------------
BL1 fusing
16+0 records in
16+0 records out
8192 bytes (8.2 kB) copied, 0.29909 s, 27.4 kB/s
---------------------------------------
BL2 fusing
28+0 records in
28+0 records out
14336 bytes (14 kB) copied, 0.946545 s, 15.1 kB/s
---------------------------------------
source file image is fused successfully.
Eject SD card and insert it to Exynos 4412 board again.
此时已经下载完成,拔开读卡器插入开发板,即可看到LED1亮;