From 0267178819fdb0d935e2ede38b5b782cedec0b52 Mon Sep 17 00:00:00 2001 From: ywh <2227158009@qq.com> Date: Fri, 31 Jul 2026 15:16:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=860x14=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E7=A0=81=EF=BC=8C=E7=94=A8=E4=BA=8E=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E9=80=9A=E4=BF=A1=E5=8E=86=E5=8F=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Core/Src/main.c | 37 +- .../IAR存储空间占用查看方法.md | 286 ++++++ .../my_document/Modbus 0x14收发ADU示例.md | 336 +++++++ Document/my_document/modbus学习文档.md | 2 - Document/my_document/uCOS-II移植说明.md | 935 ------------------ Document/my_document/测试大纲.docx | Bin 273557 -> 272882 bytes Document/my_document/测试报告.docx | Bin 1643788 -> 1646674 bytes Document/my_document/设计方案书.docx | Bin 171445 -> 171650 bytes Document/my_document/需求规格书.docx | Bin 31960 -> 32358 bytes Modbus/Inc/modbus_rtu_slave.h | 2 +- Modbus/Src/modbus_rtu_slave.c | 70 ++ 11 files changed, 700 insertions(+), 968 deletions(-) create mode 100644 Document/my_document/IAR存储空间占用查看方法.md create mode 100644 Document/my_document/Modbus 0x14收发ADU示例.md delete mode 100644 Document/my_document/uCOS-II移植说明.md diff --git a/Core/Src/main.c b/Core/Src/main.c index 80c3e63..77e31aa 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -75,8 +75,8 @@ static void AppTaskStart(void *p_arg) (void)p_arg; /* - * F4作为Modbus RTU从站,触摸屏作为主站。 - * 初始化函数会立即启动USART1的DMA空闲接收。 + * F4作为Modbus RTU从站,触摸屏作为主站 + * 初始化函数会立即启动USART1的DMA空闲接收 */ ModbusSlaveInit(&huart1, MODBUS_SLAVE_DEFAULT_ADDRESS); ModbusRetainedRegistersLoad(); @@ -84,10 +84,6 @@ static void AppTaskStart(void *p_arg) { /* * 维护几个供触摸屏首次联调读取的保持寄存器: - * 4x地址0:器件标识0xF407; - * 4x地址1:系统运行秒数; - * 4x地址2:收到的有效Modbus帧数; - * 4x地址10:触摸屏读写测试值,由协议层保存。 */ (void)ModbusSlaveSetHoldingRegister(//OS时钟 HMI_REG_UPTIME_SECONDS, @@ -111,7 +107,7 @@ static void AppTaskStart(void *p_arg) 6, (uint16_t)ModbusSlaveStatistics.illegalValueCount); -HistorySaveToRegisters(); + HistorySaveToRegisters(); @@ -121,8 +117,7 @@ HistorySaveToRegisters(); /* - * 协议解析和应答在任务上下文完成,中断只接收一帧并设置标志。 - * 每1ms轮询一次,不在串口中断中执行耗时的CRC和寄存器操作。 + * 每1ms轮询一次, */ ModbusSlavePoll(); ModbusRetainedRegistersPoll(); @@ -170,27 +165,12 @@ int main(void) /* USER CODE BEGIN 2 */ - /* uC/OS-II接口通常用返回错误码的方式报告执行结果。 */ INT8U os_err; - /* - * 初始化内核的任务表、就绪表、事件控制块等内部数据。 - * OSInit()只完成初始化,此时任务调度尚未开始。 - */ + OSInit(); - /* - * 创建应用启动任务,各参数依次为: - * 1. 任务入口函数; - * 2. 传给任务的参数(当前不需要,所以为0); - * 3. 初始栈顶地址; - * 4. 任务优先级,数值越小优先级越高; - * 5. 任务ID,本工程暂时与优先级取相同值; - * 6. 栈底地址; - * 7. 栈容量,单位是OS_STK元素而不是字节; - * 8. 用户扩展指针(当前不用); - * 9. 创建选项:允许栈检查并在创建时清零任务栈。 - */ + os_err = OSTaskCreateExt(AppTaskStart, 0, &AppTaskStartStk[APP_TASK_START_STK_SIZE - 1u], @@ -207,10 +187,7 @@ int main(void) Error_Handler(); } - /* - * 启动抢占式调度,内核会运行当前最高优先级的就绪任务。 - * OSStart()成功后不会返回,后面的裸机while循环不会再被执行。 - */ + OSStart(); /* USER CODE END 2 */ diff --git a/Document/my_document/IAR存储空间占用查看方法.md b/Document/my_document/IAR存储空间占用查看方法.md new file mode 100644 index 0000000..2454f4a --- /dev/null +++ b/Document/my_document/IAR存储空间占用查看方法.md @@ -0,0 +1,286 @@ +# IAR 中 Flash、SRAM 和 CCMRAM 占用的查看方法 + +## 1. 从哪里查看 + +IAR 编译、链接完成后,会生成 `.map` 文件。该文件记录了程序代码、常量、全局变量、静态变量、栈以及自定义段的地址和大小。 + +本工程的 Map 文件位于: + +```text +EWARM\Modbus\List\Modbus.map +``` + +如果工程没有生成 Map 文件,可以在 IAR 中依次打开: + +```text +Project → Options → Linker → List +``` + +勾选生成 linker map file 的选项,然后重新执行 `Rebuild All`。 + +查看本工程占用情况时,打开 `Modbus.map`,主要搜索以下三个位置: + +```text +PLACEMENT SUMMARY +Unused ranges +MODULE SUMMARY +``` + +## 2. 本工程的存储区域 + +在 Map 文件的 `PLACEMENT SUMMARY` 中可以看到: + +```text +"P1": place in [from 0x08000000 to 0x080FFFFF] { ro }; + +"P2": place in [from 0x20000000 to 0x2001FFFF] { + rw, block CSTACK, block HEAP }; + +"P3": place in [from 0x10000000 to 0x1000FFFF] { + section .ccmram }; +``` + +各区域含义如下: + +| 区域 | 地址范围 | 容量 | 主要内容 | +|---|---|---:|---| +| P1 | `0x08000000~0x080FFFFF` | 1 MiB | Flash 中的程序代码、常量和变量初始值 | +| P2 | `0x20000000~0x2001FFFF` | 128 KiB | 普通 SRAM 中的全局变量、静态变量和栈 | +| P3 | `0x10000000~0x1000FFFF` | 64 KiB | CCMRAM 中的变量 | + +说明:这里的 `KiB` 按 `1 KiB = 1024 Byte` 计算。 + +## 3. Flash 占用怎么看 + +### 3.1 查看方法 + +在 Map 文件的 `MODULE SUMMARY` 末尾可以看到: + +```text +Grand Total: 33'398 751 163'114 + ro code ro data rw data +``` + +其中: + +- `ro code`:只读程序代码,存放在 Flash; +- `ro data`:只读数据、常量和初始化数据,存放在 Flash; +- `rw data`:运行时可读写数据,主要占用 RAM。 + +本工程的 Flash 占用为: + +```text +Flash占用 = ro code + ro data + = 33,398 + 751 + = 34,149 Byte + ≈ 33.35 KiB +``` + +Flash 总容量为 1 MiB,因此占用率为: + +```text +34,149 ÷ 1,048,576 × 100% +≈ 3.26% +``` + +### 3.2 通过地址验证 + +Map 文件中还可以看到: + +```text +.intvec:0x188 Byte +"P1": 0x83DD Byte +``` + +因此: + +```text +0x188 + 0x83DD = 0x8565 +``` + +即 Flash 已经从 `0x08000000` 使用到 `0x08008564`,下一个空闲地址是 `0x08008565`。 + +`Unused ranges` 中也会显示: + +```text +0x08008565~0x080FFFFF,剩余 0xF7A9B Byte +``` + +## 4. 普通 SRAM 占用怎么看 + +普通 SRAM 对应 `P2`,地址范围是: + +```text +0x20000000~0x2001FFFF +``` + +在 `PLACEMENT SUMMARY` 中,P2 被分为三部分: + +```text +"P2", part 1 of 3: 0xFC +"P2", part 2 of 3: 0x18DD0 +"P2", part 3 of 3: 0x400 +``` + +其中: + +- `part 1`:已经初始化的全局变量和静态变量; +- `part 2`:未初始化或清零的全局变量和静态变量; +- `part 3`:`CSTACK`,即主栈,本工程为 `0x400 = 1024 Byte`。 + +按照链接后占用的地址范围计算: + +```text +普通SRAM占用空间 += 0xFC + 0x18DD0 + 0x400 += 103,116 Byte +≈ 100.70 KiB +``` + +占用率约为: + +```text +103,116 ÷ 131,072 × 100% +≈ 78.67% +``` + +Map 文件的 `Unused ranges` 中显示普通 SRAM 剩余: + +```text +0x20018ECC~0x20018ECF:4 Byte +0x200192D0~0x2001FFFF:0x6D30 Byte +``` + +因此普通 SRAM 总剩余空间为: + +```text +4 + 0x6D30 += 27,956 Byte +≈ 27.30 KiB +``` + +### 4.1 为什么有时会相差几字节 + +`MODULE SUMMARY` 统计的是各变量和数据段本身的大小;`PLACEMENT SUMMARY` 还可能包含为了满足地址对齐而留下的填充空间。 + +本工程普通 SRAM 中的有效读写数据约为 `103,114 Byte`,而链接后实际占用的地址空间为 `103,116 Byte`,两者相差的 `2 Byte` 属于段间对齐产生的空隙。 + +判断变量本身有多大时看 `MODULE SUMMARY`;判断 RAM 是否还能放下新数据时,应结合 `Unused ranges` 查看真正剩余的连续空间。 + +## 5. CCMRAM 占用怎么看 + +CCMRAM 对应 `P3`,地址范围是: + +```text +0x10000000~0x1000FFFF +``` + +Map 文件中显示: + +```text +"P3": 0xEA60 +.ccmram 0x10000000~0x1000EA5F +``` + +因此 CCMRAM 占用为: + +```text +0xEA60 = 60,000 Byte + ≈ 58.59 KiB +``` + +CCMRAM 总容量为 64 KiB,因此占用率为: + +```text +60,000 ÷ 65,536 × 100% +≈ 91.55% +``` + +`Unused ranges` 中显示: + +```text +0x1000EA60~0x1000FFFF:0x15A0 Byte +``` + +所以 CCMRAM 剩余: + +```text +0x15A0 = 5,536 Byte + ≈ 5.41 KiB +``` + +本工程的 CCMRAM 占用已经超过 90%,后续增加 `.ccmram` 数组时需要特别注意。 + +## 6. RAM 合计怎么看 + +RAM 合计应包含: + +```text +RAM合计 = 普通SRAM中的读写数据 + CCMRAM中的读写数据 +``` + +在 `MODULE SUMMARY` 中,本工程的 `Grand Total rw data` 为: + +```text +rw data = 163,114 Byte + ≈ 159.29 KiB +``` + +芯片可用的这两块 RAM 总容量为: + +```text +128 KiB普通SRAM + 64 KiB CCMRAM += 192 KiB += 196,608 Byte +``` + +因此 RAM 合计占用率约为: + +```text +163,114 ÷ 196,608 × 100% +≈ 82.96% +``` + +需要注意,RAM 合计只能说明总体使用量。普通 SRAM 和 CCMRAM 地址不连续,不能因为两者合计还有空间,就认为某个大数组一定能放下。放置新数组前仍要分别检查 P2 和 P3 的剩余连续空间。 + +## 7. 本工程当前占用汇总 + +| 存储区 | 已使用 | 总容量 | 占用率 | 剩余空间 | +|---|---:|---:|---:|---:| +| Flash | 34,149 Byte(33.35 KiB) | 1 MiB | 3.26% | 约 990.65 KiB | +| 普通 SRAM | 约 103,116 Byte(100.70 KiB) | 128 KiB | 78.67% | 约 27.30 KiB | +| CCMRAM | 60,000 Byte(58.59 KiB) | 64 KiB | 91.55% | 约 5.41 KiB | +| RAM 合计 | 163,114 Byte(159.29 KiB) | 192 KiB | 82.96% | 约 32.71 KiB | + +以上数值只对应当前一次编译结果。代码、数组大小、任务栈或链接配置发生变化后,需要重新编译并再次查看 Map 文件。 + +## 8. 如何查某个变量放在哪里 + +在 Map 文件中按 `Ctrl+F` 搜索变量名,可以查看它所属的段、起始地址和大小。 + +可以通过地址判断变量所在区域: + +| 地址开头 | 所在区域 | +|---|---| +| `0x080...` | Flash | +| `0x200...` | 普通 SRAM | +| `0x100...` | CCMRAM | + +例如,本工程的 CCMRAM 数组会显示在: + +```text +.ccmram 0x10000000 ... +``` + +这说明该数组已经被链接到 CCMRAM,而不是普通 SRAM。 + +## 9. 每次编译后的推荐检查步骤 + +1. 执行 `Rebuild All`,确保 Map 文件是最新的。 +2. 搜索 `Grand Total`,查看 `ro code`、`ro data` 和 `rw data`。 +3. 用 `ro code + ro data` 计算 Flash 占用。 +4. 搜索 `"P2"`,查看普通 SRAM 各部分的占用。 +5. 搜索 `"P3"`,查看 CCMRAM 占用。 +6. 搜索 `Unused ranges`,确认各存储区真正剩余的连续空间。 +7. 新增大数组后搜索数组名,确认它被链接到了预期的 RAM 区域。 + diff --git a/Document/my_document/Modbus 0x14收发ADU示例.md b/Document/my_document/Modbus 0x14收发ADU示例.md new file mode 100644 index 0000000..3375f5a --- /dev/null +++ b/Document/my_document/Modbus 0x14收发ADU示例.md @@ -0,0 +1,336 @@ +# Modbus RTU 0x14 收发 ADU 示例 + +## 1. 示例条件 + +本示例使用功能码 `0x14` 读取文件记录,按照当前工程只处理一个子请求的格式编写。 + +```text +从站地址: 1 +引用类型: 0x06 +文件号: 0 +起始记录号: 0 +读取数量: 2个寄存器 +第一个寄存器值: 0x1234 +第二个寄存器值: 0x5678 +``` + +## 2. 请求帧 + +### 2.1 完整请求 ADU + +以下内容可以直接复制到十六进制串口助手发送: + +```text +01 14 07 06 00 00 00 00 00 02 78 E5 +``` + +请求帧长度为: + +```text +12字节 +``` + +### 2.2 请求帧解析 + +| 字节 | 含义 | 说明 | +|---|---|---| +| `01` | 从站地址 | 从站地址为1 | +| `14` | 功能码 | 读取文件记录 | +| `07` | 后续字节数 | 一个子请求固定占7字节 | +| `06` | 引用类型 | Modbus文件记录规定为`0x06` | +| `00 00` | 文件号 | 文件0 | +| `00 00` | 起始记录号 | 从记录0开始 | +| `00 02` | 记录长度 | 读取2个16位寄存器 | +| `78 E5` | CRC16 | CRC低字节`78`在前,高字节`E5`在后 | + +请求帧中参与CRC计算的是: + +```text +01 14 07 06 00 00 00 00 00 02 +``` + +计算得到: + +```text +CRC16 = 0xE578 +``` + +Modbus RTU发送CRC时低字节在前,因此帧尾为: + +```text +78 E5 +``` + +## 3. 正常响应帧 + +假设文件0的记录0和记录1分别保存: + +```text +记录0 = 0x1234 +记录1 = 0x5678 +``` + +### 3.1 完整响应 ADU + +```text +01 14 06 05 06 12 34 56 78 92 FE +``` + +响应帧长度为: + +```text +11字节 +``` + +### 3.2 响应帧解析 + +| 字节 | 含义 | 说明 | +|---|---|---| +| `01` | 从站地址 | 响应来自从站1 | +| `14` | 功能码 | 读取文件记录 | +| `06` |响应数据总字节数 | 后续子响应共6字节 | +| `05` | 子响应长度 | 引用类型1字节加寄存器数据4字节 | +| `06` | 引用类型 | 固定为`0x06` | +| `12 34` | 第一个寄存器 | 值为`0x1234` | +| `56 78` | 第二个寄存器 | 值为`0x5678` | +| `92 FE` | CRC16 | CRC低字节`92`在前,高字节`FE`在后 | + +响应帧中参与CRC计算的是: + +```text +01 14 06 05 06 12 34 56 78 +``` + +计算得到: + +```text +CRC16 = 0xFE92 +``` + +因此响应帧尾发送: + +```text +92 FE +``` + +## 4. 长度计算 + +读取数量为 `quantity` 时,单子请求的请求帧长度固定为: + +```text +12字节 +``` + +正常响应中的字段为: + +```text +子响应长度 = 1 + quantity × 2 +响应数据总字节数 = 2 + quantity × 2 +完整响应ADU长度 = 7 + quantity × 2 +``` + +本例读取2个寄存器: + +```text +子响应长度 = 1 + 2 × 2 = 5字节 +响应数据总字节数 = 2 + 2 × 2 = 6字节 +完整响应ADU长度 = 7 + 2 × 2 = 11字节 +``` + +## 5. 与当前代码的对应关系 + +请求帧中的参数由以下代码解析: + +```c +fileNumber = ModbusGetU16Be(&request[4]); +recordNumber = ModbusGetU16Be(&request[6]); +quantity = ModbusGetU16Be(&request[8]); +``` + +响应帧字段对应: + +```c +ModbusTxFrame[0] = ModbusSlaveAddress; +ModbusTxFrame[1] = 0x14U; +ModbusTxFrame[2] = (uint8_t)(2U + quantity * 2U); +ModbusTxFrame[3] = (uint8_t)(1U + quantity * 2U); +ModbusTxFrame[4] = 0x06U; +``` + +如果后续将文件号改为标准的一基编号,即文件号使用 `1~16`,测试请求中的文件号需要由: + +```text +00 00 +``` + +改为: + +```text +00 01 +``` + +同时重新计算请求帧CRC。 + +## 6. 读取124个寄存器的示例 + +### 6.1 请求条件 + +```text +从站地址: 1 +引用类型: 0x06 +文件号: 0 +起始记录号: 0 +读取数量: 124个寄存器,即0x007C +``` + +### 6.2 完整请求ADU + +以下请求可以直接复制到十六进制串口助手发送: + +```text +01 14 07 06 00 00 00 00 00 7C F8 C5 +``` + +请求帧长度为: + +```text +12字节 +``` + +请求帧解析如下: + +| 字节 | 含义 | +|---|---| +| `01` | 从站地址为1 | +| `14` | 读取文件记录功能码 | +| `07` | 当前子请求包含7个字节 | +| `06` | 引用类型 | +| `00 00` | 文件号0 | +| `00 00` | 从记录0开始读取 | +| `00 7C` | 读取124个寄存器 | +| `F8 C5` | CRC低字节、CRC高字节 | + +参与CRC计算的内容为: + +```text +01 14 07 06 00 00 00 00 00 7C +``` + +计算结果为: + +```text +CRC16 = 0xC5F8 +``` + +因此请求帧末尾按照低字节在前的顺序发送: + +```text +F8 C5 +``` + +### 6.3 正常响应格式 + +读取124个寄存器时,寄存器数据占用: + +```text +124 × 2 = 248字节 = 0xF8字节 +``` + +子响应长度为: + +```text +引用类型1字节 + 寄存器数据248字节 += 249字节 += 0xF9字节 +``` + +响应数据总字节数为: + +```text +子响应长度字段1字节 + 子响应249字节 += 250字节 += 0xFA字节 +``` + +所以正常响应格式为: + +```text +01 14 FA F9 06 [248字节寄存器数据] CRC低 CRC高 +``` + +完整响应ADU长度为: + +```text +从站地址1字节 ++ 功能码1字节 ++ 响应数据总字节数字段1字节 ++ 子响应长度字段1字节 ++ 引用类型1字节 ++ 寄存器数据248字节 ++ CRC 2字节 += 255字节 +``` + +该响应可以放入当前工程的256字节发送缓冲区: + +```c +static uint8_t ModbusTxFrame[256]; +``` + +### 6.4 所有寄存器值均为0时的响应 + +假设读取的124个寄存器全部为 `0x0000`,响应帧的开头为: + +```text +01 14 FA F9 06 +``` + +随后是248个 `00` 数据字节,帧尾CRC为: + +```text +6C 45 +``` + +即: + +```text +01 14 FA F9 06 [248个00] 6C 45 +``` + +该响应的CRC计算值为: + +```text +CRC16 = 0x456C +``` + +Modbus RTU按照低字节在前发送,因此CRC字段为: + +```text +6C 45 +``` + +### 6.5 对应的代码限制 + +发送缓冲区长度为256字节时,单个0x14子请求最多读取124个寄存器,因此数量检查应为: + +```c +if ((quantity == 0U) || (quantity > 124U)) +{ + ModbusSlaveStatistics.illegalValueCount++; + return ModbusBuildException( + request[1], + MODBUS_EX_ILLEGAL_VALUE); +} +``` + +如果每个 `MODBUS_HISTORY_ITEM` 为520字节,即260个16位寄存器,还必须保证本次读取不超过当前文件: + +```c +if (((uint32_t)recordNumber + quantity) > 260UL) +{ + ModbusSlaveStatistics.illegalAddressCount++; + return ModbusBuildException( + request[1], + MODBUS_EX_ILLEGAL_ADDRESS); +} +``` diff --git a/Document/my_document/modbus学习文档.md b/Document/my_document/modbus学习文档.md index ec2e7d1..892884b 100644 --- a/Document/my_document/modbus学习文档.md +++ b/Document/my_document/modbus学习文档.md @@ -544,8 +544,6 @@ FD CA CRC | 0x01 | 非法功能 | 从站不支持该功能码 | | 0x02 | 非法数据地址 | 请求地址不存在或访问范围越界 | | 0x03 | 非法数据值 | 数量、字节数或数据值不合法 | -| 0x04 | 从站设备故障 | 从站执行请求时发生内部错误 | -| 0x06 | 从站设备忙 | 从站暂时不能处理请求 | 例如,从站 1 对 0x03 请求返回非法数据地址: diff --git a/Document/my_document/uCOS-II移植说明.md b/Document/my_document/uCOS-II移植说明.md deleted file mode 100644 index c1e7eb5..0000000 --- a/Document/my_document/uCOS-II移植说明.md +++ /dev/null @@ -1,935 +0,0 @@ -# STM32F407 + IAR 工程 uC/OS-II 移植说明 - -## 1. 文档目的 - -本文记录本项目将 uC/OS-II 移植到 STM32F407IG + IAR 工程的完整过程,并结合当前已经能够正常调试、运行串口与 Modbus RTU 从站的实际代码进行说明。 - -本文不是通用示例,文中目录、文件名、任务优先级、时基和接口均以当前工程为准,主要用于: - -- 回顾本次 uC/OS-II 的移植步骤; -- 理解每个移植文件的作用; -- 在 CubeMX 重新生成代码后检查移植内容是否仍然完整; -- 后续增加任务、信号量、消息队列等功能; -- 排查任务不运行、延时不生效、无法切换任务等问题。 - -当前工程已经完成以下验证: - -- uC/OS-II 可以初始化并启动; -- 应用任务 `AppTaskStart` 可以运行; -- `OSTimeDly()` 和 `OSTimeGet()` 可以正常使用; -- HAL 和 uC/OS-II 共用 SysTick 时基; -- USART1 + DMA 可以正常通信; -- Modbus RTU 从站可以在任务中轮询处理请求。 - ---- - -## 2. 当前工程环境 - -| 项目 | 当前配置 | -|---|---| -| MCU | STM32F407IG | -| CPU 内核 | ARM Cortex-M4 | -| 工程生成工具 | STM32CubeMX | -| 编译器 | IAR Embedded Workbench for ARM | -| IAR 工程配置名 | `Modbus` | -| uC/OS-II 版本 | V2.92.11 | -| 操作系统节拍 | 1000 Hz,即 1 ms/节拍 | -| 串口 | USART1 | -| 串口参数 | 115200 bit/s、8 个有效数据位、偶校验、1 个停止位(8E1) | -| 串口接收 | DMA2 Stream2 Channel4 | -| 串口发送 | DMA2 Stream7 Channel4 | -| 应用任务 | `AppTaskStart` | -| 应用任务优先级 | 5 | -| 应用任务栈 | 256 个 `OS_STK` 单元 | - -IAR 命令行编译工具位于: - -```text -F:\IAR Systems\Embedded Workbench 8.3\common\bin -``` - ---- - -## 3. 移植工作的本质 - -将 uC/OS-II 移植到一个新的 MCU 工程,不只是把源码复制进来。完整移植至少包含以下五部分: - -1. **内核源码**:任务调度、延时、信号量、消息队列等通用功能; -2. **CPU 移植层**:任务栈初始化、临界区、寄存器保存和恢复; -3. **工程配置**:选择启用哪些内核功能、允许多少任务、系统节拍频率等; -4. **硬件连接**:将 SysTick 和 PendSV 正确接入操作系统; -5. **应用启动**:初始化内核、创建任务并启动调度器。 - -它们的关系如下: - -```text -应用任务 AppTaskStart - │ - │ 调用 OSTimeDly、OSTimeGet 等 API - ▼ -uC/OS-II 内核源码 - │ - │ 请求任务切换、初始化任务栈 - ▼ -Cortex-M4 + IAR 移植层 - │ - ├── SysTick:产生操作系统节拍 - └── PendSV:保存旧任务现场并恢复新任务现场 -``` - ---- - -## 4. 工程中的 uC/OS-II 目录 - -当前相关文件位于: - -```text -Middlewares/Third_Party/Micrium/ -├─ Config/ -│ ├─ app_cfg.h -│ ├─ cpu_cfg.h -│ └─ os_cfg.h -├─ uCOS-II/ -│ ├─ Source/ -│ │ ├─ ucos_ii.h -│ │ ├─ os_core.c -│ │ ├─ os_task.c -│ │ ├─ os_time.c -│ │ ├─ os_sem.c -│ │ ├─ os_mutex.c -│ │ ├─ os_q.c -│ │ ├─ os_mbox.c -│ │ ├─ os_flag.c -│ │ ├─ os_mem.c -│ │ └─ os_tmr.c -│ └─ Ports/ARM-Cortex-M4/IAR/ -│ ├─ os_cpu.h -│ ├─ os_cpu_a.asm -│ ├─ os_cpu_c.c -│ └─ os_dbg.c -├─ uC-CPU/ -└─ uC-LIB/ -``` - -### 4.1 各类文件的作用 - -| 文件或目录 | 作用 | -|---|---| -| `ucos_ii.h` | uC/OS-II 总头文件,应用程序通常只需包含它 | -| `os_core.c` | 内核初始化、调度和中断嵌套管理 | -| `os_task.c` | 任务创建、删除、挂起、恢复和栈检查 | -| `os_time.c` | 任务延时及系统节拍计数 | -| `os_sem.c` | 信号量 | -| `os_mutex.c` | 互斥信号量 | -| `os_q.c` | 消息队列 | -| `os_mbox.c` | 邮箱 | -| `os_flag.c` | 事件标志组 | -| `os_mem.c` | 固定大小内存分区 | -| `os_tmr.c` | 软件定时器 | -| `os_cpu.h` | Cortex-M4/IAR 的数据类型、临界区和任务切换宏 | -| `os_cpu_c.c` | 初始任务栈构造、CPU 钩子及 SysTick 接口 | -| `os_cpu_a.asm` | 上下文切换和寄存器保存/恢复的汇编实现 | -| `os_dbg.c` | 向调试器提供内核配置及数据尺寸信息 | -| `os_cfg.h` | 内核功能裁剪和资源数量配置 | -| `app_cfg.h` | 应用任务优先级和栈大小配置 | - -`uC-CPU` 和 `uC-LIB` 目录还提供 Micrium 的 CPU 抽象和通用库头文件。本工程已将相应目录加入头文件搜索路径。 - ---- - -## 5. IAR 工程配置 - -### 5.1 添加源码分组 - -在 IAR 工程中建立 `Micrium` 分组,并添加下列内容。 - -`Micrium Config`: - -```text -app_cfg.h -cpu_cfg.h -os_cfg.h -``` - -`uCOS-II Port`: - -```text -os_cpu_a.asm -os_cpu_c.c -os_dbg.c -``` - -`uCOS-II Source`: - -```text -os_core.c -os_flag.c -os_mbox.c -os_mem.c -os_mutex.c -os_q.c -os_sem.c -os_task.c -os_time.c -os_tmr.c -``` - -即使某项功能在 `os_cfg.h` 中被关闭,对应 `.c` 文件留在工程中通常也不会产生完整功能代码,因为源码内部会根据配置宏进行条件编译。 - -### 5.2 添加头文件搜索路径 - -在 IAR 中进入: - -```text -Project → Options → C/C++ Compiler → Preprocessor -``` - -将以下路径加入 `Additional include directories`: - -```text -$PROJ_DIR$\..\Middlewares\Third_Party\Micrium\Config -$PROJ_DIR$\..\Middlewares\Third_Party\Micrium\uCOS-II\Source -$PROJ_DIR$\..\Middlewares\Third_Party\Micrium\uCOS-II\Ports\ARM-Cortex-M4\IAR -$PROJ_DIR$\..\Middlewares\Third_Party\Micrium\uC-CPU -$PROJ_DIR$\..\Middlewares\Third_Party\Micrium\uC-CPU\ARM-Cortex-M4\IAR -$PROJ_DIR$\..\Middlewares\Third_Party\Micrium\uC-LIB -``` - -如果编译提示找不到 `ucos_ii.h`、`os_cpu.h`、`cpu.h` 或 `lib_def.h`,应首先检查这些搜索路径。 - ---- - -## 6. 内核和应用配置 - -### 6.1 `app_cfg.h` - -当前应用任务配置为: - -```c -#define APP_TASK_START_PRIO 5u -#define APP_TASK_TEST_PRIO 6u - -#define APP_TASK_START_STK_SIZE 256u -#define APP_TASK_TEST_STK_SIZE 256u -``` - -其中: - -- `APP_TASK_START_PRIO` 是启动任务优先级; -- `APP_TASK_TEST_PRIO` 是预留的测试任务优先级,当前还未创建该任务; -- `APP_TASK_START_STK_SIZE` 是启动任务栈的元素个数,不是字节数; -- Cortex-M4 移植中 `OS_STK` 为 32 位,因此 256 个栈单元约占 1024 字节 RAM。 - -### 6.2 uC/OS-II 的任务优先级规则 - -uC/OS-II V2 中: - -- 数值越小,任务优先级越高; -- 每个任务必须使用不同的优先级; -- 当前 `AppTaskStart` 使用优先级 5; -- 后续可让普通测试任务使用 6、7 等更低优先级; -- 不建议随意占用 0~4,可为以后对实时性要求更高的任务预留。 - -任务优先级 5 和 NVIC 中断优先级 5 是两个不同体系,不能直接比较大小。 - -### 6.3 `os_cfg.h` 的当前关键配置 - -| 配置项 | 当前值 | 含义 | -|---|---:|---| -| `OS_LOWEST_PRIO` | 63 | 应用可用的最低任务优先级范围 | -| `OS_MAX_TASKS` | 10 | 最大应用任务数量 | -| `OS_TICKS_PER_SEC` | 1000 | 每秒 1000 个系统节拍 | -| `OS_TASK_CREATE_EXT_EN` | 1 | 启用 `OSTaskCreateExt()` | -| `OS_TASK_STAT_EN` | 0 | 不启用统计任务 | -| `OS_MUTEX_EN` | 1 | 启用互斥信号量 | -| `OS_Q_EN` | 1 | 启用消息队列 | -| `OS_SEM_EN` | 1 | 启用信号量 | -| `OS_TIME_GET_SET_EN` | 1 | 允许读取和设置系统时间 | -| `OS_TIME_TICK_HOOK_EN` | 1 | 启用节拍钩子 | -| `OS_TMR_EN` | 0 | 不启用软件定时器 | -| `OS_MEM_EN` | 0 | 不启用固定内存分区 | -| `OS_CPU_HOOKS_EN` | 1 | 使用 CPU 移植层钩子 | -| `OS_DEBUG_EN` | 1 | 保留内核调试信息 | - -因为: - -```c -#define OS_TICKS_PER_SEC 1000u -``` - -所以: - -```c -OSTimeDly(1U); /* 延时约 1 ms */ -OSTimeDly(100U); /* 延时约 100 ms */ -OSTimeDly(1000U); /* 延时约 1 s */ -``` - -`OSTimeDly()` 的参数单位是“节拍”,只有在当前 1000 Hz 配置下才刚好等于毫秒。 - ---- - -## 7. SysTick 时基接入 - -### 7.1 为什么 HAL 和 uC/OS-II 都需要 SysTick - -STM32 HAL 使用 SysTick 维护自己的毫秒计数,`HAL_GetTick()`、HAL 超时判断等功能依赖 `HAL_IncTick()`。 - -uC/OS-II 也需要周期节拍,用于: - -- 更新任务延时; -- 唤醒延时到期的任务; -- 更新 `OSTimeGet()` 返回的系统节拍; -- 在需要时触发任务调度。 - -因此,本工程在同一个 `SysTick_Handler()` 中同时服务 HAL 和 uC/OS-II。 - -### 7.2 当前 SysTick 处理 - -`Core/Src/stm32f4xx_it.c` 中的核心代码为: - -```c -void SysTick_Handler(void) -{ - HAL_IncTick(); - - if (OSRunning == OS_TRUE) - { - OS_CPU_SysTickHandler(); - } -} -``` - -必须保留 `OSRunning` 判断。原因是 `HAL_Init()` 会先启动 SysTick,而此时 `OSInit()` 尚未执行。如果在内核未初始化时直接调用 uC/OS-II 的节拍处理,可能访问尚未准备好的内核状态。 - -`OS_CPU_SysTickHandler()` 内部的主要过程是: - -```text -进入 SysTick 中断 - ↓ -OSIntEnter() - ↓ -OSTimeTick():更新延时和系统节拍 - ↓ -OSIntExit():检查是否需要调度更高优先级任务 -``` - -不能只调用 `OS_CPU_SysTickHandler()` 而删除 `HAL_IncTick()`,否则 HAL 的毫秒时基和超时机制会停止。 - ---- - -## 8. PendSV 与任务上下文切换 - -### 8.1 PendSV 的作用 - -SysTick 负责告诉内核“时间过去了一个节拍”,PendSV 才真正执行任务上下文切换。 - -一次任务切换大致包括: - -1. 保存当前任务的 CPU 寄存器; -2. 将当前栈指针保存到任务控制块; -3. 选择当前最高优先级的就绪任务; -4. 取出新任务的栈指针; -5. 恢复新任务的 CPU 寄存器; -6. 从异常返回,新任务继续运行。 - -这些底层工作由 `os_cpu_a.asm` 中的 `OS_CPU_PendSVHandler` 完成。 - -### 8.2 当前工程的特殊接法 - -当前工程不是在 C 语言的空 `PendSV_Handler()` 中调用内核,而是直接修改了 IAR 启动文件: - -```text -EWARM/startup_stm32f407xx.s -``` - -启动文件中声明: - -```asm -EXTERN OS_CPU_PendSVHandler -``` - -并将向量表中的 PendSV 项直接设置为: - -```asm -DCD OS_CPU_PendSVHandler -``` - -所以 `Core/Src/stm32f4xx_it.c` 中虽然还有一个空的 `PendSV_Handler()`,实际 PendSV 向量并不指向它。 - -这是本工程移植中非常关键的一步。若 CubeMX 或其他工具重新生成、替换启动文件,必须确认 PendSV 向量仍然指向 `OS_CPU_PendSVHandler`。否则常见现象是: - -- 第一个任务似乎能够启动; -- 一旦调用 `OSTimeDly()` 或发生任务切换就卡住; -- 多任务无法正常调度。 - -不要同时让向量表指向两个 PendSV 实现,也不要在已有直接向量映射的情况下重复定义另一个同名强符号。 - ---- - -## 9. 在 `main.c` 中启动 uC/OS-II - -### 9.1 包含头文件 - -当前应用包含: - -```c -#include "ucos_ii.h" -#include "modbus_rtu_slave.h" -``` - -`ucos_ii.h` 内部会继续包含 `app_cfg.h`,因此 `main.c` 可以使用任务优先级和栈大小宏。 - -### 9.2 定义任务栈 - -```c -static OS_STK AppTaskStartStk[APP_TASK_START_STK_SIZE]; -``` - -任务栈不能定义成任务函数内的普通局部数组,否则函数退出或栈被覆盖后会破坏任务运行现场。这里使用 `static`,使内存在整个程序运行期间一直存在。 - -### 9.3 声明任务函数 - -```c -static void AppTaskStart(void *p_arg); -``` - -uC/OS-II 任务函数必须符合以下形式: - -```c -void TaskName(void *p_arg); -``` - -任务通常包含永久循环,不能执行完后直接返回。 - -### 9.4 正确的初始化顺序 - -本工程顺序为: - -```c -HAL_Init(); -SystemClock_Config(); - -MX_GPIO_Init(); -MX_DMA_Init(); -MX_USB_DEVICE_Init(); -MX_USART1_UART_Init(); - -OSInit(); - -/* 创建应用任务 */ -OSTaskCreateExt(...); - -OSStart(); -``` - -各步骤含义如下: - -1. `HAL_Init()`:初始化 HAL 和 SysTick; -2. `SystemClock_Config()`:配置芯片主频和总线时钟; -3. `MX_xxx_Init()`:初始化任务要使用的外设; -4. `OSInit()`:初始化 uC/OS-II 内核数据结构; -5. `OSTaskCreateExt()`:创建至少一个应用任务; -6. `OSStart()`:启动最高优先级就绪任务。 - -正常情况下 `OSStart()` 不会返回。CubeMX 在后面生成的 `while (1)` 仅作为程序结构保留,操作系统成功启动后不会再执行到那里。 - -### 9.5 当前任务创建代码 - -```c -os_err = OSTaskCreateExt(AppTaskStart, - 0, - &AppTaskStartStk[APP_TASK_START_STK_SIZE - 1u], - APP_TASK_START_PRIO, - APP_TASK_START_PRIO, - &AppTaskStartStk[0], - APP_TASK_START_STK_SIZE, - 0, - (OS_TASK_OPT_STK_CHK | - OS_TASK_OPT_STK_CLR)); - -if (os_err != OS_ERR_NONE) -{ - Error_Handler(); -} -``` - -参数说明: - -| 参数 | 当前传入值 | 作用 | -|---|---|---| -| 任务入口 | `AppTaskStart` | 任务开始执行的函数 | -| 任务参数 | `0` | 传给 `p_arg`,本任务不需要参数 | -| 初始栈顶 | 栈数组最后一个元素 | Cortex-M 栈向低地址增长 | -| 优先级 | `APP_TASK_START_PRIO` | 当前为 5 | -| 任务 ID | 同任务优先级 | 本工程用优先级作为 ID | -| 栈底 | 栈数组第一个元素 | 用于扩展创建和栈检查 | -| 栈大小 | `APP_TASK_START_STK_SIZE` | 256 个栈单元 | -| 扩展数据 | `0` | 当前不使用 | -| 任务选项 | `STK_CHK \| STK_CLR` | 启用栈检查并在创建时清零栈 | - -检查 `os_err` 非常重要。如果任务创建失败却继续调用 `OSStart()`,后续现象不容易定位。 - ---- - -## 10. 当前应用任务与 Modbus 的结合 - -当前启动任务主要代码如下: - -```c -static void AppTaskStart(void *p_arg) -{ - (void)p_arg; - - if (ModbusSlave_Init(&huart1, - MODBUS_SLAVE_DEFAULT_ADDRESS) != HAL_OK) - { - Error_Handler(); - } - - while (1) - { - (void)ModbusSlave_SetHoldingRegister( - HMI_REG_UPTIME_SECONDS, - (uint16_t)(OSTimeGet() / OS_TICKS_PER_SEC)); - - (void)ModbusSlave_SetHoldingRegister( - HMI_REG_RX_FRAME_COUNT, - (uint16_t)g_modbus_slave_stats.valid_frame_count); - - ModbusSlave_Poll(); - OSTimeDly(1U); - } -} -``` - -### 10.1 任务在做什么 - -1. 任务只在开始时调用一次 `ModbusSlave_Init()`; -2. 初始化 USART1 的 Modbus 从站和 DMA 接收; -3. 在永久循环中更新运行时间寄存器; -4. 更新有效接收帧计数寄存器; -5. 调用 `ModbusSlave_Poll()` 在任务上下文中解析已收到的帧; -6. 延时 1 个节拍,把 CPU 让给其他任务或空闲任务。 - -### 10.2 为什么要调用 `OSTimeDly(1U)` - -如果永久循环内没有延时、等待信号量或其他阻塞操作,优先级 5 的任务会一直占用 CPU,使更低优先级任务无法运行。 - -调用 `OSTimeDly(1U)` 后: - -- 当前任务进入延时状态; -- 调度器转而执行其他就绪任务; -- 1 ms 后 SysTick 更新延时计数; -- 当前任务重新进入就绪状态; -- 当它成为最高优先级就绪任务时继续运行。 - ---- - -## 11. 串口中断、DMA 与操作系统任务的关系 - -当前 Modbus 接收采用“中断/DMA 快速接收,任务中解析”的结构: - -```text -USART1 收到数据 - ↓ -DMA 自动搬运到接收缓冲区 - ↓ -串口空闲事件/接收事件中断 - ↓ -HAL_UARTEx_RxEventCallback() - ↓ -ModbusSlave_OnRxEvent() - │ - │ 仅记录数据、帧状态并尽快退出 - ▼ -AppTaskStart 周期执行 ModbusSlave_Poll() - ↓ -CRC 校验、功能码解析、寄存器读写、组织应答 - ↓ -USART1 DMA 发送应答 -``` - -当前回调接口包括: - -```c -HAL_UARTEx_RxEventCallback() - → ModbusSlave_OnRxEvent() - -HAL_UART_TxCpltCallback() - → ModbusSlave_OnTxComplete() - -HAL_UART_ErrorCallback() - → ModbusSlave_OnUartError() -``` - -这种结构的优点是: - -- 中断处理时间短; -- CRC 和协议解析不会长时间占用中断; -- 复杂业务逻辑运行在任务上下文,便于扩展; -- 串口接收与协议处理在执行过程上是异步的。 - -当前串口回调没有直接调用 uC/OS-II 的信号量、队列等服务,因此不需要额外在这些回调外层手工调用 `OSIntEnter()` 和 `OSIntExit()`。 - -如果后续在外设中断中直接调用 `OSSemPost()`、`OSQPost()` 等内核服务,则必须: - -- 确认该服务允许在中断中调用; -- 正确执行 uC/OS-II 的中断进入和退出处理; -- 检查 NVIC 中断优先级是否满足移植层要求; -- 不在中断中调用会阻塞的接口。 - ---- - -## 12. 常用 uC/OS-II 接口解释 - -### 12.1 `OSInit()` - -初始化内核全局变量、就绪表、任务链表,并建立空闲任务等内部对象。必须先调用它,再创建应用任务和启动调度器。 - -### 12.2 `OSTaskCreateExt()` - -创建一个扩展任务。与简化版创建函数相比,它可以传入栈底、栈大小和任务选项,因此可使用栈检查功能。 - -### 12.3 `OSStart()` - -启动调度器,并切换到当前最高优先级的就绪任务。成功后不会返回 `main()` 的普通执行流程。 - -### 12.4 `OSTimeDly()` - -使当前任务延时指定节拍。它是操作系统延时,不是原地空转: - -- 延时期间 CPU 可以执行其他任务; -- 不能在中断服务程序中调用; -- 参数为 0 时通常不会产生期望的延时。 - -### 12.5 `OSTimeGet()` - -读取内核从启动后累计的节拍数。当前节拍频率为 1000 Hz,因此: - -```c -seconds = OSTimeGet() / OS_TICKS_PER_SEC; -``` - -可得到近似运行秒数。计数最终会溢出并回绕,不能把它当作永久不溢出的实时时钟。 - -### 12.6 `OSTaskStkChk()` - -在任务使用了 `OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR` 时,可以检查任务栈使用情况,用于判断栈是否配置过大或过小。 - ---- - -## 13. 后续增加第二个任务 - -### 13.1 定义栈和任务函数 - -```c -static OS_STK AppTaskTestStk[APP_TASK_TEST_STK_SIZE]; - -static void AppTaskTest(void *p_arg) -{ - (void)p_arg; - - while (1) - { - /* 在这里编写周期性测试功能。 */ - - OSTimeDly(100U); - } -} -``` - -### 13.2 创建任务 - -在调用 `OSStart()` 之前增加: - -```c -os_err = OSTaskCreateExt(AppTaskTest, - 0, - &AppTaskTestStk[APP_TASK_TEST_STK_SIZE - 1u], - APP_TASK_TEST_PRIO, - APP_TASK_TEST_PRIO, - &AppTaskTestStk[0], - APP_TASK_TEST_STK_SIZE, - 0, - (OS_TASK_OPT_STK_CHK | - OS_TASK_OPT_STK_CLR)); - -if (os_err != OS_ERR_NONE) -{ - Error_Handler(); -} -``` - -也可以先只创建启动任务,再由启动任务创建其他任务。但无论采用哪种方式,都必须保证: - -- 每个任务有独立且长期有效的栈; -- 每个任务优先级唯一; -- 任务函数不能直接返回; -- 周期任务必须适当延时或等待事件; -- 总任务数不得超过 `OS_MAX_TASKS`。 - ---- - -## 14. CubeMX 重新生成代码时的注意事项 - -### 14.1 能够自动保留的内容 - -CubeMX 的 `Keep User Code when re-generating` 选项只能保留位于标准标记内的代码: - -```c -/* USER CODE BEGIN ... */ -/* USER CODE END ... */ -``` - -本工程下列自定义内容应放在对应的 USER CODE 区域内: - -- `main.c` 中的 uC/OS-II 和 Modbus 头文件; -- 任务栈、任务函数声明; -- `AppTaskStart()`; -- `OSInit()`、任务创建和 `OSStart()`; -- `stm32f4xx_it.c` 中的 `OS_CPU_SysTickHandler()` 调用; -- HAL 串口回调中的 Modbus 接口调用。 - -写在 USER CODE 标记之外的修改可能被覆盖。 - -### 14.2 需要手工重点检查的内容 - -每次 CubeMX 重新生成后,至少检查: - -- `EWARM/startup_stm32f407xx.s` 的 PendSV 向量是否仍指向 `OS_CPU_PendSVHandler`; -- `stm32f4xx_it.c` 是否仍调用 `HAL_IncTick()`; -- `stm32f4xx_it.c` 是否在 `OSRunning` 为真时调用 `OS_CPU_SysTickHandler()`; -- `main.c` 是否仍然调用 `OSInit()`、创建任务并调用 `OSStart()`; -- IAR 工程中的 Micrium 源文件分组是否仍存在; -- IAR 的 Micrium 头文件搜索路径是否仍存在; -- 串口 DMA、NVIC 和回调代码是否仍完整。 - -CubeMX 通常不会主动删除独立放置的 `Middlewares/Third_Party/Micrium` 源文件,但重新生成 IAR 工程文件时,有可能改变 `.ewp` 中手工添加的分组或路径,因此重新生成前应提交 Git 或备份工程。 - ---- - -## 15. 编译和运行验证 - -### 15.1 IAR 图形界面 - -在 IAR 中执行: - -```text -Project → Rebuild All -``` - -确认: - -- 0 errors; -- 0 warnings; -- `os_cpu_a.asm`、`os_cpu_c.c` 和内核源码均参与编译; -- 链接阶段没有重复的中断处理函数。 - -### 15.2 命令行完整编译 - -在工程根目录执行: - -```powershell -& 'F:\IAR Systems\Embedded Workbench 8.3\common\bin\IarBuild.exe' ` - 'EWARM\Modbus.ewp' ` - -build Modbus ` - -log all -``` - -链接映射文件位于: - -```text -EWARM\Modbus\List\Modbus.map -``` - -该文件可以查看代码、只读数据和读写数据的详细占用。 - -### 15.3 调试时可观察的内容 - -建议设置或观察: - -- 在 `AppTaskStart()` 入口设置断点,确认任务已进入; -- `OSRunning` 应在内核启动后变为真; -- `OSTimeGet()` 应持续增加; -- 执行 `OSTimeDly(1U)` 后任务应能再次被唤醒; -- Modbus 运行时间寄存器应每秒变化; -- 串口请求应能收到正常应答。 - ---- - -## 16. 常见故障排查 - -### 16.1 提示找不到 `ucos_ii.h` - -原因通常是 IAR 头文件搜索路径未添加或路径层级错误。检查: - -```text -Middlewares\Third_Party\Micrium\uCOS-II\Source -``` - -### 16.2 `OSStart()` 后卡死或任务不运行 - -依次检查: - -1. 是否先调用了 `OSInit()`; -2. `OSTaskCreateExt()` 返回值是否为 `OS_ERR_NONE`; -3. 任务栈顶是否传入数组最后一个元素; -4. `os_cpu_a.asm` 是否参与编译和链接; -5. 启动文件 PendSV 向量是否指向 `OS_CPU_PendSVHandler`; -6. 任务函数是否包含永久循环。 - -### 16.3 `OSTimeDly()` 后任务再也不运行 - -重点检查: - -- SysTick 中断是否正常进入; -- 是否保留 `OS_CPU_SysTickHandler()`; -- `OSRunning` 是否已经变为真; -- `OS_TICKS_PER_SEC` 是否与实际 SysTick 频率匹配; -- PendSV 向量是否被 CubeMX 恢复成空的 `PendSV_Handler()`。 - -### 16.4 HAL 延时或超时异常 - -检查 `SysTick_Handler()` 中是否仍调用: - -```c -HAL_IncTick(); -``` - -uC/OS-II 和 HAL 共用 SysTick 时,两边的节拍处理都要保留。 - -### 16.5 链接时出现重复的 PendSV 或 SysTick 符号 - -说明同一异常被多个强符号实现。应明确采用一种连接方式。 - -当前工程采用: - -- SysTick 向量指向 `SysTick_Handler()`,其中同时服务 HAL 和 uC/OS-II; -- PendSV 向量直接指向汇编函数 `OS_CPU_PendSVHandler`。 - -### 16.6 任务运行一段时间后进入 HardFault - -常见原因包括: - -- 任务栈过小; -- 使用了错误的 CPU/编译器移植层; -- 栈顶和栈底参数传反; -- 局部数组过大; -- 中断或任务越界写内存; -- 浮点上下文或编译选项与移植层不匹配。 - -应先增加任务栈并使用栈检查,再检查 HardFault 时的栈和寄存器。 - -### 16.7 高优先级任务导致其他任务不运行 - -uC/OS-II 是基于优先级的抢占式内核。若高优先级任务永久循环且从不延时、不挂起、也不等待事件,低优先级任务不会得到运行机会。 - -周期任务中应使用: - -- `OSTimeDly()`; -- 等待信号量; -- 等待消息队列; -- 等待事件标志; -- 或其他会让任务进入非就绪状态的接口。 - -### 16.8 修改了配置宏后出现未定义符号 - -例如打开信号量、队列、统计任务或软件定时器后,应同时确认: - -- 对应源码已加入工程; -- 相关最大数量配置不为 0; -- 所需钩子函数已经实现; -- RAM 和任务数量足够。 - ---- - -## 17. 当前移植的关键文件清单 - -| 文件 | 当前项目中的关键内容 | -|---|---| -| `Core/Src/main.c` | 内核初始化、任务创建、启动调度器、Modbus 应用任务 | -| `Core/Src/stm32f4xx_it.c` | HAL 与 uC/OS-II 共用的 SysTick 处理 | -| `EWARM/startup_stm32f407xx.s` | PendSV 向量直接指向 `OS_CPU_PendSVHandler` | -| `EWARM/Modbus.ewp` | Micrium 源文件分组及头文件搜索路径 | -| `Middlewares/Third_Party/Micrium/Config/app_cfg.h` | 应用任务优先级和栈大小 | -| `Middlewares/Third_Party/Micrium/Config/os_cfg.h` | 内核裁剪、节拍频率和资源数量 | -| `Middlewares/Third_Party/Micrium/uCOS-II/Ports/ARM-Cortex-M4/IAR/os_cpu_a.asm` | 上下文切换 | -| `Middlewares/Third_Party/Micrium/uCOS-II/Ports/ARM-Cortex-M4/IAR/os_cpu_c.c` | 任务栈初始化及 SysTick 接口 | -| `Modbus/Src/modbus_rtu_slave.c` | Modbus RTU 从站协议处理 | - ---- - -## 18. 移植完成检查表 - -### 源码与工程 - -- [ ] uC/OS-II 内核源码已加入 IAR 工程; -- [ ] Cortex-M4/IAR 移植层已加入工程; -- [ ] Micrium 配置文件已加入工程; -- [ ] 所有头文件搜索路径正确; -- [ ] `os_cpu_a.asm` 确实参与编译。 - -### 内核配置 - -- [ ] `OS_TICKS_PER_SEC` 与 SysTick 实际频率一致; -- [ ] `OS_MAX_TASKS` 足够; -- [ ] 每个任务优先级唯一; -- [ ] 所需信号量、队列、互斥量功能已启用; -- [ ] 每个任务栈大小合理。 - -### 中断连接 - -- [ ] SysTick 同时调用 `HAL_IncTick()` 和 `OS_CPU_SysTickHandler()`; -- [ ] 内核未运行时不会调用 OS 节拍处理; -- [ ] PendSV 向量指向 `OS_CPU_PendSVHandler`; -- [ ] 没有重复的 PendSV 强符号。 - -### 应用启动 - -- [ ] 外设初始化先于使用外设的任务; -- [ ] 已调用 `OSInit()`; -- [ ] 至少成功创建一个任务; -- [ ] 已检查任务创建返回值; -- [ ] 已调用 `OSStart()`; -- [ ] 所有任务均包含循环并能主动让出 CPU。 - -### 运行验证 - -- [ ] 工程编译为 0 errors、0 warnings; -- [ ] `AppTaskStart()` 可以进入; -- [ ] `OSRunning` 为真; -- [ ] 系统节拍持续增加; -- [ ] `OSTimeDly()` 后任务可以恢复; -- [ ] USART1 DMA 通信正常; -- [ ] Modbus 请求和应答正常。 - ---- - -## 19. 关于 uC/OS-II 授权 - -当前源码头部的授权说明允许评估、教学或研究等用途。若代码用于正式商业产品,应根据所使用版本核实 Micrium/版权方的商业授权要求,不能仅因为源码可以编译就默认具备商业发布许可。 - ---- - -## 20. 总结 - -本工程的 uC/OS-II 移植可以概括为: - -```text -复制内核和 Cortex-M4/IAR 移植层 - ↓ -加入 IAR 源文件与头文件路径 - ↓ -配置 os_cfg.h 和 app_cfg.h - ↓ -SysTick 同时服务 HAL 与 uC/OS-II - ↓ -启动文件 PendSV 向量接入 OS_CPU_PendSVHandler - ↓ -OSInit → 创建任务 → OSStart - ↓ -在任务中运行 ModbusSlave_Poll 和应用逻辑 -``` - -其中最容易在 CubeMX 重新生成后遗漏的是 **IAR 启动文件中的 PendSV 向量修改**;最容易在增加任务后遇到的问题是 **任务优先级重复、任务栈不足,以及高优先级任务没有延时或等待事件**。 diff --git a/Document/my_document/测试大纲.docx b/Document/my_document/测试大纲.docx index cbb952cfac1284e8b18b995ce761fd81b3c8f39b..d22b385e717c7022737be46378287d855a9e955d 100644 GIT binary patch delta 28244 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�OdibCFoY<#fwj_`}whw_;2CmBn8eha~CDu(a-O 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 R!hx*QgD~NJ=|Jzs{{=h7{~`bY diff --git a/Document/my_document/测试报告.docx b/Document/my_document/测试报告.docx index 0ef46208ac4ecea59a92e45ccc344cde9d06ffc2..49f2312b4e8194ffb5e30994286f5f00a82b466a 100644 GIT binary patch delta 32003 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 X0R}EV*bq+276vXQ6azl)=h^=Q^oPJ< delta 29127 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 diff --git a/Document/my_document/设计方案书.docx b/Document/my_document/设计方案书.docx index cfd0abbca7543343503baecd3ab94e50a21785bd..127097ac1c17492eb76cf446be49e8f316f5330a 100644 GIT binary patch delta 26350 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

BZ#0&Pg3g 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 SG;nkd;1ewH+g||(;{O3BeCWFX delta 26177 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

    Hu+e58sk3b$jXcM68F%-umcy(i?TBCO1& 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

    PAim{ksq)?trm@uW6(wj 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 Vf~O+&ffM0)y*Nn*J;Z-U{sSgG>R12( diff --git a/Modbus/Inc/modbus_rtu_slave.h b/Modbus/Inc/modbus_rtu_slave.h index e1c7b49..cd6702c 100644 --- a/Modbus/Inc/modbus_rtu_slave.h +++ b/Modbus/Inc/modbus_rtu_slave.h @@ -2,7 +2,7 @@ #define MODBUS_RTU_SLAVE_H #include "stm32f4xx_hal.h" - +#include #ifdef __cplusplus extern "C" { diff --git a/Modbus/Src/modbus_rtu_slave.c b/Modbus/Src/modbus_rtu_slave.c index ea2e6ed..4bb2ebe 100644 --- a/Modbus/Src/modbus_rtu_slave.c +++ b/Modbus/Src/modbus_rtu_slave.c @@ -337,6 +337,73 @@ static uint16_t ModbusProcessReadHolding(const uint8_t *request,uint16_t request } + +/* +* 返回帧 +*从站地址 | 14 | 总字节数 | 子响应长度 | 06 | 寄存器数据 | CRC +* +* 01 从站地址 +* 14 功能码 +* 06 后续响应数据共6字节 +* 05 当前子响应长度,共5字节 +* 06 引用类型 +* 12 34 第一个寄存器 +* 56 78 第二个寄存器 +*/ +static uint16_t ModbusProcessFile(const uint8_t *request,uint16_t requestLength) +{ + uint16_t fileNumber; + uint16_t recordNumber; + uint16_t quantity; + uint16_t index; + uint16_t value; + uint16_t*p; + if (requestLength != 12U) + { + ModbusSlaveStatistics.illegalValueCount++; + return ModbusBuildException(request[1], MODBUS_EX_ILLEGAL_VALUE); + } + if ((request[2] != 7U) || (request[3] != 0x06U)) + { + ModbusSlaveStatistics.illegalValueCount++; + return ModbusBuildException( request[1],MODBUS_EX_ILLEGAL_VALUE); + } + + quantity = ModbusGetU16Be(&request[8]); + fileNumber = ModbusGetU16Be(&request[4]); + recordNumber = ModbusGetU16Be(&request[6]); + if ((quantity == 0U) || (quantity > 124U))//数量0或者数量大于最大值 + { + ModbusSlaveStatistics.illegalValueCount++; + return ModbusBuildException(request[1], MODBUS_EX_ILLEGAL_VALUE); + } + if (fileNumber>15||recordNumber>=260||((uint32_t)recordNumber + quantity) > 260UL)//地址检查 + { + ModbusSlaveStatistics.illegalAddressCount++; + return ModbusBuildException(request[1], MODBUS_EX_ILLEGAL_ADDRESS); + } + ModbusTxFrame[0] = ModbusSlaveAddress; + ModbusTxFrame[1] = 0X14; + ModbusTxFrame[2] =(uint8_t)(2U + quantity * 2U); + ModbusTxFrame[3] =(uint8_t)(1U + quantity * 2U); + + ModbusTxFrame[4] = 0X06; + p = (uint16_t*)ModbusHistory; + for (index = 0U; index < quantity; index++) + { + uint16_t address = fileNumber*260+recordNumber + index; + + value = *(p+address); + ModbusTxFrame[5U + index * 2U] = (uint8_t)(value & 0x00FFU); + ModbusTxFrame[6U + index * 2U] = (uint8_t)(value >> 8U); + } + + ModbusAppendCrc(ModbusTxFrame, (uint16_t)(5U + quantity * 2U)); + return (uint16_t)(7U + quantity * 2U); + +} + + /** * @brief 处理写单个保持寄存器功能码 0x06 * @param[in] request RTU 请求帧 @@ -713,6 +780,9 @@ static uint16_t ModbusProcessRequest(const uint8_t *request,uint16_t requestLeng case 0X03U://读保持寄存器 return (isBroadcast != 0U) ? 0U : ModbusProcessReadHolding(request, requestLength); + case 0x14U: + return (isBroadcast != 0U) ? 0U : + ModbusProcessFile(request,requestLength); case 0x05U://写单个线圈 return ModbusProcessWriteSingleCoil(request,