* Booting DT kernel on a non-DT bootloader
@ 2012-09-03 8:54 Simon Horman
2012-09-11 5:18 ` Simon Horman
0 siblings, 1 reply; 2+ messages in thread
From: Simon Horman @ 2012-09-03 8:54 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
it has come to pass that for some of the boards under mach-shmobile
we are in the following situation:
* The kernel requires a device tree for booting
* The default boot loader for the board does not support device tree;
and in general it is not practical for developers to upload the
boot-loader.
Fortunately there is a solution, which is to append a device tree to
the kernel image and boot that by the normal means supported by the
boot loader.
Here is how to achieve that:
1. Make sure you have CONFIG_ARM_APPENDED_DTB=y in your .config
2. Create original zImage
ARCH=arm make zImage
3. Create flattened device tree (run this in kernel tree)
i) There is code in the next branch of my renesas tree to allow
this to be achieved using
# make dtbs
This will create the device tree for the prevaling kernel config,
if one exists.
e.g For Armadillo 800 EVA
# make dtbs
scripts/kconfig/conf --silentoldconfig Kconfig
DTC arch/arm/boot/r8a7740-armadillo800eva.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/r8a7740-armadillo800eva.dts"
Else it will do nothing
# make dtbs
scripts/kconfig/conf --silentoldconfig Kconfig
make[1]: Nothing to be done for `arch/arm/boot/dtbs'.
ii) If you are running a current or other kernel, which does not
support "make dtbs" for mach-shmobile boards, then the dtb
may manually be compiled using dtc.
e.g. For the Armadillo 800 EVA
dtc -I dts -O dtb arch/arm/boot/dts/r8a7740-armadillo800eva.dts \
-o arch/arm/boot/dts/r8a7740-armadillo800eva.dtb
Note: Please make sure you have a recent version of dtc.
I have verified that the above works with DTC 1.3.0 from
the Debian device-tree-compiler 1.3.0-2 package.
I have had reports that it fails using DTC 1.2.0.
4. Append device tree to zImage (very high-tech!)
cat arch/arm/boot/zImage \
arch/arm/boot/dts/r8a7740-armadillo800eva.dtb >
arch/arm/boot/zImage.dtb
5. Create uImage (optional)
If you need to create a uImage then this may be done using
the new zImage + dtb as follows:
# cp arch/arm/boot/zImage.dtb arch/arm/boot/zImage
# $(cut -f 3- -d ' ' < arch/arm/boot/.uImage.cmd)
6. You should now be able to either boot the resulting zImage.dtb
or uImage, use whichever suits the needs of the bootloader in use.
^ permalink raw reply [flat|nested] 2+ messages in thread
* Booting DT kernel on a non-DT bootloader
2012-09-03 8:54 Booting DT kernel on a non-DT bootloader Simon Horman
@ 2012-09-11 5:18 ` Simon Horman
0 siblings, 0 replies; 2+ messages in thread
From: Simon Horman @ 2012-09-11 5:18 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Sep 03, 2012 at 05:54:29PM +0900, Simon Horman wrote:
> Hi,
>
> it has come to pass that for some of the boards under mach-shmobile
> we are in the following situation:
>
> * The kernel requires a device tree for booting
> * The default boot loader for the board does not support device tree;
> and in general it is not practical for developers to upload the
> boot-loader.
>
> Fortunately there is a solution, which is to append a device tree to
> the kernel image and boot that by the normal means supported by the
> boot loader.
>
> Here is how to achieve that:
>
> 1. Make sure you have CONFIG_ARM_APPENDED_DTB=y in your .config
>
> 2. Create original zImage
>
> ARCH=arm make zImage
If you intend to create a uImage (step 5) then you should run
ARCH=arm make uImage
This ensures that arch/arm/boot/.uImage.cmd is up to date
> 3. Create flattened device tree (run this in kernel tree)
>
> i) There is code in the next branch of my renesas tree to allow
> this to be achieved using
>
> # make dtbs
>
> This will create the device tree for the prevaling kernel config,
> if one exists.
>
> e.g For Armadillo 800 EVA
>
> # make dtbs
> scripts/kconfig/conf --silentoldconfig Kconfig
> DTC arch/arm/boot/r8a7740-armadillo800eva.dtb
> DTC: dts->dtb on file "arch/arm/boot/dts/r8a7740-armadillo800eva.dts"
>
> Else it will do nothing
> # make dtbs
> scripts/kconfig/conf --silentoldconfig Kconfig
> make[1]: Nothing to be done for `arch/arm/boot/dtbs'.
>
>
> ii) If you are running a current or other kernel, which does not
> support "make dtbs" for mach-shmobile boards, then the dtb
> may manually be compiled using dtc.
>
> e.g. For the Armadillo 800 EVA
>
> dtc -I dts -O dtb arch/arm/boot/dts/r8a7740-armadillo800eva.dts \
> -o arch/arm/boot/dts/r8a7740-armadillo800eva.dtb
>
> Note: Please make sure you have a recent version of dtc.
> I have verified that the above works with DTC 1.3.0 from
> the Debian device-tree-compiler 1.3.0-2 package.
> I have had reports that it fails using DTC 1.2.0.
>
> 4. Append device tree to zImage (very high-tech!)
>
> cat arch/arm/boot/zImage \
> arch/arm/boot/dts/r8a7740-armadillo800eva.dtb >
> arch/arm/boot/zImage.dtb
>
> 5. Create uImage (optional)
>
> If you need to create a uImage then this may be done using
> the new zImage + dtb as follows:
>
> # cp arch/arm/boot/zImage.dtb arch/arm/boot/zImage
> # $(cut -f 3- -d ' ' < arch/arm/boot/.uImage.cmd)
>
> 6. You should now be able to either boot the resulting zImage.dtb
> or uImage, use whichever suits the needs of the bootloader in use.
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-sh" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-09-11 5:18 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-03 8:54 Booting DT kernel on a non-DT bootloader Simon Horman
2012-09-11 5:18 ` Simon Horman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).