ZC·Shou
深入研究,分享最纯粹的技术干货
展开
-
ARM 之十八 详解 MDK、IAR、Eclipse 的 C 标准库及重定向输入输出
在嵌入式系统开发中,我们通常会将标准输入输出作为一个控制台功能添加到我的嵌入式应用程序中。这样我就有了一个命令行接口,可以检查和修改目标系统。我们最常用的方法就是将标准输入输出进行重定向,今天就来重点学习一下!原创 2024-09-23 08:00:00 · 403 阅读 · 0 评论 -
ARM 之十七 详解 MDK、IAR、Eclipse 的 Debug 配置、FLASH、RAM 烧写原理及自定义
嵌入式下的调试都需要将程序烧写到目标芯片中,而芯片一般都支持从多种存储介质启动,由于存储介质的物理区别,烧写到不同的介质所使用策略往往差别很大。目前,几大主流的 IDE 都有自己的 FLASH 和 RAM 的烧写策略,今天就俩重点学习一下!。原创 2024-02-26 09:00:00 · 1166 阅读 · 0 评论 -
ARM 之十六 详解 CMSIS 版本变迁、各组件使用示例
目前,CMSIS 已经发展到了第六版,其目录结构也发生了重大的变化。在不断发展中,很多原来 CMSIS 的组件被不断独立出去,并因此成立了很多开源社区,今天就来学习一下!由于 CMSIS 已经包含了相当丰富的文档,因此,本文重点学习版本之间的变化以及一些实际使用示例。原创 2024-02-18 13:14:47 · 1242 阅读 · 0 评论 -
ARM 之十五 扫盲 ARM 架构、指令集、ARM IP、授权方式
ARM 架构的 MCU 用了好多年,对于 ARM 架构也或多或少的有了一些了解。之前都是遇到啥问题直接去官网找对应的手册,一直没有系统的总结一下。是时候总结一下,好进行下一步学习了!ARM 文档 在了解 ARM 相关的各种概念之前,先来简单说一下 ARM 官方提供的文档的组织结构。其实,国外这些大公司对于文档的组织都是比较规范的,例如,ST 的 参考手册、数据手册、应用手册等等,ARM 文档也基本如此,分为参考手册、用户指南。这么划分的目的就是为了让各部分更加独立。简单来说,参考手册仅介绍原理,用原创 2021-09-27 09:06:21 · 27500 阅读 · 3 评论 -
ARM 之十四 ARMv9 架构前瞻
在 2021 年的 Arm Vision Day 上(2021年 3 月 30,对应的北京时间应该是 2021 年 3 月 31 日),ARM 展示了其最新的架构:ARMv9。ARMv9 被 ARM 冠以未来 10 年愿景的称号,并将其称为 10 年以来最重要的创新。声称可以将 ARM 生态系统中超 1000 家合作伙伴的直接带入 2030 年。过去的 10 年是 ARMv8 的时代,未来的 10 年则是 ARMv9 的天下。 目前,ARM 并没有放出太多关于 ARMv9 的资料。目前从官网能找到原创 2021-04-07 13:10:23 · 2939 阅读 · 1 评论 -
ARM 之十三 armlink(Keil) 分散加载机制详解 及 分散加载文件的编写
在看这篇文章之前需要对 ARM ELF 文件有一定的了解。了解什么是域(Region)、节(Section,也称为节区)、段(Segment)、镜像(Image)、镜像文件(Image File)等概念需要对编译、连接过程有一定的了解ARM ELF 镜像的结构 ARM ELF 镜像由节(Section),域(Region)和段(Segment)组成,并且每个链接阶段都有一个不同的镜像视图。ELF object file view (linker input) ELF 对象文件视图由输入原创 2021-03-17 07:59:03 · 7998 阅读 · 10 评论 -
ARM 之十二 Cortex-M 内核异常处理、异常定位方法、在线调试、Keil MDK-ARM 的使用
在 ARM 平台上开发,开发工具的选择其实并不是很多,基本可以分为三大类:Keil MDK-ARM、IAR for ARM、GCC for ARM 系,其中用的比较多的基本就是 Keil MDK-ARM、IAR for ARM 这俩。而 GCC for ARM 系的 IDE 有很多,但是他们统一都是使用 GCC for ARM 作为编译器构建套件,IDE 都是各家自定义的。例如,ST 有、SEGGER 有 Embedded Studio。构建(Build) 从源文件到可执行文件,需要经过预处理、编原创 2021-02-25 18:45:27 · 4336 阅读 · 4 评论 -
ARM 之十一__weak 和 __attribute__((weak)) 关键字的使用
今天在使用 Keil (主要是 armcc 编译器)编译代码的时候遇到了有 __weak 关键字的函数不起作用的问题,甚是奇怪。之前对于 __weak 关键字一直是一个简单的认知:编译器自动使用没有 __weak 的同名函数(如果有的话)替换有 __weak 关键字的同名函数,__weak 函数可以没有定义,且编译器不会报错! 至于这个参数详细的使用细节一直是一知半解,今天借此机会,以 GCC 作为对比,来学习一下 ARM 中的 __weak 关键字的具体使用!来源 使用过 GCC 以及有 lin原创 2020-06-17 19:53:19 · 11201 阅读 · 4 评论 -
ARM 之十 ARMCC(Keil) map 文件(映射文件)详解
map 文件是什么 map 文件对应的中文名应该是映射文件,用来展示(映射)项目构建的链接阶段的细节。通常包含程序的全局符号、交叉引用和内存映射等等信息。目前,大多数编译套件(主要是其中的链接器)都可以生成 Map 文件。常见的 gcc、VC、IAR 都可以输出 map 文件。 在 ARM 的官方文档中,并没有找到有关于 ARM 内核的 map 文件的介绍文档。不过倒是有个 C51 生成的...原创 2019-08-24 15:05:57 · 11216 阅读 · 2 评论 -
ARM 之九 Cortex-M/R 内核 Keil(ARMCC) 程序启动流程
内核规范 ARM Cortex-M/R 内核的复位启动过程也被称为复位序列(Reset sequence)。ARM Cortex-M/R内核的复位启动过程与其他大部分CPU不同,也与之前的ARM架构(ARM920T、ARM7TDMI等)不相同。大部分CPU复位后都是从 0x00000000 处取得第一条指令开始运行的,然而在ARM Cortex-M/R内核中并不是这样的。其复位序列为:从地...原创 2019-05-05 14:18:42 · 11047 阅读 · 3 评论 -
ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍
比较目前,针对于 ARM 平台的主流编译器主要有以下三者:比较ARMCCIARGCC for ARM命令行工具IDE中,独立提供仅随其IDE发布,不独立提供独立提供开发商ARMIARGNU(目前由ARM维护)支持的平台Windows、LinuxWindowsWindows、Linux、Mac配套 IDEKeil MDK、Develo...原创 2019-04-27 12:04:10 · 60035 阅读 · 6 评论 -
ARM 之八 Cortex-M/R 内核 IAR 程序启动流程
在前面的文章《ARM 之 Cortex-M/R 内核启动过程 / 程序启动流程(基于ARMCC)》中已经介绍过了 Cortex-M/R 内核相关内容。这里基于 IAR 的启动流程与之前的并没有太大区别,因为这是 Cortex-M/R 内核规定好的。无论是 ARMCC 还是 IAR 都需要遵循内核的规定。区别主要在于初始化的个函数接口不同!嵌入式应用程序的执行,分为三个阶段:初始化阶段执...原创 2019-05-04 19:19:11 · 7772 阅读 · 3 评论 -
ARM 之六 Cortex-M 内核中断/异常系统、中断优先级/嵌套 详解
问题最近在使用STM32F3芯片的时候,遇到这样一个问题:如果外部中断来的频率足够快,上一个中断没有处理完成,新来的中断如何处理? 在调试时,发现有中断有 挂起、激活、失能等状态,考虑这些状态都是干啥用的呢!他们是Cortex-M核所共有的,因此这里不针对与具体用的STM32 MCU,直接上升到 Cortex-M内核来了解一下!简介 中断(也称为“异常”)是微控制器一个很常见的特性。中断一......原创 2018-12-16 18:19:31 · 12680 阅读 · 4 评论 -
ARM 之五 发展史及各时期内核(ARM1 ~ ARM11 / Cortex)介绍
很久很久以前 1978年12月5日,物理学家赫尔曼·豪泽(Hermann Hauser)和工程师 Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地市场供应电子设备。1979年,CPU公司改名为Acorn计算机公司。据说,还有一名创始人叫 Andy Hopper。Andy Hopper是Acorn的研究主管,但为了顾及...原创 2018-11-23 15:18:22 · 17121 阅读 · 2 评论 -
ARM 之四 各集成开发环境(IDE)说明(Keil、RVDS、ADS、DS-5、MDK)
吐槽 最近,ARM官网进行了较大的改版,原来很多老工具可以免费下载(付费使用),但是改版后需要有购买凭证才可以下载!部分旧工具(补丁)的具体下载地址为https://silver.arm.com,最新的工具在官网还是非常容易下载的。难不成被日本收购有关??下文中也给出了目前我找到的部分工具的下载地址。 某些工具在ARM官网直接搜不到下载地址,目前的一个可用的下载技巧是,在Keil的官...原创 2018-08-19 13:05:44 · 28326 阅读 · 3 评论 -
ARM 之三 Keil uVision4、uVision5、C51 共存、AC5 编译器安装、礦ision 修改
问题 因学习的需要,电脑会同时安装MDK-ARM v4.x(Keil uVision4) 、 MDK-ARM v5.x(Keil uVision5)、C51(Keil uVision5)。但是由于 Keil uVision5 是直接由 Keil uVision4 升级而来,ARM公司在升级上不知道到咋考虑的(Keil 5 文件名竟然还是Keil 4),如果同时安装时,后安装的Keil版本会把...原创 2018-08-04 12:02:23 · 15529 阅读 · 2 评论 -
ARM 之二 Keil 项目/生成的各种文件类型(.AXF、.D、.crf、.exf)说明
在使用Keil时,Keil项目或者编译输出,会产生很多扩展名的文件,了解各文件的作用对于深入研究编译有很大帮助。例如,.map文件就是个非常有必要在项目开发阶段实时查看,并且深入研究的文档。同样,其他文件将是深入研究时有效的参考。 随着Keil的升级,各种文件在不同版本可能有区别。部分文件在高版本中已经弃用,或者被新的文件代替。Project Files.OPT: Projec...原创 2018-08-02 10:33:10 · 19286 阅读 · 1 评论 -
ARM 之一 详解 ELF 文件、镜像(Image)文件、可执行文件、对象文件
ELF 文件规范 ELF(Executable and Linking Format)是一个二进制文件规范。用于定义不同类型的对象文件(Object files)中都放了什么东西、以及都以什么样的格式去放这些东西。 现在流行的可执行文件格式 (Executable File Format),主要是 Windows 下的 PE(Portable Executable)和 Linux 的 EL...原创 2019-08-24 08:27:35 · 16646 阅读 · 9 评论