[U-Boot] [PATCH v2 17/18] board: Add Qualcomm Dragonboard 410C support

Mateusz Kulikowski mateusz.kulikowski at gmail.com
Sat Mar 12 22:13:43 CET 2016


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Hi Daniel,

Thanks for the hints!
On 12.03.2016 00:58, Daniel Glöckner wrote:
> On Sun, Feb 07, 2016 at 09:57:37PM +0100, Mateusz Kulikowski wrote:
[...]
>> +.global _fastboot_header
>> +_fastboot_header:
>> +	b _start
>> +	add     x13, x18, #0x16
>> +	/* Image load offset from start of RAM, little-endian */
>> +	.quad   CONFIG_SYS_TEXT_BASE-PHYS_SDRAM_1
>> +	/* Effective size of kernel image, little-endian */
>> +	.quad   0 /* 0x60000 */
>> +	/* Informative flags, little-endian */
>> +	.quad   0
>> +	.quad   0                               /* reserved */
>> +	.quad   0                               /* reserved */
>> +	.quad   0                               /* reserved */
>> +	.byte   0x41                            /* Magic number, "ARM\x64" */
>> +	.byte   0x52
>> +	.byte   0x4d
>> +	.byte   0x64
>> +	.word   0                               /* reserved */
> 
> I don't think fastboot is the correct term to use here. The structure in
> head.S is the ARM64 Linux kernel header described in section 4 of this
> document: https://www.kernel.org/doc/Documentation/arm64/booting.txt
> Fastboot is AFAIK a USB protocol spoken by bootloaders used on Android
> devices. Little Kernel can do fastboot, but it doesn't do it to run this
> image.

Good point, in that case I'll just rename it to arm64_header :)

> 
> It is also confusing to have the "add" instruction in there without an
> explanation, especially because having it at offset 4 instead of 0 defeats
> its original purpose (MZ EXE signature for EFI).

My bad, I should have put it the other way around:
add x13, x18, #0x16,
b _start

Will do that for v3 

> 
>> +6) generate qualcomm device tree, use dtbTool to generate it
>> +$ dtbTool -o dt.img arch/arm/dts
>> +
>> +7) generate image with mkbootimg:
>> +$ mkbootimg --kernel=u-boot-dtb.bin --output=u-boot.img --dt=dt.img  --pagesize 2048 --base 0x80000000 --ramdisk=rd --cmdline=""
> 
> I would have liked a bit more text about what is done with the device
> trees here. Little Kernel refuses to run the "kernel" unless it can
> find a device tree matching the hardware it is running on. It adds some
> information to the device tree and passes it to the kernel in the x0
> register. U-Boot discards the contents of the x0 register and uses the
> device tree appended to its image. So there is no need to point dtbTool
> to the same dtb file used by U-Boot. A smaller one containing only the
> IDs checked by Little Kernel would be enough. And dtbTool does not 
> generate a device tree, it generates the Qualcomm device tree table
> containing all dtb files in the directory.

I'll clarify readme, thanks for verbose explanation.
I know (almost) empty dtb is enough (I use it personally), but 
I didn't wanted to pollute dts directory with fake device trees.

> I know the goal is to eventually replace Little Kernel, but how about
> using the device tree passed by it? We could add some code to head.S that
> saves x0 in sp_el0 and abuse CONFIG_OF_HOSTFILE to retrieve it.

I prefer not to (at least for now) - It will not give us significant benefits
(image will be a bit smaller and boot slightly faster, but it's not an issue
as U-Boot replaces huge kernel image) and will just confuse people 
that already are using it. Is it fine with you?


Regards,
Mateusz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBCAAGBQJW5IZ7AAoJELvtohmVtQzBjj0IAJMwf9zutegyq5bmzG5ZYYJW
dcdqRUXXDDV5IocWDxYK1BGALoFocxxqkRaimwT04r+0ZZ4SsLKXnmKkGJcwSE6p
VfWW3aXG437VlVTDwyo8idSRESrFXkjtdrke+4xDQxoFWlCfUifKJJ53NYH2AzYt
lj/ZDvuGikAJPDN27DeITlJVqq1OXcOTXfJbooIMGqTFbt/R8bZb1dIP/wF6GobS
OqivQcMPh12pKped7Ym1kWMWJ01CWiauePjSK4xRJyAvZUjbvzke/8joBcpHDpaw
IGMR5g1RNN6d9flV/W25Ryzrz5XS9M5+ikqucBnSkQD/POnvhHKOkPL9SdMHeYY=
=zhqu
-----END PGP SIGNATURE-----


More information about the U-Boot mailing list