Cortex-M系列,Cortex-A系列,汇编启动文件的区别

Cortex-M系列:可以不自己写汇编启动代码,因为芯片厂商提供了完整的启动文件,但理解汇编对调试和优化很重要。

Cortex-A系列:通常需要懂汇编启动原理,但实际开发中常使用现成的bootloader(如U-Boot),学习时必须自己写才能理解启动过程。

特性

ARM Cortex-M系列(如STM32)ARM Cortex-A系列(如i.MX6ULL)
典型应用单片机、实时控制应用处理器、Linux系统
启动复杂度相对简单非常复杂
是否需要汇编通常需要一点通常需要
为什么需要汇编启动文件设置堆栈、向量表设置异常向量、MMU、Cache等

1. Cortex-M系列(如STM32)

通常的启动流程:
/* startup_stm32fxxx.s (STM32标准启动文件) */ .section .isr_vector /* 中断向量表 */ .word _estack /* 栈顶地址 */ .word Reset_Handler /* 复位处理函数 */ .word NMI_Handler /* NMI处理函数 */ .word HardFault_Handler /* ... 其他中断向量 */ .section .text Reset_Handler: /* 1. 设置堆栈指针 */ ldr sp, =_estack /* 2. 初始化.data段 */ bl SystemInit /* 跳到C语言的SystemInit() */ /* 3. 跳转到main */ bl main
如STM32,为什么觉得"不用写":
  • 芯片厂商提供现成的启动文件(如startup_stm32f103xe.s

  • IDE自动包含这个文件

  • 你可以不用修改直接使用

  • 但本质上还是有汇编文件


2. Cortex-A系列(如i.MX 6ULL)

需要更多汇编,

因为 更复杂的启动任务:

/* start.S (U-Boot或裸机程序) */ .globl _start _start: /* 1. 设置异常向量表 */ b reset /* 复位异常 */ b undefined_instruction b software_interrupt b prefetch_abort b data_abort b not_used b irq b fiq reset: /* 2. 设置处理器模式 */ mrs r0, cpsr bic r0, r0, #0x1f orr r0, r0, #0x13 /* 进入SVC模式 */ msr cpsr, r0 /* 3. 设置堆栈 */ ldr sp, =0x87800000 /* 4. 清除BSS段 */ bl clear_bss /* 5. 跳转到C代码 */ bl main
Cortex-A系列 需要汇编启动文件的原因:
  1. 异常向量表必须由汇编设置(固定地址)

  2. 处理器模式切换(SVC、IRQ等)

  3. MMU/Cache初始化(Linux需要)

  4. 多核启动(A系列常有多核)

Cortex-M启动(厂商提供 汇编启动文件):

// main.c可以直接写: #include "stm32f1xx.h" int main(void) { HAL_Init(); // 厂商库初始化 SystemClock_Config(); // 时钟配置 // 用户的代码... while(1); } // ↑ 看起来没有汇编,其实在链接时包含了startup_stm32f1xx.s

Cortex-A启动(自己编写 汇编启动文件):

// 必须先写start.S,然后才能写: int main(void) { // 这里才能正常用C语言 uart_init(); printf("Hello i.MX6ULL\n"); return 0; }

Cortex-M 与 Cortex-A 技术根源差异:

Cortex-M的设计理念:

  • 简化,让单片机开发更简单

  • 硬件自动完成更多(如向量表重定位)

  • 统一的存储映射(代码、数据都在同一地址空间)

Cortex-A的设计理念:

  • 灵活,适应复杂应用

  • 需要软件控制更多(如MMU虚拟内存)

  • 复杂的存储层次(L1/L2 Cache、DDR、Flash)

现代开发的实际状况:

对于Cortex-M:

1. 使用CubeMX生成代码 → 包含startup.s 2. 或者使用Arduino/PlatformIO → 隐藏了底层 3. 大多数情况下不用碰汇编 # 但高级应用(RTOS、性能优化)仍需懂汇编

对于Cortex-A:

1. 使用Bootloader(U-Boot)→ 已有完整的start.S 2. 运行Linux → 内核有自己的head.S 3. 裸机开发 → 必须自己写或借鉴启动代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1195721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中央音乐学院联合研究:视频自动配乐还卡点

中央音乐学院联合研究:视频自动配乐还卡点论文标题: Video Echoed in Music: Semantic, Temporal, and Rhythmic Alignment for Video-to-Music Generation 作者团队: 中央音乐学院、北京大学、阿里巴巴等 发布时间: …

Django项目,sqlite版本太低问题

报错 命令:python manage.py runerver 0.0.0.0:8001 原因:django版本更新,需要使用更高版本的sqlite,但是sqlite在python中被内置,无法直接升级卸载 Traceback (most recent call last): File "/home/project/new…

基于Python的大学生就业信息推荐系统的设计与实现-计算机毕业设计源码+无LW文档

基于Python的大学生就业信息推荐系统的设计与实现 摘要:本文详细阐述了基于Python的大学生就业信息推荐系统的设计与实现过程。随着高校扩招及就业形势变化,大学生就业信息获取与匹配面临挑战。该系统利用Python相关技术,具备用户管理、招聘信…

IVT 映像向量表, DCD 设备配置数据

一、IVT(Image Vector Table,映像向量表)作用:ROM的"导航地图",告诉ROM:程序入口在哪(entry)硬件配置在哪(指向DCD)镜像信息在哪(指向B…

企业网盘收费吗?企业网盘收费标准

根据《中国企业数字化转型白皮书》的数据显示,超过87%的企业正在积极采用云计算和企业网盘等数字化工具,帮助优化业务流程,提高团队协作效率,并增强数据安全性。 在这个信息化深度渗透各行各业的时代,企业网盘早已不只…

2026年国产冻干机厂家权威推荐榜:大型冻干机/实验室冻干机/真空冻干机/中试型冻干机/国产药用冻干机/真空冷冻冻干机选择指南

2026年国产冻干机厂家权威推荐榜:大型冻干机/实验室冻干机/真空冻干机/中试型冻干机/国产药用冻干机/真空冷冻冻干机选择指南行业背景与市场概况冷冻干燥技术(冻干技术)作为现代生物医药、食品科学、材料科学等领域…

ollama

ollama.exe下载 https://modelscope.cn/models/Lixiang/ollama-release ollama run 在资源管理器地址栏输入 %USERPROFILE%\.ollama。 新建 config.json 文件,内容如下: { "registry": { "mirrors": { "r…

深圳金鑫磁材|深圳坡莫合金磁芯:如何实现“磁导率”百万级跃升

在5G通信、新能源汽车、高精度医疗设备等尖端科技领域,磁性材料作为能量转换与信号传输的核心载体,其性能直接决定了设备的效率与精度。深圳作为中国高端制造业的标杆城市,依托完整的产业链配套与持续的技术创新,已成为全球坡莫合…

2026最新招投标系统、采购管理系统深水区:TOP5平台全景解析

随着“人工智能 + 采购”行动与信创战略的深度融合,2026年采购数字化市场呈现 “技术深耕、场景细分、合规升级” 三大特征。企业选型已从“功能堆砌”转向“全链路适配 + 长期运维保障”,结合100+政企实践案例调研、…

什么网盘能够解决超大文件传输难题?

一、超大文件传输为何成为难题?现代社会的数字化程度从未像今天这样深刻影响我们的生活和工作。先做一个简单的思维试验:每次需要传输视频文件、设计素材、数据库备份或者超大文档时,你是不是曾经历过以下这些问题?电子邮件容量有…

WPF 用户控件(UserControl)继承

在WPF项目中,你是否遇到过希望编写一个UserControl继承自另一个UserControl的场景? 比如下面:DerivedUserControl继承自BaseUserControl UserControl继承另一个UserControl 步骤: 1、新建一个UserControl命名为 Ba…

2026年贵州装修设计公司TOP5推荐:三修设计工作室领衔口碑榜单

引言 随着贵州城镇化进程加快与居民生活品质提升,家装行业正从“满足功能”迈向“追求体验”的新阶段。消费者不再仅关注价格,更看重设计审美、施工质量、服务透明度与长期信任关系。在此背景下,一批深耕本地、注重…

Windows系统下Git换行符问题的完整解决方案

这个问题是换行符差异导致的,通常是 CRLF(\r\n) 和 LF(\n) 在 Windows 和 Unix/Linux 系统之间的差异。 如果你使用的是小乌龟,通过修改小乌龟的设置即可解决问题,亲测有效。 常见解决方案&a…

基于Django的在线考试与评估系统设计与实现-计算机毕业设计源码+无LW文档

基于Django的在线考试与评估系统设计与实现 摘要:本文详细阐述了基于Django的在线考试与评估系统的设计与实现过程。随着教育信息化的快速发展,传统考试模式面临诸多挑战,在线考试与评估系统应运而生。该系统采用Django框架,具备学…

HBuilder 下载安装教程(2026 最新版):完整安装流程与常见问题整理

本文记录了 HBuilder 2026 最新版的下载安装全过程,包含下载安装路径规范、详细安装步骤说明,以及安装过程中常见问题的解决方案。适合前端初学者及需要重新部署开发环境的用户参考。一、HBuilder 简介 HBuilder 是 …

国内开发者福音!GPT-5.2 API 高效稳定接入指南,轻松摆脱网络困扰

2025 年末,GPT-5.2 带着 Instant / Thinking / Pro 三种形态和更高强度推理模式(如 xhigh)登场,能力让人眼馋;但很多国内团队一上生产就被现实“泼冷水”——直连不稳定、长上下文更容易断、延迟忽高忽低,一旦并…

孕期哺乳期保湿修复产品怎么选?2026医用级6大0添加十个品牌推荐:急救修复首选

作为从业15年的皮肤科医生,每天接诊大量孕产期女性和敏感肌患者,常被问到:“孕期该用什么保湿修复产品?”市面上所谓“孕妇可用”产品五花八门,但多数含酒精、香精、激素等刺激成分,不仅无法修复屏障,反而会加重…

别慌!AI 没抢走程序员的饭碗,反而让他们赚得更多了

别慌!AI 没抢走程序员的饭碗,反而让他们赚得更多了前几天写了篇《程序员真的要被AI取代了?》,后台炸出几百条留言,有人说 “现在写 CRUD 都用 Copilot,感觉自己快失业了”,也有人晒出账单:“靠 AI 提效,这个月…

大学生 / 转行党必看!网安碎片化学习攻略,摸鱼通勤 30 分钟学完一个知识点

“早八挤地铁刷短视频,晚上躺床上刷论坛,月底发现网安书才翻了 10 页”—— 这是大学生小杨的学习现状;“上班摸鱼怕被老板抓,下班累到不想动,NISP 教材买了 3 个月还在第一章”—— 这是转行党老王的困境。 网安学习…

2026年当下行业在职硕士/在职博士/港澳硕博/留学硕博备考推荐几家

文章摘要 本文旨在为寻求学历提升与职业突破的在职精英,深度剖析2026年留学硕博备考市场的核心趋势与关键选择维度。通过对课程适配性、服务专业性、资源网络及学习模式灵活性等多维度的综合评估,我们精选出六家表现…