u-boot/board/ste/stemmy
Stephan Gerhold 03585d52fc board: stemmy: Parse atags to get available memory
At the moment the "stemmy" board attempts to detect the RAM size with
a simple memory test (get_ram_size()). Unfortunately, this does not work
correctly for devices with 768 MiB RAM (e.g. Samsung Galaxy Ace 2
(GT-I8160), "codina"). Reading/writing memory after the 768 MiB RAM
succeeds but actually overwrites some earlier parts of the memory.

For U-Boot this does not result in any major problems, but on Linux
this will eventually lead to strange crashes because of the memory
corruption.

Since the "stemmy" U-Boot port is designed to be chainloaded from
the original Samsung bootloader, the most reliable way to get the
available amount of RAM is to look at the ATAGS passed by the Samsung
bootloader. Fortunately, the header used to generate ATAGS in U-Boot
(asm/setup.h) can also be easily used to parse them.

Also clarify and simplify stemmy.h a bit to make it more clear where
some of the magic values in there are actually coming from.

Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
2021-07-14 16:48:11 -04:00
..
Kconfig board: Add new Samsung "stemmy" board based on ST-Ericsson U8500 2020-01-22 17:47:57 -05:00
MAINTAINERS board: Add new Samsung "stemmy" board based on ST-Ericsson U8500 2020-01-22 17:47:57 -05:00
Makefile board: Add new Samsung "stemmy" board based on ST-Ericsson U8500 2020-01-22 17:47:57 -05:00
README board: stemmy: Parse atags to get available memory 2021-07-14 16:48:11 -04:00
stemmy.c board: stemmy: Parse atags to get available memory 2021-07-14 16:48:11 -04:00

ST-Ericsson U8500 Samsung "stemmy" board
========================================

The "stemmy" board supports Samsung smartphones released with
the ST-Ericsson NovaThor U8500 SoC, e.g.

	- Samsung Galaxy S III mini (GT-I8190)	"golden"
	- Samsung Galaxy S Advance (GT-I9070)	"janice"
	- Samsung Galaxy Xcover 2 (GT-S7710)	"skomer"
	- Samsung Galaxy Ace 2 (GT-I8160)	"codina"

and likely others as well (untested).

At the moment, U-Boot is intended to be chain-loaded from
the original Samsung bootloader, not replacing it entirely.

Installation
------------

1. Setup cross compiler, e.g. export CROSS_COMPILE=arm-none-eabi-
2. make stemmy_defconfig
3. make

For newer devices (golden and skomer), the U-Boot binary has to be packed into
an Android boot image. janice boots the raw U-Boot binary from the boot partition.

4. Obtain mkbootimg, e.g. https://android.googlesource.com/platform/system/core/+/refs/tags/android-7.1.2_r37/mkbootimg/mkbootimg
5. mkbootimg \
    --kernel=u-boot.bin \
    --base=0x00000000 \
    --kernel_offset=0x00100000 \
    --ramdisk_offset=0x02000000 \
    --tags_offset=0x00000100 \
    --output=u-boot.img

6. Enter Samsung download mode (press Power + Home + Volume Down)
7. Flash U-Boot image to Android boot partition using Heimdall:
     https://gitlab.com/BenjaminDobell/Heimdall

   heimdall flash --Kernel u-boot.(bin|img)

8. After reboot U-Boot prompt should appear via UART.

UART
----

UART is available through the micro USB port, similar to the Carkit standard.
With a ~619kOhm resistor between ID and GND, 1.8V RX/TX is available at D+/D-.

Make sure to connect the UART cable *before* turning on the phone.