Jetson Sensor Processing Engine (SPE) Developer Guide

r32.2 Release

GPIO Application (app/gpio-app.c)

Table of Contents

GPIO application demonstrates how to access/manipulate Always On (AON) GPIOs from the SPE/AON processor. Make sure that the kernel/bootloader is not accessing these GPIOs (Usually, this can be done by modifying the device tree file) and no external module is connected to the Jetson expansion header. Compilation of this demo app can be controlled by ENABLE_GPIO_APP flag in the soc/*/ target_specific.mk file.

Jetson TX2

In order to access a AON GPIO from the Cortex-R5 SPE/AON; the GPIO SCR and Pinmux settings need to be updated to enable access to it as described in below steps.

  1. Update SCR values as below in the file mobile_scr.cfg:
     scr.1549.2 = 0x1C001010; # GPIO_Z_SCR_00_0
     scr.1550.2 = 0x1C001010; # GPIO_Z_SCR_01_0
    
  2. Program the PADCTL register for the gpio pins as below in the file tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg:
      pinmux.0x0c303008 = 0x00000004; # can1_dout_pz0
      pinmux.0x0c303010 = 0x00000058; # can1_din_pz1
    
  3. Flash the entire board to ensure that the SCR and pinmux settings are flashed on the board.
  4. Short GPIO pins of the 30 pin header J26 pin 17 and pin 15, this should print out "GPIO input irq triggered" message since pin 17 is configured as OUT which drives the pin 15 which is configured as INPUT and also has interrupt enabled.

Jetson AGX

In order to access a AON GPIO from the Cortex-R5 SPE/AON for Jetson AGX; the GPIO SCR, GPIO interrupt map and pinmux settings need to be updated as described in below steps.

  1. Update SCR values as below in the file tegra194-mb1-bct-scr-cbb-mini.cfg:
      scr.41.6 = 0x18001010; # GPIO_BB_SCR_00_0
      scr.42.6 = 0x18001010; # GPIO_BB_SCR_01_0
    
  2. Update gpio interrupt mapping as below in tegra194-mb1-bct-gpioint-p2888-0000-p2822-0000.cfg:
      gpio-intmap.port.BB.pin.0 = 2; # GPIO BB0 to INT2
      gpio-intmap.port.BB.pin.1 = 2; # GPIO BB1 to INT2
    
  3. Update default pinmux configuration as below in the file tegra19x-mb1-pinmux-p2888-0000-a04-p2822-0000-b01.cfg:
      pinmux.0x0c2f1800 = 0x00000003; # CONFIG BB0 output
      pinmux.0x0c303040 = 0x0000c004; # can1_stb_pbb0
      pinmux.0x0c303048 = 0x0000c044; # can1_en_pbb1
    
  4. Compile device tree and flash the entire board to ensure that the SCR, gpio interrupt mapping and pinmux settings are flashed on the board.
  5. Short GPIO pins of the 40 pin header J30 pin 16 and pin 32, this should print out "GPIO input irq triggered" message since pin 16 is configured as OUT which drives the pin 32 which is configured as INPUT and also has interrupt enabled.