Haret и HTC Quartz (HTC Max 4G)

Все хорошо в замечетальной утилите haret (Handheld Reverse Engineering Tool), кроме того, что она не знает о процессоре ESM7206A. То, что процессор не определен, можно определить по следующему сообщению в окне программы:

Found machine Generic ARM v6

В силу этого становится невозможным пользоваться одной из основных возможностей программы — сканированием активности портов GPIO.   Однако, если вручную внести таблицы  адресов регистров GPIO от процессора MSM7201, являющегося аналогом нашего процессора, сканирование начинает работать, но без расшифровки. Вывод осуществляется примерно в такой форме:

004.360    GPIOS  92e00c20(249)=5109044
004.370    GPIOS  92e00c20(241 242 243 249)=71e9044
004.370    GPIOS  92e00c08(433 434 435)=404cf9
004.375    GPIOS  92e00c20(241 242 243 249)=5109044
004.375    GPIOS  92e00c08(433 434 435)=4e4cf9
004.391    GPIOS  92e00c20(241 242 243 249)=71e9044

Несколько непонятно. Хочется получить расшифровку, поэтому попробуем научить haret узнавать наш процессор.

Если исходных кодов у вас нет, самое время их скачать. Я воспользовался git-репозиторием проекта linuxtogo.org, клонировав его при помощи команды:

git clone git://git.linuxtogo.org/home/groups/haret/haret.git haret-git

Так как процессор ESM7206A установленный в HTC Max 4G, является аналогом процессора MSM7201A, добавляем синоним для нашего процессора в класс MachineMSM7xxxA  в файле src/mach/arch-msm.cpp. Получим:

MachineMSM7xxxA::MachineMSM7xxxA()
{
    name = "Generic MSM7xxxA";
    flushCache = cpuFlushCache_arm6;
    arm6mmu = 1;
    archname = "MSM7xxxA";
    CPUInfo[0] = L"MSM7201A";
    CPUInfo[1] = L"ESM7206A";
}

Как выяснилось, исходные коды не собираются версией cegcc 0.59,  поэтому собираем версией 0.55. После сборки и копирования haret.exe на устройство, запущенная
программа говорит нам:

Found machine Generic MSM7xxxA

Теперь вывод команды «watch GPIOS» выглядит примерно так:

000.000    GPIOS     out0=00000001: out0-0=1
000.000    GPIOS     out1=00000040: out1-6=1
000.000    GPIOS     out2=00064009: out2-0=1 out2-3=1 out2-14=1 out2-17=1 out2-18=1
000.000    GPIOS     out3=00024210: out3-4=1 out3-9=1 out3-14=1 out3-17=1
000.000    GPIOS     out4=00000134: out4-2=1 out4-4=1 out4-5=1 out4-8=1
000.000    GPIOS     out5=00000000:
000.000    GPIOS      in0=00000001: in0-0=1
000.000    GPIOS      in1=07109044: in1-2=1 in1-6=1 in1-12=1 in1-15=1 in1-20=1 in1-24=1 in1-25=1 in1-26=1

Все гораздо понятнее, не правда ли? 😉

  • Ska-b

    так получается можно запустить убунту?

    • Аноним

      можно. вот, например, мануал для blackstone. http://forum.xda-developers.com/showthread.php?t=596567 Насчет практической пользы — сомневаюсь, что оно будет юзабельно. Однако сам не пробовал, поэтому можно считать это оценочным суждением ))