Build SECO BSP for i.MX and Rockchip boards

Build SECO BSP for i.MX and Rockchip boards

In embedded systems, the Board Support Package (BSP) is the layer of the software that contains hardware-specific drivers and other routines that allow a particular operating system to work in a specific hardware environment, integrated with the software itself.
BSPs are typically customizable, allowing the user to specify which drivers and routines should be included in the build based on their selection of hardware and software options.
SECO also provides a toolchain to build programs to run on the embedded system and other utilities needed to configure the device (while running) along with the BSP.

To perform the following procedure, you will need to install Docker Engine on Ubuntu according to these instructions https://docs.docker.com/engine/install/ubuntu/.

For further information on Docker platform, visit https://docs.docker.com/get-started/overview/.

INDEX

Source code for linux kernel, u-boot and yocto seco layers is available here.


How can I configure my environment with Docker?

To avoid the time consuming setup of the building environment, we distribute it inside a Docker container.

The following table contains the instructions to create the building environment from the Docker container, depending on the product family of the device used.

Product Family

Environment Setup

i.MX6

  1. Download Docker image using:

    docker pull secodocker/seco-builder:latest
  2. Run previously downloaded Docker image:

    docker run --rm -it -v ${PWD}:/workdir --workdir=/workdir secodocker/seco-builder:latest
  3. Source 32-bit i.MX6 build environment:

    source /toolchain/scripts/setup-bsp9-imx6

i.MX8

  1. Download Docker image using:

    docker pull secodocker/seco-builder:latest
  2. Run previously downloaded Docker image:

    docker run --rm -it -v ${PWD}:/workdir --workdir=/workdir secodocker/seco-builder:latest
  3. Source 64-bit i.MX8 build environment:

    For BSP 9: source /toolchain/scripts/setup-bsp9-imx8 For BSP 10: source /toolchain/scripts/setup-bsp10-imx8

Rockchip

  1. Download Docker image using:

    docker pull secodocker/seco-builder:latest
  2. Run previously downloaded Docker image:

    docker run --rm -it -v ${PWD}:/workdir --workdir=/workdir secodocker/seco-builder:latest
  3. Source 64-bit Rockchip build environment:

    source /toolchain/scripts/setup-rockchip-env

How can I build SECO U-Boot?

Clone SECO U-Boot from SECO repository

For BSP 10 boards: $ git clone https://git.seco.com/pub/i.mx/yocto/5.x/uboot-seco-imx.git -b seco/release/imx_5.4.70_2.3.0 --depth=1 For BSP 9 boards: $ git clone https://git.seco.com/pub/i.mx/yocto/4.x/u-boot-seco.git

In the following paragraphs, the procedures for selecting the correct defconfig file are different for i.MX6 and i.MX8 based boards. Be careful to follow the right one according to your device.

Procedure for i.MX6-based boards

For i.MX6 Quad, DualLite and Solo CPUs there’s a specific defconfig file for each RAM configuration.
i.MX6 SoloX, on the other hand, has dynamic RAM setup implemented in U-Boot.
U-boot will allocate the RAM memory based on your board configuration with the correct default defconfig file.

The table below shows the correct association RAM Configuration/defconfig file.

Be careful to select the correct RAM configuration, or the device won’t boot.

Choose the right defconfig file from table below using the following command. After having chosen the right defconfig file, you can build SECO U-Boot.

cd u-boot-seco make <board_defconfig_filename> # eg: make mx6qdl_seco_Q7_928_2G_4x512M_defconfig # compile u-boot make spl_imx

Device

RAM Configuration

defconfig file

Device

RAM Configuration

defconfig file

μQ7-962

RAM Size=1GB

RAM Configuration=4x256 MB

mx6qdl_seco_uQ7_962_1G_4x256M_defconfig

RAM Size=2GB

RAM Configuration=4x512 MB

mx6qdl_seco_uQ7_962_2G_4x512M_defconfig

RAM Size=512 MB

RAM Configuration=2x256 MB

mx6qdl_seco_uQ7_962_512M_2x256M_defconfig

Q7-928

RAM Size=1GB

RAM Configuration=4x256 MB

mx6qdl_seco_Q7_928_1G_4x256M_defconfig

RAM Size=2GB

RAM Configuration=4x512 MB

mx6qdl_seco_Q7_928_2G_4x512M_defconfig

RAM Size=512 MB

RAM Configuration=2x256 MB

mx6qdl_seco_Q7_928_512M_2x256M_defconfig

RAM Size=4GB

RAM Configuration=8x512 MB

mx6qdl_seco_Q7_928_4G_8x512M_defconfig

μQ7-A75-J

RAM Size=1GB

RAM Configuration=4x256 MB

mx6qdl_seco_uQ7_J_A75_1G_4x256M_defconfig

RAM Size=256MB

RAM Configuration=1x256 MB

mx6qdl_seco_uQ7_J_A75_256B_1x256M_defconfig

RAM Size=512 MB

RAM Configuration=2x256 MB

mx6qdl_seco_uQ7_J_A75_512M_2x256M_defconfig

SBC-A62-J

RAM Size=1GB

RAM Configuration=4x256 MB

mx6qdl_seco_SBC_A62_1G_4x256M_defconfig

RAM Size=2GB

RAM Configuration=4x512 MB

mx6qdl_seco_SBC_A62_2G_4x512M_defconfig

RAM Size=512 MB

RAM Configuration=2x256 MB

mx6qdl_seco_SBC_A62_512M_2x256M_defconfig

SBC-C23

RAM Size=dynamic

RAM Configuration=512MB and 1GB

mx6sx_seco_SBC_C23_defconfig

SBC-B08

RAM Size=dynamic

RAM Configuration=512MB and 1GB

mx6sx_seco_SBC_B08_defconfig

SYS-A62-J

RAM Size=1GB

RAM Configuration=4x256 MB

mx6qdl_seco_SYS_A62_10_1G_4x256M_defconfig

RAM Size=2GB

RAM Configuration=4x512 MB

mx6qdl_seco_SYS_A62_10_2G_4x512M_defconfig

RAM Size=512 MB

RAM Configuration=2x256 MB

mx6qdl_seco_SYS_A62_10_512M_2x256M_defconfig

SYS-B08-7

RAM Size=dynamic

RAM Configuration=512MB and 1GB

mx6sx_seco_SYS_B08_defconfig