1.yocto系列之针对rk3588平台构建一个基础镜像
2.sdr开发篇 6. zynq+ad9361的码分linux工程搭建
3.yocto系列之yocto是个什么东东
4.å¦ä½äº¤åç¼è¯perl
yocto系列之针对rk3588平台构建一个基础镜像
在构建针对RK平台的Yocto基础镜像的旅程中,我们首先回顾了之前的码分步骤。这包括Yocto基础知识的码分概述、主机设置与配置,码分以及如何构建并运行第一个镜像。码分接下来,码分自动收录我源码我们将专注于将这些基础扩展到适用于RK平台的码分镜像构建。
假设我们的码分构建目录命名为rk-build,我们将直接在该目录下执行构建命令。码分当我们构建用于QEMU的码分镜像时,无需额外层配置,码分因为poky已包含QEMU构建所需的码分配方。
为了构建适用于RK的码分镜像,我们需确保配置了正确的码分meta-rockchip层。该层在meta-openembedded层的码分基础上进一步支持RK平台的构建,包含特定于内核、驱动程序和配置的配方。我们可能还需要其他层以支持网络、Python、数藏源码uni多媒体等功能。
下载并添加这些必要的层到我们的构建配置中,我们首先将meta-xx层放置在与poky目录同级,以便于共享。接下来,下载Open-Embedded并切换至kirkstone分支,然后下载meta-rockchip层源代码。
通过bitbake-layers命令将这些层整合到构建中,确保在conf/bblayers.conf文件中正确配置。若遇到语法错误,可使用bitbake-layers命令代替手动编辑,以避免构建失败。
配置机器和选择镜像是我们构建过程的关键步骤。在meta-rockchip层中,机器配置文件(位于conf/machine目录)提供支持的机器名称列表。我们选择名为rockchip-rk-evb的机器。
查看meta-rockchip/recipess-core/images目录以了解可用镜像,若无法在此目录中找到对应的txt短信源码.bb文件,可进一步检查poky/meta/recipess-core/images目录。镜像名称即为.bb文件的文件名,去掉.bb扩展名。
在构建目录下,编辑conf/local.conf文件以应用特定于机器和镜像的配置。
在资源获取阶段,可能遇到网络问题导致的fetch失败。通过重复尝试获取资源,可以解决此类问题。
镜像编译阶段,将输出编译进度与可能遇到的错误信息,帮助我们了解构建过程的状态并进行相应的调整。
sdr开发篇 6. zynq+ad的linux工程搭建
SDR开发过程中,我们首先从hdl源码开始,从github下载_r1分支的zip包,解压后放置在工作区~/work/zynq_dev/ados。然后,创建Vivado工程,cg资源源码配置环境并编译,需要注意的是,这个工程需要针对xmzed进行修改。接着,对DDR和EMIO接口进行适配,并导出HDF文件。
接着,我们进入Petalinux 2.1工程阶段,拷贝适配后的HDF文件,并从github获取ADI的Linux内核和meta-adi。内核和meta-adi需下载、解压并配置,硬件信息目录中需要设置唯一的HDF文件。初次配置后,后续只需在修改后重新编译,配置启动方式、接口、SD卡,领游支付源码并解决source bitbake失败的问题。
内核配置中,USB和IIO功能默认开启。设备树部分,需在dash环境下修改,并在device-tree.bbappend中添加自定义设置。root文件系统配置时,由于meta-adi的影响,需要调整petalinux-user-image.bbappend以恢复默认设置。
编译工程时,注意分配足够的CPU资源,可能需要解决网络问题并设置全局代理。遇到错误时,如jesd-status-dev-r0的fetch问题,需替换相关文件。最后,打包boot.bin并制作SD卡文件系统,包括EXT和FAT分区,并进行启动测试。
测试阶段,通过拨码开关启动设备,使用默认root/root登录,进行IIO连接测试和Gnuradio发送信号测试。整个过程参考了相关教程和文档,如AD的开发指南和Linux驱动等。
yocto系列之yocto是个什么东东
Yocto项目不是用于现有硬件的软件开发工具包,而是用于构建这样的工具包。
Yocto项目不是可以部署到硬件上的系统二进制镜像,而是用于构建这样一个镜像。
Yocto项目不是可以用于在硬件上安装的Linux发行版,而是用于为资源受限的硬件创建定制发行版。
Yocto项目是一个开源协作项目,旨在帮助开发者创建定制的基于Linux的嵌入式系统,且不受硬件架构限制。该项目提供了一套灵活的工具和共享平台,嵌入式开发者可在全球范围内共享技术、软件堆栈、配置和最佳实践,用于构建定制的Linux镜像。
Yocto项目整合了三个关键开发元素:一套集成工具,用于成功进行嵌入式Linux开发,包括自动构建和测试工具、板级支持流程、许可合规流程以及定制Linux嵌入式操作系统的组件信息;一个参考嵌入式发行版Poky;与OpenEmbedded项目共同维护的OpenEmbedded构建系统。
Poky(发音为Pock-ee)是一个参考嵌入式发行版,用于演示如何定制发行版,测试Yocto项目组件,以及作为下载Yocto项目的工具。Poky不是产品级别的发行版,而是定制起点,位于oe-core之上。
oe-core或OpenEmbedded-Core是基础recipes、类别和相关文件的元数据集合,旨在在多个不同的OpenEmbedded衍生系统中通用,包括Yocto项目。它是OpenEmbedded社区原始存储库的筛选子集,经过持续验证,形成了严格控制和质量保证的核心recipes。
recipe是最常见的元数据形式,包含构建软件包的设置和任务列表,用于构建二进制镜像。recipe描述源代码获取、应用补丁、库依赖关系以及配置和编译选项。它们存储在层中,使Poky具有高可扩展性、多功能性,并易于适应各种系统。例如,可以创建网络、应用程序、图形子系统等专用层。
配置文件包含全局变量定义、用户定义变量及硬件配置信息,告诉构建系统在image中构建和放置什么以支持特定平台。recipe和配置文件被称为Poky构建系统中的元数据,除了这些,还有用于使用recipe和配置文件构建图像的命令和数据。
构建过程由oe-core中的有效image和BitBake调度器和执行引擎完成。BitBake解析recipe和配置数据,创建依赖树以排序编译,安排代码编译,最后执行构建定制Linux镜像。BitBake类似于make构建工具,用于指定如何构建特定软件包,包括依赖项、源代码位置、配置、编译、构建、安装和删除指令。构建过程中跟踪依赖关系并执行软件包的本地或交叉编译。在交叉构建设置中,BitBake尝试创建适用于目标平台的交叉编译器工具链。
Yocto项目组件的开发流程包括决定高级配置、源代码获取、补丁应用、构建、打包、QA、生成软件包源和最终镜像创建。构建过程还可能生成用于对应平台的开发和构建应用程序的SDK。
å¦ä½äº¤åç¼è¯perl
å ä¸è½½Perlæºç ï¼/projects/perlcross.berlios/files/ï¼ ä¸è½½çæ¬æ¯ï¼perl-5..0-cross-0.3.tar.gzåå«è§£åè¿ä¸ªæ件å°åä¸ä¸ªç®å½ä¸ï¼
1å¨ubuntuä¸å®è£ perlbrewï¼
sudo apt-get install perlbrewperlbrew init
source ~/perl5/perlbrew/etc/bashrc
perlbrew install perl-5..1
23
4
5
çå¾ perlbrewå®è£ å®æ¯ï¼
23
1
å并 两个解ååºæ¥çperlç®å½,è¿å ¥perl-5..1çCrossç®å½ä¸ï¼
cp -rfv perl-5..0/* perl-5..1/cd perl-5..1/Cross
21
æ件å 容å¦ä¸æ³¨æå äºæå·çå 容ï¼
### Target Arch** ARCH = arm
**#ARCH = i-pc
#ARCH = sh4
#ARCH = mips
#ARCH = mipsel
#ARCH = ppc
## Specific arm
**#CONFIG_TARGET_ARM_SAX0 = 1
**#CONFIG_TARGET_ARM_XSCALE = 1
### Target OS
**OS = linux
**#OS = solaris2.8
1ä¿®æ¹perlçconfigæ件
gedit Cross/config ##æè vi gedit Cross/config 23
4
5
6
7
8
9
ä¸é¢å ç²åä½è¡¨ç¤ºæ³¨æçæè ä¿®æ¹çï¼
ä¿®æ¹å½åç®å½ï¼Crossç®å½ï¼ä¸çMakefileæ件ï¼
å æ¹åä¸ä¸ç®å½å 容çæéï¼
chmod /Cross/
*ä¿®æ¹çMakefileæ件å 容ï¼
export TOPDIR=${ shell pwd}include $(TOPDIR)/config
export CFLAGS
** export SYS=arm-linux
**** export CROSS=/stuff/bitbake/bin/tmp/sysroots/i- linux/usr/armv7a/bin/arm-angstrom-linux-gnueabi-
**** export LD_LIBRARY=/stuff/bitbake/bin/tmp/sysroots/i-linux/usr/lib:$(LD_LIBRARY_PATH)
**export FULL_OPTIMIZATION = -fexpensive-optimizations -fomit-frame-pointer -O2
export OPTIMIZATION = -O2
export CC = arm-angstrom-linux-gnueabi-gcc
export CXX = arm-angstrom-linux-gnueabi-g++
export LD = arm-angstrom-linux-gnueabi-ld
export STRIP = arm-angstrom-linux-gnueabi-strip
export AR = arm-angstrom-linux-gnueabi-ar
export RANLIB = arm-angstrom-linux-gnueabi-ranlib
make CC=arm-angstrom-linux-gnueabi-gcc ARCH=arm patch
make CC=arm-angstrom-linux-gnueabi-gcc ARCH=arm perl
ç¼è¯ä¼åºéï¼ä½æ¯æ²¡å ³ç³»ï¼ä¼å¨æ ¹ç®å½çæperlå¯æ§è¡æ件ï¼