• 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
    
    • 1
    • 2

    编译好的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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    执行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
    
    • 1

    默认会将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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2 SDK 使用

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

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

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

    #include 
    
    int main()
    {
        std::cout << "Hello World" << std::endl;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    $CXX test.cpp
    
    • 1

    编译后会产出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
    
    • 1
    • 2

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

    3 参考文章

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

  • 相关阅读:
    三菱FX3U PLC倒立摆控制
    【Qt】QTabWidget如何添加控件到Tab页水平位置
    ROS2与turtlebot4仿真入门教程-安装ROS2
    设计者模式(1)观察者模式 (Observer)C++11实现
    SpringSecurity6从入门到实战之SpringSecurity6自定义认证规则
    学js的第十五天
    C++ Reference: Standard C++ Library reference: Containers: array: array: swap
    贰[2],QT异常处理
    java计算机毕业设计线上文具销售系统源码+数据库+系统+lw文档+mybatis+运行部署
    cvpr2022 human pose estiamtion
  • 原文地址:https://blog.csdn.net/qq_38694388/article/details/128169340