mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Merge pull request #1217 from kwagyeman/kwabena/use_dma_buffer
Use DMA buffer for FIR Lepton
This commit is contained in:
commit
6cc75175a8
@ -144,6 +144,7 @@
|
||||
#define OMV_LINE_BUF_SIZE (3 * 1024) // Image line buffer round(640 * 2BPP * 2 buffers).
|
||||
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
|
||||
#define OMV_VFS_BUF_SIZE (1K) // VFS sturct + FATFS file buffer (624 bytes)
|
||||
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
|
||||
#define OMV_JPEG_BUF_SIZE (32 * 1024) // IDE JPEG buffer (header + data).
|
||||
|
||||
#define OMV_BOOT_ORIGIN 0x08000000
|
||||
|
||||
@ -104,13 +104,14 @@
|
||||
#define OMV_DMA_MEMORY SRAM2 // Misc DMA buffers
|
||||
|
||||
#define OMV_FB_SIZE (150K) // FB memory: header + QVGA/GS image
|
||||
#define OMV_FB_ALLOC_SIZE (13K) // minimum fb alloc size
|
||||
#define OMV_FB_ALLOC_SIZE (12K) // minimum fb alloc size
|
||||
#define OMV_STACK_SIZE (4K)
|
||||
#define OMV_HEAP_SIZE (51K)
|
||||
|
||||
#define OMV_LINE_BUF_SIZE (2 * 1024) // Image line buffer round(320 * 2BPP * 2 buffers).
|
||||
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
|
||||
#define OMV_VFS_BUF_SIZE (1K) // VFS sturct + FATFS file buffer (624 bytes)
|
||||
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
|
||||
#define OMV_FFS_BUF_SIZE (16K) // Flash filesystem cache
|
||||
#define OMV_JPEG_BUF_SIZE (8 * 1024) // IDE JPEG buffer size (header + data).
|
||||
|
||||
@ -121,9 +122,9 @@
|
||||
#define OMV_DTCM_ORIGIN 0x10000000
|
||||
#define OMV_DTCM_LENGTH 64K
|
||||
#define OMV_SRAM1_ORIGIN 0x20000000
|
||||
#define OMV_SRAM1_LENGTH 163K
|
||||
#define OMV_SRAM2_ORIGIN 0x20028C00
|
||||
#define OMV_SRAM2_LENGTH 29K
|
||||
#define OMV_SRAM1_LENGTH 162K
|
||||
#define OMV_SRAM2_ORIGIN 0x20028800
|
||||
#define OMV_SRAM2_LENGTH 30K
|
||||
|
||||
// Image sensor I2C
|
||||
#define ISC_I2C (I2C1)
|
||||
|
||||
@ -106,11 +106,12 @@
|
||||
#define OMV_FB_SIZE (300K) // FB memory: header + VGA/GS image
|
||||
#define OMV_FB_ALLOC_SIZE (84K) // minimum fb alloc size
|
||||
#define OMV_STACK_SIZE (16K)
|
||||
#define OMV_HEAP_SIZE (56K)
|
||||
#define OMV_HEAP_SIZE (55K)
|
||||
|
||||
#define OMV_LINE_BUF_SIZE (3 * 1024) // Image line buffer round(640 * 2BPP * 2 buffers).
|
||||
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
|
||||
#define OMV_VFS_BUF_SIZE (1K) // VFS sturct + FATFS file buffer (624 bytes)
|
||||
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
|
||||
#define OMV_FFS_BUF_SIZE (32K) // Flash filesystem cache
|
||||
#define OMV_JPEG_BUF_SIZE (22 * 1024) // IDE JPEG buffer (header + data).
|
||||
|
||||
|
||||
@ -151,6 +151,7 @@
|
||||
#define OMV_LINE_BUF_SIZE (3 * 1024) // Image line buffer round(640 * 2BPP * 2 buffers).
|
||||
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
|
||||
#define OMV_VFS_BUF_SIZE (1K) // VFS sturct + FATFS file buffer (624 bytes)
|
||||
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
|
||||
#define OMV_JPEG_BUF_SIZE (32 * 1024) // IDE JPEG buffer (header + data).
|
||||
|
||||
#define OMV_BOOT_ORIGIN 0x08000000
|
||||
|
||||
@ -158,6 +158,7 @@
|
||||
#define OMV_LINE_BUF_SIZE (11 * 1024) // Image line buffer round(2592 * 2BPP * 2 buffers).
|
||||
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
|
||||
#define OMV_VFS_BUF_SIZE (1K) // VFS sturct + FATFS file buffer (624 bytes)
|
||||
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
|
||||
#define OMV_JPEG_BUF_SIZE (1024*1024) // IDE JPEG buffer (header + data).
|
||||
|
||||
#define OMV_BOOT_ORIGIN 0x08000000
|
||||
|
||||
@ -155,6 +155,7 @@
|
||||
#define OMV_LINE_BUF_SIZE (11 * 1024) // Image line buffer round(2592 * 2BPP * 2 buffers).
|
||||
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
|
||||
#define OMV_VFS_BUF_SIZE (1K) // VFS sturct + FATFS file buffer (624 bytes)
|
||||
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
|
||||
#define OMV_JPEG_BUF_SIZE (1024*1024) // IDE JPEG buffer (header + data).
|
||||
|
||||
#define OMV_BOOT_ORIGIN 0x08000000
|
||||
|
||||
@ -158,6 +158,7 @@
|
||||
#define OMV_LINE_BUF_SIZE (11 * 1024) // Image line buffer round(2592 * 2BPP * 2 buffers).
|
||||
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
|
||||
#define OMV_VFS_BUF_SIZE (1K) // VFS sturct + FATFS file buffer (624 bytes)
|
||||
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
|
||||
#define OMV_JPEG_BUF_SIZE (1024*1024) // IDE JPEG buffer (header + data).
|
||||
|
||||
#define OMV_BOOT_ORIGIN 0x08000000
|
||||
|
||||
@ -62,7 +62,7 @@ static soft_timer_entry_t flir_lepton_spi_rx_timer = {};
|
||||
static int fir_lepton_spi_rx_cb_head = 0;
|
||||
static int fir_lepton_spi_rx_cb_expected_pid = 0;
|
||||
static int fir_lepton_spi_rx_cb_expected_seg = 0;
|
||||
static uint16_t *fir_lepton_spi_rx_cb_dma_buffer = NULL;
|
||||
extern int _fir_lepton_buf;
|
||||
|
||||
STATIC mp_obj_t fir_lepton_spi_resync_callback(mp_obj_t unused)
|
||||
{
|
||||
@ -75,7 +75,7 @@ STATIC mp_obj_t fir_lepton_spi_resync_callback(mp_obj_t unused)
|
||||
|
||||
OMV_FIR_LEPTON_CS_LOW();
|
||||
HAL_SPI_Receive_DMA(OMV_FIR_LEPTON_CONTROLLER->spi,
|
||||
(uint8_t *) fir_lepton_spi_rx_cb_dma_buffer,
|
||||
(uint8_t *) &_fir_lepton_buf,
|
||||
VOSPI_BUFFER_SIZE);
|
||||
|
||||
return mp_const_none;
|
||||
@ -115,10 +115,6 @@ static mp_obj_t fir_lepton_frame_cb = mp_const_none;
|
||||
|
||||
void fir_lepton_spi_callback(const uint16_t *base)
|
||||
{
|
||||
#if defined(MCU_SERIES_F7) || defined(MCU_SERIES_H7)
|
||||
SCB_InvalidateDCache_by_Addr((uint32_t *) base, VOSPI_PACKET_SIZE * sizeof(uint16_t));
|
||||
#endif
|
||||
|
||||
int id = base[0];
|
||||
|
||||
// Ignore don't care packets.
|
||||
@ -198,12 +194,12 @@ void fir_lepton_spi_callback(const uint16_t *base)
|
||||
|
||||
static void fir_lepton_spi_callback_half(SPI_HandleTypeDef *hspi)
|
||||
{
|
||||
fir_lepton_spi_callback(fir_lepton_spi_rx_cb_dma_buffer);
|
||||
fir_lepton_spi_callback((uint16_t *) &_fir_lepton_buf);
|
||||
}
|
||||
|
||||
static void fir_lepton_spi_callback_full(SPI_HandleTypeDef *hspi)
|
||||
{
|
||||
fir_lepton_spi_callback(fir_lepton_spi_rx_cb_dma_buffer + VOSPI_PACKET_SIZE);
|
||||
fir_lepton_spi_callback(((uint16_t *) &_fir_lepton_buf) + VOSPI_PACKET_SIZE);
|
||||
}
|
||||
|
||||
#if defined(OMV_FIR_LEPTON_VSYNC_PRESENT)
|
||||
@ -451,9 +447,6 @@ int fir_lepton_init(cambus_t *bus, int *w, int *h, int *refresh, int *resolution
|
||||
FB_ALLOC_NO_HINT);
|
||||
}
|
||||
|
||||
fir_lepton_spi_rx_cb_dma_buffer = (uint16_t *) fb_alloc(VOSPI_BUFFER_SIZE * sizeof(uint16_t),
|
||||
FB_ALLOC_PREFER_SPEED | FB_ALLOC_CACHE_ALIGN);
|
||||
|
||||
dma_init(&fir_lepton_spi_rx_dma,
|
||||
OMV_FIR_LEPTON_CONTROLLER->rx_dma_descr,
|
||||
DMA_PERIPH_TO_MEMORY,
|
||||
|
||||
@ -145,6 +145,10 @@ SECTIONS
|
||||
_vfs_buf = .; // VFS sturct + FATFS file buffer (around 624 bytes)
|
||||
. = . + OMV_VFS_BUF_SIZE;
|
||||
|
||||
. = ALIGN(16);
|
||||
_fir_lepton_buf = .; // FIR Lepton Packet Double Buffer (328 bytes)
|
||||
. = . + OMV_FIR_LEPTON_BUF_SIZE;
|
||||
|
||||
#if !defined(OMV_FFS_MEMORY) && defined(OMV_FFS_BUF_SIZE)
|
||||
. = ALIGN(16);
|
||||
_ffs_cache = .; // Flash filesystem cache
|
||||
|
||||
@ -126,6 +126,10 @@ SECTIONS
|
||||
_vfs_buf = .; // VFS sturct + FATFS file buffer (around 624 bytes)
|
||||
. = . + OMV_VFS_BUF_SIZE;
|
||||
|
||||
. = ALIGN(16);
|
||||
_fir_lepton_buf = .; // FIR Lepton Packet Double Buffer (328 bytes)
|
||||
. = . + OMV_FIR_LEPTON_BUF_SIZE;
|
||||
|
||||
#if !defined(OMV_FFS_MEMORY) && defined(OMV_FFS_BUF_SIZE)
|
||||
. = ALIGN(16);
|
||||
_ffs_cache = .; // Flash filesystem cache
|
||||
|
||||
Loading…
Reference in New Issue
Block a user