Tegra X1 EL2 freestanding demo
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Makefile
README
boot.lds
cfb_console.c
ctype.c
ctype.h
defs.h
demo.c
fdt.c
fdt.h
fdt_ro.c
fdt_strerror.c
libfdt.h
libfdt_env.h
libfdt_internal.h
start.S
string.c
string.h
video_fb.h
video_font_large.h
vsprintf.c
vsprintf.h

README

64-bit ARM OS/Kernel/Systems Development on an nVidia Shield TV
===============================================================

The Shield TV is based on the 64-bit nVidia X1 chip.

The Shield TV allows performing an unlock via
"fastboot oem unlock", allowing custom OS images
to be booted.

_,.-+^*'_,.-+^*'_,.-+^*'_,.-+^*'_,.-+^*'_,.-+^*'
nVidia...are you listening? Uncripple your
firmware so booting custom images is not a
song-and-dance (you broke it in 1.4!) and at
least TELL us where the UART pads are on the
motherboard. If you're really cool put together
an "official" Ubuntu image that runs on the
TX1 and the Shield (and fix SCR_EL3.HCE, too).
_,.-+^*'_,.-+^*'_,.-+^*'_,.-+^*'_,.-+^*'_,.-+^*'

What this is
=============

This is a small demo, demonstrating how to build
and boot arbitrary code on your Shield TV.

What you need - required
========================

* A Shield TV, unlocked. Search Youtube for walkthroughs.
* OS version >= 1.3.
* GNU Make.
* An AArch64 GNU toolchain.
* ADB/Fastboot tools.
* Bootimg tools (https://github.com/pbatard/bootimg-tools),
  built and somewhere in your path.
* An HDMI-capable screen. Note, HDMI, not
  DVI-HDMI adapter. You want the firmware to
  configure the screen into 1920x1080 mode,
  otherwise you'll be in 640x480 and we
  don't want that...

How to build
============

$ CROSS_COMPILE=aarch64-linux-gnu- make

... should yield 'shieldTV_demo'.

How to boot
===========

* Connect the Shield TV a USB cable to
  your dev workstation.

* $ adb reboot-bootloader

  ...you should now see the nvidia splash screen,
     followed by the boot menu.

* If OS is 1.3, then you can simply:

  $ fastboot boot shieldTV_demo

  If OS is 1.4 or 2.1, you will need to:

  $ fastboot flash recovery shieldTV_demo

    ... and then boot the "recovery kernel" by
        following instructions on the screen.

  The code will now start. You will see text and
  some drawn diagonal lines black background. The
  text should say we're at EL2 and the lines
  should be green. The drawing will be slow -
  the MMU is off and the caches are thus disabled.
  Let me know if it's interesting to see the MMU
  setup code.

Credits
=======

There's borrowed code from U-boot (cfb_console.c),
Linux (vsprintf.c, string.c) and libfdt.

Where to go from here
=====================

- nv-tegra.nvidia.com/gitweb/?p=linux-3.10.git;a=summary
- no idea where the TRM would be, but a lot of the
  peripherals seem to match the K1 (UART...), it's
  a Tegra after all. Use the DTS for the real bases.