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

news2024/12/23 5:25:07

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/59484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通话蓝牙耳机什么牌子好?通话工作蓝牙耳机推荐

在一般人的印象中&#xff0c;蓝牙耳机主要是用于听听歌、打打游戏还有煲剧&#xff0c;&#xff0c;而对经常经常外出的商务差旅人士和音乐发烧友来说&#xff0c;蓝牙耳机的通话和续航也是重点关注的&#xff0c;因此&#xff0c;笔者专门整理了一些通话效果好的蓝牙耳机&…

微服务框架 SpringCloud微服务架构 9 初识 Docker 9.3 Docker 架构

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构9 初识 Docker9.3 Docker 架构9.3.1 镜像和容器9.3.2 Docker 和DockerHub9…

【C/C++】C语言runtime调用技术

概述 C语言编译后&#xff0c;在可执行文件中会有 函数名信息。如果想要动态调用一个C函数&#xff0c;首先需要 根据函数名找到这个函数地址 &#xff0c;然后根据函数地址进行调用。 动态链接器已经提供一个 API&#xff1a;dlsym()&#xff0c;可以通过函数名字拿到函数地…

k8s中service资源与pod详解

文章目录一、Service1、创建集群内部可访问的Service2、创建集群外部也可访问的Service3、配置方式编写二、pod详解1、pod配置文件的资源列表2、pod配置3、启动命令4、port端口配置三、资源配额一、Service 通过上节课的学习&#xff0c;已经能够利用Deployment来创建一组Pod来…

vue.js生命周期函数

Vue生命周期 beforecreate : 举个例子&#xff1a;可以在这加个loading事件created &#xff1a;在这结束loading&#xff0c;还做一些初始化&#xff0c;实现函数自执行mounted &#xff1a; 在这发起后端请求&#xff0c;拿回数据&#xff0c;配合路由钩子做一些事情beforeD…

QT系列第1节 QT中窗口使用简介

QT中窗口按照使用场景分类&#xff0c;可以分成两大类&#xff0c;一类是独立显示的窗口&#xff0c;主要是 QWidget &#xff0c;QDialog &#xff0c;QMainWindow&#xff0c;一类是嵌套在别的窗口的子窗口&#xff0c;包含各种控件以及子窗口&#xff0c;窗口类图如下&#…

CV攻城狮入门VIT(vision transformer)之旅——VIT代码实战篇

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;专栏推荐&#xff1a;深度学习网络原理与实战 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞&#x1f44d;&#x1f3fc;、…

超越所有Anchor-free方法!PP-YOLOE-R:一种高效的目标检测网络

点击下方卡片&#xff0c;关注“自动驾驶之心”公众号ADAS巨卷干货&#xff0c;即可获取点击进入→自动驾驶之心【目标检测】技术交流群后台回复【PPYOLO】获取论文、代码等更多资料&#xff01;超越所有Anchor-free方法&#xff01;PP-YOLOE-R&#xff1a;一种高效的目标检测网…

基于粒子群优化算法的微型燃气轮机冷热电联供系统优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;主要研究方向是电力系统和智能算法、机器学…

APISIX安装与灰度、蓝绿发布

文章目录1、安装1.1、基于docker安装1.2、基于RPM安装2、灰度发布与蓝绿发布测试2.1、compose安装nginx2.1.1、创建目录2.1.2、编辑nginx.conf配置文件2.1.3、编辑docker-compose.yml文件2.1.4、启动nginx2.2、部署apisix和apisix-dashboard2.3、traffic-split插件实现灰度和蓝…

【能效管理】安科瑞远程预付费系统在江西某沃尔玛收费管理的应用

摘要&#xff1a;文章根据用电远程管控原理&#xff0c;设计了用电预付费远程管理终端及管理系统&#xff0c;该系统以智能远程预付费电表、智能网关以及预付费管理软件实现了商业综合体的用电管理&#xff0c;实现了欠费自动分闸&#xff0c;充值后自动合闸&#xff0c;并辅助…

我用diffusion把姐妹cos成了灭霸的模样

卷友们好&#xff0c;我是rumor。关注早的朋友们应该知道&#xff0c;我有个姐妹&#xff0c;她去年回深圳老家了&#xff0c;本来我觉得还ok&#xff0c;还能再约着一起旅游。谁知道一年多了&#xff0c;我还没出过北京&#xff08;微笑。以前有个快乐源泉&#xff0c;就是照她…

谈谈Vue项目打包的方式

目录 一、相关配置 情况一&#xff08;使用的工具是 vue-cil&#xff09; 情况二&#xff08;使用的工具是 webpack&#xff09; 二、打包 &#x1f4da; 参考资料 这篇文章主要为大家介绍了Vue项目的打包方式&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴…

[附源码]计算机毕业设计基于springboot的低碳生活记录网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

1.3 Apache Hadoop的重要组成-hadoop-最全最完整的保姆级的java大数据学习资料

文章目录1.3 Apache Hadoop的重要组成1.3 Apache Hadoop的重要组成 HadoopHDFS(分布式文件系统)MapReduce(分布式计算框架)Yarn(资源协调框架)Common模块 Hadoop HDFS&#xff1a;&#xff08;Hadoop Distribute File System &#xff09;一个高可靠、高吞吐量的分布式文件系统…

mongodb整合springbootQ

SpringBoot整合MongoDB_一个冬天的童话的博客-CSDN博客_mongodb的依赖SpringBoot整合MongoDB的过程https://blog.csdn.net/m0_53563908/article/details/1268980981&#xff0c;环境配置 1.引入依赖 <dependency><groupId>org.springframework.boot</groupId&g…

吉莱微电子IPO被终止:曾拟募资8亿 李建新父子是大股东

雷递网 雷建平 12月2日江苏吉莱微电子股份有限公司&#xff08;简称&#xff1a;“吉莱微电子”&#xff09;日前在深交所IPO被终止。吉莱微电子曾计划募资8亿元。其中&#xff0c;4.08亿用于功率半导体器件产业化建设项目&#xff0c;1.78亿用于生产线技改升级项目&#xff0c…

TCP/IP 网络嗅探器开发实例

主要内容 实例使用环境 知识储备 IP数据报格式 IP头结构体定义 TCP头格式 TCP头结构体定义 实例的调用演示 实例的完整代码 initsock.h protoinfo.h文件 Sniffer.cpp文件 实例总结 基于原始套接字的网络封包嗅探的工作过程 Sniffer节点调用分析 在Visual Studio2…

[附源码]计算机毕业设计基于springboot的高校车辆租赁管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

组合设计模式

一、组合模式 1、定义 组合模式&#xff08;Composite Pattern&#xff09;又称作整体-部分&#xff08;Part-Whole&#xff09;模式&#xff0c;其宗旨是通过将单个对象&#xff08;叶子节点&#xff09;和组织对象&#xff08;树枝节点&#xff09;用相同的接口进行表示&…