基于 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 @toc 本文主要是对 浅析 Keil 中的 sct 文件 一文做进一步的补充和说明。 一、加载域和执行域镜像的各个域在加载时是被放置在系统存储器中的。 在执行镜像之前,可能必须将一些域移动到它们的执行地址,并创建 ZI 输出节。例如,初始化的 RW 数据可能必须从 ROM 中的加载地址复制到 RAM 中的执行地址。为了可以灵活的处理这种情况,ARM 定义了如下两个视图: Load view 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 文件剖析 @toc 在单片机开发中,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
STM32 map 文件浅析 [toc] 一、概述.map 文件是编译器链接时生成的一个文件,它主要包含了交叉链接信息。通过 .map 文件,我们可以知道整个工程的函数调用关系、FLASH 和 RAM 占用情况及其详细汇总信息,能具体到单个源文件(.c/.s)的占用情况,根据这些信息,我们可以对代码进行优化。.map 文件可以分为以下 5 个组成部分: 程序段交叉引用关系(Section Cross References) 2024-09-24 嵌入式 > STM32 #嵌入式 #STM32