GRiSP 2 Support

CircleCIHex version

This might be the base Nerves System configuration for the GRiSP 2.

This is a work in progress. It may change in backwards incompatible ways and the documentation might be lacking.

To do:

GRiSP 2 image

Feature Description
CPU NXP iMX6ULL, ARM Cortex-A7 @ 696 MHz
Memory 512 MB DRAM
Storage 4 GB eMMC and optional MicroSD
Linux kernel 5.15 w/ Phytec patches
IEx terminal ttymxc0
GPIO, I2C, SPI Yes - Elixir Circuits
LEDs Yes - named red:indicator-1, etc. in sys/class/leds
ADC -
PWM -
UART ttymxc0-ttymxc5
Camera None
Ethernet Yes
WiFi Yes - 2.4GHz station mode (no Soft-AP) (R8188EU)
HW Watchdog i.MX6 watchdog enabled on boot

Using

The most common way of using this Nerves System is create a project with mix nerves.new and to export MIX_TARGET=grisp2. See the Getting started guide for more information.

If you need custom modifications to this system for your device, clone this repository and update as described in Making custom systems

Boot notes

This system isn’t ready for general use. If you know how to build a Nerves system, then it will probably be a little frustrating, but you’ll get something to boot.

  1. Build the system

  2. Create a test Nerves project or try circuits_quickstart to use it.

  3. Build the project with mix firmware. Then run mix firmware.image to get an image file.

  4. gzip the image file and copy to a FAT-formatted MicroSD card.

  5. Connect the GRiSP2’s USB port to your computer and open up a terminal session (115200 8N1).

  6. Boot the GRiSP2 and press a key to break into the bootloader.

  7. Run:

     uncompress /mnt/mmc/myfirmware.img.gz /dev/mmc1
     reset
  8. Now you should be able to use mix upload or ./upload.sh for subsequent updates. The firmware is set to auto-validate.

Console access

GRISP2 will create two virtual UART ports when plugged in. The second of these will contain a system console where you can interact with BareBox and the Elixir Shell. On Linux, this looks like:

/dev/ttyUSB0
/dev/ttyUSB1

You can connect via picocom with:

picocom /dev/ttyUSB1 115200

NOTE: This differs from the Official GRISP2 guide in that we don’t need the --echo flag.

PMOD usage

The GRiSP 2 has five PMOD interfaces. GPIO pins should all be accessible. Pins for other functions are configured for those functions:

Provisioning devices

TODO: The GRiSP 2 includes an ATECC608A so provisioning the board for use with NervesHub can be done without setting U-Boot environment variables.

Linux versions

TBD

We’re currently using PHYTEC’s Linux kernel fork from git.phytec.de/linux-mainline.