2006年01月15日

ソースコード

そういえばNV-XYZ777で使われているのはLinuxなのでソースコードを入手できるのでしたね。
ここよりダウンロード出来ます。

とりあえずkernelだけダウンロードしました。

01:46 | コメント (0) | トラックバック

2006年01月14日

HD2領域の解析(2)

以前のエントリー

これら以外にも拡張子がbmpのファイルなどがありますが
Windows Bitmap形式じゃないものがほとんどです。
なぜ一つのシステムの中で混在しているのでしょうか?

などと書いたのですがよく見ると通常のBMP形式のファイルの頭に以下8byte分を追加しているだけです。


0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00

ということでさらに以下ディレクトリのことも判りました。

./MapData/PICT_DFRM/
渋滞情報を表示するテンプレートが入っています
たとえば都内は以下のようなイメージです。
DM13shut.png

./MapData/BIMP_KEN/L/
各都道府県のマークと名称が入ってます。
KKYO_L27.png

./MapData/BIMP_KEN/S/
各都道府県のマークと名称が入ってます。上の小さい版ですね。
KKYO_S16.png

./MapData/BIMP_KEN/I/
各都道府県のマークが入ってます。
KKYO_I012.png

./MapData/LWO_3OBJ/
XYZモーションストリートガイド時に表示する建造物のデータです。
LightWave形式のファイルとBMP形式のテクスチャファイルがあります。

./MapData/
KWIの拡張子のファイルがいっぱい並んでます。
ここをみるとどうやらKIWIと呼ばれる統一規格に則った地図フォーマットのようです。

./MapData/PCL/
ファイルの中身を見ると道路の名前などが書かれているのでベクトルデータでしょう。


ということでHD2領域の大体の構造が判りました。
しかし今のところ弄りたいと思うところは無いのでこのまま使おうと思います。
(LightWaveなんて高いもの買えませんし。)

00:03 | コメント (5) | トラックバック

2005年12月12日

FlashROM内部の解析

HD2パーティション経由でFlashROM内の領域にアクセスしてみました。
今回もファイル一覧を置いておきます。
XYZ777_FlashROM.txt

これらファイルを眺めていると「Hard Hat Linux」という文字が含まれています。
この事から想像するとどうやらNV-XYZ777で使われているOSはMontaVista Linuxのようです。
ここを見るとどうやら間違いなさそうです。

あと/var/tmpにブートログがありました。

カーネルのバージョンは2.4.20。
このあたりは安定性を重視して2.4なのでしょう。

メモリは128Mbyteと思ったより少ないです。

dmesg.logを添付するので詳細は以下を見てください。

memsize: 0x08000000
Memory size: 128MB
CPU revision is: 00005520
FPU revision is: 00035520
Primary instruction cache 32kB, physically tagged, 2-way, linesize 32 bytes.
Primary data cache 32kB 2-way, linesize 32 bytes.
Linux version 2.4.20_n20-sony-mpu210 (xyz@scorpion) (gcc バージョン 3.2.3 (NSC Linux 20030812)) #1 2005年 10月 13日 木曜日 16:21:58 JST
Can't analyze prologue code at 8011ed44
IT8712 Super IO not found
Determined physical RAM map:
 memory: 08000000 @ 00000000 (usable)
On node 0 totalpages: 32768
zone(0): 4096 pages.
zone(1): 28672 pages.
zone(2): 0 pages.
Kernel command line: panic=5 quiet root=/dev/mtdblock9 ip=off console=ttyS0,115200
calculating r4koff... 001e84af(2000047)
CPU frequency 400.01 MHz
Console: colour dummy device 80x25
Calibrating delay loop... 399.76 BogoMIPS
Use CONFIG_INSTANT_ON_LPJ=1998848 for Instant On.
MIPS CPU counter frequency is fixed at 200004758 Hz
Memory: 124892k/131072k available (2964k kernel code, 6180k reserved, 400k data, 108k init, 0k highmem)
Dentry cache hash table entries: 16384 (order: 5, 131072 bytes)
Inode cache hash table entries: 8192 (order: 4, 65536 bytes)
Mount-cache hash table entries: 2048 (order: 2, 16384 bytes)
Buffer-cache hash table entries: 8192 (order: 3, 32768 bytes)
Page-cache hash table entries: 32768 (order: 5, 131072 bytes)
Checking for 'wait' instruction...  available.
POSIX conformance testing by UNIFIX
pciconf_scan_bus: skip [00:00.0]
pciconf_scan_bus: skip [00:01.0]
pciconf_scan_bus: skip [00:01.1]
pciconf_scan_bus: skip [00:01.2]
pciconf_scan_bus: skip [00:01.4]
pciconf_scan_bus: skip [00:01.5]
pciconf_scan_bus: skip [00:01.6]
pciconf_scan_bus: skip [00:01.7]
pciconf_alloc_tree: skip [00:00.0]
pciconf_alloc_tree: skip [00:01.0]
pciconf_alloc_tree: skip [00:01.1]
pciconf_alloc_tree: skip [00:01.2]
pciconf_alloc_tree: skip [00:01.4]
pciconf_alloc_tree: skip [00:01.5]
pciconf_alloc_tree: skip [00:01.6]
pciconf_alloc_tree: skip [00:01.7]
RL5C4xx: Bridge Configuration: 0301
RL5C4xx: Bridge Configuration: 0301
RL5C4xx: Misc Control: 00a0
RL5C4xx: Misc Control: 00a0
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Disabling the Out Of Memory Killer
Journalled Block Device driver loaded
JFFS2 version 2.1. (C) 2001, 2002 Red Hat, Inc., designed by Axis Communications AB.
SGI XFS 1.2.0 with ACLs, DMAPI, realtime, no debug enabled
Console: switching to colour frame buffer device 40x30
Dummy keyboard driver installed.
pty: 256 Unix98 ptys configured
ttynull: NULL console driver $Revision: 1.2 $
Serial driver version 5.05c (2001-07-08) with MANY_PORTS MULTIPORT SHARE_IRQ SERIAL_PCI enabled
ttyS00 at 0x14011800 (irq = 23) is a 16550A
ttyS05 at 0x14800000 (irq = 20) is a 16550A
ttyS06 at 0x14800008 (irq = 20) is a 16550A
ttyS07 at 0x14800010 (irq = 20) is a 16550A
ttyS08 at 0x14800018 (irq = 20) is a 16550A
ttyS09 at 0x14800020 (irq = 20) is a 16550A
ttyS10 at 0x14800028 (irq = 20) is a 16550A
Generic MIPS RTC Driver v1.0
Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
IT8172G: IDE controller on PCI bus 00 dev 0d
IT8172G: chipset revision 1
IT8172G: not 100% native mode: will probe irqs later
    ide0: BM-DMA at 0x14017800-0x14017807, BIOS settings: hda:DMA, hdb:DMA
hda: HTS541080G9AT00, ATA DISK drive
ide0 at 0x140179f0-0x140179f7,0x14017bf6 on irq 34
blk: queue 80498aa8, I/O limit 4095Mb (mask 0xffffffff)
hda: 156301488 sectors (80026 MB) w/7539KiB Cache, CHS=9729/255/63, UDMA(33)
loop: loaded (max 8 devices)
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
SCSI subsystem driver Revision: 1.00
kmod: failed to exec /sbin/modprobe -s -k scsi_hostadapter, errno = 2
IT8172 audio: version v1.0 time 16:22:57 Oct 13 2005
IT8172 audio: IO at 0x14017000, IRQ 32
PCI: Enabling device 00:01.0 (0000 -> 0001)
PCI: Setting latency timer of device 00:01.0 to 64
IT8172 audio: disabling S/PDIF output
ac97_codec: AC97 Audio codec, id: ヤv102(SigmaTel STAC9766/67)
Creating 1 MTD partitions on "MPU-210 Mask ROM":
0x00000000-0x00800000 : "Mask ROM"
MPU-210 Mask ROM access initialized
NAND device: Manufacture ID: 0x98, Chip ID: 0x75 (Toshiba NAND 32MB 3,3V)
trying to parse SDM table from 'sdm device NAND/SBL 0'
SDM table multiplexing supported
Creating 1 MTD partitions on "sdm device NAND/SBL 0":
0x00010000-0x00014000 : "nblconfig"
Creating 1 MTD partitions on "sdm device NAND/SBL 0":
0x00014000-0x00018000 : "sdh_ro"
Creating 1 MTD partitions on "sdm device NAND/SBL 0":
0x00018000-0x00038000 : "sdh_rwa"
Creating 1 MTD partitions on "sdm device NAND/SBL 0":
0x00038000-0x00058000 : "sdh_rwb"
Creating 1 MTD partitions on "sdm device NAND/SBL 0":
0x00058000-0x00060000 : "tml"
Creating 1 MTD partitions on "sdm device NAND/SBL 0":
0x00060000-0x001dc000 : "Linux"
Creating 1 MTD partitions on "sdm device NAND/SBL 0":
0x001dc000-0x01988000 : "system"
found 7 sdm partition(s)
Linux Kernel Card Services 3.1.22
  options:  [pci] [cardbus]
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
Yenta IRQ list 0ea0, PCI irq41
Socket status: 30000006
usb-ohci-pci.c: USB OHCI at membase 0xba000000, IRQ 35
usb-ohci-pci.c: usb-00:01.3, PCI device 1283:1234
usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 2 ports detected
Initializing USB Mass Storage driver...
usb.c: registered new driver usb-storage
USB Mass Storage support registered.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 1024 buckets, 8Kbytes
TCP: Hash tables configured (established 8192 bind 16384)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (cramfs filesystem) readonly.
Freeing unused kernel memory: 108k freed
hub.c: new USB device 00:01.3-2, assigned address 2
scsi0 : SCSI emulation for USB Mass Storage devices
  Vendor: Sony      Model: NV-XYZ77forMS     Rev: 1.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
sda : READ CAPACITY failed.
sda : status = 1, message = 00, host = 0, driver = 08 
Current sd00:00: sns = 70  2
ASC=3a ASCQ= 0
Raw sense data:0x70 0x00 0x02 0x00 0x00 0x00 0x00 0x0a 0x00 0x00 0x00 0x00 0x3a 0x00 0x00 0x00 0x00 0x00 
sda : block size assumed to be 512 bytes, disk size 1GB.  
Partition check:
 sda: I/O error: dev 08:00, sector 0
 I/O error: dev 08:00, sector 0
 unable to read partition table
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 2
hda: drive_cmd: status=0x51 { DriveReady SeekComplete Error }
hda: drive_cmd: error=0x04 { DriveStatusError }
usb_optbox.c: usb_optbox_init - called.
usb.c: registered new driver usb_optbox
usb_optbox.c: usb_optbox_init - usb_register() success.
usb_optbox.c: USB Car-navi Option Box Driver v0.0.1
 hda: hda1 hda2
kjournald starting.  Commit interval 5 seconds
EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,1), internal journal
EXT3-fs: mounted filesystem with journal data mode.
MSDOS FS: Using codepage 932
MSDOS FS: IO charset euc-jp
maximum file-size change of FAT: 2147483647 => 4294967295

22:36 | コメント (1) | トラックバック

2005年12月10日

HD2領域の解析

PCにインストールしたLinuxよりHD2の領域にアクセスしてみました。
ファイル一覧を置いておきます。
XYZ777_files.lzh

XYZデスクトップからアクセス可能なのは以下ディレクトリのみです。

./contents/photo/
XYZデスクトップにて保存した「写真」が格納されます。
./contents/memo/
XYZデスクトップにて保存した「メモ」が格納されます。
./contents/etc/
XYZデスクトップにて保存した「ファイル」が格納されます。
./contents/web/
XYZデスクトップにて保存した「WEB」のファイルが格納されます。

それ以外のディレクトリで判った部分を抜き出してみました。

./resource/sound/
ボタンを押したとき、画面をタッチしたときの効果音が入っています。
フォーマットは*.wav形式です。

./sound/GUIDE/RG_PHASE_03.wav
「最新の規制情報を利用したルートに切り替えます」という女性の声
./sound/GUIDE/RG_PHASE_03.wav
「最新の時間優先ルートに切り替えます」という女性の声
./sound/GUIDE/RG_PHASE_03.wav
「次の経由地を通らないルートを探します」という女性の声
./sound/GUIDE/RG_PHASE_03.wav
「渋滞ポイントが変わりました」という女性の声
./sound/GUIDE/RG_PHASE_03.wav
「渋滞をさけるルートに切り替えます」という女性の声
./sound/GUIDE/RG_PHASE_03.wav
「新しいルートに切り替えます」という女性の声

./MapData/material/building/
3Dマップ時の建物表面画像です。
フォーマットはWindows Bitmap形式です。

./MapData/material/kakudai/
なんでしょう?拡大地図のテクスチャでしょうか?
フォーマットはWindows Bitmap形式です。

./MapData/material/kiseki/
軌跡マークです。
フォーマットはWindows Bitmap形式です。

./MapData/material/pos/
自車マークです。
見本画像のフォーマットはWindows Bitmap形式です。
マーク自身はLigitWaveObject形式です。
ここには

  • 標準
  • 1BOX
  • スポーツカー
  • セダン

に加えて
  • BMWマーク

が入ってます。

NV-XYZ777の姉妹機にNV-XYZ777LEというミニの純正ナビがあり、その中にミニの自車マークが入っているようです。NV-XYZ777にも入っているかと思ったのですが残念ながら入ってませんでした。

./MapData/material/sky/
3Dマップ時の背景画像です。
フォーマットはWindows Bitmap形式です。

./MapData/material/texture/
地図上のテクスチャ画像です。
フォーマットはWindows Bitmap形式です。

./MapData/MEIBUTU/
各県の名物料理店の一覧です。
テキストファイル形式で入ってます。

これら以外にも拡張子がbmpのファイルなどがありますが
Windows Bitmap形式じゃないものがほとんどです。
なぜ一つのシステムの中で混在しているのでしょうか?

調べて判ったのはHD2の中にはアプリケーションの一部と地図、などの頻繁に書き換えられるデータが入っているだけで、システムのほとんどはFlashROMの方に格納されているようです。

次はFlashROM内の解析に続きます。

00:32 | コメント (0) | トラックバック

2005年12月08日

USB経由のHD2へのアクセス

HDDの交換は出来ましたがHDDの中身を書き換えるたびに分解していては面倒ですし、ケーブルにも負担が掛かります。
そこで何とかUSB経由でHDDへ読み書き出来ないものか模索してみました。

NV-XYZ777はコアユニットを取り外してUSB経由でPCと接続することが出来ます。
NV-XYZ777に入っているHDDは以下二つのパーティションに分かれており、付属ツールにてアクセスが可能です。

  • HD1(fat32)・・・音楽、ビデオ、地図データなど
  • HD2(ext3)・・・写真、メモ、WEB、その他のファイル、システムの一部

HD1に関してはUSBにてPCと接続した段階でドライブとして認識されます。
ただHD2に関しては不明でしたので調べてみました。

HD2にアクセスするツールの実行ファイルの中に以下文字列があったのでPCにFTPサーバーを立ち上げてHD2にアクセスさせているのかなと思い、試してみましたがうまくいきませんでした。

  • 127.0.0.1(ローカルIPアドレス)
  • 5100(ポート?)
  • scorpion(ユーザ)
  • ******(パスワードとおぼしきもの)

面倒ですが、ツールで詳細な動きを見ていると大体判りました。
不思議なことにDeviceIoControlを使ってFTPクライアントの真似事をさせていました。

推測ですが、NV-XYZ777内部にFTPサーバを立ち上げており、そのポート入出力をUSBStrageDriverと直結させているようです。

最初はPC経由でHD2にアクセスするためのツールでも作ろうかと思いましたが、そもそもその方法ではあくまでFTPアクセスなのでアクセス権など限られています。
こりゃ別の手を考えた方が良さそうです。

続く。

20:29 | コメント (0) | トラックバック

2005年12月07日

コアユニットの基盤

こんな感じです。
メモがてら置いておきます。

XYZ777_7.jpg


  • 右上がCFスロット
  • 左上がSDRAMとFLASH
  • 左中央がSONY製のタイミングジェネレータ?
  • 左下のMB90473が富士通製の16bitマイコン(USBとのブリッジ?)
  • 右半分は電源関係
  • 中央のLC4064VはCPLD
  • 左下のMRUP01はPCI-USBコントローラ

で、裏面の方は

XYZ777_8.jpg


  • 左下のMB86295Sが富士通製PCIグラフィックコントローラ
  • 左上のVR5500がNEC製64bitRISCプロセッサ(おそらくメインCPU)
  • 中央のIT8172GがスーパーIOチップ(RISC<->デコーダ間?)
  • 右下のEM8475がSigmaDesigns社製Mpeg4デコーダチップ

02:59 | コメント (0) | トラックバック

2005年12月06日

HDD交換

NV-XYZ777を買いました。

ソニー製のHDD搭載型のカーナビゲーションシステムです。
詳細はリンクをみてもらえれば特徴は判るかと思いますが


  • HDDに入れた音楽、ビデオなどの再生が可能
  • PCと接続して音楽、ビデオなどの転送が可能
  • CF通信カード(PHS,無線LAN)にてWEB、メール通信可能

という私にとって嬉しいメリットがあったので購入に至りました。

で前モデル(NV-XYZ77)にてHDD換装成功の情報を聞いていましたので私もやってみました。

ここに記したものは、私が調査した結果に基づいたものです。
すべてのケースにて完全に動作することを保証するものではありません。
また、どのようなことが起こっても、私は如何なる責任を取ることはできません。
これら作業はすべて自己責任で行ってください。

用意するもの


  • 交換するHDD(私はTravelstar 5K100を使いました)
    e5k100.jpg
  • 3.5inch<−>2.5inchx2変換フラットケーブル
    IDE3525.jpg
  • 精密ドライバ
  • ディスクコピーツール(TrueImage7.0J)

以下コアユニットよりHDDを取り出す手順です。


  1. コアユニットのビニールをはがす
    XYZ777_1.jpg
  2. 裏側の4本のねじをはずす
  3. コアユニットを開ける
    XYZ777_2.jpg
  4. HDDと基板が繋がっているフラットケーブルを外す(メモリースティック側は外す必要なし)
    両サイドのロックを写真から見て手前にスライドしてからケーブルを外してください。
    無理に引っ張ると切れる恐れがあります。
    XYZ777_3.jpg
  5. HDDと基板を固定する1本のネジを外す
    XYZ777_4.jpg
  6. 基板を裏返す
    XYZ777_5.jpg
  7. HDDが見えるのでHDD周囲の4本のネジを外す
  8. コアユニットよりHDDを取り出す
  9. HDDと金具を固定している4本のネジを外す
    XYZ777_6.jpg
  10. IDEコネクタに付いたフラットケーブルを外す

次に「コアユニットに入っていたHDD」のデータを「交換するHDD」に転送します。


  1. 上記2つのHDDがPCにて認識するようにします。
    ここでは以下構成を想定しています。
    IDE0-0(マスター) CD-ROMドライブ
    IDE1-0(マスター) コアユニットのHDD
    IDE1-1(スレーブ) 交換するHDD
    詳細な手順に関しては割愛します。
  2. CD-ROMにTrueImage7.0Jを挿入し起動します。(WindowsXPより起動してもOKかも)
  3. 「DiskClone」を選択します
  4. マニュアル操作モードを選択します
  5. 転送元に「IDE1-0に繋がったHDD」を選択します
  6. 転送先に「IDE1-1に繋がったHDD」を選択します
  7. 転送先に既にパーションが存在する場合は消して良いか聞いてくるので「削除」を選択します
  8. 転送元をどうするか聞いてきますが、「保持」を選択します。
  9. パーティション構成に関して聞いてきますので各自好きな設定にしてください。
    不明な場合は「移行先にあわせる」を選択します
  10. 終了まで待ちます。(80Gで30分程度)

あとは先ほどと逆の手順にて新しいHDDをコアユニットに戻してください。
PCに接続して中身が見えれば成功です。

p.s.
NV-XYZ777のHDDはHD1とHD2の2つのパーティションに分れており、HD1がFAT32、HD2がext3になっています。
つまりLinuxなどがあればHD2の中身を覗くことができ、いろいろいじることが出来ます。
まぁこの辺りは別の機会に。

12:37 | コメント (10) | トラックバック