c - 使用设备树引导主线 Linux 内核

标签 c linux-kernel device-tree

我按照以下步骤在 QEMU 上构建和刷新我的内核:

  1. make ARCH=arm distclean
  2. 制作 ARCH=arm versatile_defconfig
  3. make ARCH=arm menuconfig
    在这里您需要启用以下功能。
    内核特性 ---> [*] 使用 ARM EABI 编译内核。 (启用此功能)。
  4. make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-uImage
  5. qemu-system-arm -M versatilepb -m 128M -kernel arch/arm/boot/uImage -append "console=tty1"
    在这里你会得到控制台说内核 panic 。为避免这种情况,请传递您的 rootfs 参数。
    我猜你是从 busybox 构建 rootfs 的,如果是的话,请尝试使用下面的命令来完全启动系统
  6. qemu-system-arm -M versatilepb -m 128M -kernel arch/arm/boot/uImage -initrd rootfs.img -append "root=/dev/ram mem=128M rdinit=/sbin/init"-串行标准输入输出

在运行时,内核是否使用设备树来加载设备?如果是,如何确认设备树位于何处? (我需要更改设备树文件(.dts),但无法找到该文件所在的位置)请帮忙

最佳答案

设备树位于 arch/arm/boot/dts/versatile-pb.dts

关于c - 使用设备树引导主线 Linux 内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22433334/

相关文章:

linux - 如何更改Linux设备树中标签的名称?

linux-kernel - Linux 设备树,具有多个中断父节点的节点

c - 使用 ReadDirectoryChangesW API 监视目录

c - 在 C 程序中列出全局数组变量

linux-kernel - 用可加载的模块替换内核内置模块

linux - 对 linux 内核开发的一些事情没有概念

不使用cmake编译源码

c - 为什么我的 NDIS 筛选器驱动程序的 FilterReceiveNetBufferLists 处理程序未被调用?

Linux - dmesg 不显示 printk 消息

linux-kernel - 当用作设备树节点名称时,phandle 的含义是什么?