标签: embedded-linux

select(),poll()或epoll()?对于sysfs属性

我正在使用gpio中断.我在"/ sys/class/gpio/gpio38/value"中有一个文件.我想在属性发生变化时发出通知.那么我怎样才能在用户空间中实现这一目标.由于我已经收集了信息,我可以使用select(),poll()或epoll().那么这个应用哪个是正确的?或者请建议我,如果我可以使用/ proc/irq或其他东西.谢谢 :)

c linux epoll embedded-linux beagleboard

8
推荐指数
1
解决办法
7638
查看次数

扭转mkimage的影响以获取原始的gzip压缩文件

我们为我们公司的特定嵌入式设备开发,其中一部分是制作通过netboot通过以太网加载到设备上的初始根磁盘.我们遇到了一些问题,因此,包含初始根磁盘内容的原始文件夹与其备份一起丢失,但我们仍然有通过压缩ramdisk的内容创建的initrd映像.它已作为本地循环设备挂载,然后在gzip压缩文件上运行mkimage.有没有办法撤消mkimage的影响并获取原始的gzip压缩内容,以便我们可以恢复原始图像?

gzip embedded-linux initrd

7
推荐指数
1
解决办法
3074
查看次数

学习电路板启动和hw诊断的最佳方法是什么?

这是我的背景,我拥有计算机工程硕士学位,我的大多数工作经验都涉及为各种消费电子产品编写设备驱动程序.我已经完成了8051和8086控制器编程作为课程的一部分.我还做了一些关于汽车硬件功能验证的工作.现在我想进入非常低的水平,它涉及闪烁电路板,上电,引导程序编程,验证电路板上的各种组件,验证总线,存储器等.

embedded embedded-linux

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

for_each_process - 它是否迭代线程和进程?

我想迭代内核中的所有任务(线程和进程)并使用for_each_process宏打印tid/pid和name:

#define for_each_process(p) \
    for (p = &init_task ; (p = next_task(p)) != &init_task ; )
Run Code Online (Sandbox Code Playgroud)

如何区分线程和进程?

所以我会像那样打印出来:

 if (p->real_parent->pid == NULL)
      printk("PROCESS: name: %s pid: %d \n",p->comm,p->pid);
 else
      printk("THREAD: name: %s tid: %d \n",p->comm,p->pid);
Run Code Online (Sandbox Code Playgroud)

c linux linux-kernel embedded-linux

7
推荐指数
1
解决办法
3730
查看次数

如何在buildroot中重建rootfs

我将设置构建环境,为AT91SAM9X25板制作自己的linux嵌入式系统.我正在使用buildroot来做到这一点.make命令构建所有目标,第一个构建工具链然后打包,然后rootfs和rootfs(tar,cpio ...)的图像.要重建rootfs,我通常使用make clean然后make.make clean命令删除所有包括工具链.

所以我的第一个问题是:有没有办法在不构建工具链的情况下重制rootfs?这需要很多时间.

我也在buildroot中构建linux内核.我在buildroot中打开了BR2_LINUX_KERNEL [= y].linux配置为使用初始RAM文件系统,因此要构建内核,需要rootfs的映像(应该由buildroot创建).当我在buildroot的root下运行make时,构建失败并出现错误无法打开'buildroot-2013.05/output/images/rootfs.cpio'.因为(如果我理解正确的话)构建序列是工具链--pakages - rootfs - linux内核 - rootfs的图像.当它尝试构建linux内核时,不会创建rootfs.cpio映像.

所以第二个问题是:如果我想使用初始RAM文件系统,如何在buildroot中构建linux?

可能是比buildroot更有效的替代品?

提前致谢.

linux embedded arm embedded-linux buildroot

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

copy_to_user()和copy_from_user()用于基本数据类型

我正在编写一个Linux内核驱动程序,对于每个将数据发送到用户空间或从用户空间读取数据的函数,我使用的是copy_to_user()和copy_from_user().我的问题是:如果我只是复制一个基本数据类型,如u32或int,我是否需要使用这些调用?

c linux linux-device-driver linux-kernel embedded-linux

7
推荐指数
1
解决办法
2769
查看次数

什么是linux中的链接irq,何时需要使用?

什么是链式IRQ?做什么chained_irq_enterchained_irq_exit做什么,因为在中断发生后IRQ线被禁用,但是chained_irq_enter调用与屏蔽中断有关的功能.如果该行已被禁用,为什么要屏蔽中断?

linux irq linux-kernel interrupt-handling embedded-linux

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

Qt Creator远程调试

我有一个应用程序,我在嵌入式Linux设备上运行.在Eclipse中,我可以使用eclipse-cdt-launch-remote插件运行远程调试,我指向要运行的二进制文件,以及在运行应用程序之前将其放在设备上的某些环境变量.该应用程序是一个C++带有自定义Makefile的应用程序,用于将应用程序构建为ELF文件.

通过SSH使用用户和密码登录,应用程序部署在设备上.然后,我可以使用步进等从Eclipse进行调试.(我也使用MentorGraphics交叉编译器arm-none-linux-gnueabi-2014.05)

我的问题是:我如何在Qt Creator中模仿相同的功能,因为我喜欢用Qt Creator编码而不是用Eclipse编码? 我知道一个简单的解决方法是在Qt Creator中编码,然后使用Eclipse进行调试,但我真的想使用Qt Creator进行调试.

  • 编辑:通过几小时的测试和阅读Qt Creator IDE解决它.
    1. 导入了我的Makefile项目项目.
    2. 然后我进入工具下的选项并添加了使用SSH的设备.
    3. 之后我添加了一个调试器,我使用了gdb-multiarch,因为预构建的工具链二进制文件中提供的不支持python.
    4. 然后我添加了我的自定义工具链,指向编译器路径到工具链二进制g ++.并将ABI设置为arm-linux-generic-elf-32bit.虽然我实际上没有看到在调试期间使用的编译器设置.
    5. 我使用Device,Debugger和Compiler创建了一个新工具包.并将设备类型设置为Generic Linux Device.指向我在使用buildroot文件系统时解压缩的sysroot.这些是我在套件中设置的唯一选项.
    6. 关闭选项菜单,然后进入我添加新工具包的项目
    7. 更改了构建设置并设置了构建目录并构建了应用程序的步骤.
    8. 更改了运行设置以使用一些自定义命令,例如将新构建的.elf应用程序移动到目标.然后我设置本地可执行文件的位置和远程可执行文件的位置.远程可执行文件是我使用来自主机的自定义命令移动到目标的可执行文件.
    9. 瞧!我现在可以从Qt Creator对我的目标运行远程调试.

c++ qt qt-creator embedded-linux

7
推荐指数
1
解决办法
6104
查看次数

如何在Yocto中使用自己的设备树和修改后的内核配置?

我正在努力用yocto构建一个自己的"embeeded linux".它基于SAMA5D3x-MB + SAMA5D3x-CM(RONETIX)和SAMA5D35.我有两个问题:

1.)更改设备树

我根据以下内容构建了一个图像:MACHINE ?? ="sama5d3xek"

在生成过程之后,我在deploy dir中找到了5D35的两个设备树文件:

  • 的zImage - 4.1 + git0 + 19291d7be4-R0-sama5d35ek-.dtb
  • 的zImage - 4.1 + git0 + 19291d7be4-R0-sama5d35ek-REVC-.dtb

因为主板是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和内核黑客的新手.知道怎么做吗?

linux-kernel embedded-linux bitbake yocto

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

yocto中的wic和hddimg格式之间的区别

我为Yocto的Intel主板生成了一个最小核心图像。

查看tmp / deploy / images文件夹中,它们是很多图像。

我使用USB上的dd命令刷新了* .wic映像,它创建了两个分区(Boot和Platform),并且只允许执行实时启动,而不能将其安装在主板的硬盘上。

然后,我使用dd命令在USB上闪烁* .hddimg。它仅创建了一个具有rootfs.img,syslinux和EFI文件夹的“启动”分区。

使用USB引导为我提供了一个“安装”选项,该选项已安装在板上,当我在安装后重新引导时,它显示“找不到可引导媒体”

使用可引导映像,硬盘中有两个分区。为什么它不启动。

遵循的步骤:

  1. 使用“ bitbake core-image-minimal”命令创建最小的yocto图像
  2. 使用dd命令刷新USB。须藤dd if = tmp / deploy / images / intel-corei7-64 / core-image-minimal-intel-corei7-64.hddimg of // dev / sdb
  3. 点击安装并输入“ sda”
  4. 安装成功,当我尝试通过卸下USB驱动器重新启动时,显示“找不到引导选项。请安装可启动媒体,然后重新启动。”

我在这里做错了什么。

选择哪个图像以及何时选择..

linux install rootfs embedded-linux yocto

7
推荐指数
1
解决办法
3476
查看次数