From a294070a9e686d9f78b1853179084f271a3d93ef Mon Sep 17 00:00:00 2001 From: Natsume1710 <162396185+Natsume1710@users.noreply.github.com> Date: Tue, 17 Jun 2025 14:52:27 +0800 Subject: [PATCH] =?UTF-8?q?Delete=2002-=E5=B5=8C=E5=85=A5=E5=BC=8F?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E5=9F=BA=E7=A1=80=E7=9F=A5=E8=AF=86/?= =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E5=B1=82=EF=BC=9A=E5=B5=8C=E5=85=A5=E5=BC=8F?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E5=9F=BA=E7=A1=80=E7=9F=A5=E8=AF=86.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../第二层:嵌入式系统基础知识.md | 143 ------------------ 1 file changed, 143 deletions(-) delete mode 100644 02-嵌入式系统基础知识/第二层:嵌入式系统基础知识.md diff --git a/02-嵌入式系统基础知识/第二层:嵌入式系统基础知识.md b/02-嵌入式系统基础知识/第二层:嵌入式系统基础知识.md deleted file mode 100644 index 570f3f1..0000000 --- a/02-嵌入式系统基础知识/第二层:嵌入式系统基础知识.md +++ /dev/null @@ -1,143 +0,0 @@ -# 🟢 第二层:嵌入式系统基础知识 - ---- - -## 🔹 嵌入式系统概览 - -### 📌 嵌入式系统定义与特点 - -- **定义**:嵌入式系统是“专用计算系统”,嵌入在某个设备中用于执行特定任务。 -- **特点**: - - 资源受限(低功耗、内存小) - - 实时性要求高 - - 高可靠性与稳定性 - - 通常运行裸机或 RTOS - ---- - -### 📌 系统构成(MCU、存储器、传感器、外设) - -| 模块 | 功能说明 | -|------------|--------------------------------------| -| MCU | 核心控制器,如 ARM Cortex-M | -| Flash/SRAM | 存储程序代码与运行数据 | -| 外设 | GPIO、UART、SPI、I2C、ADC、PWM 等 | -| 传感器 | 温湿度、光照、姿态等 | -| 通信模块 | WiFi、BLE、LoRa、CAN、NB-IoT 等 | -| 电源管理 | 电池、LDO、DC-DC,支持低功耗模式 | - -``` -+--------------------------+ -| MCU | -| +----------------------+ | -| | Flash / RAM | | -| | GPIO / UART / ADC | | -| +----------------------+ | -+-----------|--------------+ - | - +------+------+ - | 外设 / 传感器 | - +-------------+ -``` - ---- - -### 📌 主流 MCU 简介 - -| MCU 芯片 | 特点说明 | -|------------|----------------------------------------------| -| STM32 | Cortex-M 系列,丰富外设,社区活跃 | -| ESP32 | 双核 WiFi+BLE SoC,适合 IoT 项目 | -| NRF52 | BLE 专用,低功耗,常用于可穿戴设备 | -| NXP LPC | 工业级应用广泛,抗干扰能力强 | -| RISC-V MCU | 开源架构,初期发展中,适合学习/极简产品 | - ---- - -## 🔹 架构与启动流程 - -### 📌 Cortex-M 内核结构 - -- 32 位精简指令集(Thumb 指令集) -- 内建 NVIC(中断控制器) -- 支持两种堆栈:MSP(主栈)和 PSP(进程栈) -- 寄存器组:R0-R15、LR、PC、xPSR - ---- - -### 📌 启动文件 Startup.s - -- 用汇编语言书写的启动文件,完成向量表定义、初始化堆栈、调用 `main()`。 - -```asm -Reset_Handler: - LDR R0, =_estack ; 设置栈顶地址 - MOV SP, R0 - BL SystemInit ; 时钟初始化 - BL main ; 跳转到主函数 -``` - ---- - -### 📌 启动流程简要 - -1. MCU 上电 → 执行 `Reset_Handler` -2. 设置 SP(栈顶) -3. 初始化 `.data` 和 `.bss` 段 -4. 调用 `SystemInit()`(通常配置系统时钟) -5. 跳转执行用户 `main()` 函数 - ---- - -## 🔹 编译器与链接器 - -### 📌 常用嵌入式工具链 - -| 工具链 | 说明 | -|------------|------------------------------| -| Keil MDK | 商用 IDE,支持 ARM 编译器 | -| IAR EWARM | 商用 IDE,优化强,支持调试 | -| GCC (arm-none-eabi) | 开源编译器,跨平台,支持 CLI | - ---- - -### 📌 链接脚本 (.ld) 示例 - -```ld -MEMORY -{ - FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K - RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K -} - -SECTIONS -{ - .text : { *(.text) } > FLASH - .data : { *(.data) } > RAM AT > FLASH - .bss : { *(.bss) } > RAM -} -``` - -- `.text`:代码段 -- `.data`:已初始化的全局变量 -- `.bss`:未初始化变量 - ---- - -### 📌 存储器布局图(STM32 示例) - -| 区域 | 地址范围 | 描述 | -|-------------|------------------|----------------------------| -| ROM(Flash)| `0x08000000` 起 | 存储代码和常量 | -| RAM | `0x20000000` 起 | 存储运行期变量 | -| 外设映射区 | `0x40000000` 起 | GPIO、UART、TIMER 寄存器 | -| 系统控制区 | `0xE0000000` 起 | NVIC、SysTick、MPU 等 | - ---- - -> ✅ 后续建议补充: -> - 芯片数据手册阅读方法 -> - vector table 的定制与重定向 -> - ROM 启动 vs RAM 启动差异 - ----