So, one of the more challenging (I don't want to say very annoying, but it's so) aspects of porting Linux (and U-Boot) to your new board is the recent (>=2.6.25) requirement for a "device tree blob".
DTB is also referred to as a flat device tree, device tree binary, or simply device tree.
At the beginning it was a piece of cake: easy life, everything worked out of the shell. There was an elf-loader, able to understand the entry point, where the ram begins, ends, where it should place things, the load-point. And it was so fab, since the job was done silently.
Then they wanted to improve, because life could be boring without imprecations, so they wanted to introduce the so called "new native image format", mainly used by U-Boot-new-world, still used in embedded.
The first dot uImage (now it's called U-Boot-old-world) didn't add anything, any boot code, any table code. It just wraped a compressed kernel (objcopy -o binary kernel.elf) in the uImage data structure. It was easy, like a piece of cake, and I personally loved it.
But they wanted to "improve", so the next generation started requiring a version of U-Boot that was able to pass a device tree to the kernel at boot, and it was the beginning of the end. Everything is still broken since then.
Porting a new kernel to an old board is a challenge.
[code]
# tftp $load_addr T211-RC2.uImage
# bootm
## Booting image at 00800000 ...
Image Name: experiment#211, kernel-v4.9.16-RC2
Created: 2017-05-08 9:01:17 UTC
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 2262336 Bytes = 2.2 MB
Load Address: 00500000
Entry Point: 005000a4
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Memory
DTB is also referred to as a flat device tree, device tree binary, or simply device tree.
At the beginning it was a piece of cake: easy life, everything worked out of the shell. There was an elf-loader, able to understand the entry point, where the ram begins, ends, where it should place things, the load-point. And it was so fab, since the job was done silently.
Then they wanted to improve, because life could be boring without imprecations, so they wanted to introduce the so called "new native image format", mainly used by U-Boot-new-world, still used in embedded.
The first dot uImage (now it's called U-Boot-old-world) didn't add anything, any boot code, any table code. It just wraped a compressed kernel (objcopy -o binary kernel.elf) in the uImage data structure. It was easy, like a piece of cake, and I personally loved it.
But they wanted to "improve", so the next generation started requiring a version of U-Boot that was able to pass a device tree to the kernel at boot, and it was the beginning of the end. Everything is still broken since then.
Porting a new kernel to an old board is a challenge.
[code]
# tftp $load_addr T211-RC2.uImage
# bootm
## Booting image at 00800000 ...
Image Name: experiment#211, kernel-v4.9.16-RC2
Created: 2017-05-08 9:01:17 UTC
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 2262336 Bytes = 2.2 MB
Load Address: 00500000
Entry Point: 005000a4
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Memory
Head Full of Snow. Lemon Scented You