小编Ham*_*frq的帖子

为什么在引导加载程序和内核源代码中都需要设备树结构(DTS)文件?

像U-Boot这样没有实现Open Firmware API的Bootloader,应该将平面设备树的二进制形式传递给内核 - LinuxFDTBlob

为什么DTS文件也存在于内核中?这不是多余的吗?

例如,U-boot源代码包含以下文件:
arch/arm/dts/tegra124-jetson-tk1.dts

此文件也可以在Linux源代码下找到:
arch/arm/boot/dts/tegra124-jetson-tk1.dts

虽然内核版本是U-boot版本的4倍,但我想知道这种冗余背后的原因.我相信维护人员和开发人员都很难维护和使用它们

arm linux-kernel embedded-linux u-boot device-tree

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

char[] 大小未计算在内

我有以下代码:

#include <stdio.h>
#include <stdint.h>

typedef struct E_s {
    uint32_t    a;
    uint32_t    b;
    uint32_t    c;
} E_t;

typedef struct S_s {
    uint32_t    data_sz;
    char        data[];
} S_t;

typedef struct F_s {
    E_t     E;
    S_t     S;
    char        data[16];
//} __attribute__((packed)) full_msg_t;
} F_t;


int main(int argc, char* argv[])
{
    F_t out;
    printf("sizeof(out.data) = %lu\n", sizeof(out.data));
    printf("sizeof(out.E) = %lu\n", sizeof(E_t));
    printf("sizeof(out.S) = %lu\n", sizeof(S_t));
    printf("sizeof(out) = %lu\n", sizeof(F_t));

    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我看到以下输出:

sizeof(out.data) = 16
sizeof(out.E) = 12
sizeof(out.S) = 4
sizeof(out) …
Run Code Online (Sandbox Code Playgroud)

c gcc

7
推荐指数
3
解决办法
175
查看次数

使用DMA访问高速串行端口

我在c#中使用serialport组件,效果很好!但问题是如何更快地处理高速(例如2 Mbps)数据传输.

正如我研究过的那样,我发现可以直接访问内存(使用像这个链接的 DMA ).谁能告诉我如何在我的应用程序中定义和使用它?

c# serial-port dma directmemory

4
推荐指数
1
解决办法
2059
查看次数

uboot如何在不使用DTS的情况下将硬件信息传递给内核

我是嵌入式Linux开发的新手.我必须将uboot和自定义Linux发行版移植到基于ARM的新板上.

我们正在使用的uboot(2009.08)没有Arch和DTS文件夹.我想这是一个旧版本,不使用DTS将硬件信息传递给内核(v 3.0).我已经阅读了很多关于DTS的内容,但是这里关于这个(过时的)将硬件信息从uboot传递到我们正在使用的内核的方法还不够.互联网告诉我,在Uboot和内核源代码中都有这个任务的C文件必须同步,但有人可以指向我吗?另外,如果我的假设是错误的,请纠正我,并在需要时询问更多信息.

boot arm linux-kernel embedded-linux u-boot

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

标签 统计

arm ×2

embedded-linux ×2

linux-kernel ×2

u-boot ×2

boot ×1

c ×1

c# ×1

device-tree ×1

directmemory ×1

dma ×1

gcc ×1

serial-port ×1