RIoTBoard开发板系列笔记(十三)—— yocto SDK安装与使用

yocto是一个很强大的嵌入式image 构建工具,借助yocto可以轻松的构建出一个开发板镜像。如果我们想借助yocto开发一些应用层的程序,有以下两种方法可供选择:
(1)按照yocto的构建规则添加自己的程序和编译脚步,通常稍微繁琐一些。
(2)使用yocto提供的SDK来交叉编译自己的程序。
yocto提供的SDK是一个独立的开发环境,不再依赖yocto,SDK包含的内容:
(1)Cross-Development Toolchain:工具链包含编译器、调试器等各种工具。
(2)Libraries, Headers, and Symbols::与目标image 匹配的Libraries, Headers, and Symbols。
(3)Environment Setup Script::一旦运行 *.sh 文件,就会通过定义变量来建立交叉开发环境,完成SDK使用的准备工作。
yocto 提供了extensible 和 standard 两种SDK,二者的区别如下:
在这里插入图片描述
extensible SDK功能更为强大,可以基于extensible SDK直接构建系统image,对应的size也更大。单纯应用层的程序开发,选择standard SDK即可,交叉编译好后copy 应用程序到开放板运行即可,所以本文主要记录standard SDK的构建和使用方法。

1 SDK构建与安装

yocto的下载方法不再赘述,配置和编译SDK命令如下:

DISTRO=fsl-imx-x11 MACHINE=imx6dl-riotboard source  fsl-setup-release.sh -b build-x11
bitbake -c populate_sdk fsl-image-multimedia

编译好的SDK 位于/tmp/deploy/sdk目录,该目录下会生成以下文件:

zhy@zhy-ThinkPad-E480:~/code/rIoTboard/yocoto/imx-4.14/build-x11/tmp/deploy/sdk$ ls -l
total 475016
-rw-r--r-- 2 zhy zhy      6302 1127 22:20 fsl-imx-x11-glibc-x86_64-fsl-image-multimedia-cortexa9hf-neon-toolchain-4.14-sumo.host.manifest
-rwxr-xr-x 2 zhy zhy 464634174 1127 22:27 fsl-imx-x11-glibc-x86_64-fsl-image-multimedia-cortexa9hf-neon-toolchain-4.14-sumo.sh
-rw-r--r-- 2 zhy zhy     63419 1127 22:19 fsl-imx-x11-glibc-x86_64-fsl-image-multimedia-cortexa9hf-neon-toolchain-4.14-sumo.target.manifest
-rw-r--r-- 2 zhy zhy    153760 1127 22:19 fsl-imx-x11-glibc-x86_64-fsl-image-multimedia-cortexa9hf-neon-toolchain-4.14-sumo.testdata.json
-rw-r--r-- 2 zhy zhy      4507 1127 20:29 x86_64-buildtools-nativesdk-standalone-4.14-sumo.host.manifest
-rwxr-xr-x 2 zhy zhy  21386212 1127 20:30 x86_64-buildtools-nativesdk-standalone-4.14-sumo.sh
-rw-r--r-- 2 zhy zhy         0 1127 20:28 x86_64-buildtools-nativesdk-standalone-4.14-sumo.target.manifest
-rw-r--r-- 2 zhy zhy    121607 1127 20:28 x86_64-buildtools-nativesdk-standalone-4.14-sumo.testdata.json

执行fsl-imx-x11-glibc-x86_64-fsl-image-multimedia-cortexa9hf-neon-toolchain-4.14-sumo.sh脚本就可以将SDK安装到PC:

./fsl-imx-x11-glibc-x86_64-fsl-image-multimedia-cortexa9hf-neon-toolchain-4.14-sumo.sh

默认会将SDK安装在/opt/目录:

zhy@zhy-ThinkPad-E480:~/code/rIoTboard/yocoto/imx-4.14/build-x11/tmp/deploy/sdk$ ./fsl-imx-x11-glibc-x86_64-fsl-image-multimedia-cortexa9hf-neon-toolchain-4.14-sumo.sh
NXP i.MX Release Distro SDK installer version 4.14-sumo
=======================================================
Enter target directory for SDK (default: /opt/fsl-imx-x11/4.14-sumo): 
You are about to install the SDK to "/opt/fsl-imx-x11/4.14-sumo". Proceed[Y/n]? y
[sudo] password for zhy: 
Extracting SDK..............................................................................................done
Setting it up...done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
 $ . /opt/fsl-imx-x11/4.14-sumo/environment-setup-cortexa9hf-neon-poky-linux-gnueabi

2 SDK 使用

根据上面的安装log,使用的时候执行以下命令即可:

. /opt/fsl-imx-x11/4.14-sumo/environment-setup-cortexa9hf-neon-poky-linux-gnueabi

接下来使用SDK编译一个简单的程序,首先创建test.cpp,里面添加内容:

#include <iostream>

int main()
{
    
    
    std::cout << "Hello World" << std::endl;
    return 0;
}

编译的时候直接可以使用CXX这个环境变量:

$CXX test.cpp

编译后会产出a.out程序,可以看出编译出的程序是ARM架构的:

file a.out 
a.out: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=c939a8eb3d8b83d9b61aa95bd9a70b976d32feec, with debug_info, not stripped

将a.out 复制到RIoTBoard开发板上运行:
在这里插入图片描述

3 参考文章

1 https://www.rpsys.net/yocto-docs/sdk-manual/sdk-intro.html
2 https://zhuanlan.zhihu.com/p/570051717

猜你喜欢

转载自blog.csdn.net/qq_38694388/article/details/128169340
今日推荐