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

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

相关推荐
VekiSon12 分钟前
Linux内核驱动——杂项设备驱动与内核模块编译
linux·c语言·arm开发·嵌入式硬件
2的n次方_1 小时前
CANN Ascend C 编程语言深度解析:异构并行架构、显式存储层级与指令级精细化控制机制
c语言·开发语言·架构
AI+程序员在路上1 小时前
Nand Flash与EMMC区别及ARM开发板中的应用对比
arm开发
vx_Biye_Design1 小时前
【关注可免费领取源码】房屋出租系统的设计与实现--毕设附源码40805
java·spring boot·spring·spring cloud·servlet·eclipse·课程设计
来自晴朗的明天1 小时前
14、光耦隔离电路(EL3H7)
单片机·嵌入式硬件·硬件工程
G***技1 小时前
杰和IB3-272:以低功耗高性能打造新一代工业智能交互核心
单片机·嵌入式硬件·物联网
_F_y1 小时前
C语言重点知识总结(含KMP详细讲解)
c语言·开发语言
郝学胜-神的一滴2 小时前
深入解析C/S模型下的TCP通信流程:从握手到挥手的技术之旅
linux·服务器·c语言·网络·网络协议·tcp/ip
czhaii2 小时前
STC AI8052U单片机特点
单片机
MAR-Sky3 小时前
keil5中数据的不同定义和单片机(以stc8为例)里的对应关系(idata,xdata,data,code)
单片机·嵌入式硬件