标签: embedded-linux

如何在 Linux 内核中嵌入设备树 blob (dtb)?

应该有一种独立于标准、主板和架构的方法来做到这一点,就像 initfamfs 一样,不是吗?

如果重要的话,我正在使用 powerpc 和 linux-3.10。如果以后有更好的设施,我很想听听。

如果有人知道目前正在工作的董事会,我可以将其用作参考,那也会有所帮助。

我一直在搜索和搜索,我找到了很多关于为什么 dts/dtb 存在的信息,大量关于它们是否有用的持续讨论,以及一些关于如何编写 dts 或使用现有 dts 的信息,但没有关于如何嵌入它们。

快速描述或相关文档的指针将非常感激。

powerpc linux-kernel embedded-linux device-tree

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

如何在 ash shell 中保持程序在后台运行

我需要通过 SSH 连接到嵌入式设备,启动后台程序,然后断开连接并保持后台进程运行。问题是嵌入式设备正在使用 ash shell(不是 bash 或其他任何东西),所以 nohup 和 screen 不可用。我还没有找到任何方法来断开 ash 中的进程。有没有办法在灰烬中做到这一点?

linux ssh shell embedded-linux ash

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

shm_unlink 后访问内存

的操作shm_unlink对我来说不清楚。我创建了一个共享内存对象并映射到一个进程。后来,我做shm_unlink了内存对象。接下来shm_unlink,我能够访问相同的内存进行读写。这怎么可能?由于内存对象被 破坏shm_unlink,我预计在这种情况下会出现分段错误。但是,并没有发生?是什么原因?是什么shm_unlink究竟在这里干什么?

下面是代码片段。

main(int argc, char * argv[])
{
    int   fd;
    char  *addr;
    int i = 0;

    /*
    * In case the unlink code isn't executed at the end
    */
    if (argc != 1) {
        shm_unlink("/bolts");
        return EXIT_SUCCESS;
    }

    /* Create a new memory object */
    fd = shm_open("/bolts", O_RDWR | O_CREAT, 0666);
    if (fd == -1) {
        fprintf(stderr, "Open failed : %s\n",
            strerror(errno));
        return EXIT_FAILURE;
    }

    /* Set the …
Run Code Online (Sandbox Code Playgroud)

c linux embedded-linux

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

从 Linux 控制台显示图像

我创建了一个最小的 Linux 系统,它启动到控制台并且不包含任何类型的图形环境。

我现在想在屏幕上显示 C 程序中的图像文件或 bash 脚本。

我怎样才能做到这一点?

c linux bash image embedded-linux

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

带有外部触发器的 V4L2 和 Aptina 传感器 - 丢弃旧帧

我正在使用通过 LVDS 连接到 i.MX6 Quad 的 CSI 接口的 Aptina MT9V024 传感器。我在快照模式下运行传感器,即使用外部信号触发/开始图像捕获。

在软件方面,我正在运行 Yocto Linux 和一个用 C 编写的应用程序,它应该检索捕获的图像数据。

它是这样工作的(部分代码,循环运行):

// wait until camers is triggered
ret = select(video_fd + 1, &fds, NULL, NULL, &tv);

// dq buffer / read image data and save to disk
ret = xioctl(video_fd, VIDIOC_DQBUF, &v4l2buf);
img->imageData = buffers[v4l2buf.index].start;
cvSaveImage(filename, img, 0);

// enqueue another buffer to capture next frame
ret = xioctl(video_fd, VIDIOC_QBUF, &v4l2buf);
Run Code Online (Sandbox Code Playgroud)

调用select(...)阻塞直到新帧可用,即相机被触发。

我的问题:检索到的图像是上一次捕获的图像。在 init 期间,我请求两个缓冲区,因为传感器不会从更少开始。但是在 select(...) 返回后,我不能 DQBUF …

c embedded-linux v4l2 imx6

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

内核恐慌:找不到可用的初始化。尝试将 init= 选项传递给内核

我刚刚开始了解内核的工作原理和内部结构,首先,我正在尝试构建内核并启动它。

我使用 qemu 作为 x86 架构的模拟器。

我正在关注这篇文章(虽然是针对手臂的):http : //www.kaizou.org/2016/09/boot-minimal-linux-qemu/

我使用以下命令构建了内核:

cd kernel_4.9
make x86_64-defconfig
make -j8
Run Code Online (Sandbox Code Playgroud)

这给了我 bzImage。现在我开发了一个initramfshello world 作为可执行文件的虚拟对象。这是init.c

#include <stdio.h>

void main()
{
    printf("Tiny init - Hello World...\n");
    while(1);
}
Run Code Online (Sandbox Code Playgroud)

打包 initramfs

gcc -static init.c -o init
chmod +x init
echo init | cpio -o --format=newc > initramfs
Run Code Online (Sandbox Code Playgroud)

现在运行 qemu :

qemu-system-x86_64 -kernel ~/data/linux/arch/x86/boot/bzImage -append 'console=ttyS0' -serial stdio -initrd ~/data/linux/arch/x86/boot/initramfs
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

[    1.158556] Write protecting the kernel text: 8528k
[    1.158842] Write protecting …
Run Code Online (Sandbox Code Playgroud)

boot qemu bsp linux-kernel embedded-linux

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

如何将 BlueZ 配置为要求连接设备输入匹配的密钥?

我正在尝试在嵌入式 Linux 设备上设置蓝牙,以便使用 SSP 模式,我的设备生成密码并在其显示屏上显示密码,并且要求远程端(例如用户的手机)输入匹配的密码才能使用才能成功配对。

我编写/注册了一个代理,将其模式设置为 DisplayOnly;我预计当设备连接时,将调用“RequestPasskey”回调,然后我的代理将能够生成并返回新的密码,并且远程端将需要输入相同的代码。我实际看到的行为是远程端正在生成自己的密码。

如果禁用 SSP 并使用旧配对,我可以实现类似所需行为的效果,但我宁愿不必这样做。

BlueZ 可以实现这种行为吗?

embedded-linux bluez

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

如何在c++中为tensorflow-lite设置图像输入?

我正在尝试将我们的 Tensoflow 模型从 Python+Keras 版本迁移到嵌入式平台上使用 C++ 的 Tensorflow Lite。

看来我不知道如何正确设置解释器的输入。

输入形状应为 (1, 224, 224, 3)。

作为输入,我使用 openCV 拍摄图像,并将其转换为 CV_BGR2RGB。


std::unique_ptr<tflite::FlatBufferModel> model_stage1 = 
tflite::FlatBufferModel::BuildFromFile("model1.tflite");
  TFLITE_MINIMAL_CHECK(model_stage1 != nullptr);

  // Build the interpreter
  tflite::ops::builtin::BuiltinOpResolver resolver_stage1;
  std::unique_ptr<Interpreter> interpreter_stage1;
  tflite::InterpreterBuilder(*model_stage1, resolver_stage1)(&interpreter_stage1);

TFLITE_MINIMAL_CHECK(interpreter_stage1 != nullptr);

  cv::Mat cvimg = cv::imread(imagefile);
  if(cvimg.data == NULL) {
    printf("=== IMAGE READ ERROR ===\n");
    return 0;
  }

  cv::cvtColor(cvimg, cvimg, CV_BGR2RGB);

  uchar* input_1 = interpreter_stage1->typed_input_tensor<uchar>(0);

 memcpy( ... );

Run Code Online (Sandbox Code Playgroud)

我对这种 uchar 类型的 memcpy 正确设置有疑问。

当我这样做时,我在工作过程中出现段错误:

memcpy(input_1, cvimg.data, cvimg.total() * cvimg.elemSize());
Run Code Online (Sandbox Code Playgroud)

在这种情况下我应该如何正确填写输入?

c++ embedded-linux tensor tensorflow-lite

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

openembedded-core 和 poky 的区别

我们想使用支持 SELinux 的 Yocto 构建嵌入式 Linux 设备。

我正在查看 meta-selinux 层依赖项。

依赖关系

该层依赖于 openembedded-core 元数据以及来自 meta-openembedded 存储库的 meta-python 和 meta-oe 层。

当它提到“openembedded-core”时,它是否意味着 poky

git://git.yoctoproject.org/poky

或者

https://github.com/openembedded/openembedded-core

poky 和 ​​openembedded-core 有什么区别,我在 openembedded-core 看不到 bitbake

linux embedded-linux openembedded yocto

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

逆向工程 Hikvision 摄像头固件和 LiteOS 引导加载程序

我有一台海康威视 IP 摄像机,正在对其进行安全研究。(型号DFI6257E,貌似是台湾独家型号。)

从闪存中转储固件并使用 binwalk 对其进行分析后,我发现很难理解其工作原理。几乎就像他们试图隐藏一些事情。

转储固件:https://drive.google.com/file/d/1x9JiVbnZo4zNNnX8V8JS1MGsK4wmHFM6/view ?usp=sharing

这是 binwalk 的输出:

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
36392         0x8E28          LZMA compressed data, properties: 0x5D, dictionary size: 16777216 bytes, uncompressed size: -1 bytes
10092544      0x9A0000        JFFS2 filesystem, little endian
16318544      0xF90050        Zlib compressed data, compressed
16318764      0xF9012C        Zlib compressed data, compressed
16319000      0xF90218        Zlib compressed data, compressed
16319136      0xF902A0        Zlib compressed data, compressed
16319592      0xF90468        Zlib compressed data, compressed
16320424      0xF907A8        Zlib compressed data, compressed
16320864      0xF90960        Zlib compressed data, compressed
16321796 …
Run Code Online (Sandbox Code Playgroud)

reverse-engineering embedded-linux ip-camera hikvision

6
推荐指数
0
解决办法
4008
查看次数