Audi MMI3G(P) HW41

From OpenStreetMap Wiki
Jump to navigation Jump to search

CPU

CPU: SH7785 (>= 5th cut, clk mode 20. 4xDDR), 792MHz

Address space

FLASH: 128 MB @0x00000000
RAM  : 128 MB @0x08000000
RAM  : 128 MB @0x40000000
RAM  : 220 MB @0x50000000
NVRAM:  36 MB @0x5dc00000

PCI

vend pdev bus dev func mem_base mem_len    io_base   io_len pci_int irq  Description
10ee 9308 0   0   0    c0000000 08000000                    A       4    Xilinx FPGA
10de 0187 0   1   0    d7000000 01000000                    A       9    Nvidia NV18M [GeForce4 488 Go]
                       d8000000 08000000
1131 1561 0   2   0    d63ff000 00001000                    A       4    Philips USB Host Controller
1131 1561 0   2   1    d63fe000 00001000                    A       4    Philips USB 1.1 Host Controller
1131 1562 0   2   2    d63fd000 00000100                    A       4    Philips USB 2.0 Host Controller
104c 9065 0   4   0    d6400000 00400000                    A       2    Texas Instruments TMS320DM642   http://dm642-pci.sourceforge.net
                       d6800000 00800000
                                           fe3ff000  16

FPGA

PL_MMI3G_FPGA_9308_D1_08492A

Xilinx FPGA is a PCI device with the base address 0xc0000000

+0x00000040                          NVRAM
+0x00001000                          SYSREGS
+0x00001004                          
+0x00001008                          
+0x00001018                          
+0x00001024                          
+0x00001040                          
+0x00002000                         
+0x00010000                       11 SERFPGA1 /dev/serfpga1 Bluetooth
+0x00060000                       12 ATAPI0   master        FUJITSU TEN DVD-ROM DV-04
         40                          ATAPI0   CMD
         70                          ATAPI0   CTL
+0x00070000                          ATAPI0   DMA
+0x00080000                        8 MLB      /dev/mlb/*
+0x000E8000                        6 MICIN    /dev/snd/pcmC1D0c rate=11025
+0x00140000                        7 BT       /dev/snd/pcmC0D3p rate=11025
+0x00160000                        7 SDS      /dev/snd/pcmC0D2p rate=44100
+0x00180000                        7 NAVI     /dev/snd/pcmC0D1p rate=44100
+0x00240000                        7 ENT3     /dev/snd/pcmC0D0p rate=44100
+0x002A0000                        7 TONES1   /dev/snd/pcmC0D5p rate=44100
+0x00300000                        7 NAD      /dev/snd/pcmC0D4p rate=11025
+0x00420000                       13 SD2
       8000                          SD2      DMA 0x8000
+0x00440000                       13 SD1                        clock: 22000000Hz
       8000                          SD1      DMA 0x8000
+0x00460000                          ?
+0x00480000                          I2C1     /dev/i2c1
+0x00500000                       11 SERFPGA2 /dev/serfpga2 GSM
+0x00520000                       11 SERFPGA3 /dev/serfpga3 IPOD
+0x00800000                       12 ATAPI1   slave         TOSHIBA MK4050GAC
         40                          ATAPI1   CMD
         70                          ATAPI1   CTL
+0x00810000                          ATAPI1   DMA

PL_MMI3G_PLUS_FPGA_9411_D1_10281A

TBD

UART configuration

/dev/ser1     SH7785 par=none bits=8 stopb=1 baud=115200  Debug console                        HSEC8-110-01-L-DV-A connector
/dev/ser2     SH7785 par=none bits=8 stopb=1 baud=57600   Antaris4 GPS receiver                vdev-flexgps
/dev/serfpga1 FPGA   par=none bits=8 stopb=1 baud=1843200 Bluetooth port                       ?
/dev/serfpga2 FPGA   par=none bits=8 stopb=1 baud=115200  GSM/GPRS modem Cinterion AC 75       ? 
/dev/serfpga3 FPGA   par=none bits=8 stopb=1 baud=57600   external UART on AMI for IPOD        ?

GPS

Antaris4 receiver from U-BLOX, uses /dev/ser2 :

$GPTXT,01,01,02,ANTARIS ATR062x HW 00040001*2E
$GPTXT,01,01,02,EXT CORE       5.00    Apr 12 2006 12:35:45*64 
$GPTXT,01,01,02,INT EXT0 (RCV) HB 1.01 Apr 12 2006 12:36:12*74
$GPTXT,01,01,02,LIC 45CF-6311-188B-04EA-22C6*2C

The vdev-flexgps checked UBX buffer limit (0x100=256 bytes) is too low for the RXM-RAW message (max size: 8+16*24+6=398bytes). Here is an example of an error message for the 13 visible satellites (0x140=320=8+13*24)

Telegram refused:
vdev-flexgps: FlexGPS_UBX_TelegrammEmpfangen -> $ERR NavLibs liefern inkonsistentes Telegramm mLength = 320 > Arraysize = 256.
QER0000 =    0: B5 62 02 10 40 01 ...
QER0010 =   16: ...

GSM

GSM/GPRS modem Cinterion AC 75] on /dev/serfpga2.

pppd for QNX-SH4 is missing. It should be possible to receive the RTCM messages for RTK or submit the current location and GSM CID/LAC (AT+CREG=2,AT^MONI,AT^MONP,AT^SMONG) over GPRS to a tracking server.

AT+CEER\r
AT+CIND?\r
AT+CREG?\r
AT+CSQ\r
AT^SAD\r
AT^SCTM?\r

IPC

V850 chip with CAN interface, also communicates with MOST.

CH2

Hardware control. /dev/ipc/ch2

CH3

Radio control ? /dev/ipc/ch3

CH4

RDS/TMC receiver. /dev/ipc/ch4

CH5

Dead Reckoning sensors (raw data used by NDR) /dev/ipc/ch5

CH6

Related to CAN. /dev/ipc/ch6

CH7

Related to CAN. /dev/ipc/ch7

CH8

Front panel keys, can be used to control the GPS logger. /dev/ipc/ch8

CH9

Has something to do with MOST. /dev/ipc/ch9

Network

USBtoETH (AMI)

Connected to ISP1562 USB host. (en5)

static IP 172.16.250.248 or DHCP
ax Ethernet Controller
 Physical Node ID ........................... XXXXXX XXXXXX
 Current Physical Node ID ................... XXXXXX XXXXXX
 Current Operation Rate ..................... 10.00 Mb/s full-duplex
 Active Interface Type ...................... MII
   Active PHY address ....................... 3
 Maximum Transmittable data Unit ............ 1514
 Maximum Receivable data Unit ............... 1514

MOST

IP over Fiber (en1). Not used in the generic setup.

ifconfig en1 inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
MLB network driver
 Physical Node ID ........................... 000000 000000
 Current Physical Node ID ................... 000000 000100
 Current Operation Rate ..................... Unknown half-duplex
 Active Interface Type ...................... Fiber
 Maximum Transmittable data Unit ............ 1022
 Maximum Receivable data Unit ............... 1022

NDR

Started with:

-hfs=/etc/hfs.cfg -rev=wheel -e=lvm -e=disChina

To init the raw GPS data output it may be possible to use /dev/ndr/cmd (format unknown), or just push the raw U-blox raw format commands directly to /dev/ser2.

The debug interface may be used for logging raw data in ASCII hexdump form or non debug as binary:

/dev/ndr/id/0x00021000 - /dev/ndr/debug/name/sensor/Gyro/InternalGyro
C9 82 03 00 00 00 A0 89 03 02 00 00
timestamp        |inc  |
/dev/ndr/id/0x00021005 - /dev/ndr/debug/name/sensor/WheelCounter/AllWheels
6B 0A 05 00 03 00 00 00 00 00 00 00 03 00 00 00 03 00 00 00
timestamp      |           |           |           |
/dev/ndr/id/0x00021006 - /dev/ndr/debug/name/sensor/ReverseGear
4D DB 03 00 00 00 00
timestamp        | 0=forward, 1=backward
/dev/ndr/id/0x00021008 - /dev/ndr/debug/name/sensor/Temperature
D8 17 04 00 00 00 32
timestamp        |
/dev/ndr/id/0x00021009 - /dev/ndr/debug/name/sensor/Accelerometer/Internal3Daccelerometer
90 8F 50 00 00 00 DC 96 C2 01 00 00 22 03 00 00 E0 03 00 00
timestamp              |           |           |
/dev/ndr/id/0x0002101d - /dev/ndr/debug/name/sensor/GPS/LowLevel
22 byte header that has 6 bytes timestamp 1 byte length of data packet and then the end of the data packet has 4 bytes padded on the end 
rest TBD
/dev/ndr/debug/name/sensor/GPS/AllGps 
51 5E 02 00 00 00 01 03 60 38 58 02 1B DB 6E FB 8F 03 00 00 00 00 00 00 00 00 E5 07 0B 07 02 33 17 03 10 00 1E 00 19 00 07 00 0C 00 04 00 07 00 00 00 00 00 00 00 00 00
timestamp        |     |latitude   |longitude  |height     |speed      |headi|date /  \  |time    |  |hdop |pdop |vdop |           |hperr|vperr|nortV|eastV|vertV| 
                       |signed     |signed     |signed     |           |    /year/month|day\      |  |     |     |     |           |     |     |sign |sign |sign |    
The timestamp is 6 bytes long is in milliseconds from epoch, little endian, and the unit starts up from epoch every time.
56 bytes in total all little endian and some signed and some unsigned. northV eastV and vertV are northspeed, eastspeed and verticalspeed respectively.