We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi,
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?
Thanks
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
https://developer.arm.com/docs/dai0239/latest/example-programs-for-the-corelink-dma-controller-dma-330-application-note-239
" 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.
Hi Bulat,
thanks for the quick response. It's all I need to know.