问题标签 [openembedded]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
openembedded - 从单个 bitbake 配方脚本创建两个包映像,(在 local.conf 文件中定义两个 MACHINE 变量的方法)
如何从单个 bitbake recipie 脚本创建两个包图像。这些包是从相同的源创建的,它应该只在某些补丁中有所不同。
> 或
如何为两台机器同时构建 openembedded,以任何方式在 local.conf 文件中定义多个 MACHINE 变量,以便在构建时为两台不同的机器构建和创建图像。
linux - 打开嵌入式启动困难
因此,我目前正在尝试使用Open Embedded为 i.MX53 平台构建,但是我在理解 OE 概念的主要轮廓以及文件夹结构应该如何方面存在一些困难,获得了上层看法。
所以,我希望有人能用几句话总结为什么不在内核根目录中使用 make 命令。
更重要的是(对我来说),我想知道文件夹结构应该如何,有一个Oe-core和为i:MX53QSB构建的meta-fsl-arm层。
我应该使用bitbake运行哪个文件来为我的设备获取自定义图像?
embedded-linux - 嵌入式 Linux 中只有一种 --hash-style。为什么?
我正在尝试使用基于 OpenEmbedded 的 Arago构建并部署到 rootfs 中的软件包。不幸的是,该软件包包括预建的共享库。据我了解,Arago 使用 构建整个 Linux 发行版,而我怀疑--hash-style=gnu
那些共享库是使用 构建的。--hash-style=sysv
至少构建因“ELF 二进制文件中没有 GNU_HASH”质量检查问题而停止。
我了解哈希的用途。但我想我不明白系统运行时它们是如何使用的。
为什么必须为系统中的所有 ELF 设置一种哈希样式?为什么动态链接器不能即时确定哈希样式并直接使用它?
arm - 无法在 Freescale i.MX28 上启动基本的 OpenEmbedded-Core
我一直在尝试在Freescale ARM i.MX28的评估套件上构建和启动 OpenEmbedded-Core ,使用OpenEmbedded-Core的Freescale ARM 层。不幸的是,我找不到基本的“入门”指南(尽管有Yocto 入门指南)。不幸的是,我一直无法“开始”,以至于无法成功启动到主板调试串行端口上的基本命令提示符。
这是我能够拼凑起来的,并且就我到目前为止所取得的成果而言。
获取来源
设置环境
这使我们进入一个新的子目录build
并设置某些环境变量。
编辑配置
编辑conf/bblayers.conf
和local.conf
文件:
conf/bblayers.conf
应该为 . 添加meta-fls-arm
和meta-oe
层BBLAYERS
。例如:
在conf/local.conf
中,我设置:
建造
我在一夜之间运行了这个构建,它对我来说已经成功完成。输出文件位于~/oe-core/freescale-arm/oe-core/build/tmp-eglibc/deploy/images
.
我想尝试两个引导选项,如下所述。从 SD 卡启动更简单,但需要很长时间(约 30 分钟)才能将映像写入 SD 卡。从 TFTP + NFS 引导更快,但需要更多设置。
从 SD 卡启动
将图像写入 SD 卡:
花了大约 30 分钟(3.5 GB 文件)。然后我把它放在板子的 SD 卡插槽 0 中,然后通电。它一直加载内核,然后停止:
从 TFTP + NFS 启动
首先,我尝试将 U-Boot 写入 SD 卡:
然后我把它放在板子的 SD 卡插槽 0 中,然后通电。但我在调试串口中得到的只是:
因此,我决定使用飞思卡尔的 i.MX28 U-Boot 发行版(来自他们的 LTIB 发行版)到 SD 卡上。我使用来自 DHCP 的参数为 NFS 引导设置了合适的 U-Boot 参数。
我使用以下 DNSmasq 设置连接到 DD-WRT 路由器:
在我的主机 PC 上,我设置了一个 TFTP 服务器来提供uImage
来自~/oe-core/freescale-arm/oe-core/build/tmp-eglibc/deploy/images/
.
我还设置了一个根 NFS 服务器来为根文件系统提供服务。我编辑/etc/exports
服务/home/craigm/rootfs
。我提取了根文件系统:
然后我把 U-Boot SD 卡放在板子的 SD 卡槽 0 中,然后上电。它走到了这一步,然后停了下来:
我不确定它是否在没有串行控制台或其他问题的情况下运行。我可以 ping 它192.168.250.142
,但我不能 Telnet 或 SSH 到它。
问题
- 飞思卡尔 i.MX28 上的 OpenEmbedded-Core 是否有任何类型的“入门”指南?
- 飞思卡尔 ARM 层是否真的打算与 OpenEmbedded-Core、Yocto 或其他什么一起使用?我真的不明白这些项目是如何关联的。
- 有没有其他人在飞思卡尔的 i.MX28 上成功启动了 OpenEmbedded-Core 的最小映像?如果是这样,您的程序与我的程序有何不同?
- 在这个阶段我不确定问题是否只是一个无法正常工作的串行控制台,还是其他类型的问题。很难诊断这些甚至阻止基本系统运行的问题。关于此时如何诊断的任何指示?
- 为什么 U-Boot 会坏掉,甚至无法启动?
linux - 开放式嵌入式核心:将包添加到构建中
因此,使用开放的嵌入式核心和 Igepv2 元层,我刚刚完成了虚拟/内核的构建,现在如果我想添加:
我将如何去添加软件包,是否可以更改 bblayers/local.conf 文件然后开始一个新的配方(这只是建立在我已经得到的基础上)?
如果我现在想构建 angstrom 发行版怎么办,我发现它需要与 oe-core 布局不同的设置有没有办法使用我已经在这里得到的东西?
openembedded - 在 bitbake 中跟踪变量分配
我正在使用 bitbake / openembedded,但我的食谱失败了,因为我认为某些路径变量最终没有正确设置。具体来说,我正在将文件添加到 SRC_URI,但错误表明尝试复制文件是使用错误的路径完成的。所以
1)如何验证使用 file:// 协议时使用的“当前”路径变量
2)鉴于我以某种方式确认了哪个变量用于搜索文件,我可以在我的依赖图中跟踪对所述变量的分配吗?我的意思是,bitbake 必须在一组配方文件中以某种顺序遇到变量的追加/前置,我想检查这些以找到我的错误
额外的问题:我认为我当前用于检测食谱中的错误的“调试方法”过于原始(例如,将 -D -D -D 添加到命令行,然后在成堆的输出中寻找提示) )。“专业人士”如何调试他们的 bitbake 食谱?
更新:我找到了一种更好的方法来调试我的食谱:
事实证明,在给定配方的“获取”任务成功完成后,会创建该配方的工作文件夹。此文件夹内是一个“temp”子文件夹,其中包含配方中每个任务的执行代码(例如 run.do_fetch.######)和结果(例如 log._do_fetch.######) .
检查“run..###”文件将告诉您任何变量的确切值,以及为该任务执行的确切命令/Python 函数。给定“运行”的输出存储在“log..###”文件中,其 ID/编号与“运行”文件相同。不知何故,当我阅读手册时,这个非常基本的信息并没有注册,但现在我总是在配方失败时查看“临时”文件夹。
openembedded - 如何检查实际执行的 bitbake 命令
bitbake 是否存储调用的 shell 命令(沿调用路径)?我可以在日志文件中找到 shell 命令输出,但想查看实际的命令行。
gcc - __libc_csu_fini 和 __libc_csu_init 未定义,同时遵循 build-webos 的说明
我正在尝试构建 OpenWebOS,并按照build-webos GitHub README 中的计划进行操作。我正在使用全新的 32 位 Ubuntu 12.10 安装。事情有些坎坷。
但是,通过在这里和那里进行调整,我设法在错误出现之前达到了 2500 或(或其他)的第 350 步。问题是构建 glibc 的依赖,它在抱怨
搜索网络会发现人们在不构建 glibc 本身时发生这种情况的各种案例:
ld 抱怨:在函数“_start”中,未定义对“__libc_csu_fini”和“__libc_csu_init”的引用
使用 ld 直接链接 C 程序失败,未定义对 `__libc_csu_fini` 的引用
但这是在自定义嵌入式 LIBC 的构建过程中: eglibc。所以有点不同,我能找到的最接近的案例是OpenEmbedded list 上的这个 2009 线程。我不确定如何在 WebOS 构建结构的令人困惑的“bakefile”世界中将他们的补丁付诸实践,这令人眼花缭乱。
失败的命令行怪物我将“简化”为以下内容:
gcc -m32 -march=i586 --sysroot=/home/webos/build-webos/BUILD-qemux86/sysroots/qemux86-tcbootstrap -nostdlib -nostartfiles -o iconv/iconvconfig -Wl,-dynamic-linker=/lib/ld -linux.so.2 -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both csu/crt1.o csu/crti.o `gcc -m32 -march=i586 -- sysroot=/home/hostilefork/Projects/webos/build-webos/BUILD-qemux86/sysroots/qemux86-tcbootstrap --print-file-name=crtbegin.o` iconv/iconvconfig.o iconv/strtab.o iconv/xmalloc。 o iconv/hash-string.o -Wl,-rpath-link=/home/webos/build-webos/BUILD-qemux86/work/i586-webos-linux/eglibc-2.16-r15+svnr20393/build-i586-webos -linux:math:elf:dlfcn:nss:nis:rt:resolv:crypt:nptl libc.so.6 libc_nonshared.a -Wl,--根据需要 elf/ld.so -Wl,--no-as-needed -lgcc `gcc -m32 -march=i586 --sysroot=/home/webos/build-webos/BUILD-qemux86/sysroots/qemux86-tcbootstrap --print-file-name=crtend.o ` csu/crtn.o
我在目录中有一个libc.a和一个libc_nonshared.a文件。没有提到__libc_csu_init
或__libc_csu_fini
在非共享版本中,但它们在普通的 libc.a 中。这似乎与人们看起来应该是真的相反,尽管......当我查看/usr/lib/i386-linux-gnu
Ubuntu 附带的内容时,共享和非共享版本都提到了它。嗯。
如果有人读到这篇文章并说“嘿,我打赌我知道发生了什么事!” 那会很漂亮。:-)
makefile - 如何将变量从 bitbake 配方传递到 makefile?
我正在尝试将我的 bitbake (.bb) 配方中的变量传递给我调用的 Makefile。
在我的食谱中,我有:
当它运行该do_compile()
方法时,我让它调用我生成的 Makefile。在我测试的 Makefile 中,变量是通过以下方式正确设置的:
当我烘烤食谱时,我只在日志中看到“不起作用”。我认为这很奇怪,因为如果我FOO="bar"
在 Makefile 中并刚刚运行make
,那么我会在测试文件中看到“bar”打印。那么为什么它没有正确“通过”呢?
我又运行了一个测试来验证,在我的 Makefile 中我只放了这一行:
然后在烘烤食谱后,我看到bar
打印在我的“always_print.txt”文件中,但我看到“没有工作”打印在 test.txt 中......
有谁知道我在这里做错了什么?
buildroot - 为 Buildroot 应用 OpenEmbedded 补丁
如何将为 OpenEmbedded 创建的补丁修改为 BuildRoot?它们之间有什么区别?