Make ring buffers volatile
This commit is contained in:
@@ -29,7 +29,7 @@
|
||||
* @brief DMA ring buffer for data transfer from peripheral to memory
|
||||
*/
|
||||
struct dma_ring_buffer_to_mem {
|
||||
void *data_ptr; /**< @brief Ring buffer */
|
||||
volatile void *data_ptr; /**< @brief Ring buffer */
|
||||
size_t buffer_count; /**< @brief Size of buffer in multiples of elements */
|
||||
DMA_Stream_TypeDef *dma; /**< @brief DMA Stream used to transfer data */
|
||||
size_t get_idx; /**< @brief Get index for SW. Indicates the next element to be read */
|
||||
@@ -41,7 +41,7 @@ struct dma_ring_buffer_to_mem {
|
||||
* @brief DMA ring buffer for data transfer from memory to peripheral
|
||||
*/
|
||||
struct dma_ring_buffer_to_periph {
|
||||
void *src_buffer; /**< @brief Ring buffer */
|
||||
volatile void *src_buffer; /**< @brief Ring buffer */
|
||||
size_t buffer_count; /**< @brief Size of buffer in multiples of elements */
|
||||
DMA_Stream_TypeDef *dma; /**< @brief DMA Stream used to transfer data */
|
||||
volatile size_t dma_get_idx_current; /**< @brief Current get index of the (not yet) running DMA Stream. */
|
||||
@@ -64,7 +64,7 @@ struct dma_ring_buffer_to_periph {
|
||||
* @note The ring buffers do not have an overrun detection. You have to make sure to empty the buffer in time.
|
||||
* @return Status (0 is ok)
|
||||
*/
|
||||
int dma_ring_buffer_periph_to_mem_initialize(struct dma_ring_buffer_to_mem *dma_buffer, uint8_t base_dma_id, DMA_Stream_TypeDef *dma_stream, size_t buffer_element_count, size_t element_size, void *data_buffer, void *src_reg, uint8_t dma_trigger_channel);
|
||||
int dma_ring_buffer_periph_to_mem_initialize(struct dma_ring_buffer_to_mem *dma_buffer, uint8_t base_dma_id, DMA_Stream_TypeDef *dma_stream, size_t buffer_element_count, size_t element_size, volatile void *data_buffer, void *src_reg, uint8_t dma_trigger_channel);
|
||||
|
||||
/**
|
||||
* @brief Get data from a peripheral to memory ring buffer
|
||||
@@ -73,7 +73,7 @@ int dma_ring_buffer_periph_to_mem_initialize(struct dma_ring_buffer_to_mem *dma_
|
||||
* @param[out] len Length in elements
|
||||
* @return 0 if successful, but no data), -1 if error, 1 if data, and 2 if data with wrap around. Call function again in this case to retrieve rest after wrap around.
|
||||
*/
|
||||
int dma_ring_buffer_periph_to_mem_get_data(struct dma_ring_buffer_to_mem *buff, const void **data_buff, size_t *len);
|
||||
int dma_ring_buffer_periph_to_mem_get_data(struct dma_ring_buffer_to_mem *buff, const volatile void **data_buff, size_t *len);
|
||||
|
||||
/**
|
||||
* @brief Stop the ring buffer operation.
|
||||
@@ -94,7 +94,7 @@ void dma_ring_buffer_periph_to_mem_stop(struct dma_ring_buffer_to_mem *buff);
|
||||
* @param[in] dest_reg Destination register to stream data to
|
||||
* @return 0 if successful
|
||||
*/
|
||||
int dma_ring_buffer_mem_to_periph_initialize(struct dma_ring_buffer_to_periph *dma_buffer, uint8_t base_dma_id, DMA_Stream_TypeDef *dma_stream, size_t buffer_element_count, size_t element_size, void *data_buffer, uint8_t dma_trigger_channel, void *dest_reg);
|
||||
int dma_ring_buffer_mem_to_periph_initialize(struct dma_ring_buffer_to_periph *dma_buffer, uint8_t base_dma_id, DMA_Stream_TypeDef *dma_stream, size_t buffer_element_count, size_t element_size, volatile void *data_buffer, uint8_t dma_trigger_channel, void *dest_reg);
|
||||
|
||||
/**
|
||||
* @brief Insert data into the ring buffer
|
||||
|
Reference in New Issue
Block a user