I'm working on SoC with ARM Cortex A9 processor and a CoreLink DMA-330 IP. The DMA controller has its own assembly instructions. My question is: How do I compile this DMA specific instruction set? DO I simply use the ARM Compiler (6) or do I need an extra tool for this?
Hello, as a possible variant:
follow to https://lwn.net/Articles/380310/ as example: pl330_dmago() ;there are loads instruction in hex directly to DBGINST0 register.
Ch 4.3 Instructions of https://static.docs.arm.com/ddi0424/d/DDI0424D_dma330_r1p2_trm.pdf have a instructions encoding
" A software driver instructs the DMAC to start execution of a DMA channel program by using one of the APB interfaces to inject a DMAGO instruction. The driver must poll the DMAC to ensure that a channel is idle before it attempts to inject a DMAGO for that channel "
How to inject https://developer.arm.com/docs/ddi0424/b/functional-overview/using-the-apb-slave-interfaces :
issue an instruction for the DMAC to execute by programming the following debug registers:
DBGCMD Register, see Debug Command Register
DBGINST0 Register, see Debug Instruction-0 Register
DBGINST1 Register, see Debug Instruction-1 Register.
As I say above directly via register.
View all questions in Arm Compilers forum