【ARM】eclipse 中创建汇编工程

eclipse 中创建汇编工程

  • [一. 安装编译器和相关工具](#一. 安装编译器和相关工具)
  • [二. 创建工程](#二. 创建工程)
  • [三. 创建各类文件](#三. 创建各类文件)
    • [1. 创建 Makefile 文件](#1. 创建 Makefile 文件)
    • [2. 创建链接脚本文件](#2. 创建链接脚本文件)
    • [3. 创建汇编文件](#3. 创建汇编文件)
    • [4. 编译程序](#4. 编译程序)
    • [5. 创建连接仿真器的文件](#5. 创建连接仿真器的文件)
  • [四. 在开发板运行,并用eclipse中调试](#四. 在开发板运行,并用eclipse中调试)
    • [1. 连接开发板,打开调试串口](#1. 连接开发板,打开调试串口)
    • [2. 运行openOCD](#2. 运行openOCD)
    • [3. 配置eclipse,调试程序](#3. 配置eclipse,调试程序)
      • [3.1. 设置elf文件](#3.1. 设置elf文件)
      • [3.2. 配置编译器](#3.2. 配置编译器)
      • [3.3. 设置初始化指令](#3.3. 设置初始化指令)
      • [3.4. 点击调试,会看到如下界面](#3.4. 点击调试,会看到如下界面)
      • [3.5. 单步调试程序,查看寄存器变化](#3.5. 单步调试程序,查看寄存器变化)

参考:Cortex-A7 开发环境搭建

本文的目的在于帮你在主机上搭建一套完整的 Cortex-A7 交叉开发环境,从工具链安装到仿真、烧录与调试,为后续驱动与系统开发打下基础。假定你已学会了 Linux 基础命令、嵌入式交叉编译概念。

本文解决的问题有:

  • 选择并配置适合 Cortex-A7 的交叉编译工具链
  • 搭建适用于 Linux/Windows/macOS 的主机开发环境
  • 构建常见软件栈:U-BootLinux 内核、根文件系统(BusyBox/Buildroot
  • 使用 QEMU 进行 Cortex-A7 模拟调试
  • 向真实开发板烧录镜像并进行串口/JTAG 调试
  • 常见问题定位与环境复现方法

一. 安装编译器和相关工具

复制代码
总体流程拆解
 1.搭建主机依赖环境
 2.安装交叉工具链并配置环境变量
 3.获取并编译三大件:U-Boot、Linux、根文件系统
 4.在 QEMU 上验证基础环境
 5.连接真实硬件完成烧录与调试
 6.建立自动化脚本与版本管理

二. 创建工程

三. 创建各类文件

1. 创建 Makefile 文件

内容如下:

bash 复制代码
SHELL = C:\Windows\System32\cmd.exe
CROSS_COMPILE := arm-none-eabi-
NAME := h_project
CPPFLAGS := -nostdlib -nostdinc -g
CFLAGS := -Wall -O2 -fno-builtin -g
LD := $(CROSS_COMPILE)ld
CC := $(CROSS_COMPILE)gcc
OBJCOPY := $(CROSS_COMPILE)objcopy
OBJDUMP := $(CROSS_COMPILE)objdump
export CC LD OBJCOPY OBJDUMP CPPFLAGS CFLAGS
objs := start.o
all: $(objs)
 $(LD) -T map.lds -o $(NAME).elf $^
 $(OBJCOPY) -O binary $(NAME).elf $(NAME).bin
 $(OBJDUMP) -D $(NAME).elf > $(NAME).dis
%.o: %.S
 $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< -c
%.o: %.c
 $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< -c
clean:
 rm *.o *.elf *.bin *.dis

2. 创建链接脚本文件

内容如下:

bash 复制代码
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
ENTRY(_start)
OUTPUT_ARCH(arm)
SECTIONS
{
 . = 0xc2000040;
 . = ALIGN(4);
 .text :
 {
 start.o(.text)
 *(.text)
 }
 . = ALIGN(4);
 .rodata :
 {
 *(.rodata)
 }
 . = ALIGN(4);
 .data :
 {
 *(.data)
 }
 . = ALIGN(4);
 .bss :
 {
 *(.bss)
 }
}

3. 创建汇编文件

内容如下:

bash 复制代码
.text
.global _start
_start:
 mov r0, #0x9
 nop
mov r1, #0x7
 bl add_sub
stop:
 b stop
add_sub:
 add r2, r0,r1
 sub r3, r0,r1
 mul r4, r0,r1
 mov pc,lr

4. 编译程序

编译:

生成一下文件:

5. 创建连接仿真器的文件

内容如下:

bash 复制代码
target remote localhost:3334
monitor halt

四. 在开发板运行,并用eclipse中调试

1. 连接开发板,打开调试串口

2. 运行openOCD

输入下面命令:

bash 复制代码
 .\openocd.exe -s .\scripts\ -f board\stm32mp15x_fsmp1a.cfg

3. 配置eclipse,调试程序

3.1. 设置elf文件

3.2. 配置编译器

3.3. 设置初始化指令

3.4. 点击调试,会看到如下界面

3.5. 单步调试程序,查看寄存器变化

以上,欢迎有从事同行业的电子信息工程、互联网通信、嵌入式开发的朋友共同探讨与提问,我可以提供实战演示或模板库。希望内容能够对你产生帮助!

相关推荐
二哈喇子!7 小时前
Eclipse中导入外部jar包
java·eclipse·jar
方圆工作室7 小时前
【C语言图形学】用*号绘制完美圆的三种算法详解与实现【AI】
c语言·开发语言·算法
Q_21932764557 小时前
基于单片机的无线通信报警系统
单片机·嵌入式硬件
布丁oo8 小时前
ESP32智能天气时钟:温湿度气压全掌控
单片机·嵌入式硬件
蝎蟹居8 小时前
GBT 4706.1-2024逐句解读系列(26) 第7.6条款:正确使用符号标识
人工智能·单片机·嵌入式硬件·物联网·安全
水果里面有苹果8 小时前
3-ATSAMV71Q21-ASF
嵌入式硬件
自由的好好干活9 小时前
UBI镜像文件打包与编辑
linux·嵌入式硬件
F1331689295710 小时前
5G矿山车载监控终端山河矿卡定位监控终端
stm32·单片机·嵌入式硬件·5g·51单片机·硬件工程
小郭团队10 小时前
1_5_五段式SVPWM (传统算法反正切+DPWM1)算法理论与 MATLAB 实现详解
人工智能·嵌入式硬件·算法·dsp开发
vsropy10 小时前
keil5无法注释中文
stm32·单片机