Yuxxxxxxxxxx's Blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于

Cortex-M3/M4/M7 芯片 Fault 分析原理与实战

[toc] 一、简介 1、异常类型 HardFault(硬件错误)是一类在嵌入式系统开发中较为常见的系统异常,优先级仅低于复位和 NMI(不可屏蔽中断)。当系统运行过程中遇到了某些错误时程序就会跳转至 HardFault_Handler 函数中,引发程序故障进而影响程序的正常运行。 一般而言,我们遇到的错误有如下几种: HardFault(硬件故障):默认异常,由于异常处理过程中的错误或由
2024-10-07
嵌入式 > STM32
#嵌入式 #STM32

基于 STM32F407 的 SPI Flash下载算法

[toc] 一、概述 本文将介绍如何使用 MDK 创建 STM32F407 的 SPI Flash 下载算法。 其中,SPI Flash 芯片使用的是 W25Q128,其相关操作源码可以参考 STM32 通过 SPI 驱动 W25Q128,本文所使用的驱动 SPI Flash 的 API 和里面是一样的。 单片机的 Flash 下载算法是一个 FLM 文件,FLM 通过编译链接得到,其内部
2024-10-06
嵌入式 > STM32
#嵌入式 #STM32

分散加载文件 scatter files

1、将符号引入到程序中 1.1 引入到 C/C++ 1.2 引入到汇编 2、域相关的符号 2.1 执行域符号 Image$$ 2.2 执行域符号 Load$$ 2.3 加载域符号 Load$$LR$$ 2.4 节相关的符号 2.5 镜像符号 2.6 输入节符号 本文主要是对 浅析 Keil 中的 sct 文件 一文做进一步的补充和说明。 一、加载域和执行域 镜像的各个域在加载
2024-10-02
嵌入式 > STM32
#嵌入式 #STM32

ROM、RAM 和 Flash 的区别

[toc] 在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)。外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD 等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带
2024-10-02
嵌入式
#嵌入式

基于 STM32F407 的串口 IAP

[toc] IAP(In Application Programming,在应用编程)是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写。简单来说,就是开发者代码出 bug 了或者添加新功能了,能够利用预留的通讯接口,对代码进行升级。 UART、SPI、IIC、USB 等等,当然还有 WIFI、4G、Bluetooth 等无线通讯手段,都可以作为 IAP 升级的方式,今天主
2024-10-01
嵌入式 > STM32
#嵌入式 #STM32

hex 文件和 bin 文件剖析

在单片机开发中,hex 文件和 bin 文件是非常常见的两种烧写文件格式。比如在 Keil 中,编译好程序后,点击 Download 就可以把 hex 文件烧录到板子上。 而有时候在我们实现 IAP 时,有需要生成 bin 文件格式,再将其传输到单片机中,通过 Bootloader 将 bin 接收移到相应地址。 哪这两个文件有什么区别?为什么有时候用 bin,而有时候用 hex?本文将针对这
2024-09-30
嵌入式
#嵌入式

浅析 Keil 中的 sct 文件

[toc] 一、程序的存储与运行 1、存储 程序编译后,应用程序中所有具有同一性质的数据(包括代码)被归到一个域,程序在存储或运行的时候,不同的域会呈现不同的状态,这些域的意义如下: Code:即代码域,它指的是编译器生成的机器指令,这些内容被存储到 ROM 区。 RO-data:Read Only data,即只读数据域,它指程序中用到的只读数据,这些数据被存储在 ROM 区,因而程序不
2024-09-29
嵌入式 > STM32
#嵌入式 #STM32

FreeRTOS 内存管理源码解析

[toc] FreeRTOS 提供了 5 种不同的内存管理策略以应对不同的应用场景,本章将对这 5 种不同的内存管理策略的实现进行分析。 我参考的源码是:FreeRTOS-Kernel-10.4.3-LTS-Patch-3\portable\MemMang,该路径下记录了 heap_1.c、heap_2.c、heap_3.c、heap_4.c、heap_5.c,讲解会从这 5 个文件的源码入手
2024-09-28
嵌入式 > FreeRTOS
#内存管理 #嵌入式 #FreeRTOS

Git 基本操作

[toc] 一、基本概念 Git 是一种分布式版本控制系统,用于跟踪和管理代码的变更。它最初是由 Linus Torvalds 开发的,用于管理 Linux 内核的源代码。 Git 在软件开发中被广泛应用,尤其是在团队协作和开源项目中。通过使用 Git,开发人员可以更好地管理代码、协同工作、追踪问题和版本发布等。 1、工作区域 Git 管理项目时,文件流转的三个工作区域:Git 的工作目录
2024-09-26
工具 > Git
#Git

STM32 时钟树(基于 STM32F407)

[toc] 一、概述 STM32 内部也是由多种多样的电路模块组合在一起实现的。当一个电路越复杂,在达到正确的输出结果前,它可能因为延时会有一些短暂的中间状态,而这些中间状态有时会导致输出结果会有一个短暂的错误,这叫做电路中的“毛刺现象”,如果电路需要运行得足够快,那么这些错误状态会被其它电路作为输入采样,最终形成一系列的系统错误。为了解决这个问题,在单片机系统中,设计时以时序电路控制替代纯粹
2024-09-25
嵌入式 > STM32
#嵌入式 #STM32
1…678910…14

搜索

Hexo Fluid