diff --git a/CMakeLists.txt b/CMakeLists.txt index bab43939a686d7586dd75b0a22557adbb5dde95f..4638336592aa22549ce44d08a113f4a2700cee38 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -285,7 +285,8 @@ add_executable(test-usart-f7 src/tests/drivers/usart/test-usart.cpp) sbs_target(test-usart-f7 stm32f767zi_nucleo) add_executable(test-dma-mem-to-mem src/tests/drivers/test-dma-mem-to-mem.cpp) -sbs_target(test-dma-mem-to-mem stm32f407vg_stm32f4discovery) +#sbs_target(test-dma-mem-to-mem stm32f407vg_stm32f4discovery) +sbs_target(test-dma-mem-to-mem stm32f767zi_orion_engine) add_executable(test-i2c-driver-f4 src/tests/drivers/i2c/test-i2c-driver.cpp) sbs_target(test-i2c-driver-f4 stm32f429zi_stm32f4discovery) diff --git a/src/shared/drivers/dma/DMA.cpp b/src/shared/drivers/dma/DMA.cpp index b4ce822be5eccb85066a9967be82fbe52a8063cc..51e4e6d7f7af2fb53376322dafc07f6eb9d05bcd 100644 --- a/src/shared/drivers/dma/DMA.cpp +++ b/src/shared/drivers/dma/DMA.cpp @@ -203,18 +203,18 @@ void __attribute__((used)) DMA2_Stream4_IRQImpl() Boardcore::DMADefs::DMAStreamId::DMA2_Str4); } -void __attribute__((naked)) DMA2_Stream5_IRQHandler() -{ - saveContext(); - asm volatile("bl _Z20DMA2_Stream5_IRQImplv"); - restoreContext(); -} +// void __attribute__((naked)) DMA2_Stream5_IRQHandler() +// { +// saveContext(); +// asm volatile("bl _Z20DMA2_Stream5_IRQImplv"); +// restoreContext(); +// } -void __attribute__((used)) DMA2_Stream5_IRQImpl() -{ - Boardcore::DMADriver::instance().IRQhandleInterrupt( - Boardcore::DMADefs::DMAStreamId::DMA2_Str5); -} +// void __attribute__((used)) DMA2_Stream5_IRQImpl() +// { +// Boardcore::DMADriver::instance().IRQhandleInterrupt( +// Boardcore::DMADefs::DMAStreamId::DMA2_Str5); +// } void __attribute__((naked)) DMA2_Stream6_IRQHandler() { @@ -229,18 +229,18 @@ void __attribute__((used)) DMA2_Stream6_IRQImpl() Boardcore::DMADefs::DMAStreamId::DMA2_Str6); } -void __attribute__((naked)) DMA2_Stream7_IRQHandler() -{ - saveContext(); - asm volatile("bl _Z20DMA2_Stream7_IRQImplv"); - restoreContext(); -} +// void __attribute__((naked)) DMA2_Stream7_IRQHandler() +// { +// saveContext(); +// asm volatile("bl _Z20DMA2_Stream7_IRQImplv"); +// restoreContext(); +// } -void __attribute__((used)) DMA2_Stream7_IRQImpl() -{ - Boardcore::DMADriver::instance().IRQhandleInterrupt( - Boardcore::DMADefs::DMAStreamId::DMA2_Str7); -} +// void __attribute__((used)) DMA2_Stream7_IRQImpl() +// { +// Boardcore::DMADriver::instance().IRQhandleInterrupt( +// Boardcore::DMADefs::DMAStreamId::DMA2_Str7); +// } namespace Boardcore { @@ -446,7 +446,12 @@ void DMAStream::setup(DMATransaction& transaction) if (transaction.dstIncrement) registers->CR |= DMA_SxCR_PINC; + // SCB_CleanDCache_by_Addr + SCB_CleanDCache_by_Addr((uint32_t*)transaction.srcAddress, transaction.numberOfDataItems); registers->M0AR = reinterpret_cast<uint32_t>(transaction.srcAddress); + + // SCB_InvalidateDCache_by_Addr + SCB_InvalidateDCache_by_Addr((uint32_t*)transaction.dstAddress, transaction.numberOfDataItems); registers->PAR = reinterpret_cast<uint32_t>(transaction.dstAddress); } else diff --git a/src/shared/drivers/dma/DMADefs.cpp b/src/shared/drivers/dma/DMADefs.cpp index ea405c5811e80158aee94bab31e5cffcbb434bec..9b8b427f33c830dd49518ff99ce6ae98dd675074 100644 --- a/src/shared/drivers/dma/DMADefs.cpp +++ b/src/shared/drivers/dma/DMADefs.cpp @@ -46,12 +46,12 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str3, // Channel::CHANNEL0}}, // Stream currently not supported {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}}, - {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}}, + // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}}, {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}}, - {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str7, Channel::CHANNEL0}}, + // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str7, Channel::CHANNEL0}}, // SPI - {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL3}}, + // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL3}}, // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str3, // Channel::CHANNEL3}}, // Stream currently not supported {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str2, Channel::CHANNEL3}}, @@ -67,12 +67,12 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> {Peripherals::PE_SPI3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL0}}, // UART & USART - {Peripherals::PE_USART1_TX, - {DMAStreamId::DMA2_Str7, Channel::CHANNEL4}}, + // {Peripherals::PE_USART1_TX, + // {DMAStreamId::DMA2_Str7, Channel::CHANNEL4}}, {Peripherals::PE_USART1_RX, {DMAStreamId::DMA2_Str2, Channel::CHANNEL4}}, - {Peripherals::PE_USART1_RX, - {DMAStreamId::DMA2_Str5, Channel::CHANNEL4}}, + // {Peripherals::PE_USART1_RX, + // {DMAStreamId::DMA2_Str5, Channel::CHANNEL4}}, {Peripherals::PE_USART2_TX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL4}}, @@ -94,8 +94,8 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> {Peripherals::PE_USART6_TX, {DMAStreamId::DMA2_Str6, Channel::CHANNEL5}}, - {Peripherals::PE_USART6_TX, - {DMAStreamId::DMA2_Str7, Channel::CHANNEL5}}, + // {Peripherals::PE_USART6_TX, + // {DMAStreamId::DMA2_Str7, Channel::CHANNEL5}}, {Peripherals::PE_USART6_RX, {DMAStreamId::DMA2_Str1, Channel::CHANNEL5}}, {Peripherals::PE_USART6_RX, @@ -128,7 +128,7 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> {DMAStreamId::DMA1_Str0, Channel::CHANNEL3}}, // TIMERS - {Peripherals::PE_TIM1_UP, {DMAStreamId::DMA2_Str5, Channel::CHANNEL6}}, + // {Peripherals::PE_TIM1_UP, {DMAStreamId::DMA2_Str5, Channel::CHANNEL6}}, {Peripherals::PE_TIM1_TRIG, {DMAStreamId::DMA2_Str0, Channel::CHANNEL6}}, {Peripherals::PE_TIM1_TRIG, @@ -189,9 +189,9 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str4, Channel::CHANNEL1}}, {Peripherals::PE_TIM8_UP, {DMAStreamId::DMA2_Str1, Channel::CHANNEL7}}, - {Peripherals::PE_TIM8_TRIG, - {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}}, - {Peripherals::PE_TIM8_COM, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}}, + // {Peripherals::PE_TIM8_TRIG, + // {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}}, + // {Peripherals::PE_TIM8_COM, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}}, {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}}, {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL7}}, {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}}, @@ -199,7 +199,7 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> // Channel::CHANNEL7}}, // Stream currently not supported {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}}, {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str4, Channel::CHANNEL7}}, - {Peripherals::PE_TIM8_CH4, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}}, + // {Peripherals::PE_TIM8_CH4, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}}, // Others {Peripherals::PE_DAC1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL7}}, @@ -216,16 +216,16 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str1, Channel::CHANNEL2}}, {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str1, Channel::CHANNEL1}}, - {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL1}}, + // {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL1}}, // {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str3, Channel::CHANNEL4}}, // // Stream currently not supported {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str6, Channel::CHANNEL4}}, - {Peripherals::PE_CRYP_OUT, {DMAStreamId::DMA2_Str5, Channel::CHANNEL2}}, + // {Peripherals::PE_CRYP_OUT, {DMAStreamId::DMA2_Str5, Channel::CHANNEL2}}, {Peripherals::PE_CRYP_IN, {DMAStreamId::DMA2_Str6, Channel::CHANNEL2}}, - {Peripherals::PE_HASH_IN, {DMAStreamId::DMA2_Str7, Channel::CHANNEL2}}, + // {Peripherals::PE_HASH_IN, {DMAStreamId::DMA2_Str7, Channel::CHANNEL2}}, #endif // STM32F407xx @@ -460,12 +460,12 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str3, // Channel::CHANNEL0}}, // Stream currently not supported {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}}, - {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}}, + // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}}, {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}}, - {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str7, Channel::CHANNEL0}}, + // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str7, Channel::CHANNEL0}}, // SPI - {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL3}}, + // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL3}}, // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str3, // Channel::CHANNEL3}}, // Stream currently not supported {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str2, Channel::CHANNEL3}}, @@ -494,22 +494,22 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> {Peripherals::PE_SPI5_TX, {DMAStreamId::DMA2_Str6, Channel::CHANNEL7}}, // {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str3, // Channel::CHANNEL2}}, // Stream currently not supported - {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL7}}, - {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL9}}, + // {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL7}}, + // {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL9}}, - {Peripherals::PE_SPI6_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL1}}, + // {Peripherals::PE_SPI6_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL1}}, {Peripherals::PE_SPI6_RX, {DMAStreamId::DMA2_Str6, Channel::CHANNEL1}}, - {Peripherals::PE_QUADSPI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL3}}, + // {Peripherals::PE_QUADSPI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL3}}, {Peripherals::PE_QUADSPI, {DMAStreamId::DMA2_Str2, Channel::CHANNEL11}}, // UART & USART - {Peripherals::PE_USART1_TX, - {DMAStreamId::DMA2_Str7, Channel::CHANNEL4}}, + // {Peripherals::PE_USART1_TX, + // {DMAStreamId::DMA2_Str7, Channel::CHANNEL4}}, {Peripherals::PE_USART1_RX, {DMAStreamId::DMA2_Str2, Channel::CHANNEL4}}, - {Peripherals::PE_USART1_RX, - {DMAStreamId::DMA2_Str5, Channel::CHANNEL4}}, + // {Peripherals::PE_USART1_RX, + // {DMAStreamId::DMA2_Str5, Channel::CHANNEL4}}, {Peripherals::PE_USART2_TX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL4}}, @@ -539,8 +539,8 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> {Peripherals::PE_USART6_TX, {DMAStreamId::DMA2_Str6, Channel::CHANNEL5}}, - {Peripherals::PE_USART6_TX, - {DMAStreamId::DMA2_Str7, Channel::CHANNEL5}}, + // {Peripherals::PE_USART6_TX, + // {DMAStreamId::DMA2_Str7, Channel::CHANNEL5}}, {Peripherals::PE_USART6_RX, {DMAStreamId::DMA2_Str1, Channel::CHANNEL5}}, {Peripherals::PE_USART6_RX, @@ -570,7 +570,7 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> // Channel::CHANNEL8}}, // Stream currently not supported // TIMERS - {Peripherals::PE_TIM1_UP, {DMAStreamId::DMA2_Str5, Channel::CHANNEL6}}, + // {Peripherals::PE_TIM1_UP, {DMAStreamId::DMA2_Str5, Channel::CHANNEL6}}, {Peripherals::PE_TIM1_TRIG, {DMAStreamId::DMA2_Str0, Channel::CHANNEL6}}, {Peripherals::PE_TIM1_TRIG, @@ -631,9 +631,9 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str4, Channel::CHANNEL1}}, {Peripherals::PE_TIM8_UP, {DMAStreamId::DMA2_Str1, Channel::CHANNEL7}}, - {Peripherals::PE_TIM8_TRIG, - {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}}, - {Peripherals::PE_TIM8_COM, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}}, + // {Peripherals::PE_TIM8_TRIG, + // {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}}, + // {Peripherals::PE_TIM8_COM, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}}, {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}}, {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL7}}, {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}}, @@ -641,7 +641,7 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> // Channel::CHANNEL7}}, // Stream currently not supported {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}}, {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str4, Channel::CHANNEL7}}, - {Peripherals::PE_TIM8_CH4, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}}, + // {Peripherals::PE_TIM8_CH4, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}}, // Others {Peripherals::PE_DAC1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL7}}, @@ -664,26 +664,26 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> {Peripherals::PE_SAI2_A, {DMAStreamId::DMA2_Str4, Channel::CHANNEL3}}, {Peripherals::PE_SAI2_A, {DMAStreamId::DMA2_Str2, Channel::CHANNEL10}}, - {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}}, + // {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}}, {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str4, Channel::CHANNEL1}}, {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str0, Channel::CHANNEL10}}, - {Peripherals::PE_SAI2_B, {DMAStreamId::DMA2_Str7, Channel::CHANNEL0}}, + // {Peripherals::PE_SAI2_B, {DMAStreamId::DMA2_Str7, Channel::CHANNEL0}}, {Peripherals::PE_SAI2_B, {DMAStreamId::DMA2_Str6, Channel::CHANNEL3}}, {Peripherals::PE_SAI2_B, {DMAStreamId::DMA2_Str1, Channel::CHANNEL10}}, {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str1, Channel::CHANNEL1}}, - {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL1}}, + // {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL1}}, // {Peripherals::PE_SDMMC1, {DMAStreamId::DMA2_Str3, // Channel::CHANNEL4}}, // Stream currently not supported {Peripherals::PE_SDMMC1, {DMAStreamId::DMA2_Str6, Channel::CHANNEL4}}, {Peripherals::PE_SDMMC2, {DMAStreamId::DMA2_Str0, Channel::CHANNEL11}}, - {Peripherals::PE_SDMMC2, {DMAStreamId::DMA2_Str5, Channel::CHANNEL11}}, + // {Peripherals::PE_SDMMC2, {DMAStreamId::DMA2_Str5, Channel::CHANNEL11}}, - {Peripherals::PE_CRYP_OUT, {DMAStreamId::DMA2_Str5, Channel::CHANNEL2}}, + // {Peripherals::PE_CRYP_OUT, {DMAStreamId::DMA2_Str5, Channel::CHANNEL2}}, {Peripherals::PE_CRYP_IN, {DMAStreamId::DMA2_Str6, Channel::CHANNEL2}}, - {Peripherals::PE_HASH_IN, {DMAStreamId::DMA2_Str7, Channel::CHANNEL2}}, + // {Peripherals::PE_HASH_IN, {DMAStreamId::DMA2_Str7, Channel::CHANNEL2}}, // {Peripherals::PE_SPDIFRX_DT, {DMAStreamId::DMA1_Str1, // Channel::CHANNEL0}}, // Stream currently not supported @@ -696,16 +696,16 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> {DMAStreamId::DMA2_Str4, Channel::CHANNEL8}}, {Peripherals::PE_DFSDM1_FLT1, {DMAStreamId::DMA2_Str1, Channel::CHANNEL8}}, - {Peripherals::PE_DFSDM1_FLT1, - {DMAStreamId::DMA2_Str5, Channel::CHANNEL8}}, + // {Peripherals::PE_DFSDM1_FLT1, + // {DMAStreamId::DMA2_Str5, Channel::CHANNEL8}}, {Peripherals::PE_DFSDM1_FLT2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL8}}, {Peripherals::PE_DFSDM1_FLT2, {DMAStreamId::DMA2_Str6, Channel::CHANNEL8}}, // {Peripherals::PE_DFSDM1_FLT3, {DMAStreamId::DMA2_Str3, // Channel::CHANNEL8}}, // Stream currently not supported - {Peripherals::PE_DFSDM1_FLT3, - {DMAStreamId::DMA2_Str7, Channel::CHANNEL8}}, + // {Peripherals::PE_DFSDM1_FLT3, + // {DMAStreamId::DMA2_Str7, Channel::CHANNEL8}}, {Peripherals::PE_JPEG_IN, {DMAStreamId::DMA2_Str0, Channel::CHANNEL9}}, // {Peripherals::PE_JPEG_IN, {DMAStreamId::DMA2_Str3, diff --git a/src/shared/drivers/dma/DMADefs.h b/src/shared/drivers/dma/DMADefs.h index eb62a8ccc88acb7b8fda9cf4d089a27ee74ab5a0..e855f66b1bdba235e0674a788c6778989a9dbb45 100644 --- a/src/shared/drivers/dma/DMADefs.h +++ b/src/shared/drivers/dma/DMADefs.h @@ -67,9 +67,9 @@ enum class DMAStreamId : uint8_t DMA2_Str2 = 10, // DMA2_Str3 = 11, DMA2_Str4 = 12, - DMA2_Str5 = 13, + // DMA2_Str5 = 13, DMA2_Str6 = 14, - DMA2_Str7 = 15, + // DMA2_Str7 = 15, }; /** diff --git a/src/tests/drivers/test-dma-mem-to-mem.cpp b/src/tests/drivers/test-dma-mem-to-mem.cpp index 6eef0b9f22b5d4b13861974cb5865c551bf081df..7f4447fcc91197fbc42ed6215bb206674d669d61 100644 --- a/src/tests/drivers/test-dma-mem-to-mem.cpp +++ b/src/tests/drivers/test-dma-mem-to-mem.cpp @@ -31,8 +31,21 @@ void printBuffer(uint8_t* buffer, size_t size); int main() { - DMAStreamGuard stream = DMADriver::instance().acquireStreamForPeripheral( - DMADefs::Peripherals::PE_MEM_ONLY); + printf("ok funziona sulla engine\n"); + // SCB_DisableDCache(); + // SCB_DisableICache(); + // miosix::Thread::sleep(500); + + /** + * verificare quali stream sono usate sull f7 e quali no (provando + * a compilare avendo tutti gli irq handler attivi) + * + * è giusto che non runni i callback in polling mode? + */ + + // DMAStreamGuard stream = DMADriver::instance().acquireStreamForPeripheral( + // DMADefs::Peripherals::PE_MEM_ONLY); + DMAStreamGuard stream = DMADriver::instance().acquireStream(DMADefs::DMAStreamId::DMA2_Str0, DMADefs::Channel::CHANNEL0); if (!stream.isValid()) { @@ -65,9 +78,37 @@ int main() .enableTransferCompleteInterrupt = true, }; stream->setup(trn); + stream->enable(); + // auto start = std::chrono::steady_clock::now(); stream->waitForTransferComplete(); + // auto end = std::chrono::steady_clock::now(); + + // auto dur = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start); + // printf("tempo impiegato: %lld ns\n\n", dur.count()); + + // stream->readFlags(); + // printf("direct mode error flag: %d\n", stream->getDirectModeErrorFlagStatus()); + // printf("fifo error flag: %d\n", stream->getFifoErrorFlagStatus()); + // printf("half trans flag: %d\n", stream->getHalfTransferFlagStatus()); + // printf("trans complete flag: %d\n", stream->getTransferCompleteFlagStatus()); + // printf("trans error flag: %d\n\n", stream->getTransferErrorFlagStatus()); + + SCB_InvalidateDCache_by_Addr((uint32_t*)buffer2, 8); // risolve solo per i primi 4 byte + // SCB_InvalidateDCache_by_Addr((uint32_t*)(buffer2+4), 8); // risolve solo per gli ultimi 4 byte + // SCB_CleanDCache_by_Addr((uint32_t*)buffer2, 8); // non fa nulla + + if ( ((uint64_t)buffer2 & 0x3) == 0 ) + { + // The address is 4-byte aligned here + printf("buf2 is 32-bit aligned\n"); + } + else + { + printf("buf2 IS NOT 32-bit aligned\n"); + } + printf("After:\n"); printf("Buffer 1:\n");