4412 裸板程序led2

来源:互联网 发布:电脑解压软件 编辑:程序博客网 时间:2024/05/16 18:14

目的:同时点亮4个LED

1、原理

原理图如上一个所示。

相关寄存器

配置寄存器:

数据寄存器


2、程序

三个文件led2.S、led2.lds、Makefile

led2.S

.text
.global _mystart
_mystart:
/*设置GPM4_0为输出管脚*/
ldr r0, =0x110002E0 //GPM4CON地址
ldr r1, [r0]        //取地址内容
bic r1, r1, #0xff00 //清除8-15位 (bic r1, r1, #0xffff这样写编译器报错)
bic r1, r1, #0xff   //清除0-7位 
orr r1, r1, #0x1100  //设置为输出,即设置8,12为1
orr r1, r1, #0x11    //设置为输出,即设置1,4为1
str r1, [r0]         //把r1写入GPM4CON

/*设置GPM4_0数据为高电平*/
ldr r0, =0x110002E4   //GPM4DAT地址
ldr r1, [r0]          //取地址内容  
bic r1, r1, #0xFF     //清除0-7位 
str r1, [r0]          //把r1写入GPM4DAT

loop:                     //停在这里
b loop


led2.lds

SECTIONS {
    . = 0x02023400;
    .text          :   { *(.text) }
    .rodata ALIGN(4) : {*(.rodata*)} 
    .data ALIGN(4) : { *(.data*) }
    .bss ALIGN(4)  : { *(.bss)  *(COMMON) }
}


Makefile

led2.bin : led2.S
arm-linux-gnueabihf-gcc -c -o led2.o led2.S
arm-linux-gnueabihf-ld -Tled2.lds -N led2.o -o led2.elf
arm-linux-gnueabihf-objcopy -O binary -S led2.elf led2.bin
arm-linux-gnueabihf-objdump -D -m arm  led2.elf > led2.dis
clean:
rm -f *.dis *.bin *.elf *.o


3、编译下载

用cuteftp把述三个文件放入Ubutun中临时文件夹中编译,还要把tools文件夹放入到led2目录下如下图所示

book@book-virtual-machine:~/wang/led2$ ls 
led2.lds  led2.S  Makefile  tools
book@book-virtual-machine:~/wang/led2$ make 
arm-linux-gnueabihf-gcc -c -o led2.o led2.S
arm-linux-gnueabihf-ld -Tled2.lds -N led2.o -o led2.elf
arm-linux-gnueabihf-objcopy -O binary -S led2.elf led2.bin
arm-linux-gnueabihf-objdump -D -m arm  led2.elf > led2.dis
book@book-virtual-machine:~/wang/led2$ ls 
led2.bin  led2.dis  led2.elf  led2.lds  led2.o  led2.S  Makefile  tools
book@book-virtual-machine:~/wang/led2$ cd tools 
book@book-virtual-machine:~/wang/led2/tools$ ls 
E4412_N.bl1.bin  my_mkbl2  my_mktools.c  sd_fusing.sh  sd_fusing.sh.bak
book@book-virtual-machine:~/wang/led2/tools$ sudo ./sd_fusing.sh  /dev/sdc ../led2.bin
[sudo] password for book: 
/dev/sdc reader is identified.
---------------------------------------
BL1 fusing
16+0 records in
16+0 records out
8192 bytes (8.2 kB) copied, 0.895351 s, 9.1 kB/s
---------------------------------------
BL2 fusing
28+0 records in
28+0 records out
14336 bytes (14 kB) copied, 1.09519 s, 13.1 kB/s
---------------------------------------
source file image is fused successfully.
Eject SD card and insert it to Exynos 4412 board again.
book@book-virtual-machine:~/wang/led2/tools$ 

此时已经下载完成,拔开读卡器插入开发板,即可看到LED1-LED4亮;

0 0
原创粉丝点击