S3C6410学习笔记:Windows下搭建ARM11裸机开发环境

描述

之前写过文章,描述在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的版本号:

ARM

ARM

2、MSYS

MSYS是一个小型的GNU环境,包括基本的bash,make等等。对裸机程序通过Makefile文件进行管理与编译,并且通过MSYS的make来执行Makefile文件的内容。

将msys/1.0/bin目录下的路径添加到系统的环境变量中,然后打开控制台输入:make -v,查看环境变量配置是否成功,如果环境变量配置成功了,那么会正确的显示make的版本号:

ARM

ARM

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程序:

ARM

将编译好的led.bin文件通过友善之臂提供的MiniTools下载到ARM11板子中,就可以看到核心板的4个小灯在闪烁了。

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分