configs/stm32f439i-disco: Add an fb configuration

This commit is contained in:
Gregory Nutt 2017-11-13 14:33:47 -06:00
parent 102f1ea33f
commit bf724ddf61
5 changed files with 170 additions and 6 deletions

View File

@ -389,7 +389,7 @@ int lpc17_bringup(void)
}
#ifdef CONFIG_VIDEO_FB
/* Initialize and register the simulated framebuffer driver */
/* Initialize and register the framebuffer driver */
ret = fb_register(0, 0);
if (ret < 0)

View File

@ -677,10 +677,12 @@ Where <subdir> is one of the following:
external RS-232 line driver to the UART1 pins of the DISCO board
on PA9 and PA10 of connector P1.
ltdc:
----
STM32F429I-DISCO LTDC Framebuffer demo example. See
configs/stm32f429i-disco/ltdc/README.txt for additional information.
fb
--
STM32F429I-DISCO LTDC Framebuffer demo example. This is a simple
configuration used for some basic (non-graphic) debug of the framebuffer
character drivers using apps/examples/fb.
nsh:
---

View File

@ -0,0 +1,70 @@
README.txt
==========
STM32F429I-DISCO LTDC Framebuffer demo example
Configure and build
-----------------------------------------------
cd tools
./configure -a <appdir> stm32f429i-disco/ltdc
cd ..
make
Note!
In the current implementation the DMA2D driver only supports clut pixel format
if the LTDC driver it does. Otherwise it will not be compatible with the nx
framework. If CONFIG_FB_CMAP is configured, nx expects that any pixel format
supports color lookup tables. This is also the case for non CLUT formats e.g.
FB_FMT_RGB16_565. This may result in wrong color representation by nx if the
pixel format is unequal to FB_FMT_RGB8.
On the other hand layers with CLUT pixel format are not supported by the DMA2D
controller, in the case they will be used as destination layer for the following
operations:
- blit
- blend
- fillarea
To enable clut support in both LTDC and DMA2D driver the following
configurations are valid:
1.
- Enable LTDC_INTERFACE and LAYER1/LAYER2
- Layer1 FB_FMT_RGB8
- Layer2 any non clut format
But Layer2 can only be used as destination layer for dma2d operations above.
This configuration is not compatibly to nx because LAYER2 will be referenced
by up_fbgetvplane and is an invalid CLUT pixel format.
2.
- Enable LTDC_INTERFACE and LAYER1/LAYER2
- Layer2 FB_FMT_RGB8
- Layer1 any non clut format
But Layer1 can only be used as destination layer for dma2d operations above.
This configuration should be compatibly to nx because LAYER2 will be referenced
by up_fbgetvplane and is an valid CLUT pixel format.
All other non clut configuration work fine.
If using the DMA2D controller without the LTDC controller e.g. camera interface
than enable CONFIG_FB_CMAP and optional CONFIG_FB_TRANSPARENCY in your board
specific configuration.
Loading
-----------------------------------------------
st-flash write nuttx.bin 0x8000000
Executing
-----------------------------------------------
The ltdc is initialized during boot up.
Interaction with NSH is via the serial console at 115200 8N1 baud.
From the nsh comandline execute one (or both) of the examples:
- nx (default nx example)
- ltdc (trivial ltdc interface test)
Note! The ltdc example ends in an infinite loop. To get control of the nsh
start this example in the background with 'ltdc &'.

View File

@ -0,0 +1,78 @@
# CONFIG_ARCH_FPU is not set
# CONFIG_NX_DISABLE_16BPP is not set
# CONFIG_STM32_DMA2D_RGB888 is not set
# CONFIG_STM32_FLASH_PREFETCH is not set
CONFIG_ARCH_BOARD_STM32F429I_DISCO=y
CONFIG_ARCH_BOARD="stm32f429i-disco"
CONFIG_ARCH_BUTTONS=y
CONFIG_ARCH_CHIP_STM32=y
CONFIG_ARCH_CHIP_STM32F429Z=y
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH="arm"
CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL=y
CONFIG_BOARD_INITIALIZE=y
CONFIG_BOARD_LOOPSPERMSEC=16717
CONFIG_BUILTIN=y
CONFIG_DEBUG_CUSTOMOPT=y
CONFIG_DEBUG_SYMBOLS=y
CONFIG_DISABLE_POLL=y
CONFIG_DRIVERS_VIDEO=y
CONFIG_EXAMPLES_FB=y
CONFIG_EXAMPLES_NSH_CXXINITIALIZE=y
CONFIG_EXAMPLES_NSH=y
CONFIG_EXAMPLES_NX_BPP=16
CONFIG_EXAMPLES_NX=y
CONFIG_FS_PROCFS_REGISTER=y
CONFIG_FS_PROCFS=y
CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_HEAP2_BASE=0xD0000000
CONFIG_HEAP2_SIZE=8081408
CONFIG_INTELHEX_BINARY=y
CONFIG_MAX_TASKS=16
CONFIG_MAX_WDOGPARMS=2
CONFIG_MM_REGIONS=2
CONFIG_MQ_MAXMSGSIZE=64
CONFIG_NFILE_DESCRIPTORS=8
CONFIG_NFILE_STREAMS=8
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_FILEIOSIZE=512
CONFIG_NSH_LINELEN=64
CONFIG_NSH_READLINE=y
CONFIG_NX_BLOCKING=y
CONFIG_NX=y
CONFIG_NXFONT_MONO5X8=y
CONFIG_PREALLOC_MQ_MSGS=4
CONFIG_PREALLOC_TIMERS=4
CONFIG_PREALLOC_WDOGS=4
CONFIG_RAM_SIZE=114688
CONFIG_RAM_START=0x20000000
CONFIG_RAW_BINARY=y
CONFIG_RR_INTERVAL=200
CONFIG_SCHED_WAITPID=y
CONFIG_SDCLONE_DISABLE=y
CONFIG_SPI_CMDDATA=y
CONFIG_START_DAY=6
CONFIG_START_MONTH=12
CONFIG_START_YEAR=2011
CONFIG_STM32_CCM_PROCFS=y
CONFIG_STM32_CCMEXCLUDE=y
CONFIG_STM32_DISABLE_IDLE_SLEEP_DURING_DEBUG=y
CONFIG_STM32_DMA2D_NLAYERS=4
CONFIG_STM32_DMA2D=y
CONFIG_STM32_FSMC_SRAM=y
CONFIG_STM32_FSMC=y
CONFIG_STM32_JTAG_SW_ENABLE=y
CONFIG_STM32_LTDC_FB_BASE=0xD07B5000
CONFIG_STM32_LTDC_FB_SIZE=307200
CONFIG_STM32_LTDC_INTERFACE=y
CONFIG_STM32_LTDC=y
CONFIG_STM32_PWR=y
CONFIG_STM32_SPI5=y
CONFIG_STM32_USART1=y
CONFIG_STM32F429I_DISCO_ILI9341=y
CONFIG_TASK_NAME_SIZE=0
CONFIG_USART1_SERIAL_CONSOLE=y
CONFIG_USER_ENTRYPOINT="nsh_main"
CONFIG_VIDEO_FB=y
CONFIG_WDOG_INTRESERVE=0

View File

@ -55,6 +55,10 @@
# include <nuttx/mtd/mtd.h>
#endif
#ifdef CONFIG_VIDEO_FB
# include <nuttx/video/fb.h>
#endif
#ifdef CONFIG_USBMONITOR
# include <nuttx/usb/usbmonitor.h>
#endif
@ -340,9 +344,19 @@ int board_app_initialize(uintptr_t arg)
#endif /* CONFIG_MTD */
#endif /* CONFIG_STM32_SPI4 */
/* Create a RAM MTD device if configured */
#ifdef CONFIG_VIDEO_FB
/* Initialize and register the framebuffer driver */
ret = fb_register(0, 0);
if (ret < 0)
{
syslog(LOG_ERR, "ERROR: fb_register() failed: %d\n", ret);
}
#endif
#if defined(CONFIG_RAMMTD) && defined(CONFIG_STM32F429I_DISCO_RAMMTD)
/* Create a RAM MTD device if configured */
{
uint8_t *start = (uint8_t *) kmm_malloc(CONFIG_STM32F429I_DISCO_RAMMTD_SIZE * 1024);
mtd = rammtd_initialize(start, CONFIG_STM32F429I_DISCO_RAMMTD_SIZE * 1024);