理解内存管理机制
概念
• 假设计算机的内存就像一个大仓库,这个仓库被人为地划分成几个固定大小的区域,每个区域就是一个分区。比如把100MB的内存划分成5个分区,每个分区20MB。当一个程序需要运行时,操作系统会根据程序的大小,把它分配到一个合适的分区中。如果程序大小是15MB,就把它放到一个20MB的分区里。
• 这种方式的优点是实现简单。就像仓库管理员只需要按照固定的格子来存放货物,不需要复杂的计算和调整。缺点是内存利用率低。因为分区大小是固定的,如果程序大小只有10MB,却分配了20MB的分区,那么剩下的10MB就浪费了。而且如果程序太大,超过了分区的大小,就无法运行。
应用场景
• 在早期的计算机系统中
STM32 Customer BootLoader 刷新项目 (二) 方案介绍
本项目设计了一款基于STM32的二级BootLoader,旨在为客户自定义启动过程提供软件更新和操作后门。BootLoader架构分为三层:ST自带Boot(SB)、客户定制化Boot(CB)和应用层(APP)。CB通过USART与MCU通信,支持多种指令如版本查询、擦除扇区、写入数据等,实现灵活的软件管理和更新功能。Flash空间分配为Sector 0-1用于CB,Sector 2-11用于APP。整个方案详细介绍了内存布局、跳转逻辑及支持的指令集,确保系统稳定运行并支持未来的扩展需求。
STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建
本文介绍了基于STM32的Customer BootLoader刷新项目的第一部分:使用STM32CubeMX搭建UART串口通信工程。项目采用正点原子探索者v2开发板,通过USB串口与上位机通信,实现固件刷新功能。主要内容包括:
1. 硬件原理图介绍:详细描述了开发板的串口连接方式及电路图。
2. STM32CubeMX工程搭建:从创建新工程、配置系统时钟、USART串口设置到生成代码,一步步详细说明。
3. 代码编写:展示了如何使用HAL库实现串口接收和发送数据,并提供了main.c的完整代码。
4. 工程下载和调试:编译并下载工程到开发板,通过串口调试助手验证通信功能。