标签: embedded-linux

什么是最简单的x86嵌入式Linux?

我想玩一些嵌入式Linux.我希望它能够在x86处理器上运行(首先,它将在我的普通PC上运行).我已经在网上看了,但我发现的那些似乎很难设置或缺乏适当的文档.那么什么是一些很好的嵌入式x86兼容的Linux发行版,易于设置或有关如何设置的良好文档?

linux x86 embedded-linux

6
推荐指数
1
解决办法
9295
查看次数

监控linux内核中上下文切换次数的最有效方法是什么?

我希望得到以下的总统计数据:

  1. 有多少softirq发生?
  2. 有多少interrupts发生?
  3. 有多少context switches发生?

我知道你可以使用pidstat,cat /proc/interrupts/cat/proc/softirqs.但使用它们的开销太大了.

  • 如何在{1-3}不使用/proc最快速的情况下获得底线值?

  • 我可以使用ftrace帮助我跟踪事件吗?

我将使用高分辨率计时器来监控系统:

c profiling arm linux-kernel embedded-linux

6
推荐指数
2
解决办法
3767
查看次数

什么是设备树?优点和缺点?

什么是Linux中的设备树?设备树的优点和缺点是什么?

如果有人详细了解设备树,请帮助回答上述问题.

linux linux-kernel embedded-linux device-tree

6
推荐指数
1
解决办法
1万
查看次数

鼠标和键盘在qemu模拟器中不起作用

我试图在我的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)

这个没有响应的键盘的任何解决方法?

linux qemu embedded-linux gumstix

6
推荐指数
1
解决办法
2万
查看次数

如何实现定时循环?

我需要每秒执行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)

c embedded-linux

6
推荐指数
1
解决办法
384
查看次数

如何在Yocto图像配方中使用特定的包版本?

我目前的项目基于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图像声明对特定版本的包的依赖?

embedded-linux yocto

6
推荐指数
1
解决办法
8053
查看次数

在PowerPC中生成未对齐的内存访问异常

我有一个适用于PowerPC的巨大源代码.我需要将它移植到ARM.但是,ARM在未对齐的内存访问上生成h/w异常.所以,我想找到所有可能发生未对齐内存访问异常的实例.我考虑过以下几种选择.

  1. 在gcc中使用-Wcast-align会对未对齐访问产生警告.
  2. 使PowerPC生成未对齐的异常.对于ARM,有一个选项/ proc/cpu/alignment,用户可以通过该选项决定如何处理异常.但是,PowerPC没有这样的选择.

我的问题是,

  1. 有没有办法让PowerPC生成未对齐的内存访问异常?
  2. 有没有更好的方法来找出源代码中所有出现的未对齐内存访问?

c gcc powerpc memory-alignment embedded-linux

6
推荐指数
1
解决办法
1422
查看次数

保护OPKG存储库

我正在设置一个嵌入式Linux设备使用的OPKG存储库.我们希望保护服务器,以便只有我们的设备才能访问这些软件包.除了对http代理用户名和密码的一些引用之外,我找不到任何有关如何执行此操作的信息.有没有办法实现这一目标?我相信opkg存储库使用与ipkg相同的系统.

security package-managers embedded-linux opkg

6
推荐指数
1
解决办法
996
查看次数

i.MX25上的BlueZ:无法连接RFCOMM插座:正在进行操作

我正在尝试连接到嵌入式Linux上的蓝牙设备.

  • BlueZ版本是4.101.
  • 本地蓝牙适配器是USB蓝牙适配器Trendnet TBW-107UB,适用于所有测试.
  • 我无法提供有关目标设备的详细信息,因为它是我工作的公司的产品,抱歉.

使用本页描述的方法 在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)

linux bluetooth embedded-linux rfcomm bluez

6
推荐指数
1
解决办法
1万
查看次数

如何在bitbake的配方中将文件夹或文件添加到根目录?

我试图将文件夹放入文件系统的根目录.在文档中(例如这里),他们主要使用变量,因此文件和文件夹的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如上所述.

embedded-linux bitbake yocto

6
推荐指数
1
解决办法
6192
查看次数