• Forlinx Embedded T527 SoM Adapted to Forlinx Desktop 22.04

    15 hours ago 0 comments

    Forlinx Embedded Systems has recently adapted the FET527N-C SoM for the latest Forlinx Desktop 22.04 operating system, bringing significant improvements to user experience. Users can now enjoy smoother, more stable operations and take advantage of the rich features and innovative characteristics of Forlinx Desktop 22.04 to enhance work efficiency and application compatibility.

    Forlinx Embedded T527 SoM Adapted to Forlinx Desktop 22.04

    OK527N-C Development Board Running Forlinx Desktop 22.04

    1. Dual Empowerment of System and Hardware

    Forlinx FET527N-C SoM is equipped with Allwinner’s T527N processor, which integrates 8 x high-performance ARM Cortex-A55 cores, along with 1 RISC-V core and 1 x DSP core, providing 2 x TOPS of NPU computing power to support complex applications and AI requirements.

    Forlinx Desktop 22.04 optimizes the kernel and resource management strategies to fully unleash the hardware’s potential, closely integrating with the FET527N-C SoM. This combination offers users a smoother and more efficient experience in handling large data and complex algorithms.

    2. Easy to Use & Efficient Development

    On Forlinx Desktop 22.04, APT (Advanced Package Tool) is used as the software package management tool, providing powerful functions for searching, installing, upgrading, and deleting packages, making operations simpler and development more efficient.

    3. Stable Supply

    Forlinx FET527N-C SoM has 10 to 15 years' longevity, ensuring that users receive stable hardware support over the long term.


    Forlinx FET527N-C SoM 10 to 15 years longevity

  • 3.1s Fast Startup! Deploying LVGL on the i.MX93 Series Development Board to Create a More Efficient GUI

    3 days ago 0 comments

    Recently, to improve user efficiency and satisfaction, Forlinx Embedded has developed an easy-to-use and lightweight UI based on the NXP i.MX93 series processor.

    By adjusting the boot sequence during the U-Boot stage, the SPL (Secondary Program Loader) is configured to directly boot the Linux kernel, achieving fast startup. This approach completely bypasses the loading and initialization of U-Boot, significantly reducing the time spent in the bootloader. As a result, the boot time has been reduced to just 3.1 seconds.

    Additionally, the OK-MX9352-C development board has successfully integrated LVGL v8.3, enhancing the interface’s aesthetics and sophistication. This improvement provides customers with more options for UI design.

    LVGL (Light and Versatile Graphics Library) is a free and open-source graphics library specifically designed for embedded systems. Renowned for its lightweight, efficiency, and ease of use, LVGL supports multiple screen resolutions and hardware configurations. It offers a rich set of GUI components, enabling developers to easily create beautiful and powerful user interfaces. Click on the image below to visit the LVGL official website:

    LVGL official website

    Recently, Forlinx Embedded successfully ported LVGL v8.3 to the OK-MX9352-C development board based on the NXP i.MX93 series processor, which not only realizes a beautiful and delicate interface but also dramatically improves the start-up speed, which can be completed in just 3.1 seconds.

    Below, we will demonstrate the practical runtime performance of LVGL v8.3 on the OK-MX9352-C development board through the Ebike Screen Demo.

    LVGL v8.3 Case Study: Ebike Screen

    On the OK-MX9352-C development board, ForlinxTech Embedded ported an Ebike Screen Demo to simulate the user interface of an electric-assisted bicycle screen. It fully leverages LVGL's components and features to showcase a visually appealing and practical dashboard.

    01 Custom Background Image

    The demo utilizes a custom-drawn background image, which not only enhances aesthetics but is also seamlessly embedded into the interface using LVGL's image processing capabilities, making the entire dashboard look more appealing.

    02 Flexible Application of Basic Components

    The demo employs fundamental components such as buttons and page switching, providing rich interactive functionality. Users can click buttons to switch between different pages and view various information. The flexible application of these components makes the interface more intuitive and user-friendly.

    03 Rich Information Display

    Ebike Screen Demo showcases a variety of information, including speed, battery level, time, map, and settings. This information is clearly presented on the screen using LVGL's chart and text components, allowing users to easily grasp the current status of the electric-assisted bicycle at a glance.

    Through the Ebike Screen Demo, we can observe the advantages of LVGL running on the OK-MX9352-C development board: fast startup, feature-rich functionality, and an aesthetically pleasing interface. This makes it an excellent choice for developers seeking lightweight, easy-to-integrate GUI solutions.

    By providing rapid startup, intuitive operation, and timely feedback, it helps users get started quickly and accomplish tasks efficiently. Additionally, lightweight design reduces resource consumption, improves startup and runtime performance, and enhances product competitiveness.

    Looking ahead, LVGL's graphical interface is expected to become more diverse and intelligent. Forlinx Embedded will continue to adapt more products with LVGL, bringing richer and more efficient interaction experiences to embedded devices. Stay tuned for more updates!

  • NXP i.MX8MP Platform Porting Driver Tutorial

    7 days ago 0 comments

    This tutorial will take the example of writing and porting a driver called Hello Driver and explain the complete process from code writing to driver testing in detail. This process teaches you how to create, configure, compile, and load custom drivers on the i.MX8MP platform.

    Step 1: Create the drive directory and files

    1.1 Go to the source code directory

    Before we start writing the driver, we first need to enter the directory where the Linux kernel source code is located. Open a terminal and enter the following command to navigate to the driver's folder in your Linux kernel source directory.

    cd /home/forlinx/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers

    1.2 Create a new Hello directory

    After entering the drivers folder, we create a new directory called hello to store the files related to the hello driver.

    mkdir hello
    cd hello

    1.3 Write the Hello driver source code:

    create the hello.c file using a text editor (e.g. vi) and enter the following code:

    #include #include static int hello_init(void) {
    printk(KERN_ALERT "Hello world\n");
    return 0;
    }
    static void hello_exit(void) {
    printk(KERN_ALERT "Goodbye world\n");
    }
    module_init(hello_init);
    module_exit(hello_exit);
    MODULE_LICENSE("Dual BSD/GPL");

    Meaning of the demo program: Print Hello World when the insmod driver is mounted, and Goodbye World when the rmmod driver is unmounted.

    Step 2: Configure Kconfig and Makefile

    2.1 Create Kconfig:

    Create a new Kconfig file in the hello directory to define the configuration options of the driver.

    forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$ vi Kconfig

    Write the following in the Kconfig file:

    config HAVE_HELLO
    tristate "hello driver"
    help
    This hello driver is just to show how to develop driver process.
    This driver can also be built as a module. If so, the module will be called.
    default y

    Indicates that if CONFIG_HAVE_HELLO is enabled in the kernel trimming configuration file, the hello drivers menu will be displayed and compiled into the kernel by default:

    y:Compile into the kernel

    m:Compile as a module.ko file

    n:Indicates no compilation, not enabled.

    2.2 Create Makefile:

    Create a new Makefile in the hello directory and specify the compilation rules.

    forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$ vi Makefile

    Write the following in the Makefile file:

    obj-$(CONFIG_HAVE_HELLO) += hello.o

    Note: The name of the macro definition should be the same as that in Kconfig. Add the name of the file that needs to be compiled. Because the kernel automatically adds the prefix CONFIG, we also need to add CONFIG _ in front of the name here. Indicates that the file specified by the compilation rule is a hello. c when the CONFIG _ HAVE _ HELLO is enabled.

    2.3 Modify file permissions:

    Ensure that the hello. C, Kconfig, and Makefile files have executable permissions.

    forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$ chmod 777 hello.c
    forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$ chmod 777 Kconfig
    forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$ chmod 777 Makefile

    Step 3: Integrate into the kernel build system

    3.1 Edit the top-level kconfig:

    In the kconfig file in the drivers directory, add a configuration reference to the hello directory.

    Write the following in the Kconfig file:

    source "drivers/counter/Kconfig"
    source "drivers/mxc/Kconfig"
    source "drivers/hello/Kconfig"    //Add the configuration file parsing of the hello folder before the endmenu
    endmenu

    In this way, the configuration system will parse the Kconfig under the hello folder according to this configuration.

    3.2 Edit the top-level Makefile:

    In the Makefile in the drivers directory, add the conditions for compiling the hello driver.

    Write the following in the Makefile file:

    obj-$(CONFIG_COUNTER)           +=...
    Read more »