我正在使用gpio中断.我在"/ sys/class/gpio/gpio38/value"中有一个文件.我想在属性值发生变化时发出通知.那么我怎样才能在用户空间中实现这一目标.由于我已经收集了信息,我可以使用select(),poll()或epoll().那么这个应用哪个是正确的?或者请建议我,如果我可以使用/ proc/irq或其他东西.谢谢 :)
我们为我们公司的特定嵌入式设备开发,其中一部分是制作通过netboot通过以太网加载到设备上的初始根磁盘.我们遇到了一些问题,因此,包含初始根磁盘内容的原始文件夹与其备份一起丢失,但我们仍然有通过压缩ramdisk的内容创建的initrd映像.它已作为本地循环设备挂载,然后在gzip压缩文件上运行mkimage.有没有办法撤消mkimage的影响并获取原始的gzip压缩内容,以便我们可以恢复原始图像?
这是我的背景,我拥有计算机工程硕士学位,我的大多数工作经验都涉及为各种消费电子产品编写设备驱动程序.我已经完成了8051和8086控制器编程作为课程的一部分.我还做了一些关于汽车硬件功能验证的工作.现在我想进入非常低的水平,它涉及闪烁电路板,上电,引导程序编程,验证电路板上的各种组件,验证总线,存储器等.
我想迭代内核中的所有任务(线程和进程)并使用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) 我将设置构建环境,为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内核驱动程序,对于每个将数据发送到用户空间或从用户空间读取数据的函数,我使用的是copy_to_user()和copy_from_user().我的问题是:如果我只是复制一个基本数据类型,如u32或int,我是否需要使用这些调用?
什么是链式IRQ?做什么chained_irq_enter和chained_irq_exit做什么,因为在中断发生后IRQ线被禁用,但是chained_irq_enter调用与屏蔽中断有关的功能.如果该行已被禁用,为什么要屏蔽中断?
我有一个应用程序,我在嵌入式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进行调试.
我正在努力用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和内核黑客的新手.知道怎么做吗?
我为Yocto的Intel主板生成了一个最小核心图像。
查看tmp / deploy / images文件夹中,它们是很多图像。
我使用USB上的dd命令刷新了* .wic映像,它创建了两个分区(Boot和Platform),并且只允许执行实时启动,而不能将其安装在主板的硬盘上。
然后,我使用dd命令在USB上闪烁* .hddimg。它仅创建了一个具有rootfs.img,syslinux和EFI文件夹的“启动”分区。
使用USB引导为我提供了一个“安装”选项,该选项已安装在板上,当我在安装后重新引导时,它显示“找不到可引导媒体”
使用可引导映像,硬盘中有两个分区。为什么它不启动。
遵循的步骤:
我在这里做错了什么。
选择哪个图像以及何时选择..
embedded-linux ×10
linux ×6
linux-kernel ×4
c ×3
embedded ×2
yocto ×2
arm ×1
beagleboard ×1
bitbake ×1
buildroot ×1
c++ ×1
epoll ×1
gzip ×1
initrd ×1
install ×1
irq ×1
qt ×1
qt-creator ×1
rootfs ×1