之前写过文章,描述在Linux环境下搭建ARM11的开发环境,有需要的可以在ARM11标签中进行查找。
目前在学习ARM11的裸机编程,不想用虚拟机跑Linux来进行开发,因为平时用的笔记本电脑的配置跑虚拟机还是有点困难(我的台式机跑虚拟机还是没问题的),现在讲述一下如何在Windows中搭建ARM11的裸机开发环境,方便没法使用虚拟机的朋友也能够进行ARM11的开发。
系统环境:Windows 7 64位;
ARM11:Tiny6410;
1、交叉编译工具 - GNU Tools ARM Embedded
使用这个交叉编译工具就可以将程序编译成能在ARM11上运行的文件。这里将GNU Tools ARM Embedded的bin目录添加到系统的环境变量中,然后打开控制台输入:arm-none-eabi-gcc -v,查看环境变量配置是否成功,如果环境变量配置成功了,那么会正确的显示arm-none-eabi-gcc的版本号:
2、MSYS
MSYS是一个小型的GNU环境,包括基本的bash,make等等。对裸机程序通过Makefile文件进行管理与编译,并且通过MSYS的make来执行Makefile文件的内容。
将msys/1.0/bin目录下的路径添加到系统的环境变量中,然后打开控制台输入:make -v,查看环境变量配置是否成功,如果环境变量配置成功了,那么会正确的显示make的版本号:
3、编译程序
start.S文件的内容如下:
/* *By:Ailson Jack *Date:2019.04.29 *Des:汇编点亮LED <> *LED1~LED4对应GPK4~GPK7 *Blog:www.only2fire.com */ .global _start _start: // 把外设的基地址告诉CPU ldr r0, =0x70000000 //对于6410来说,内存(0x00000000~0x60000000),外设(0x70000000-0x7fffffff) orr r0, r0, #0x13 //外设大小:256M mcr p15,0,r0,c15,c2,4 //把r0的值(包括了外设基地址+外设大小)告诉cpu // 关看门狗,防止程序不断重启 ldr r0, =0x7E004000 //看门狗控制寄存器 mov r1, #0 str r1, [r0] // 设置GPKCON0 ldr r1, =0x7F008800 ldr r0, =0x11110000 //GPK4,GPK5,GPK6,GPK7为输出模式 str r0, [r1] mov r2, #0x1000 led_blink: // 设置GPKDAT,使GPK_4/5/6/7引脚输出低电平,LED亮 ldr r1, =0x7F008808 mov r0, #0 str r0, [r1] // 延时 bl delay // 设置GPKDAT,使GPK_4/5/6/7引脚输出高电平,LED灭 ldr r1, =0x7F008808 mov r0, #0xf0 str r0, [r1] // 延时 bl delay sub r2, r2, #1 cmp r2,#0 bne led_blink halt: b halt delay: mov r0, #0x1000000 delay_loop: cmp r0, #0 sub r0, r0, #1 bne delay_loop mov pc, lr /*子程序返回*/
Makefile文件的内容如下:
#By:Ailson Jack #Date:2019.05.01 #Des:Makefile文件 #Blog:www.only2fire.com #备注:$@--目标文件, $^--所有的依赖文件, $<--第一个依赖文件 PREFIX = arm-none-eabi- #PREFIX = arm-linux- CC = $(PREFIX)gcc LD = $(PREFIX)ld OBJCOPY = $(PREFIX)objcopy OBJDUMP = $(PREFIX)objdump led.bin: start.o $(LD) -Ttext 0x50000000 -o led.elf $^ $(OBJCOPY) -O binary led.elf led.bin $(OBJDUMP) -D led.elf > led_elf.dis %.o : %.S $(CC) -c -g $< -o $@ %.o : %.c $(CC) -c -g $< -o $@ clean: rm -rf *.o *.elf *.bin *.dis
在LED程序文件中,打开控制终端,然后执行make命令来编译LED程序:
将编译好的led.bin文件通过友善之臂提供的MiniTools下载到ARM11板子中,就可以看到核心板的4个小灯在闪烁了。
全部0条评论
快来发表一下你的评论吧 !