标签: embedded-linux

Windows和*nix编译检测

应该为Windows,Linux和嵌入式目标编译一个项目.在主机或嵌入式目标上运行时,应用程序具有行为差异.总结我的要求,这是表:

   Target               Compiler      Behavior
   Windows              MSVC, gcc         A
   Host Linux           gcc               A
   Embedded Linux       cross pltf gcc    B
Run Code Online (Sandbox Code Playgroud)

我希望创建一个自动识别编译器和环境差异的Makefile(无需手动传递参数/定义).是否可以通过在C源文件级别使用条件编译来解决此类问题?
到目前为止我还没有使用automake.

c linux windows makefile embedded-linux

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

select()系统调用是CPU消耗

我编写了一个接受不同远程客户端的应用程序,并基于select()将作业分发给不同的处理程序.我注意到在一个运行ARM926EJ-S和内核2.6.33-rc4的平台上,应用程序使用了大量的CPU!通过使用strace -c运行我的应用程序30秒,我可以看到以下内容:

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 98.47    3.680000      204444        18           select
...
Run Code Online (Sandbox Code Playgroud)

但是,如果我从远程客户端连续向应用程序发送数据,则选择使用更少的CPU!

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 44.69    0.340278         175      1945           gettimeofday
 40.71    0.310000       25833        12           select
  3.94    0.030000       30000         1           fsync
...
Run Code Online (Sandbox Code Playgroud)

我想知道是否select()实施繁忙的等待.但是,在较旧的平台上,运行MIPS处理器和2.6.30.10 Linux内核时,这个问题没有出现,尽管我应该交叉编译strace来确认......!由于数据"很少"发送,我大多数情况下最糟糕!

我想知道问题可能来自哪里!C图书馆?Linux内核?另一方面,我不确定写多线程应用程序是否会因为pthread关键部分而导致更好的性能......?

我在互联网上阅读了两篇有趣的文章:

不幸的是它们已经很老了(从'98/'99)我想知道是否有其他人遇到过那种问题,或者你是否有其他建议来提高性能或指出真正的问题?

编辑:
我注意到更多的客户端连接更多我的应用程序使用CPU,这尽管客户端不发送任何数据!由于大部分时间花在选择上,我虽然选择本身消耗更多的CPU!我可以在ARM下使用哪些其他免费工具来分析我的应用程序并指出问题?Valgrind在ARM9上还没有工作......

c performance embedded-linux strace

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

内核不识别由u-boot标记的NAND坏块

在我的基于ARM的主板(DM368)的u-boot中,我手动将某些内核分区块标记为坏.U-boot说它被标记,例如,在写/读内核图像时,我看到它跳过这个坏块.

但是当我尝试从Linux中编写相同的分区(通过NFS加载)时,我看到Linux nandwrite命令使用了这个坏块!我通过几种方式检查了这一点 - Linux忽略了100%的坏块标记.但是在互联网上的每个地方都说BBT是u-boot和Linux的一部分.

那么,捕获量在哪里?

embedded-linux u-boot

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

如何构建LTTng并将其部署到嵌入式Linux系统?

http://lttng.org/download上提供的源代码压缩包中的README文件似乎假设一个构建在同一个Linux系统上,该系统将成为跟踪的目标.我找到了解释如何执行此操作的其他资源(LTTng Project YouTube频道有非常好的截屏视频),但我找不到任何关于如何交叉编译LTTng的说明(具体来说,我猜,liburcu,LTTng-UST ,LTTng-tools和LTTng-modules),并将它们全部安装在嵌入式Linux系统上(我可以在其中构建或重建内核,使用设备树blob,现在是基于ramdisk的文件系统).

我在哪里可以找到有关如何操作的详细信息?

更新:正如Marko在下面的第一条评论中指出的那样,LTTng工具是使用构建的autoconf.理论上我理解我可以找到一个"--host"选项configure,类似于这个答案.也许我需要一个像"ARCH = arm" make这样的参数,就像我在构建内核时使用的那样.但是make install,在使用它们的同一台机器上构建LTTng组件时,使用的交叉编译等效是什么?

trace cross-compiling embedded-linux lttng

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

如何在arago项目构建中为配方编写自己的包

如何在arago项目构建中编写自己的配方包?我知道它可以是bitbake文件.但我怎么写,不知道.我在互联网上搜索,但没有找到任何好的来源开始.有人可以提供链接或示例开始吗?

关心
Linux学习者.

linux cross-compiling embedded-linux openembedded bitbake

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

如何从c程序中获取进程名称?

在linux中的C程序中,我们可以使用getpid()getppid()系统调用来获取进程的pid和ppid,

同样,是否有任何系统调用来获取进程/当前进程的名称?

linux embedded-linux

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

u-boot基于GPIO状态选择启动分区

我正在开发嵌入式系统上的恢复机制.如果用户按下GPIO按钮,我想启动进入恢复模式.恢复模式意味着选择不同的内核和根分区.我坚持在条件命令中使用gpio值.如果我写的if gpio input 20; then cmd; fi cmd将始终运行,因为gpio返回错误状态而不是GPIO的值.我怎样才能获得价值?

使用U-Boot命令实现引导选择是否可行(我需要将LED闪烁15秒,如果用户按下按钮至少5秒,则切换到恢复).在C代码中实现这个逻辑会更容易吗?如果是这样在哪里看,有没有例子?

通常,提供恢复系统似乎是嵌入式工程师的常见任务.这种情况下的最佳做法是什么?实现这个的最常见方式是什么?我在网上找不到任何帮助或指导.

embedded boot embedded-linux u-boot gpio

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

软件和硬件中断之间的区别

我最近开始研究ARM Cortex微控制器.在通过Internet阅读不同的文章时,我通​​常会发现2个常见术语,如软件中断和硬件中断.这两者的实际差异是什么?你能用一个例子解释一下吗?

c embedded interrupt-handling embedded-linux interrupted-exception

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

yocto中的rootfs文件夹

到目前为止,我一直在使用buildroot,最近又切换到Yocto。在buildroot中,根文件系统位于“目标”文件夹中。根文件系统在Yocto中的位置是什么。我知道它将位于“ build / tmp”文件夹中,而不是“ sysroots”文件夹中。

纠正我,如果我错了。

谢谢你的时间

linux rootfs embedded-linux yocto

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

用于u-boot的linux内核的内存位置

目前,我有一个使用U-boot加载Android操作系统的ARM设备.我希望用linux替换android.所以我所做的是将为ARM设备编译的linux副本加载到SD卡上,启动到U-boot引导加载程序.现在的问题是我告诉U-boot启动vmlinuz linux内核的内存位置是什么?

我怎么找到这个?或指出一些资源也会很棒.

谢谢.

以下是连接到串行端口的当前启动顺序

Reg Version:  v1.1.0
Reg Time:     2014-10-115:15:35
Reg Name:     hi3719cdmo1a_hi3719cv100_ddr3_1gbyte_16bitx2_2layers_emmc.reg

Fastboot 3.3.0 (zengzhiliang@server180) (Nov 21 2014 - 13:41:16)

Fastboot:      Version 3.3.0
Build Date:    Nov 21 2014, 13:41:29
CPU:           Hi3719Cv100
Boot Media:    eMMC
DDR Size:      1GB

Check nand flash controller v610. found
Special NAND id table Version 1.36
Nand ID: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
No NAND device found!!!

Check spi flash controller v350. found
Can't find a valid spi flash chip.
Can't find …
Run Code Online (Sandbox Code Playgroud)

arm embedded-linux u-boot

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