[PATCH] ARM: add dtbImage.<dt> and dtbuImage.<dt> rules

转载:

http://permalink.gmane.org/gmane.linux.kbuild.devel/8755

This rules are useful for appended device tree conforming to the CONFIG_ARM_APPENDED_DTB kernel option.

The rule dtbImage.<dt> is actually just a:
cat zImage <dt>.dtb > dtbImage.<dt>

The dtbuImage.<dt> makes an uImage out of the dtbImage.<dt> file.

KernelVersion: v3.6-rc5
Signed-off-by: Richard Genoud <richard.genoud <at> gmail.com>
---
 arch/arm/Makefile      |   30 ++++++++++++++++--------------
 arch/arm/boot/Makefile |   11 +++++++++++
 scripts/Makefile.lib   |    6 ++++++
 3 files changed, 33 insertions(+), 14 deletions(-)

diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 30eae87..c5f2673 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
 <at>  <at>  -278,7 +278,7  <at>  <at>  archprepare:
 # Convert bzImage to zImage
 bzImage: zImage

-zImage Image xipImage bootpImage uImage: vmlinux
+zImage Image xipImage bootpImage uImage dtbImage.% dtbuImage.% : vmlinux
     $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$ <at> 

 zinstall uinstall install: vmlinux
 <at>  <at>  -300,17 +300,19  <at>  <at>  i zi:;    $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $ <at> 

 define archhelp
-  echo  ‘* zImage        - Compressed kernel image (arch/$(ARCH)/boot/zImage)‘
-  echo  ‘  Image         - Uncompressed kernel image (arch/$(ARCH)/boot/Image)‘
-  echo  ‘* xipImage      - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)‘
-  echo  ‘  uImage        - U-Boot wrapped zImage‘
-  echo  ‘  bootpImage    - Combined zImage and initial RAM disk‘
-  echo  ‘                  (supply initrd image via make variable INITRD=<path>)‘
-  echo  ‘  dtbs          - Build device tree blobs for enabled boards‘
-  echo  ‘  install       - Install uncompressed kernel‘
-  echo  ‘  zinstall      - Install compressed kernel‘
-  echo  ‘  uinstall      - Install U-Boot wrapped compressed kernel‘
-  echo  ‘                  Install using (your) ~/bin/$(INSTALLKERNEL) or‘
-  echo  ‘                  (distribution) /sbin/$(INSTALLKERNEL) or‘
-  echo  ‘                  install to $$(INSTALL_PATH) and run lilo‘
+  echo  ‘* zImage         - Compressed kernel image (arch/$(ARCH)/boot/zImage)‘
+  echo  ‘  Image          - Uncompressed kernel image (arch/$(ARCH)/boot/Image)‘
+  echo  ‘* xipImage       - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)‘
+  echo  ‘  uImage         - U-Boot wrapped zImage‘
+  echo  ‘  bootpImage     - Combined zImage and initial RAM disk‘
+  echo  ‘                   (supply initrd image via make variable INITRD=<path>)‘
+  echo  ‘  dtbs           - Build device tree blobs for enabled boards‘
+  echo  ‘  dtbImage.<dt>  - zImage with an appended device tree blob‘
+  echo  ‘  dtbuImage.<dt> - uImage with an embedded device tree blob‘
+  echo  ‘  install        - Install uncompressed kernel‘
+  echo  ‘  zinstall       - Install compressed kernel‘
+  echo  ‘  uinstall       - Install U-Boot wrapped compressed kernel‘
+  echo  ‘                   Install using (your) ~/bin/$(INSTALLKERNEL) or‘
+  echo  ‘                   (distribution) /sbin/$(INSTALLKERNEL) or‘
+  echo  ‘                   install to $$(INSTALL_PATH) and run lilo‘
 endef
diff --git a/arch/arm/boot/Makefile b/arch/arm/boot/Makefile
index c877087..35c01a8 100644
--- a/arch/arm/boot/Makefile
+++ b/arch/arm/boot/Makefile
 <at>  <at>  -98,6 +98,17  <at>  <at>  $(obj)/bootpImage: $(obj)/bootp/bootp FORCE
     $(call if_changed,objcopy)
      <at> echo ‘  Kernel: $ <at>  is ready‘

+# dtbImage.% - a dtbImage is a zImage with an appended device tree blob
+$(obj)/dtbImage.%: $(obj)/zImage $(obj)/%.dtb FORCE
+    $(call if_changed,cat)
+     <at> echo ‘  Kernel: $ <at>  is ready‘
+
+# dtbuImage.% - a dtbuImage is a uImage with an embedded device tree blob
+$(obj)/dtbuImage.%: $(obj)/dtbImage.% FORCE
+     <at> $(check_for_multiple_loadaddr)
+    $(call if_changed,uimage)
+     <at> echo ‘  Image $ <at>  is ready‘
+
 PHONY += initrd FORCE
 initrd:
      <at> test "$(INITRD_PHYS)" != "" || \
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 0be6f11..8550466 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
 <at>  <at>  -235,6 +235,12  <at>  <at>  cmd_ld = $(LD) $(LDFLAGS) $(ldflags-y) $(LDFLAGS_$( <at> F)) \
 quiet_cmd_objcopy = OBJCOPY $ <at>
 cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$( <at> F)) $< $ <at> 

+# Cat
+# ---------------------------------------------------------------------------
+
+quiet_cmd_cat = CAT     $ <at>
+cmd_cat = (cat $(filter-out FORCE,$^) > $ <at> ) || (rm -f $ <at>  ; false)
+
 # Gzip
 # ---------------------------------------------------------------------------

--


转载:

https://www.osadl.org/Single-View.111+M5297463051f.0.html

How can I boot a recent kernel?

Yes, some vendors still ship bootloaders without device tree support, since their vendor kernel does not know what a device tree is and, thus, the bootloader neither does. But, fortunately, kernel developers are aware of it and implemented the

CONFIG_ARM_APPENDED_DTB

feature. What is this?

Append the device tree to the kernel

Since the bootloader loads the kernel into memory without asking any questions, we can fool the bootloader by making the kernel a little larger and append the device tree at its end. During the first steps of kernel initialization, the device tree is searched for at the end of the regular kernel code and used as if it had been loaded separately.

How do I prepare the kernel for this procedure?

In any case, CONFIG_ARM_APPENDED_DTB=y must be configured. If zImage is used to boot, simply execute

cd /usr/src/kernels/your-linux-tree
cd arch/your-arch/boot
cat zImage dts/your-device-tree.dtb >zImage-with-dtb

after having compiled the kernel as usual. If the uImage format is needed, you still have to execute the above commands. In addition, create a uImage file based on the combined zImage kernel as follows

cp zImage zImage-without-dtb
cp zImage-with-dtb zImage
cd -
make LOADADDR=$YOUR_LOADADDR ARCH=your-arch uImage
cd -
cp zImage-without-dtb zImage

and let the bootloader load the uImage file that now contains both the kernel and device tree.

Check for the correct model string

If everything worked correctly, you should see a line

Machine: Your generic board (Flattened Device Tree), model: your model string

that corresponds to the related setting in your
device tree. This line is one of the first output lines after the kernel
started execution.

时间: 2024-11-19 19:27:26

[PATCH] ARM: add dtbImage.<dt> and dtbuImage.<dt> rules的相关文章

GCC编译uboot出现(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0&#39;错误的解决办法

/opt/arm-2010.09/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/armv4t/libgcc.a(_bswapsi2.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0' make: *** [u-boot] Error 1 一旦编译uboot出现上述错误,请不要慌张!解决办法官网已经给出,主要解决办法如下: vim 打开./lib_arm/eabi_com

dl以及dt,dd,以及table的tr,th,td最清楚分析

1,定义:<dl> <dt> <dd>是一组合标签,使用了dt dd最外层就必须使用dl包裹,此组合标签我们也又叫表格标签,与table表格类似组合标签,故名我们也叫dl表格.<dl><dt></dt><dd></dd></dl>为常用标题+列表型标签.如没有对dl dt dd标签初始CSS样式,默认dd列表内容会一定缩进.2,用法: <dl><dt>列表标题</dt&

dl,dt,dd标签的使用

dl就是定义一个列表 dt说明白了就是这个列表的标题dd就是内容,能缩进和UL,OL性质差不多 <dl> <dt>标题标题</dt> <dd>内容内容</dd> <dd>内容内容</dd> </dl> dl,dt,dd是一个解释型的列表比较常用的如: <dl> <dd><img src=”图片路径” alt=”" /></dd> <dt>图片

HTML 列表 &lt;ol&gt;&lt;ul&gt;&lt;li&gt;&lt;dl&gt;&lt;dt&gt;&lt;dd&gt;

<ol>标签-有序列表 定义和用法: <ol>标签定义有序列表. HTML 与 XHTML 之间的差异 在 HTML 4.01 中,ol 元素的 "compact"."start" 以及 "type" 属性是不被赞成使用的. 在 XHTML 1.0 Strict DTD 中,ol 元素的 "compact"."start" 以及 "type" 属性是不被支持的.

html中,dl,dt,dd怎么使用

1,定义:<dl> <dt> <dd>是一组合标签,使用了dt dd最外层就必须使用dl包裹,此组合标签我们也又叫表格标签,与table表格类似组合标签,故名我们也叫dl表格.<dl><dt></dt><dd></dd></dl>为常用标题+列表型标签.如没有对dl dt dd标签初始CSS样式,默认dd列表内容会一定缩进.2,用法: <dl><dt>列表标题</dt&

html dl dt dd标签元素

dl dt dd认识及dl dt dd使用方法 <dl> 标签用于定义列表类型标签. dl dt dd目录 dl dt dd介绍 结构语法 dl dt dd案例 dl dt dd总结 一.dl dt dd认识   -   TOP html <dl> <dt> <dd>是一组合标签,使用了dt dd最外层就必须使用dl包裹,此组合标签我们也又叫表格标签,与table表格类似组合标签,故名我们也叫dl表格(扩展阅读:table tr td.table tr th

DIV+CSS中标签dl dt dd常用的用法

转自:http://smallpig301.blog.163.com/blog/static/9986093201010262499229/ < dl>< /dl>用来创建一个普通的列表, < dt>< /dt>用来创建列表中的上层项目, <dd>< /dd>用来创建列表中最下层项目, < dt>< /dt>和< dd>< /dd>都必须放在< dl>< /dl>

dl dt dd 实例

<body> <div class="head"> <div class="logo">前端开发教程</div> </div> <div class="nav"> <ul> <li class="current"><a href="#">CSS</a></li> <li&

dl dt dd标签

<dl>标记定义了一个定义列表,定义列表中的条目是通过使用<dt>标记(“definition title”,定义标题)和<dd>标记(“definition description”,定义描述)创建的.<dt>给出了术语名,<dd>标记给出了术语的定义.也就是说<dt>用来创建列表中的上层项目,<dd>用来创建列表中最下层项目,<dt>和<dd>都必须放在<dl>< /dl>