草庐IT

EMBEDDED

全部标签

c++ - 如何在没有 X11 或/dev/fb0 的 Linux 中截屏?

我正在开发基于Linux的嵌入式系统。它使用Qt进行窗口化,没有Xserver。我的目标是截取屏幕截图。我试过使用FBgrab。它失败了,因为我没有/dev/fb0,因为内核中没有启用帧缓冲区。我们正在运行一个基于Qt的应用程序以在屏幕(HDMI)上显示UI。我还在QT网站上尝试过使用QPixmap和抓取窗口的屏幕截图应用程序。这也是一个失败,因为我无法在系统中运行两个QAppliction,因为它会影响显示。还有其他方法可以截屏吗? 最佳答案 您可以让您的应用程序根据某些事件或命令截取自身的屏幕截图。您可以通过将小部件抓取到一个像

c - Linux录像机最高效的文件写入方法

我正在开发一个嵌入式Linux录像机应用程序,它可以将MP4格式的视频写入文件(在FAT格式的SD卡上)。一些复杂的因素是视频和音频数据来自硬件编解码器,必须以低延迟提供服务,并且必须写入支持DMA的缓冲区。目前对于输出文件,我使用open()和write(),但发现当系统负载不足时write()可能需要数百毫秒才能返回,所以我的写入是在一个单独的线程中完成的。就目前而言,我将数据从(小的、数量有限的)DMA缓冲区复制到一个数兆字节的malloc'd循环缓冲区,然后从另一个线程中的write()。这意味着我至少要进行两次复制,一次进入应用程序缓冲区,一次进入系统缓冲区缓存。我正在考虑尝

c - Linux录像机最高效的文件写入方法

我正在开发一个嵌入式Linux录像机应用程序,它可以将MP4格式的视频写入文件(在FAT格式的SD卡上)。一些复杂的因素是视频和音频数据来自硬件编解码器,必须以低延迟提供服务,并且必须写入支持DMA的缓冲区。目前对于输出文件,我使用open()和write(),但发现当系统负载不足时write()可能需要数百毫秒才能返回,所以我的写入是在一个单独的线程中完成的。就目前而言,我将数据从(小的、数量有限的)DMA缓冲区复制到一个数兆字节的malloc'd循环缓冲区,然后从另一个线程中的write()。这意味着我至少要进行两次复制,一次进入应用程序缓冲区,一次进入系统缓冲区缓存。我正在考虑尝

c++ - 嵌入式编程开发板推荐

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WhatisthebestEvaluationKitforLearningEmbeddedC/C++Development?我是一名电子和软件专业的学生,​​我想进入嵌入式设备领域。在这一点上,这只是个人兴趣,而不是职业选择。我在C/C++(主要是C++)方面有些经验。我是一个经验丰富的Linux用户。我有一个arduino,但我不喜欢它,因为它上面有java层。有多种方法可以在设备上上传C代码,我已经这样做了。然而,在这一点上我有点困惑。我见过开发。带有调试器和编程器设备的套件。我不知道这些有什么用=>我需

c++ - 嵌入式编程开发板推荐

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WhatisthebestEvaluationKitforLearningEmbeddedC/C++Development?我是一名电子和软件专业的学生,​​我想进入嵌入式设备领域。在这一点上,这只是个人兴趣,而不是职业选择。我在C/C++(主要是C++)方面有些经验。我是一个经验丰富的Linux用户。我有一个arduino,但我不喜欢它,因为它上面有java层。有多种方法可以在设备上上传C代码,我已经这样做了。然而,在这一点上我有点困惑。我见过开发。带有调试器和编程器设备的套件。我不知道这些有什么用=>我需

c++ - c++ 程序核心转储的回溯中的无限中止()

我有一个奇怪的问题,我无法解决。请帮忙!该程序是一个在ARMLinux机器上运行的多线程C++应用程序。最近我开始对其进行长期测试,有时它会在1-2天后崩溃,如下所示:***glibcdetected**/root/client/my_program:free():invalidpointer:0x002a9408***当我打开核心转储时,我看到主线程似乎有一个损坏的堆栈:我只能看到无限的abort()调用。GNUgdb(GDB)7.3...ThisGDBwasconfiguredas"--host=i686--target=arm-linux".[NewLWP706][NewLWP7

c++ - c++ 程序核心转储的回溯中的无限中止()

我有一个奇怪的问题,我无法解决。请帮忙!该程序是一个在ARMLinux机器上运行的多线程C++应用程序。最近我开始对其进行长期测试,有时它会在1-2天后崩溃,如下所示:***glibcdetected**/root/client/my_program:free():invalidpointer:0x002a9408***当我打开核心转储时,我看到主线程似乎有一个损坏的堆栈:我只能看到无限的abort()调用。GNUgdb(GDB)7.3...ThisGDBwasconfiguredas"--host=i686--target=arm-linux".[NewLWP706][NewLWP7

c - 在 mtd block 设备上写入

我正在尝试使用MTDblock设备在NAND闪存上写入,但我并不理解所有内容。当我读到heremtdblockN为只读block设备NmtdN为读写字符设备NmtdNro为只读字符设备N但我想在C中使用简单的write直接将字节写入分区,但我不明白它是如何工作的(我读到一些东西,我首先必须删除我想要的扇区写上)。我应该使用哪种设备以及如何在该设备上书写? 最佳答案 从/向内存技术设备读取和写入与任何其他类型的IO并没有什么不同,除了在写入之前您需要删除扇区(删除block)为了使事情简单化,您总是可以使用mtd-utils(例如fl

c - 在 mtd block 设备上写入

我正在尝试使用MTDblock设备在NAND闪存上写入,但我并不理解所有内容。当我读到heremtdblockN为只读block设备NmtdN为读写字符设备NmtdNro为只读字符设备N但我想在C中使用简单的write直接将字节写入分区,但我不明白它是如何工作的(我读到一些东西,我首先必须删除我想要的扇区写上)。我应该使用哪种设备以及如何在该设备上书写? 最佳答案 从/向内存技术设备读取和写入与任何其他类型的IO并没有什么不同,除了在写入之前您需要删除扇区(删除block)为了使事情简单化,您总是可以使用mtd-utils(例如fl

linux - ELF文件头

一个关于elf文件头的快速问题,我似乎找不到任何关于如何在elf头中添加/更改字段的有用信息。我希望能够更改魔数(MagicNumber)并将构建日期添加到标题中,可能还有一些其他内容。据我所知,链接器会创建header信息,但我在LD脚本中没有看到任何引用它的内容(尽管我是ld脚本的新手)。我正在使用gcc并为ARM构建。谢谢!更新:好吧,也许我的第一个问题应该是:是否可以在链接时创建/编辑头文件? 最佳答案 我不知道可以执行此操作的链接描述文件命令,但您可以使用objcopy命令在链接后执行此操作。--add-section选项