我想玩一些嵌入式Linux.我希望它能够在x86处理器上运行(首先,它将在我的普通PC上运行).我已经在网上看了,但我发现的那些似乎很难设置或缺乏适当的文档.那么什么是一些很好的嵌入式x86兼容的Linux发行版,易于设置或有关如何设置的良好文档?
什么是Linux中的设备树?设备树的优点和缺点是什么?
如果有人详细了解设备树,请帮助回答上述问题.
我试图在我的Ubuntu笔记本电脑上用以下命令在qemu中运行Yocto Image.
qemu-system-arm -M overo -m 256 -sd ./test.img -clock unix -serial stdio -device usb-mouse -device usb-kbd
Run Code Online (Sandbox Code Playgroud)
Qemu工作正常,图像启动很干净,但我无法使用键盘和鼠标.在任何按键上我都会收到此警告.
usb-kbd: warning: key event queue full
Run Code Online (Sandbox Code Playgroud)
这个没有响应的键盘的任何解决方法?
我需要每秒执行1000次代码.我想做的事情如下:
set up interval timer
while (1)
{
wait for timer
do something
}
Run Code Online (Sandbox Code Playgroud)
我的尝试看起来像
// Create timer
timer_t timerid;
struct sigevent sev;
sev.sigev_notify = SIGEV_SIGNAL;
sev.sigev_signo = SIGUSR1;
if (timer_create(CLOCK_REALTIME, &sev, &timerid))
{
perror("timer_create");
exit(1);
}
// Every one mSec (10^6 nsec)
struct itimerspec its;
its.it_value.tv_sec = 0;
its.it_value.tv_nsec = 1000000;
its.it_interval.tv_sec = 0;
its.it_interval.tv_nsec = 1000000;
if (timer_settime(timerid, 0, &its, NULL))
{
perror("timer_settime");
exit(1);
}
// Create mask to wait for SIGUSR1
sigset_t set;
sigemptyset(&set);
sigaddset(&set, SIGUSR1);
while …Run Code Online (Sandbox Code Playgroud) 我目前的项目基于Yocto Daisy,在一个git repo中包含自定义层声明,在另一个git repo中包含应用程序代码.应用程序代码生命周期与自定义层生命周期有些分离,因此我希望能够在构建中捕获它.
为此,我有两个扩展核心图像的方法:'my-image'和'my-image-dev'.我想'my-image'总是使用'application'的标记版本(例如v0.1,v0.2等).我想让'my-image-dev'始终使用来自git master的'application'HEAD.
我写了食谱'application_0.1.bb'和'application_git.bb',并单独测试它们.它们的行为符合预期 - 'application_0.1.bb'获得标记0.1,'application_git.bb'获得主标记.
当我尝试指示特定图像使用特定版本的"应用程序"时,问题就出现了.我原本以为这就像添加PREFERRED_VERSION_application = "0.1"和PREFERRED_VERSION_application = "git%"我的图像食谱一样简单,但这让我没有爱.PREFERRED_VERSION似乎唯一有效的地方是在layer.conf和machine.conf中,这对我没有帮助,因为两个图像都是针对同一个逻辑机器.
所以这是我的问题 - 有没有办法从Yocto图像声明对特定版本的包的依赖?
我有一个适用于PowerPC的巨大源代码.我需要将它移植到ARM.但是,ARM在未对齐的内存访问上生成h/w异常.所以,我想找到所有可能发生未对齐内存访问异常的实例.我考虑过以下几种选择.
我的问题是,
我正在设置一个嵌入式Linux设备使用的OPKG存储库.我们希望保护服务器,以便只有我们的设备才能访问这些软件包.除了对http代理用户名和密码的一些引用之外,我找不到任何有关如何执行此操作的信息.有没有办法实现这一目标?我相信opkg存储库使用与ipkg相同的系统.
我正在尝试连接到嵌入式Linux上的蓝牙设备.
使用本页描述的方法 在Desktop Linux Mint 17 x64和RiotBoard(i.MX6)Linaro Ubuntu上运行良好.
但是,我无法将i.MX25板(嵌入式自定义Linux)连接到目标设备.只扫描有效.
rfcomm.conf
rfcomm0 {
# Automatically bind the device at startup
bind yes;
# Bluetooth address of the device
device 00:07:80:5A:48:93;
# RFCOMM channel for the connection
channel 1;
# Description of the connection
comment "Example Bluetooth device";
}
Run Code Online (Sandbox Code Playgroud)
hciconfig -a输出
hci0: Type: BR/EDR Bus: USB
BD Address: 00:15:83:44:39:E2 ACL MTU: 384:8 SCO MTU: 64:8
UP RUNNING PSCAN
RX bytes:28633 acl:0 sco:0 events:204 errors:0 …Run Code Online (Sandbox Code Playgroud) 我试图将文件夹放入文件系统的根目录.在文档中(例如这里),他们主要使用变量,因此文件和文件夹的SRC_URI结果存储在/usr/bin或者某些东西中,但从不存在/.
所以这是我的食谱:
DESCRIPTION = "Example for adding files and folders to rootfs"
SRC_URI += "file://example_folder"
SRC_URI += "file://example_file"
LICENSE = [...]
do_install() {
install -d ${D}/rootfolder
cp -r ${WORKDIR}/example_folder ${D]/rootfolder/
install -m 0755 ${WORKDIR}/example_file ${D}/rootfolder
}
Run Code Online (Sandbox Code Playgroud)
这只是do_install我尝试的很多变种中的一种.它们中的每一个都导致Error: example not found in the base feeds [...]文件和文件夹中的任何一个或者文件和文件夹没有放在根目录中,而是/usr/bin如上所述.