Hi Nurettin,
I don't know details about LTDC hardware of STM32F429, but I think you
will need to modify the file
nuttx/configs/stm32f429i-disco/src/stm32_lcd.c to work with your LCD.
This contribution was done by Marco Krahl, he is who knows more about it.
I used the LTDC in the past when I ported FGL to NuttX and get the 3D
Cube demo working on it: https://www.youtube.com/watch?v=XOdfvi7cgLc
but I didn't modify the LCD driver.
BR,
8 Mayıs 2018 Salı 16:17:35 UTC+3 tarihinde Alan Carvalho de Assis yazdı:Hi Nurettin,Hi Alan,I don't know details about LTDC hardware of STM32F429, but I think you
will need to modify the file
nuttx/configs/stm32f429i-disco/src/stm32_lcd.c to work with your LCD.I tried to but i could not work.This contribution was done by Marco Krahl, he is who knows more about it.
What function is at 08010dee ?
BR,
> email to nuttx+unsubscribe@googlegroups.com.
What function is at 08010dee ?Which command do i use for this purpose?
I suspect that the version of nuttx that you ran arm-none-eabi-objdump on is not the same version that you had in FLASH at time of the failure.
I suspect that the version of nuttx that you ran arm-none-eabi-objdump on is not the same version that you had in FLASH at time of the failure.How to check this?
Our nuttx version is nuttx-7.9.
Our nuttx version is nuttx-7.9.
That is very old! I release code every 3 months and that is 15 releases behind from way back to April of 2015. Not much that is said in this forum applies to anything that old.
i have implemented the ltdc and dma2d drivers for the stm32f429i in 2015/2016. At this time nuttx did not provide a clear guideline how to handle accessibility of additional functionality (graphic acceleration) by userspace (application level), provided by the underlying hardware.
Therefore an ltdc interface has been exported to provide the functionality at application level, e.g. for testing by the ltdc example within apps.
This example has been removed in 2017, because of direct acessing the kernel by the ltdc interface. This is absolutely correct within the nuttx os design rules. But this also has been broken down the access to the ltdc and dm2ad hardware.
Today, nuttx supports fb interface and handling by ioclt for basic interactions with the framebuffer driver and mmap to write to the memory region which is shared by the hardware controller and of course the graphic driver. I'm familar with this because this is also done by linux.
However, im willing to make the ltdc and dma2d controller accessible by posix interface using ioctl and mmap. But there are some additional information missing:
Is there any plan to add a v4l2 or v4n interface to nuttx?
Okay, I will take a look in the code an check what is also necessary than the planeinfo, before i suggest an interface extension.
Suggestion:Expanding fb_videoinfo_s to:
But there are farther two existing interfaces /dev/fb0-0 and /dev/fb0-1 right?
Seems reasonable. Would you like me to create a branch in the upstream repository?With pleasure. Please send me account via mail when not shared for everyone.
The critical thing is how mmap() works. mmap takes the file descriptor and returns the framebuffer address (mapped for access in user space if needed). I don't think that the semantics of mmap() would support multiple overlays on the same device. That would be the only argument for multiple devices for overlays and color planes.NOTE: The framebuffer address is available in the planeinfo as well, However, I think we have to stick with the semantics of mmap() to handle non-FLAT address environments where framebuffers need to be mapped into the user address space with an MPU or MMU.
using offsets when mapping the overlay memory to the application layer could be a straightforward solution.The first overlay 0 has the offset 0. The offset of overlay 1 results by width * height * bpp of the overlay 0 and so on.
Sure, this requires that the entire overlay memory must be in a continguous address space. But that also complicates the access to the overlay memory using mmap.
Otherwise we need a file descriptor for each overlay. But control of all overlays can be done by each file descriptor.Both solutions are not the best i think.
using offsets when mapping the overlay memory to the application layer could be a straightforward solution.The first overlay 0 has the offset 0. The offset of overlay 1 results by width * height * bpp of the overlay 0 and so on.
During the interface design i come to the conclusion it would be fine to have two or three additional ioctl commands.The first to create a virtual framebuffer device. This could be useful to access memory managed by the graphic controller/hardware, e.g. by stm's dma2d.
The second/third to control capabilities of the overlay or overlay operations.But this also ensure the interface must be expanded for future graphic operations. The question here is? What kind of hardware behaves like a framebuffer?
Perhaps it is smart to define another interface like dri/drm or v4l for such devices/controller.
During the interface design i come to the conclusion it would be fine to have two or three additional ioctl commands.
But this also ensure the interface must be expanded for future graphic operations. The question here is? What kind of hardware behaves like a framebuffer?
Look at drivers/lcd/lcd_framebuffer.c. That adapts a serial or parallel LCD interface to provide a framebuffer. It looks like any other framebuffer device, but must support a display update IOCTL command.
--
You received this message because you are subscribed to the Google Groups "NuttX" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nuttx+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Does anybody see any problems?
I don't have any related hardware here. I took a look in the f769 reference manual in the past. Both cpus (f769 and f429) provides the same register set used by the LTDC and DMA2D controller. So the functionality seems identical. Should both share the corresponding code? I think more about to copy and modify. However, we can decide that when the f429 port is complete.