我正在努力用yocto构建一个自己的"embeeded linux".它基于SAMA5D3x-MB + SAMA5D3x-CM(RONETIX)和SAMA5D35.我有两个问题:
1.)更改设备树
我根据以下内容构建了一个图像:MACHINE ?? ="sama5d3xek"
在生成过程之后,我在deploy dir中找到了5D35的两个设备树文件:
因为主板是revD我使用zImage - 4.1 + git0 + 19291d7be4-r0-sama5d35ek-.dtb.
在此文件中,只定义了can0和i2c1.
我也喜欢使用can1和i2c0.为此我想我需要创建一个自己的dts文件并将其包含在内核构建过程中.
到目前为止,我将dts文件放在我的元测试配方中.想法如何将其复制/修补到内核中?
2.)更改内核配置
我用bitbake virtual/kernel -c menuconfig检查了内核
因为我没有使用SAMA5D2等,只有控制台我停用了这些内核配置.我将新的".config"保存到my-recipe目录中.我有一个类似的问题,如1 - 如何修补/复制到内核?
我是yocto和内核黑客的新手.知道怎么做吗?
我是一个非常懒惰的人.在处理硬件/软件项目时,软件会永久更改.在这个开发阶段,更改配方中的commit/reversion-tags非常讨厌.我希望Yocto获取最新的git提交.这可能/如何做到这一点?我的示例食谱:
SUMMARY = "my test"
SECTION = "test"
LICENSE = "CLOSED"
inherit cmake
SRCREV = "f9bdbd6c631f07e427c010086c7c26a95eb2924e"
SRC_URI = "gitsm://myGit/mytest;protocol=http;branch=develop"
S = "${WORKDIR}/git/"
Run Code Online (Sandbox Code Playgroud) j
我在玩Yocto,Raspberry Pi和我编写的一些代码。现在,我希望Yocto正在构建包含我编写的程序的图像。我想知道如何设置获取程序以从本地git repro获取。
我的设置很简单。代码在目录中:
/home/user/git/myTest
Run Code Online (Sandbox Code Playgroud)
我将该目录链接到我的Yocto元层的食谱目录中。
/home/user/poky/meta-test/myApp/myTest
Run Code Online (Sandbox Code Playgroud)
由于它是本地git repro,因此存在“ .git”文件夹。
/home/user/git/myTest/.git
Run Code Online (Sandbox Code Playgroud)
还有更多文件:
/home/user/git/myTest/CMakeLists.txt
/home/user/git/myTest/src/main.cpp
/home/user/git/myTest/src/...
Run Code Online (Sandbox Code Playgroud)
我想知道如何设置食谱来使用git fetcher:
SUMMARY = "test"
SECTION = "app"
LICENSE = "CLOSED"
inherit cmake
SRCREV = "${AUTOREV}"
SRC_URI = "git://.git"
S = "${WORKDIR}/git"
Run Code Online (Sandbox Code Playgroud)
我确实检查了Yocto / Bitbake文档。但是我没有找到如何做的例子。有任何想法吗?
我喜欢配置系统日志。似乎设置系统日志的方法不止一种。我要求通用的方法/步骤来做到这一点。
我有几个用例。为简化起见,我想问一下如何配置 syslog 以在 /var/log/ 中写入无限长的日志文件。
以下步骤:
1.) 配置什么消息
1.1)创建自己的“syslog.conf”(定义/var/log/myLog)
1.2) 将其附加到“recipes-core/busybox”
2.) 配置如何登录
??
我找到了两个可能的地方:
@meta-poky -> "meta-poky/recipes-core/busybox/busybox/poky-tiny/defconfig"
#
# System Logging Utilities
#
CONFIG_SYSLOGD=y
CONFIG_FEATURE_ROTATE_LOGFILE=y
CONFIG_FEATURE_REMOTE_LOG=y
CONFIG_FEATURE_SYSLOGD_DUP=y
CONFIG_FEATURE_SYSLOGD_CFG=y
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
CONFIG_FEATURE_IPC_SYSLOG=y
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
CONFIG_LOGREAD=y
CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
CONFIG_KLOGD=y
CONFIG_FEATURE_KLOGD_KLOGCTL=y
CONFIG_LOGGER=y
Run Code Online (Sandbox Code Playgroud)
添加/更改:
"CONFIG_FEATURE_ROTATE_LOGFILE=n" by adding that line to meta-mylayer/conf/layer.conf"
Run Code Online (Sandbox Code Playgroud)
等等。
???
@“/etc/syslog-startup.conf”
# This configuration file is used by the busybox syslog init script,
# /etc/init.d/syslog[.busybox] to set syslog configuration at start time.
DESTINATION=file # log destinations (buffer file remote)
LOGFILE=/var/log/messages # where …Run Code Online (Sandbox Code Playgroud) 我喜欢在 Python 中生成内存(临时文件)数据流。一个线程用数据填充流,另一个线程使用它。
在检查了用于处理流的io-Core 工具后,在我看来该io模块是它的最佳选择。
所以我举了一个简单的例子:
#!/usr/local/bin/python3
# encoding: utf-8
import io
if __name__ == '__main__':
a = io.BytesIO()
a.write("hello".encode())
txt = a.read(100)
txt = txt.decode("utf-8")
print(txt)
Run Code Online (Sandbox Code Playgroud)
我的例子不起作用。"hello"未写入 a 且之后无法读取。那么是我的错误吗?我必须如何更改我的代码才能在内存中获取类似对象的文件?
我正在寻找一个示例,展示如何将专有库包含到工具链中。
我们给图书馆打电话吧myLib。为此,我创建了一个食谱myLib.bb并添加了:
BBCLASSEXTEND = "native nativesdk"
Run Code Online (Sandbox Code Playgroud)
在我的“local.conf”中我添加了:
IMAGE_INSTALL_append = " myLib"
Run Code Online (Sandbox Code Playgroud)
构建 SDK 时:
$ bitbake myTarget -c populate_sdk
Run Code Online (Sandbox Code Playgroud)
它生成 SDK 的安装程序和两个清单文件。myLib仅包含在目标清单中,而不包含在主机上。如何包含myLib在主机系统上?
这个想法是,另一个人可以在他的系统上构建软件,而无需 Yocto 系统。只有使用工具链,他才能生成二进制文件,可以在评估板上传输和执行。
我喜欢在Windows构建服务器上自动交叉编译多个项目.我有一些arm交叉编译器的问题.设置似乎有点困难.cmake编译器检查失败并出现链接错误(参见下文).
我的实验项目如下:
main.cpp - a test programm
CMakeLists.txt - the cmake build script
cmake/STM32F2xx.cmake - the special settings for the ARM STM32F2xx-series
Run Code Online (Sandbox Code Playgroud)
我使用3个包:
cmake-3.8.0-win64-x64.msi -cmake for windows
mingw-w64-install.exe - mingw 64 for windows
gcc-arm-none-eabi-6-2017-q1-update-win32.exe - arm x compiler
Run Code Online (Sandbox Code Playgroud)
main.cpp包含:
int main(void) {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
CMakeLists.txt包含:
cmake_minimum_required (VERSION 3.0)
# module name
set(PrjName testPrj)
project (${PrjName})
# module version
set(PCK_MAJOR 1)
set(PCK_MINOR 0)
set(PCK_REVISION 0)
#####################
# Features switches
#####################
#####################
# architecture
#####################
# possible values:
# NATIVE
# …Run Code Online (Sandbox Code Playgroud) 我想为我的嵌入式系统分发交叉编译工具链(SDK).我创建了一个自己的图层,其中包含所有的lib等.输入:
bitbake core-image-minimal -c populate_sdk
Run Code Online (Sandbox Code Playgroud)
我可以生成一个工具链,其中包含所有头文件和库.现在我想要不仅包括lib而且还包括cmake.
怎么做?
我正在创建一个内核模块.在这个模块中,我需要检查一些预定义字符串的输入.在C++中,可以创建一个constexpr函数,用于在编译时计算哈希值.我正在寻找一种方法来做到这一点.
一些使用Jenkins哈希函数的伪代码:
u32 hash(const char *key)
{
u32 hash, i;
size_t len;
len = strlen(key);
for(hash = i = 0; i < len; ++i)
{
hash += key[i];
hash += (hash << 10);
hash ^= (hash >> 6);
}
hash += (hash << 3);
hash ^= (hash >> 11);
hash += (hash << 15);
return hash;
}
const u32 myStringList [] = {
hash("hello"),
hash("this is a text"),
hash("good morning")
};
int findString(const char * searchStr) {
u32 …Run Code Online (Sandbox Code Playgroud) 我编写了一些 Python3 脚本,用于扫描设备。如果他们匹配一个“名字”,我就会连接到他们并做一些事情。该脚本构建在模块之上bluepy。
我认为我不喜欢的是,我需要运行设备扫描sudo(如sudo python3 getDev.py)。有什么想法如何使用户能够在没有 root 权限的情况下进行扫描吗?
我想我需要将本地用户添加到组等中。欢迎任何想法