Audi MMI3G(P) HW41
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.