guowenxue
2023-12-19 608938e911a41b3712db2480c57ef45e8b135901
commit | author | age
849fbd 1 # Brief Introduction
G 2
3
4
5 A meta-layer for igkboard series boards
6
7 - Yocto Mickledore(4.2) support :    igkboard-8mp
8
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
103   meta-igkboard.  Which should be  `igkboard-8mp`.
104 * -b <build dir> specifies the name of the build directory created by the ***igkboard-setup.sh*** script.
105
106
107
108 Take igkboard-8mp board as example, we can use following command to setup the Yocto build environment.
109
110 ```bash
111 $ cd ~/imx-yocto-bsp
112 $ MACHINE=igkboard-8mp source sources/meta-igkboard/tools/igkboard-setup.sh -b igkboard-8mp
113 ```
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
122 $ source sources/poky/oe-init-build-env igkboard-8mp
123 ```
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
136 $ bitbake yocto-image-full
137 ```
138
139
140 After building, the output system images are located in `tmp/deploy/images/igkboard`  :
141
142 * ***yocto-image-full.wic***         Yocto system image will be flashed into SD card or eMMC.
143 * ***imx-boot***                                  Bootloader u-boot image
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
154 $ bitbake yocto-image-full -c populate_sdk
155 ```
156
157
158
159 When building finished, you can get the yocto-image-full based SDK at  *`tmp/deploy/sdk/fsl-imx-wayland-lite-glibc-x86_64-yocto-image-full-armv8a-igkboard-toolchain-6.1-mickledore.sh`*. Later, if you want to to install the SDK, just run:
160
161 ```bash
162 $ sudo bash tmp/deploy/sdk/fsl-imx-wayland-lite-glibc-x86_64-yocto-image-full-armv8a-igkboard-toolchain-6.1-mickledore.sh
163 NXP i.MX Release Distro SDK installer version 6.1-mickledore
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