【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. 单步调试程序,查看寄存器变化

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

相关推荐
为何创造硅基生物36 分钟前
C语言 结构体内存对齐规则(通俗易懂版)
c语言·开发语言
仰泳之鹅1 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
jolimark2 小时前
C语言自学攻略:小白入门三步走
c语言·编程入门·学习路线·实践项目·自学攻略
于小猿Sup2 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y3 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
社交怪人3 小时前
【算平均分】信息学奥赛一本通C语言解法(题号2071)
c语言·开发语言
chao1898444 小时前
STM32 HAL库驱动AT24C02 EEPROM例程
stm32·单片机·嵌入式硬件
卢锡荣4 小时前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
AI科技星4 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
浩浩测试一下5 小时前
汇编中的JCC指令 (逆向分析)
汇编·逆向·标志位·jcc指令·跳转指令·标志位寄存器