Hey,
i recently bought an development board (mimxrt1050_evk) to evaluate that processor for our new product. The included screen (rocktech 4,3 inch) is too small for our application. I have ordered a 7 inch display, but for testing purposes, I had the 5" version of the ordered one here. This is the datasheet of the board: https://4dsystems.com.au/mwdownloads/download/link/id/825/
I compared the datasheet of the display and the board and noticed that the pins of the lcd parallel port are a match. (Not the touch interface - that problem will be solved later).
So what I did is wrote a basic hello world application in zephyr using lvgl. I already compiled it for the simulator - all good and working.
Then I tried compiling it for the mimxrt1050_evk board. Also I had to set "CONFIG_DISPLAY=y" so that the screen will be available in the devicetree. It worked and I flashed the board. As the board has booted, the display was on but only showed mostly black and some multicolored lines. I expected that, because the resolution etc. did not match. So I edited zephyr/boards/arm/mimxrt1050_evk.dts from
&lcdif {
status = "okay";
width = <480>;
height = <272>;
hsync = <41>;
hfp = <4>;
hbp = <8>;
vsync = <10>;
vfp = <4>;
vbp = <2>;
polarity = <3>;
pixel-format = "bgr-565";
data-buswidth = "16-bit";
pinctrl-0 = <&pinmux_lcdif>;
pinctrl-names = "default";
backlight-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;
port {
lcd_panel_out: endpoint {
remote-endpoint = <&lcd_panel_in>;
};
};
};
to
&lcdif {
status = "okay";
width = <800>;
height = <480>;
hsync = <4>;
hfp = <8>;
hbp = <8>;
vsync = <4>;
vfp = <8>;
vbp = <8>;
polarity = <13>;
pixel-format = "rgb-888";
data-buswidth = "24-bit";
pinctrl-0 = <&pinmux_lcdif>;
pinctrl-names = "default";
backlight-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;
port {
lcd_panel_out: endpoint {
remote-endpoint = <&lcd_panel_in>;
};
};
};
But now, the display starts blank white and completely fades slowly to black - nothing else happening.
In fact, as soon as I touch the resolution this is happening. If I just set width to 490 (from 480) this is happening.If I use the default values, I think the elcdif driver is in fact working, but sending the wrong output to my display. As soon as I touch the config, the driver dies not seem to do any at all..
Also, there is no parameter for the CLK frequency - how would I set this? The Rocktech Display Frequency seems to differ from my display - I searched the devicetree files and drivers for hour, but i could not find out how this is done.
Any help is appreciated.
PS: The original Rocktech display seems to be EOL, too. They would not sell me the 7" version of the rocktech display...
已解决! 转到解答。
My bad, it wasn't anything nxp related. I just did nor have enough memory blocks for lvgl.
I set CONFIG_LV_Z_MEM_POOL_NUMBER_BLOCKS=12 and it worked.
Looks like its a memory problem. Original resolution = 400 x 272 = 108800 pixels. If I change he resolution to 329x329 (=108241 px), it also does NOT go blank (just weird color lines). So somehow I need to adjust the framebuffer size or memery size or something like that...
How does the elcdif driver get its memory and needed size?
I would be grateful for any advice...