feat(edma): EDMA driver implementation and host unit tests #102
No reviewers
Labels
No labels
Category
App
Category
Documentation
Category
Firmware
Category
Hardware
Category
Qms
PR_Size
L
PR_Size
M
PR_Size
S
PR_Size
XL
PR_Size
XS
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Priority
Very Low Priority
Size
Epic
Size
Feature
Size
Task
Status
Blocked
Status
Draft
Status
Needs-review
Team
Board
Team
Dev
Team
Management
Type
Bug
Type
Capa
Type
Improvement
Type
New-feature
Type
Regulatory
Type
Usability
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
opendutchsolutions.public/hal_awr6843!102
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/101-edma-driver"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Description
Adds
hal/dss/edma/hal_edma.c/.h— the EDMA (TPCC/TPTC) driver: bring-up (clears latched error status — no software-visible reset control exists for this block),hal_edma_configure_transfer()(fills one PaRAM entry for a basic AB-Sync one-shot transfer, arming the completion interrupt for that channel),hal_edma_trigger_manual()/hal_edma_channel_enable()/hal_edma_channel_disable()(write-1-to-set/clear strobes), and the six raw device handlers (EDMA_TPCC0_DONE_IRQHandler/EDMA_TPCC0_ERROR_IRQHandler/EDMA_TPTC0_DONE_IRQHandler/EDMA_TPTC0_ERROR_IRQHandler/EDMA_TPTC1_DONE_IRQHandler/EDMA_TPTC1_ERROR_IRQHandler) decoding/clearing status to a weak, application-overridablehal_edma_irq_handler()hook. Both independent TPCC instances supported (TPCC0 owning TPTC0/TPTC1, TPCC1 owning TPTC2/TPTC3), though only TPCC0's channels have VIM routing. Self-contained — no cross-module dependency.Deliberately minimal one-shot-transfer scope (documented in
hal_edma.h's top-of-file comment): no QDMA, no chained/linked transfers, no manual-mode/A-Sync edge cases beyond basic AB-Sync, no per-shadow-region interrupt-enable shadowing.Why
Continues the DSS-side driver batch started by Mailbox (#99/#100).
Related Issue
Closes #101
Type of Change
Impact Assessment
Testing
testing/dss/edma/test_edma_functionallocally (5 test cases, 91 assertions, all passing) alongside the full existingctestsuite (343/343 passing, no regressions); ran a full MISRA C:2025 pass (0 unsuppressed findings,-DENABLE_EDMA_MODULEadded); reformatted and re-verified against the exact clang-format 18.1.3 the CI runner uses; sanity-checked by flippinghal_edma_configure_transfer()'sOPT.SYNCDIMbit from 1 to 0, confirming the test suite fails (1 assertion), then reverting.PR Size
Size justification / exemption (if L or XL):
882 raw lines across 6 files, all hand-reviewed (no mechanically-generated content). Not split further — the driver (
hal_edma.c/.h, 596 lines) and its comprehensive Catch2 spec (test_edma.c, 278 lines, covering both TPCC instances, PaRAM entry configuration, channel bounds checking, and all six IRQ handlers) don't decompose into independently-reviewable sub-PRs, same rationale as every prior driver PR in this project. The remaining files are small CMake/MISRA wiring diffs, also not independently reviewable apart from the driver they enable.Checklist
type(scope): descriptionconvention withRelates to #<issue>footerSummary
hal/dss/edma/hal_edma.c/.h: EDMA driver (bring-up, PaRAM transfer config, trigger/enable/disable, IRQ handlers) — QDMA/chaining/shadow-region interrupt shadowing out of scope, documented in the header's top-of-file commenttesting/dss/edma/test_edma.c(+CMakeLists.txt): Catch2 functional test suite. Namedtest_edma_functional(nottest_edma) to avoid a CMake target-name collision withti_hal_comparison/test_edma.c's register-layout comparison test.testing/CMakeLists.txt:add_subdirectory(dss/edma)andENABLE_EDMA_MODULEin the sharedhw_fakescompile definitionstools/misra/run_misra.sh:-DENABLE_EDMA_MODULEadded