guowenxue
2024-01-24 b8946817226ec718ec305ad3274d54558b95697b
commit | author | age
849fbd 1 # Brief Introduction
G 2
3
4
5 A meta-layer for igkboard series boards
6
57bcff 7 - Yocto Mickledore(4.2) support :    igkboard-imx8mp, igkboard-imx6ull
849fbd 8
G 9
10
11 # Yocto Setup
12
13
14
15 ## Host setup
16
17
18
19 To get the Yocto Project expected behavior in a Linux Host Machine, and the recommended minimum Ubuntu version is 20.04 or later. An important consideration is the hard disk space required in the host machine.  It is recommended that at least 250 GB is provided, which is enough to compile all backends together.
20
21 A Yocto Project build requires that some packages be installed for the build that are documented under the Yocto Project. Go to Yocto Project Quick Start and check for the packages that must be installed for your build machine. Essential Yocto Project host packages are:
22
23 ```bash
24 $ sudo apt-get update && sudo apt-get install -y \
25 wget git-core diffstat unzip texinfo gcc-multilib \
26 build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
27 xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \
28 pylint3 xterm rsync curl gawk zstd lz4 locales bash-completion
29 ```
30
31
32
33 ## Repo setup
34
35
36
37 Repo is a tool built on top of Git that makes it easier to manage projects that contain multiple repositories, which do not need to be on the same server. Repo complements very well the layered nature of the Yocto Project, making it easier for users to add their own layers to the BSP.
38
39
40
41 Install or update **repo** to the latest version.
42
43 ```bash
44 $ mkdir -p ~/bin
45 $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
46 $ chmod a+x ~/bin/repo
47 $ export PATH=~/bin:$PATH
48 ```
49
50
51
52 Make sure that Git is set up properly with the following commands:
53
54 ```bash
55 $ git config --global user.name "Your Name"
56 $ git config --global user.email "Your Email"
57 $ git config --list
58 ```
59
60
61
62 ## Yocto setup
63
64
65
66 The following example shows how to download the i.MX Yocto Project Community BSP recipe layers. For this example, a directory called imx-yocto-bsp is created for the project. Any name can be used instead of this.
67
68 ```bash
69 $ mkdir -p ~/imx-yocto-bsp
70 $ cd ~/imx-yocto-bsp
71 $ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-mickledore -m imx-6.1.22-2.0.0.xml
72 $ repo sync
73 ```
74
75
76
77 When this process is completed, the source code is checked out into the directory imx-yocto-bsp/sources.  Then we need use following commands to clone this project (meta-igkboard)  to `imx-yocto-bsp/sources` folder.
78
79 ```bash
80 $ cd sources/
81 ```
82
83
84
85 # Yocto Build
86
87
88
89 ## Build configurations
90
91
92
93 **igkboard** provides a script, ***igkboard-setup.sh***, that simplifies the setup for this board. To use the script, the name of the
94 specific machine to be built for needs to be specified. The script will sets up a directory and the configuration files for the specified machine.
95
96 The syntax for the  ***igkboard-setup.sh*** script is shown below:
97
98 ```bash
99 $ MACHINE=<machine name> source sources/meta-igkboard/tools/igkboard-setup.sh -b <build dir>
100 ```
101
102 * MACHINE=<machine configuration name> is the machine name which points to the configuration file in conf/machine in
281a7f 103   meta-igkboard.  Which should be  `igkboard-imx8mp`.
849fbd 104 * -b <build dir> specifies the name of the build directory created by the ***igkboard-setup.sh*** script.
G 105
106
107
281a7f 108 Take igkboard-imx8mp board as example, we can use following command to setup the Yocto build environment.
849fbd 109
G 110 ```bash
111 $ cd ~/imx-yocto-bsp
281a7f 112 $ MACHINE=igkboard-imx8mp source sources/meta-igkboard/tools/igkboard-setup.sh -b igkboard-imx8mp
849fbd 113 ```
G 114
115
116
117 If a new terminal window is opened or the machine is rebooted after a build directory is set up, the setup environment script should
118 be used to set up the environment variables and run a build again. The full ***igkboard-setup.sh*** is not needed.
119
120 ```bash
121 $ cd ~/imx-yocto-bsp
281a7f 122 $ source sources/poky/oe-init-build-env igkboard-imx8mp
849fbd 123 ```
G 124
125
126
127 ## Build an image
128
129
130
131 The Yocto Project build uses the bitbake command. For example, bitbake <component> builds the named component. Each component build has multiple tasks, such as fetching, configuration, compilation, packaging, and deploying to the target rootfs.
132
133 The bitbake image build gathers all the components required by the image and build in order of the dependency per task. The first build is the toolchain along with the tools required for the components to build.  The following command is an example on how to build an image:
134
135 ```bash
281a7f 136 $ bitbake coherent-image-full
849fbd 137 ```
G 138
139
140 After building, the output system images are located in `tmp/deploy/images/igkboard`  :
141
281a7f 142 * ***coherent-image-full-igkboard.wic***         Yocto system image will be flashed into SD card or eMMC.
849fbd 143 * ***imx-boot***                                  Bootloader u-boot image
G 144
145
146
147 ## Build a SDK
148
149
150
151 After building Yocto BSP, if you want to continue to build the toolchain installer and populate the SDK image, use the following command:
152
153 ```bash
281a7f 154 $ bitbake coherent-image-full -c populate_sdk
849fbd 155 ```
G 156
157
158
281a7f 159 When building finished, you can get the coherent-image-full based SDK at  *`tmp/deploy/sdk/fsl-imx-wayland-lite-glibc-x86_64-coherent-image-full-armv8a-igkboard-toolchain-6.1-mickledore.sh`*. Later, if you want to to install the SDK, just run:
849fbd 160
G 161 ```bash
281a7f 162 $ sudo bash tmp/deploy/sdk/fsl-imx-wayland-lite-glibc-x86_64-coherent-image-full-armv8a-igkboard-toolchain-6.1-mickledore.sh
849fbd 163 NXP i.MX Release Distro SDK installer version 6.1-mickledore
G 164 ============================================================
165 Enter target directory for SDK (default: /opt/fsl-imx-wayland-lite/6.1-mickledore):
166 You are about to install the SDK to "/opt/fsl-imx-wayland-lite/6.1-mickledore". Proceed [Y/n]? y
167 Extracting SDK.............................done
168 Setting it up...done
169 SDK has been successfully set up and is ready to be used.
170 ```
171
172
173
174 Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
175
176 ```bash
177 $ . /opt/fsl-imx-wayland-lite/6.1-mickledore/environment-setup-armv8a-poky-linux
178 ```
179