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

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

相关推荐
眺望电子-ARM嵌入式1 小时前
技术笔记 | RK3588平台RGA驱动与API版本升级指南
嵌入式硬件
workflower1 小时前
软件需求变更
嵌入式硬件·压力测试·团队开发·需求分析·规格说明书
degen_1 小时前
编写其他UEFI application:读取CPUID
c语言·笔记·bios
say_fall1 小时前
C语言编程实战:每日一题:用队列实现栈
c语言·开发语言·redis
Geek__19921 小时前
GD32 蓝牙模块调试
c语言·单片机·蓝牙
moringlightyn2 小时前
Linux---基础IO(文件理解 文件接口使用 文件系统层面)
linux·运维·服务器·c语言·笔记·系统·文件
Miuney_MAX10 小时前
【单片机】之HC32F460中断向量选择
单片机·嵌入式硬件
了一梨10 小时前
在Ubuntu中配置适配泰山派的交叉编译环境
linux·c语言·ubuntu
CQ_YM10 小时前
数据结构之单向链表
c语言·数据结构·链表