test(日志): 主机单测桩跟到 UART5
生产源 f5161e15 已把控制台端口收口到 CON_UART(=huart5),桩若还停在
huart1 / MX_USART1_UART_Init,主机单测会因符号缺失编不过;更要紧的是
huart1.Instance = 0 那几组用例会失去"串口未初始化"的原意——改成填一个
生产代码根本不碰的句柄,短路照样命中,但测的已经不是真实那条路径。
- stub/usart.h:暴露 huart5 + MX_UART5_Init,并按真实 Inc/usart.h 校正
"真实那份还声明哪些"的描述(huart1~4、MX_USART1~3_UART_Init、
MX_UART4_Init)。
- stub/stm32f4_fake.h:USART1_IRQn -> UART5_IRQn,
__HAL_RCC_USART1_CLK_DISABLE/ENABLE -> __HAL_RCC_UART5_*;假外设块的
标题与位注释去掉具体实例号(它本来就是通用模型,不是某个实例)。
- console_log_test.c:huart1 -> huart5(19 处)、
MX_USART1_UART_Init -> MX_UART5_Init,含一条用例的打印文案。
纯桩与测试改动,不碰生产源;153/153 PASSED。
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
* 模块名称:主机侧单测桩 - 假 HAL/CMSIS 寄存器面 + 内核入口(console_log 模块专用)
|
||||
* 模块功能:让 App/log/console_log.c 在 PC 上编起来,并把它依赖的硬件/内核面做成
|
||||
* **可脚本控制**的模型:
|
||||
* ① USART1:TXE/TC 可注入「就绪 / 永远不就绪(僵尸通道)/ 前 N 次不就绪」;
|
||||
* ① 假串口外设:TXE/TC 可注入「就绪 / 永远不就绪(僵尸通道)/ 前 N 次不就绪」;
|
||||
* 写进 DR 的字节被收进一条上线字节日志,并按「一次 TC 就绪 = 一块」记块长。
|
||||
* ② DWT CYCCNT:每次访问推进 con_dwt_step 个周期(= 给时间定价),
|
||||
* CTRL 的 CYCCNTENA 可脚本成「写不进去」以走 con_tx_counted 支路。
|
||||
@@ -19,7 +19,7 @@
|
||||
* DWT_Type.CTRL/CYCCNT + DWT_CTRL_CYCCNTENA_Msk=bit0、CoreDebug_Type.DEMCR +
|
||||
* CoreDebug_DEMCR_TRCENA_Msk=bit24(core_cm4.h)
|
||||
* HAL_StatusTypeDef{OK=0,ERROR=1,BUSY=2,TIMEOUT=3}(stm32f4xx_hal_def.h)
|
||||
* HAL_UART_STATE_RESET=0x00、HAL_UART_ERROR_NONE=0x00、USART1_IRQn=7
|
||||
* HAL_UART_STATE_RESET=0x00、HAL_UART_ERROR_NONE=0x00、UART5_IRQn=7
|
||||
* UART_HandleTypeDef 只搬本模块访问的 4 个字段(Instance/gState/RxState/ErrorCode),
|
||||
* 余下(Init/Lock/...)刻意不搬:抄半份 HAL 结构只会更快与真实头漂移。
|
||||
*
|
||||
@@ -52,11 +52,11 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
/* ===== 与真实头同值的位 / 枚举(来源见文件头) ===== */
|
||||
#define USART_SR_TXE_Msk (0x0080U) /* USART1->SR bit7 发送寄存器空 */
|
||||
#define USART_SR_TC_Msk (0x0040U) /* USART1->SR bit6 发送完成 */
|
||||
#define USART_SR_TXE_Msk (0x0080U) /* SR bit7 发送寄存器空 */
|
||||
#define USART_SR_TC_Msk (0x0040U) /* SR bit6 发送完成 */
|
||||
#define DWT_CTRL_CYCCNTENA_Msk (0x00000001U)
|
||||
#define CoreDebug_DEMCR_TRCENA_Msk (0x01000000U)
|
||||
#define USART1_IRQn 7
|
||||
#define UART5_IRQn 7
|
||||
|
||||
#define HAL_UART_STATE_RESET 0x00U
|
||||
#define HAL_UART_STATE_READY 0x20U
|
||||
@@ -75,7 +75,7 @@ typedef enum {
|
||||
extern uint32_t SystemCoreClock;
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/* ① 假 USART1 */
|
||||
/* ① 假串口外设 */
|
||||
/* ------------------------------------------------------------------ */
|
||||
typedef struct {
|
||||
volatile uint32_t SR;
|
||||
@@ -368,7 +368,7 @@ extern uint32_t con_nvic_clears;
|
||||
extern uint32_t con_rcc_disables;
|
||||
extern uint32_t con_rcc_enables;
|
||||
#define __NVIC_ClearPendingIRQ(irqn) do { (void)(irqn); con_nvic_clears++; } while (0)
|
||||
#define __HAL_RCC_USART1_CLK_DISABLE() do { con_rcc_disables++; } while (0)
|
||||
#define __HAL_RCC_USART1_CLK_ENABLE() do { con_rcc_enables++; } while (0)
|
||||
#define __HAL_RCC_UART5_CLK_DISABLE() do { con_rcc_disables++; } while (0)
|
||||
#define __HAL_RCC_UART5_CLK_ENABLE() do { con_rcc_enables++; } while (0)
|
||||
|
||||
#endif /* STM32F4_FAKE_H */
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
/*
|
||||
* 模块名称:主机侧单测桩 - usart.h(console_log 模块专用)
|
||||
* 模块功能:与真实 Inc/usart.h 对本模块可见的部分逐字一致:extern UART_HandleTypeDef
|
||||
* huart1; + void MX_USART1_UART_Init(void);(真实那份还声明 huart2~5 与
|
||||
* MX_USART2~5_UART_Init,本模块只碰 USART1,搬多出来的声明没有意义)。
|
||||
* huart5; + void MX_UART5_Init(void);(真实那份还声明 huart1~4 与
|
||||
* MX_USART1~3_UART_Init / MX_UART4_Init,本模块只碰 UART5,搬多出来的声明
|
||||
* 没有意义)。
|
||||
* 2026-10-29 批 0:控制台从 USART1 迁到 RS232#1/UART5,本桩随之改。
|
||||
* ⚠ 仅供 test/host/console_log/ 使用,不参与 MCU 构建。
|
||||
* 真实 Inc/usart.h 的 include 链(main.h -> stm32f4xx_hal.h -> stm32f4xx.h ->
|
||||
* core_cm4.h)在宿主上编不动,寄存器面由 stm32f4_fake.h 提供(理由见该文件头)。
|
||||
@@ -14,7 +16,7 @@
|
||||
#include <stdint.h>
|
||||
#include "stm32f4_fake.h"
|
||||
|
||||
extern UART_HandleTypeDef huart1;
|
||||
void MX_USART1_UART_Init(void);
|
||||
extern UART_HandleTypeDef huart5;
|
||||
void MX_UART5_Init(void);
|
||||
|
||||
#endif /* USART_H */
|
||||
|
||||
Reference in New Issue
Block a user