wiki:v2x

Version 14 (modified by Ryan Erbstoesser, 14 months ago) ( diff )

add uart information

V2X - Vehicle to Anything

V2X is a technology to allow a vehicle to communicate with other items. This uses a special RF Radio.

More details are provided in the Gateworks V2X Guide

Venice GW72xx & GW73xx V2X

The Gateworks Venice GW72xx & GW73xx Single Board Computer (SBC) can be used to host the Unex V2X Radio. The SOM-301x radio requires 5V, 3.3V and USB 2.0. The 3.3V and USB 2.0 are provided by default but the 5V is not. A UART is also required for development.

To enable 5V access on the J10 Mini-PCIe slot, the following resistors need to be loaded at the Gateworks factory before ordering. Note that a 100 piece minimum order is required for special configurations.

GW72xx:

  • Load R152, R153, R144, R145 for 5V (use 02240128 which is a 0402 0-Ohm resistor)
    • This enables 5V on pins 3, 5, 45, 47

The below resistors are for the UART and are by default unloaded on the GW72xx to avoid any conflicts:

  • R164, R165 for UART3 (use 02240128) (Pins 17 & 19)

GW73xx:

  • Load R5, R6, R102, R101 for 5V (use 02240128 which is a 0402 0-Ohm resistor)
    • This enables 5V on pins 3, 5, 45, 47

The below resistors are for the UART and are by default unloaded on the GW73xx to avoid any conflicts:

  • R104, R103 for UART3 (use 02240128) *Note UART3 is also used for the onboard WiFi/BLE and will conflict

An example schematic snippet is shown below.

GPS PPS Signal

The GPS PPS Signal uses pin 49.

SOM-301x Datasheet / Manual

UART Information for GW73xx

The UART3 (/dev/ttymxc2) on J10 on a GW73xx board is shared with the onboard Bluetooth module.

This is defined in the device tree here: https://github.com/Gateworks/linux-venice/blob/v5.15.15-venice/arch/arm64/boot/dts/freescale/imx8mm-venice-gw73xx.dtsi#L218

/* bluetooth HCI */
&uart3 {
     pinctrl-names = "default";
     pinctrl-0 = <&pinctrl_uart3>, <&pinctrl_bten>;
     cts-gpios = <&gpio5 8 GPIO_ACTIVE_LOW>;
     rts-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
     status = "okay";

     bluetooth {
            compatible = "brcm,bcm4330-bt";
            shutdown-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
     };
};

To understand this better, think of how it works: UART devices don't have any sort of magic device 'auto-detection' like enumerated busses such as PCI and USB do (which have a bus infrastructure to provide things like a class, manufacturer, and device ID). Therefore device-tree must be used to explain to the OS what is there and map it to a driver. This is what the 'compatible = "brcm,bcm4330-bt"' string does; there is a driver that matches that compatible string.

It is possible to not see a /dev/ttymxc2 corresponding to schematic UART3 (NXP references hardware blocks as 1 based, Linux references them as 0 based) is indeed because the bluetooth HCI driver (hci_bcm) claims the UART such that Linux removes access from it to not conflict with it. The 'hci_bcm' driver won't fail to recognize the UART (ie if on a GW7300 which doesn't load that part) and remove it's claim on the device. Gateworks will not typically try to do things like removing that dynamically in the boot firmware via a dt fixup based on the model (because mapping model strings to what parts are loaded is a really bad idea).

To remedy this, one can either comment out the 'bluetooth' node in the device-tree if using a custom kernel/dt or use a 'fix_fdt' script.

  • In Linux find the device path
    # find /proc/device-tree/ -name "bluetooth"
    /proc/device-tree/soc@0/bus@30800000/spba-bus@30800000/serial@30880000/bluetooth
    

If the V2X support requires a kernel driver then it will need a device-tree binding of its own in which case one can use a dt overlay or customize the device tree.

Attachments (3)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.