设备树编译

由于内核只识别二进制格式的扁平设备树,因此需要一个特殊的设备树编译器"dtc",将设备树源码文件(.dts)编译二进制文件(.dtb)。dtc编译器会对输入文件进行语法和语义检查,并根据Linux内核的要求检查各节点及属性,将设备树源码文件(.dts)编译二进制文件(.dtb),以保证内核能正常启动。最新的dtc编译器Git仓库位于www.gdl.com,可以通过如下命令获得源码

  $git clone

  dtc编译器的使用方法如下所示[6]:

  dtc [-I ] [-O ] [-o output_filename] [-V output_version] input_filename

  input_format可以使用以下三个参数:

  dtb: 表示输入文件为dtb文件;

  dts: 表示输入文件为dts文件;

  fs: 表示输入文件为与/proc/device-tree文件的格式相同。

  output_format可以使用以下三个参数:

  dtb: 表示输出文件为dtb文件;

  dts: 表示输出文件为dts文件;

  asm: 表示输出文件为汇编语言文件;

 如果output_format为“dtb”是,ouput_version用来规定生成的dtb文件的版本号,目前dtb文件可用的版本号为1,2,3,16或17,output_format的缺省值为17。-S指定的是生成的dtb文件的大小,需要适当地扩大以供u-boot 创建/chose节点时使用。input_filename和output_filename分别为输入和输出文件名。从dtc编译器的使用方法中发现,dtc编译器不仅可以实现dts文件到dtb文件的转换,也可以实现dtb文件到dts文件的转换。

  Linux源码的arch/powerpc/boot/dts/目录下存放了很多dts文件,可以作为参考文件。另外dtc编译器在内核源码2.6.25版本之后已经被包含进去。在2.6.26版本之后,生成blob的简单规则已经加入makefile,如下命令:

  $ make ARCH=powerpc canyonlands.dtb

  也可以根据自己的硬件修改好dts文件后,用下面类似命令生成dtb文件。

  $ dtc -f -I dts -O dtb -R 8 -S 0x3000 test.dts > mpc836x_mds.dtb

  $ mkimage -A ppc -O Linux -T flat_dt -C none -a 0x300000 -e 0 -d mpc836x_mds.dtb mpc836x_mds.dtu

  注:最新的U-Boot使用dtb镜像文件。而freescale的U-Boot需要如上使用mkimage为dtb添加镜像信息。

 

你可能感兴趣的:(设备树编译)