-
OK6254-C Development Board LVDS Screen Replacement Logo Solution
2 days ago • 0 commentsLVDS Screen Logo Display Optimization
The LVDS display's driver, panel-lvds, is compiled as a module by default. During boot, module-type drivers are loaded later, causing the LVDS display to initialize later, and it takes around 20 seconds for the desktop to appear on the LVDS screen.
To initialize the LVDS display earlier, you need to compile the LVDS driver into the kernel, allowing it to initialize earlier.
The main modification can be made by compiling panel-lids.c directly into the kernel in the OK6254-C_defconfig file.
OK6254-linux-sdk/OK6254-linux-kernel/arch/arm64/configs/OK6254-C_defconfig CONFIG_DRM_PANEL_LVDS=y
And then carry out full compilation and flashing. Start after burning, LVDS will display the penguin logo about 10 seconds after starting. Here is how to replace the penguin logo with other logos.
Replace Penguin Logo With Custom Logo
First, find the location of the penguin logo as follows:
The penguin logo image used on the TI AM6254 platform is called logo _ ti _ clut224.ppm. Here's how to replace the image with a custom logo.
Note: The logo resolution cannot exceed the resolution of the LVDS screen, and the background color should be black. Take 1280x800 as an example. Here is a 1280x800 resolution picture made by the drawing software under windows, preferably in PNG format. If it is a picture in other formats, please convert it to PNG format first and then perform the following operations. (myilogo.png)
Put it anywhere on the virtual machine, and convert it to the format needed, with the following command:
pngtopnm mylogo.png > my_linux_logo.pnm pnmquant 224 my_linux_logo.pnm > my_linux_logo_224.pnm pnmtoplainpnm my_linux_logo_224.pnm > my_linux_logo_224.ppm
After converting the image to ppm format, copy the resulting image in ppm format to the path where the penguin logo is located. Then we convert the image in ppm format to a.c file, where we use the pnmtologo tool under the path (if you report a permission error, add sudo before the command).
./pnmtologo -t clut224 -n logo_ti_clut224 -o logo_ti_clut224.c my_linux_logo_224.ppm
Realize logo centered display
1. Modify the fb_show_logo_line function in source code /driver/video/fbdev/core/fbmem.c.
//image.dx=0; //image.dy=y; image.width=logo->width; image.height=logo->height; image.dx = (info->var.xres / 2) - (image.width / 2); image.dy = (info->var.yres / 2) - (image.height / 2);
Description:
The image. dx and image. dy variables are used to set the top-left corner of the image on the screen. The info-> var.xres and info-> var.yres variables represent the horizontal and vertical resolution of the screen, respectively. The image.width and image.height variables represent the width and height of the flag image, respectively. image. dx is calculated to center the image horizontally on the screen by subtracting half the image's width from half the screen's width. image. dy is calculated to vertically center the image on the screen by subtracting half the height of the image from half the height of the screen. Overall, this code centers the logo image horizontally and vertically on the screen.
2. Modify the source code/driver/video/fbdev/core/fbcon.c中的fbcon_prepare_logo() function.
After logo_height = fb_prepare_logo(info, ops->rotate); add the following line of code
logo_height += (info->var.yres / 2) - (logo_height / 2);
Now you can compile and burn it. If you are only in the debug phase, you can compile the kernel separately and replace the Image. It can also be fully compiled and then burned.
Note: If the logo is not centered or not displayed, check whether the LCD screen has been turned off, otherwise the resolution of the LCD screen will prevail.
Common issues 1
Image has more than 224 colors Use ppmquant(1) to reduce the number of colors
Solutions
ppmquant 224 logo_ti_clut224.ppm > logo_ti_clut224_224.ppm
Common issues 2
logo_ti_clut224.ppm: Binary PNM is not supported ...
Read more » -
T113 Buildroot Cross-compilation Toolchain Replacement Methods
7 days ago • 0 commentsCross-compilation Toolchain Location:
OK113i-linux-sdk/out/t113_i/ ok113i/longan/buildroot/host/bin/arm-linux-gnueabihf-gcc
Before executing the method below, please delete the out directory and decompress the cross-compilation tool chain in the lower path of the source code./buildroot/buildroot-201902/dl/toolchain-external-linaro-arm/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz
1. Modify mkcmd.sh and mkcommon.sh according to the patch modification method in the figure.
2. Go back to the sdk path and execute the following command:
forlinx@ubuntu:~/shuishui/OK113i-linux-sdk$ ./build.sh config
It is modified to emmc or NAND version according to the actual board configuration.
3. Next, execute the following command to enter the configuration of buildroot.
Enter toolchain
Modify the relevant options as shown in the figure below:
Enter target options
Because hard-float is needed, the highlighted part in the diagram needs to be modified to EABIhf.
Save and exit after setting.
Enter the following path to compile.
./build.sh
Full compilation may require an error with an environment variable, resulting in a failure to compile.
If this problem occurs, execute the following instructions and compile the buildroot.
export LD_LIBRARY_PATH=""
In the middle of compiling buildroot, you may encounter an error as shown in the following figure.
If these errors are encountered, you can find the corresponding source code and compile it through the tools in the decompressed cross-compilation chain. Subsequently, place the compiled executable file in the bin path and the library file in the lib path. Finally, continue executing ./build.sh until compilation is successful. After compiling successfully, return to the SDK path, perform full compilation build. sh, and then pack the image.
Next, write a test program to verify whether the cross-compilation chain can be successfully replaced. Here, you need to compare the program compiled with the original compilation chain with the program cross-compiled with the current compilation chain.
The part highlighted in the diagram is a program compiled using our original cross-compilation chain. It can be observed that it does not run normally. "Test" is a program compiled using the tools from the replaced cross-compilation chain, which runs normally. Additionally, the relevant information of the two programs can be determined using the ''strings'' tool.
-
FET113i-S SoM Now Supports RISC-V, Offering a Superior Cost-Effective Solution
11/07/2024 at 07:09 • 0 commentsFET113i-S is an industrial-grade SoM designed by Forlinx Embedded based on Allwinner T113-i processor. With excellent stability and ultra-high cost performance, FET113i-S SoM has gained wide attention from customers. As a multi-core heterogeneous architecture chip with an A7 core, a RISC-V core, and a DSP core, Allwinner Technology recently released the RISC-V core (XuanTie C906) details for the T113-i, and Forlinx embedded quickly adapted to this development.
1. What is RISC-V?
RISC-V is an open-source instruction set architecture (ISA) based on the principles of Reduced Instruction Set Computing (RISC). It was first introduced by the University of California, Berkeley in 2010 and has since gained significant attention and support from academia and industry worldwide. RISC-V architecture, characterized by its openness, simplicity, and scalability, is emerging as a formidable force in the global semiconductor industry.
2. What Are the Advantages of the T113-i's Risc-v?
High Efficiency and Low Power Consumption
RISC-V architecture follows the principles of reduced instruction set computer, which simplifies the hardware design, improves the execution efficiency and reduces the development cost. The RISC-V cores in the T113-i processor can efficiently perform a wide range of computational tasks while maintaining low power consumption, making it ideal for resource-constrained edge computing environments.
Modularity and Scalability
RISC-V architecture is designed with simplicity and modularity in mind, allowing different instruction set extensions to be chosen based on requirements. RISC-V core in the T113-i processor supports multiple standardized extension instruction sets, such as M (integer multiplication and division), A (atomic operations), and F/D/Q (single/double/quad-precision floating-point operations), enabling flexible combination and addition according to specific application scenarios.
Open Standard and No Licensing Fees
RISC-V is open source, allowing anyone to use and extend it for free, without licensing fees. This greatly promotes technology sharing and innovation, reducing product development costs.
Real-Time Performance
In the T113-i, the A7 core, RISC-V core, and DSP core can run simultaneously, realizing multi-core heterogeneous computing. This design enhances overall system performance and meets diverse application requirements. The RISC-V core, in particular, can accommodate applications with high real-time requirements, ensuring rapid response and processing of real-time data.
3. A Quality Choice for Cost Reduction
Forlinx Embedded FET113i-S SoM, with completed RISC-V core adaptation, is highly competitive in price. Its industrial-grade quality enables it to handle more complex application scenarios, while its comprehensive peripheral interface resources make it both powerful and user-friendly.
FET113i-S SoM's clear advantages, combined with Folinx Embedded's stable supply chain and robust technical support, ensure swift project implementation and market primacy for customers.