buildroot官方教材4

buildroot官方教材
buildroot官方的教程training

buildroot源码和组织树:

  • Makefile <顶层Makefile文件>
  • config.in <顶层的Config.in,包含了许多其它的Config.in文件>
  • arch/
    • Config.in.* <定义了架构变量,如处理器类型,ABI,浮点,等>
    • Config.in,Config.in.arm,Config.in.x86,Config.in.microblaze,等等。
  • toolchain/
    • 用来产生和使用工具链的包
    • toolchain/ <以来于toolchain-buildroot或toolchain-external的虚拟包>
    • toolchain-buildroot/ <构建内部工具链的虚拟包>
    • toolchain-external/ <处理外部工具链的包>
  • system/
    • skeleton/ <rootfs 骨架>
    • Config.in <系统级特性的选项,如初始化系统,/dev 处理,等>
  • linux/
  • package/
  • fs/
    • 产生不同格式的文件系统映像的逻辑代码
    • common.mk <通用逻辑代码>
    • cpio/,ext2/,squashfs/,tar/,ubifs/,等
  • boot/
    • bootloader包
    • at91bootstrap3/, barebox/, grub2/,syslinux/,uboot/,等
  • configs/
    • 不同硬件平台下的默认的配置文件
    • 与内核的defconfigs相似
    • atmel_xplained_defconfig,beaglebone_defconfig,raspberrypi_defconfig,等
  • board/
    • 特定板卡的文件(内核配置文件,内核补丁,映像烧写Flash的脚本,等)
    • 通常与configs/中的defconfig一起使用
  • support/
    • 其它工具 <kconfig代码,libtool补丁,下载的helpers,等>
  • utils/
    • 便利于Buildroot开发者的各种工具
    • brmake,都为make封装的形式,且带logging功能
    • get-developers <知道补丁应该发给谁>
    • test-pkg <验证包是否正确地构建了>
    • scanpipy,scancpan <生成Python/Perl包的.mk文件>
  • docs/
    • Buildroot文档
    • 可由make manual命令产生。
    • 也可通过https://buildroot.org/downloads/manual/manual.html获取

下面介绍一下构建的组织目录树(Build tree)

  1. output/ <总的生成文件夹,可以通过O=< dir >来自定义。BASE_DIR>
    • build/ <所有的源码压缩包都在这里解压;每一个包在这里构建;除了源码包和目标文件,Buildroot还创建了stamp文件。BUILD_DIR>
      • buildroot-config/
      • busybox-1.22.1/
      • host-pkgconf-0.8.9/
      • kmod-1.18/
      • build-time.log
    • host/ <包括为主机(交叉编译器等)和工具链的根文件系统构建的工具。根文件系统在host/< tuple >/sysroot/usr中,< tuple >为架构,开发商、操作系统、C库和ABI的标识(例如:arm-unknown-linux-gnueabihf)。HOST_DIR,根文件系统文件夹:STAGING_DIR>
      • lib
      • bin
      • sbin
      • < tuple >/sysroot/bin
      • < tuple >/sysroot/lib
      • < tuple >/sysroot/usr/lib
      • < tuple >/sysroot/usr/bin
    • staging/ <与根文件系统,比如host/< tuple >/sysroot的链接符号>
    • target/ <目标根文件系统;Linux层次;还缺少权限,设备文件等,不能直接用于目标硬件;用来生成最终的根文件系统映像:images/。TARGET_DIR>
      • bin/
      • etc/
      • -lib/
      • usr/bin/
      • usr/lib/
      • usr/share/
      • usr/sbin/
      • THIS_IS_NOT_YOUR_ROOT_FILESYSTEM
    • images/ <包括最终的映像文件:内核映像,bootloader映像,根文件系统映像。BINARIES_DIR>
      • zImage
      • armada-307-mirabox.dtb
      • rootfs.tar
      • rootfs.ubi
    • graphs/ < Buildroot操作的可视化:包之间的依赖关系,构建不同包的时间。由如下命令生成:make graph-depends make graph-build make graph-size。GRAPHS_DIR>
  2. legal-info/ <包的许可证(license),源码等;由make legal-info命令生成。LEGAL_INFO_DIR>
    • manifest.csv
    • host-manifest.csv
    • licenses.txt
    • licenses/
    • sources/

Buildroot的工具链
什么是交叉编译工具链?
3. 用来构建和调试目标硬件源码的一系列的工具。
交叉编译工具链
Buildroot为工具链提供了两种选择,称为工具链后台:

  1. 内部工具链,Buildroot完全从源码构建整个工具链。
  2. 外部工具链,Buildroot可以使用已经构建好的工具链。
    通过Toolchain -> Toolchain type来选择。

内部的工具链
提供了灵活的配置,如:

  • 内核头文件的版本;

  • C库,支持uClibc,(e)glibc和musl。

    • 其中glibc是标准的C库,>= 10MB。
    • uClibc-ng和musl,为较小的C库,uClibc-ng支持无MMU的架构,适用于非常小的系统(< 10MB)。
  • 大量的工具链的可选项:C++,LTO,OpenMP,libmudflap,graphite等。
    构建工具链大约需要15-20分钟的时间。

内部工具链生成的文件:

  • host/bin/< tuple >-< tool >中,交叉编译工具,包括:编译器,链接器,汇编器等,其中编译器隐藏在一个封装的程序中。
  • host/< tuple >/
    • sysroot/usr/include/ ,内核头文件和C库头文件。
    • sysroot/lib/和 sysroot/usr/lib/,C库和gcc运行环境。
    • include/c++/,C++库头文件。
    • lib/,gcc/binutils所需要的主机上的库。
  • target/
    • lib/和usr/lib/,C和C++库。
  • 编译器被配置为:硬件平台专用的;在根文件目录中查找库和头文件;不需要传递那些怪异的gcc的选项参数(flag)。

外部的工具链
Buildroot允许使用预构建好的工具链:

  1. 使用Buildroot已知的现有工具链配置文件(profile)
  2. 下载和安装自定义的外部工具链
  3. 直接使用预安装的自定义的外部工具链
    Buildroot已知的大量的公开发行的工具链可供选择,包括ARM(ARM和AArch64),Mentor Graphics(ARM,AArch64,MIPS,NIOS-II,x86-64),Imagination Technologies(MIPS),Synopsys(ARC)。
    选择以上的已知工具链时,Buildroot能够下载和自动使用这些工具链。
    也可以轻松地添加新的工具链配置文件(profile)。
    如果你使用的是自定义的工具链,则在Toolchain中选择Custom toolchain。
    也可以通过Toolchain origin中的Pre-installed toolchain选项选择预安装好的工具链。
    以上所有的情况,你都需要告诉Buildroot这些工具链的配置情况,包括:C库,内核头文件版本,等。

外部工具链的生成文件:

  • host/opt/ext-toolchain,原始的工具链压缩包解压的位置
  • host/bin/< tuple >-< tool >,交叉编译工具的符号链接。不过编译器指向了一个封装程序。
  • host/< tuple >/
    • sysroot/usr/include/ ,内核头文件和C库头文件。
    • sysroot/lib/和 sysroot/usr/lib/,C库和gcc运行环境。
    • include/c++/,C++库头文件。
  • target/
    • lib/和usr/lib/,C和C++库。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用:qt 多窗口yuv零拷贝gpu渲染 基于 rk356x开发板 ,buildroot系统下 qt 多窗口yuv零拷贝gpu渲染 基于 rk356x开发板 ,buildroot系统下 qt 多窗口yuv零拷贝gpu渲染 基于 rk356x开发板 ,buildroot系统下 qt 多窗口yuv零...。 引用:1、默认SDK配置UVC驱动 diff --git a/kernel/arch/arm/configs/rv1126_defconfig b/kernel/arch/arm/configs/rv1126_defconfig index 3f380ed..ceb035e 100755 --- a/kernel/arch/arm/configs/rv1126_defconfig b/kernel/arch/arm/configs/rv1126_defconfig @@ -210,6 210,10 @@ CONFIG_MEDIA_SUPPORT=y CONFIG_MEDIA_CAMERA_SUPPORT=y CONFIG_MEDIA_CONTROLLER=y CONFIG_VIDEO_V4L2_SUBDEV_API=y CONFIG_MEDIA_USB_SUPPORT=y CONFIG_USB_VIDEO_CLASS=y CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y CONFIG_USB_GSPCA=m CONFIG_V4L_PLATFORM_DRIVERS=y CONFIG_VIDEO_ROCKCHIP_CIF=y CONFIG_VIDEO_ROCKCHIP_ISP=y 。 引用:3、生成两个video**修改如下 diff --git a/kernel/drivers/media/usb/uvc/uvc_driver.c b/kernel/drivers/media/usb/uvc/uvc_driver.c old mode 100644 new mode 100755 index 07b7eed..ec9e947 --- a/kernel/drivers/media/usb/uvc/uvc_driver.c b/kernel/drivers/media/usb/uvc/uvc_driver.c @@ -2066,7 2066,7 @@ static int uvc_register_terms(struct uvc_device *dev, /* Register a metadata node, but ignore a possible failure, * complete registration of video nodes anyway. */ - uvc_meta_register(stream); //uvc_meta_register(stream); term->vdev = &stream->vdev; } 修改后查看效果 USB IR Camera: USB IR Camera (usb-ffe00000.usb-1.1): /dev/video43 USB RGB Camera: USB RGB Camera (usb-ffe00000.usb-1.2): /dev/video44 。 buildroot是一个开源的工具集,用于构建嵌入式Linux系统。V4L2是Video4Linux2的简称,是Linux内核中的一个API,用于驱动和控制视频设备。在buildroot系统下,可以配置V4L2驱动来支持摄像头设备的使用。通过修改配置文件和代码,可以启用UVC驱动和V4L2 SUBDEV API,并生成相应的video设备节点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值