Почему ARM?

На самом деле этот пост должен был быть перед постом про «Наибольший общий делитель«. Так вот, почему меня заинтересовал именно ARM?

Несколько месяцев назад купил я на eBay супер-убийцу iPhone :) … SciPhone I9+++. Выглядит оно как iPhone, корпус пластиковый, сенсорный экран довольно тормозной. Это чудовище оказалось абсолютно неюзабельной вещью, из-за страшно неудобного оформления RTOS, которая там используется. RTOS Nucleus+. То ли у меня руки кривые, что я не могу им пользоваться, то ли сама система жутко недружелюбная. Китайская поДелка, одним словом.

Появилась некая слабая цель на горизонте — использовать телефон в качестве тестовой платформы для изучения программирования под ARM =). Цель довольно смутная, ибо я не представляю как и там и что (относительно конечно же).

В телефоне используется процессор MT6225 GSM/GPRS Baseband, максимальная частота 104Мгц. Основан он на базе 32-битных процессоров ARM7EJ-S RISC (ARMv5TEJ).
Расшифровав все эти непонятные буковки в названии процессора, узнал, что
T — Thumb mode
E — Enhanced DSP instructions
J — Jazelle DBX (исполнение Java-байткода самим процессором)

Скачав даташит по процессору, можно выудить кучу полезной информации, например, после инициализации процессор начинает исполнять код находящийся по адресу 0x48000000, работу с сим-картами, DMA-каналами, NAND-памятью, системе прерываний IRQ, FIQ и т.д..

Спаяв простенький COM-шнурок на микросхеме ST232BN вытащил из телефона дамп на 16Мб. Вот тут и случился затык. Вытаскивал дамп я программкой Spider Man. Отследил данные проходящие через COM-порт во время считывания / записи дампа, и нифига не понял :)

  • + Сначала ожидаем момент включения телефона и отсылаем ему код управления.
  • + Получаем ответ (как определить, что это ответ? неясно)
  • ! Начинается инициализация (отсылаются какие-то байты, получаются какие-то байты)
  • ! Начинаем грузить / проверять (?) загрузчик частями по 100 байт

что именно тут происходит, куда грузится загрузчик / где проверяется, в какой точке дампа начинается исполнение кода.. для меня темный лес.

Как именно записывать и считывать дамп в телефон самому я не разобрался. Исходников никаких нет. Для обработки дампов от, так называемых, «КИТов» существуют несколько программ, но все они платные, так же как «паучок».

P.S.
RISC-овый процессор может выполнить конструкцию:

a += (j << 2);

за один цикл :)

ADD Ra, Ra, Rj, LSL #2
Запись опубликована в рубрике Новости с метками , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий