View Single Post
Old 07-17-2017, 04:15 PM   #24
knc1
Going Viral
knc1 ought to be getting tired of karma fortunes by now.knc1 ought to be getting tired of karma fortunes by now.knc1 ought to be getting tired of karma fortunes by now.knc1 ought to be getting tired of karma fortunes by now.knc1 ought to be getting tired of karma fortunes by now.knc1 ought to be getting tired of karma fortunes by now.knc1 ought to be getting tired of karma fortunes by now.knc1 ought to be getting tired of karma fortunes by now.knc1 ought to be getting tired of karma fortunes by now.knc1 ought to be getting tired of karma fortunes by now.knc1 ought to be getting tired of karma fortunes by now.
 
knc1's Avatar
 
Posts: 17,212
Karma: 18210809
Join Date: Feb 2012
Location: Central Texas
Device: No K1, PW2, KV, KOA
Sorry to go back on-topic ....

For working with Amazon/Lab126 u-boot and kernel binaries requires 'system mode' qemu.
Since everything above the bare metal is emulated, the only thing that matters is having a hardware configuration that qemu can use that is 'close enough' to that of the Kindle.

The e-ink controls include some custom system control calls added to the main stream kernel by Amazon/Lab126.

The only way to test software that requires support for those custom system control calls is by running the actual Amazon/Lab126 kernel under 'qemu-system' mode.

The KT and the PW1 both use an i.MX50 system chip.
The PW2 through Oasis use an i.MX6SL system chip.
From the standpoint of user-land code the i.MX6SL chip will run anything the i.MX50 chip can run.
There are significant differences on the protected mode (supervisor mode) side of the fence.

= = = = =

Now the fun stuff, relevant to QEMU "User Mode" emulation, the Kindle run-time environment history:

KT (i.MX50):

Firmware 5.0.0 (November 3, 2011) ... firmware 5.3.2.1 (February 22, 2013) where all 'incremental update' packages. They did not contain a full system image.
But we do have, in the old repository of 'recovery images', some complete images for both 'main' and 'diag' systems.
If there is a need for such things, other firmware image versions can be recovered and/or made.

(Trivia: The update package names start with an uppercase 'U' with the incremental update packages.)

Firmware 5.3.7 (July 12, 2013) ... firmware 5.3.7.3 (July 20, 2014) are all the new 'full image update' packages.
All contain the 'main' system image and the matching 'main' kernel.
None contain a 'diag' system image or a matching 'diag' kernel.

All firmware versions in the KT series run:
Linux: 2.6.31-rt11-lab126
eGLIBC: 2.12.1, kernel ABI: 2.6.16
and both:
GCC: (Linaro GCC 4.5-2011.05-0) 4.5.4 20110505 (prerelease)
GCC: (Ubuntu/Linaro 4.4.4-14ubuntu1) 4.4.5 20100909 (prerelease)
where in use.

PW1 (i.MX50):

Although the introduction of the PW1 predates the change from incremental to full image updates for the KT, all PW1 updates are system images.
None of them include the 'diag' system image or the 'diag' kernel.

Firmware 5.2.0 (September 21, 2012) .. firmware 5.6.1.1 (June 23, 2015) all provide the same run-time environment as the KT:
Linux: 2.6.31-rt11-lab126
eGLIBC: 2.12.1, Kernel ABI: 2.6.16

PW2 (i.MX6SL):

In addition to the introduction of the newer SoC, a newer build environment was put to work.
Firmware 5.4.2 (December 30, 2013) .. firmware 5.8.9.2 (May 4, 2017) all use the same Linux kernel: 3.0.35-lab126

Firmware 5.4.2 (December 30, 2013) .. firmware 5.6.2.1 (April 15, 2015) all use the previous model's eGLIBC-2.12.1 built to a kernel ABI of 2.6.16

Firmware 5.6.5 (July 31, 2015) and firmware 5.7.4 (April 24, 2016) both use GLIBC-2.19 built to a kernel ABI of 2.6.16 also. Note: GLIBC-2.19 is the merge of GLIBC and eGLIBC and does not provide any symbols newer than GLBC-2.18

Firmware 5.8.9.2 marked a shift to GLIBC-2.20 built to a kernel ABI of 2.6.32

PW3 (i.MX6SL):

Firmware 5.6.1.1 (no date available) .. firmware 5.8.9.2 (May 4, 2017) all run the Linux 3.0.35-lab126 kernel version.

Firmware 5.6.1.1 (no date available) .. firmware 5.8.2.1 (August 29, 2016) all use GLIBC-2.19 built to a kernel ABI of 2.6.16
With the same note about GLIBC-2.19 here as above.

Firmware 5.8.5 (September 1, 2016) .. firmware 5.8.9.0.2 (May 4, 2017) all use GLIBC-2.20 built to a kernel ABI of 2.6.36

= = = = =

Newer model devices should not be using older system components than those shown for the PW3 (although they might use newer).

The discontinuity between system component versions on the i.MX50 and the i.MX6SL based devices is an artifact of two different build systems in use at the same time.

Phooey! That was one of my least interesting weeks.

Last edited by knc1; 07-17-2017 at 04:30 PM.
knc1 is offline   Reply With Quote