取窗竞态的原因
This commit is contained in:
@@ -179,3 +179,5 @@ ci-artifacts/
|
|||||||
# 该目录同时登记进了 check_doc_links / gen_refgraph / check_layer_deps 的排除面
|
# 该目录同时登记进了 check_doc_links / gen_refgraph / check_layer_deps 的排除面
|
||||||
# (整份仓库副本不能进全库扫描);细节 → .dsh/skills/task-worktree/SKILL.md
|
# (整份仓库副本不能进全库扫描);细节 → .dsh/skills/task-worktree/SKILL.md
|
||||||
.dsh-worktrees/
|
.dsh-worktrees/
|
||||||
|
|
||||||
|
.obsidian/
|
||||||
|
|||||||
@@ -152,16 +152,19 @@ flowchart TD
|
|||||||
|
|
||||||
### 5.2 三条已知陷阱,本波必须绕开
|
### 5.2 三条已知陷阱,本波必须绕开
|
||||||
|
|
||||||
| 陷阱 | 事实出处 | 本波处置 |
|
| 陷阱 | 事实出处 | 本波处置 | |
|
||||||
|---|---|---|
|
| ------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | --------------------------------------------------------- |
|
||||||
| **取窗竞态** | `App/algo/sample_ring.c` 的 `sample_ring_window()` 没有临界区(读 `s_head` 后逐点拷),现在只有 adcTask 同任务调用才安全 | 录波**不复用它**:adcTask 在自己的节拍里取「本拍帧」压专用环;跨任务只传递「已封存」标志,杜绝跨任务读活缓冲 |
|
| **取窗竞态** | `App/algo/sample_ring.c` 的 `sample_ring_window()` 没有临界区(读 `s_head` 后逐点拷),现在只有 adcTask 同任务调用才安全 | 录波**不复用它**:adcTask 在自己的节拍里取「本拍帧」压专用环;跨任务只传递「已封存」标志,杜绝跨任务读活缓冲 | |
|
||||||
| **FatFs 追加写** | 该移植 `FA_OPEN_APPEND` 不含 `FA_WRITE`,且 `f_write` 簇分配失败时返回 `FR_OK` 加短写、无错误码(`docs/架构设计/STM32F4-Base存储架构说明.md` §10.1) | 打开一律 `FA_WRITE|FA_OPEN_APPEND`;**判成功必须比对写回字节数**,短写按失败处理(丢段 + 日志),绝不当成功记账 |
|
| **FatFs 追加写** | 该移植 `FA_OPEN_APPEND` 不含 `FA_WRITE`,且 `f_write` 簇分配失败时返回 `FR_OK` 加短写、无错误码(`docs/架构设计/STM32F4-Base存储架构说明.md` §10.1) | 打开一律 `FA_WRITE | FA_OPEN_APPEND`;**判成功必须比对写回字节数**,短写按失败处理(丢段 + 日志),绝不当成功记账 |
|
||||||
| **只能 8.3 短名** | 出处同一张存储架构说明的短名限制:`FF_USE_LFN=0`,不得以点开头、不得长名 | 文件名 = WAVE 加两位十进制再加 .BIN,共 100 个名字轮转覆盖;目录 /wave(与 /log 平级,FTP 根下可见) |
|
| **只能 8.3 短名** | 出处同一张存储架构说明的短名限制:`FF_USE_LFN=0`,不得以点开头、不得长名 | 文件名 = WAVE 加两位十进制再加 .BIN,共 100 个名字轮转覆盖;目录 /wave(与 /log 平级,FTP 根下可见) | |
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
图由 `tools/arch_diagram/gen_wave_record_flow_svg.py` 生成(改图改脚本重跑,勿手改 SVG)。
|
图由 `tools/arch_diagram/gen_wave_record_flow_svg.py` 生成(改图改脚本重跑,勿手改 SVG)。
|
||||||
|
|
||||||
|
取窗竞态的原因:
|
||||||
|

|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 6. 段文件格式
|
## 6. 段文件格式
|
||||||
|
|||||||
Reference in New Issue
Block a user