Это энтузиазм Лично я вот рисую карту, по которой сам езжу. Это инвестиция!
В мире много чего не законно и есть рыбы покрупнее. Не стоит этому уделять столько внимания. Главное, что нашелся человек, который способен удовлетворить спрос пользователей, ибо гармин уже плюнул им в лицо(прошивка 2.10 убивает насовсем), слава богу хоть выходящие из строя 1xxx бесплатно меняет.
Пример неуместен. Потому что навител в этом случае не становился лучше или хуже.
Пример уместен т.к. вы приобретаете продукт за меньшие деньги и в обход производителя. Вместо того чтобы переплатить пару сотен Гармину за более дорогое устройство, вы платите двадцатку кулибину, который делает из г… конфетку.
Собственно у Гармина вопросов к пользователям не будет, но со временем они обязательно будут к продавцу мода.
Прижмут его рано или поздно, увы, мне кажется. Хотя дело уберполезное, но такие вещи надо выкладывать анонимно с подробными описаниями и вообще создавать сообщество. Но так профита не получишь.
Тут приобретается не продукт, а ПО для него. Другое бы дело, если бы он торговал гарминами, со своей прошивкой. И навиком зная это вообще никак не реагирует.
С каких пор ПО перестало быть продуктом, тем более когда из этого извлекается прибыль. Не забывайте что это модифицированное ПО от более дорогого Гармина, а не проект с нуля.
В данном случае ПО это часть продукта. Я не говорю что это законно и всё такое. Я говорю про то что человек молодец, что делает из 1xxx конфетку. Лучше заплатить нашему соотечественнику, чем гармину, который наплевал на пользователей и выпустил подобие китайского навигатора.
А каковы шансы через этот EOL грузить родную/пропатченную прошивку? С таким количеством оперативки там наверняка XIP из NOR.
Вообще интересный вариант. Вывод *DOP бы прикрутить.
Цифры только по маркировке микросхем.
Надо разобраться, где в адресном пространстве замаплен интеловский NOR, где SRAM, как сконфигурирован MMU с
виртуальной памятью и что ожидает/думает прошивка о своем местонахождении и нахождении SRAM.
В крайнем случае потеснить basemap, на него вроде как 8MB приходится, но это можно будет легко проверить
слив NOR полностью после старта EOL.
В крайнем случае новую прошивку придется прошить.
Все драйвера вроде как есть: lcd, usb, keypad, nor, 2 RS232 порта (sirf3 и гарминовский коннектор)
нувики и так под линуксом работают, там все гораздо проще.
А вот даже на 60/76Cx (не говоря уже о более примитивных девайсах) нужен моск
Я нашел в архиве стандартные (Европа и Тайвань) и модифицированную русскую прошивки
Надо декодировать конфигурацию MUX и используемые GPIO
(муторное занятие).
2 MB (CS2) → 0x8000000 это до 0x8200000.
loader.bin ссылается на адреса от 0x8002260 до 0x80A0C3C, т.е.
первый мегабайт. Хотя непонятно, куда updater.exe
поместит сам loader.bin (73K)
Начало fw_all.bin похоже по структуре на loader.bin ,
но есть статические ссылки на 0x0c000000 (CS3) сегмент,
а указатель стека уже не вверху первого, а второго мегабайта:
OMAP вообще-то умеет грузиться из CS3 напрямую, но как это все сделано в гармине неясно.
Размер экрана 160x240 (может и наоборот, хотя врядли), но EOL прочитает
это из конфигурационных регистров LCDC.
LCD панель на 60/76Cx 8-битная (?), EOL предполагает только 16бит, надо править.
Вот пока такие мысли.
Я разобрал мой 76Cx, чтобы освежить данные о железе.
Процессор OMAP D751623BZHK, такой же как http://img501.imageshack.us/img501/3282/dsc00159lw5.jpg
вроде бы 300MHz: http://forums.gpsreview.net/viewtopic.php?t=6842
и 16 МВ intel NOR flash (28F128) и 2MB SRAM (K6F1616R6C).
Получается, что и на всех nüvi до 8xx
стоит тот же самый процессор, но насколько он совпадает с OMAP1623, как пишут здесь http://www.eetasia.com/ART_8800517624_499488_NP_4ed1e6ad.HTM
непонятно.
В любом случае, можно прошить EOL, или даже uboot для omap на место гарминовского firmware и
задампить NOR полностью, а то гарминовские region ID не дают ясного представления, что же
по каким физическим адресам записано в NOR flash.
Все .rgn с апдейтами состоят из заголовка, и 2 блоков (0xc и 0xe), согласно статье
0C Loader (nicht auslesbar, wird als Zwischenspeicher für das Flashen der
Firmware gebraucht.)
0E Firmware also Gerätesoftware
т.е. загрузчик (почему-то “нечитаемый”) и собственно payload.
В апдейте basemap только заголовок и 1 блок (0x3)
03 Basis-Karte
Так что все это можно смело перепрошивать.
Программа gunp фонты не находит, наверное сигнатура изменилась на более современных девайсах.
etrex.infо об этом молчит, типа разбирайтесь сами, если надо
Со временем разберемся
OMAP nüvi имеют несколько другую конфигурацию, чем 60/76Cx. У них присутствует SDRAM в обычном для него месте @0x10000000
По моим расчетам 60/76Cx работает на частоте 80MHz (DPLL1_CTL=0x2a50, ARM_CKCTL=0x4006)
Без мануала для OMAP1610 жизнь очень тяжела, так что если у кого завалялся
OMAP1611/12 Multimedia Processor Technical Reference Manual http://bbs.cnttr.com/archiver/tid-121950.html
выложите его куда-нибудь.
В заголовке и loader и firmware наблюдается единая структура состоящая из
jump’a (b 0x10) и трех адресов
+0xc всегда отстоит от +0x8 на 2 байта,
а +0x4 очень смахивает на relocation address для .text сегмента,
но это еще надо изучать.
Мой большой план состоит в модификации uboot для omap1610 innovator
в духе http://linux.omap.com/pub/documentation/osk/omap5912osk_2.6.pdf
и запуск его как loader.
Маленький план - в тестировании минимальной программы
из комплекта EOL, пишущей
в framebuffer sram тоже через запуск как loader.
2байтный alignment для arm32 кода не катит эту фразу вверху беру назад.
Брутально дизассемблировал loader, не PIC оффсеты портят картину, но
есть много новой информации.
Недавно купил nüvi 860T (ужо с линуксом), и стал разбираться в его
внутренностях, благо есть исходники для загрузчика и ядра.
Сильно портят жизнь цифровые подписи на все и вся, отсутствие у root пароля
в /etc/passwd, / readonly, короче грмн очень сильно постарался, чтобы не дать
ничего перепрошить. У кого есть мысли по поводу эксплоитов для linux-arm ядра 2.6.17,
давайте сюда, то что я нашел - не работает
Самое интересное конечно это сама гарминовская навигационная программа “gnav”:
она написана на c++, использует GTK, и, в ней есть ВСЕ символы вроде
gnav::find_wizard::get_rgn(MDB_gmap_id_type*, int)
(кто-то добрый оставил -g). Прямо хоть подключай дебаггер, и ставь breakpoints на имена функций.
Я собрал много полезной информации о железе, но ее надо куда-нибудь в wiki.
Вот малый кусочек:
mmc0:
---
mmcblk0 -> mbr(512)
mmcblk0p1 -> hw manager, uImage
mmcblk0p2 -> extended_partition (512*5121)+root.ext3(512*388095)
mmcblk0p3 -> (62960rw) /home home.ext3 (root,unpriv)
mmcblk0p4 -> (3656600rw) /mnt/vfat, internal iNAND
mmcblk0p5 -> () splash BMP
mmcblk0p6 -> (188880ro) / root.ext3 (4G)
w1:
---
32-0000002f3301 Dallas/Maxim DS2780 standalone Fuel Gauge IC
34-000000259844 Dallas/Maxim DS2703 authentication IC.
i2c:
---
0-001a WM8753 sound codec
0-005c tvp5150 video decoder
0-0063 Si4711 FM/RDS radio
uart:
---
1 FF aka /dev/ttyS0 -> ANT
2 BT aka /dev/ttyS1 -> Bluetooth Parrot CK5000
3 ST aka /dev/ttyS2 -> TMC ( + blob console ?)
ext_uart_a/b aka /dev/ttySE0, /dev/ttySE1 serial Exar XR16M2551IL32-F -> GPS MTK3318
usb:
utmi SMSC 3280
$ cat /proc/cpuinfo
Processor : XScale3-Monahans L rev 1 (v5l)
BogoMIPS : 411.64
Features : swp half thumb fastmult edsp
CPU implementer : 0x69
CPU architecture: 5TE
CPU variant : 0x0
CPU part : 0x688
CPU revision : 1
Cache type : undefined 5
Cache clean : undefined 5
Cache lockdown : undefined 5
Cache format : Harvard
I size : 32768
I assoc : 4
I line length : 32
I sets : 256
D size : 32768
D assoc : 4
D line length : 32
D sets : 256
Hardware : Garmin Daisy
Revision : 0000
Serial : 0000000000000000
$ cat /proc/interrupts
CPU0
3: 0 ohci_hcd:usb1
4: 1 Power Switch
8: 157100 serial
13: 0 SSP
17: 3 LCD
18: 3444 pxa2xx-i2c
20: 227770 STUART
22: 553 FFUART
23: 27079 mhn-mci
25: 15386 DMA
26: 5553566 PXA Timer Tick
30: 0 RTC 1Hz
31: 0 RTC Alrm
33: 0 PXA Camera
39: 0 GCU
41: 55 mhn-mci
44: 279897 pxa owr
46: 2324 mhn_u2d
51: 2 Rcomp Calibration
66: 0 MMC card detect
74: 1 USB vbus detect-bl, U2D vbus detect, USB Power Level
133: 0 Ext pwr detect-bl, Ext Power Level
140: 6 microphone
141: 0 headphone
157: 28542 tsc2200 dav
162: 0 VIB Reverse
Err: 0
$ cat /proc/iomem
00000000-0000000f : serial
34000000-3400000f : serial
40301680-403016a3 : pxa2xx-i2c.0
40500000-40500fff : pxa2xx-ac97
40600000-4060ffff : pxa2xx-udc
41100000-41100fff : mhn-mci.0
41100000-41100fff : mhn-mci
41a00000-41a0002b : SSP
41b00000-41b00010 : 1-wire-mp.0
42000000-42000fff : mhn-mci.1
42000000-42000fff : mhn-mci
44000000-4400ffff : pxa2xx-fb
4c000000-4c000fff : pxa-ohci
4c000000-4c000fff : ohci_hcd
54000000-540fffff : m2d
54100000-5410ffff : mhn-u2d
5c000000-5c03ffff : Video RAM
80000000-83ffffff : System RAM
8001b000-80249423 : Kernel text
8024a000-80280d67 : Kernel data
c0000000-c3ffffff : System RAM