Приветствую, коллеги. Те, кто хоть раз игрался с osmocom-телефонами, знают, что стандартно прошивка загружается в RAM и пропадает после перезагрузки/выключения. Прошивка в основную память или "Flashing" позволяет использовать программу и после перезагрузки/выключения, что очень удобно для работы с программами, не использующими компьютер (наример RSSI или EMI). Мало того, можно прошить сразу несколько программ и переключаться между ними без последующих действий на компьютере.
Если же вы не понимаете, о чём идёт речь, то советую прочитать прошлую часть.
Однако не смотря на все плюсы, при прошивке всегда что-то может пойти не так, и телефон превратится втыкву кирпич (один по невнемательности я уже окирпичил). Если вы собираетесь делать с ним ещё что-либо, то советую хорошо подумать, прежде чем бежать делать перепрошивку.
Все действия будут проводиться на motorola c118. Для телефонов на базе calypso e88 (MotorolaC123/C121/C118) и calypso e87 (MotorolaC115/C117) всё делается одинаково.
Телефон прошивается в три этапа:
Подготовка
Скачаем osmocom-menu с официального git-репозитория:
идём в файл
компилируем командой
Установка
Перед прошивкой проверьте надёжность вашего кабеля и зарядите телефон.
Выключаем телефон, подключаемся к компьютеру через usb-ttl
Коротко жмём на кнопку включения, начнётся загрузка Compal loader-а в RAM телефона.
Прошиваем загрузчик + osmocom-menu
Память на телефоне разбита на "страницы" по 64 килобайта примерно так:
Что бы проверить, что прошивка флеш-памяти проходит нормально, мы загрузим Compal и OSMOCOM Menu в неправильную локацию памяти. Если прошивка не удастся из-за какой-либо ошибки, то на телефоне всё ещё останется оригинальный Compal loader, и motorola не превратится в кирпич.
Затираем страницу 0x010000 и прошиваем только что сохранённый compal_loader.bin и OSMOCOM menu:
Если в выводе нету ошибок, то можно приступать к прошивке загрузчика на нужное место 0x000000
меню прошивется на ту же страницу флеш-памяти, что и загрузчик, но с отступом в 8192 байт (0x002000) вперёд.
Подготавливаем приложение
OSMOCOM menu ищет приложения по заголовкам, который делается так:
В этом случае я сделал заголовок для RSSI, теперь надо добавить к нему само приложение
Прошивка приложения возможна только в том случае, если количество байт в файле temp чётное. Если это не так, то нужо добавить ещё один байт в конец.
Теперь приложение готово для прошивки во флеш-память.
Прошиваем приложение
Нужно определить, сколько места требуется приложению. В случае с RSSI оно занимает пространство между 64 и 128 килобайт, следовательно ему нужно 2 страницы флеш-памяти для прошивки.
Приложение прошилось на первую и вторую страницу. В случае прошивки второго приложения, ему нужно будет выделять место на третей странице или выше, что бы оно не задело предыдущее.
Для примера: для приложения EMI так же нужно 2 страницы флеш-памяти:
Тестируем
Выключаем телефон, отключаем от компьютера и зажимаем на 1.5 - 2 секунды. Появится картинка загрузчика, затем на экран будет выведено меню с выбором приложений. Не стоит зажимать кнопку слишком долго при включении, в таком случае (во всяком случае у меня) телефон выключается после отжатия кнопки.
На этом всё. Желаю удачи и не окирпичить телефон.
Если же вы не понимаете, о чём идёт речь, то советую прочитать прошлую часть.
Однако не смотря на все плюсы, при прошивке всегда что-то может пойти не так, и телефон превратится в
Все действия будут проводиться на motorola c118. Для телефонов на базе calypso e88 (MotorolaC123/C121/C118) и calypso e87 (MotorolaC115/C117) всё делается одинаково.
Телефон прошивается в три этапа:
- загрузчик (Compal loader)
- OSMOCOM menu (загружает приложения из flash в ram)
- приложение
Подготовка
Скачаем osmocom-menu с официального git-репозитория:
Код:
git clone git://git.osmocom.org/osmocom-bb -b jolly/menu osmocombb-menu
cd osmocombb-menu
src/target/firmware/Makefile
и раскомментируем две строки:
Код:
CFLAGS += -DCONFIG_FLASH_WRITE
CFLAGS += -DCONFIG_FLASH_WRITE_LOADER
make
Установка
Перед прошивкой проверьте надёжность вашего кабеля и зарядите телефон.
Выключаем телефон, подключаемся к компьютеру через usb-ttl
Код:
cd src
host/osmocon/osmocon -p /dev/ttyUSB0 -m c123xor target/firmware/board/compal_e88/loader.compalram.bin
Код:
Received PROMPT1 from phone, responding with CMD
read_file(target/firmware/board/compal_e88/loader.compalram.bin): file_size=28044, hdr_len=4, dnload_len=28051
Received PROMPT2 from phone, starting download
handle_write(): 4096 bytes (4096/28051)
handle_write(): 4096 bytes (8192/28051)
handle_write(): 4096 bytes (12288/28051)
handle_write(): 4096 bytes (16384/28051)
handle_write(): 4096 bytes (20480/28051)
handle_write(): 4096 bytes (24576/28051)
handle_write(): 3475 bytes (28051/28051)
handle_write(): finished
Received DOWNLOAD ACK from phone, your code is running now!
Received DOWNLOAD ACK from phone, your code is running now!
battery_compal_e88_init: starting up
OsmocomBB Loader (revision osmocon_v0.0.0-1748-g46188c72)
======================================================================
Running on compal_e88 in environment compalram
Прошиваем загрузчик + osmocom-menu
Память на телефоне разбита на "страницы" по 64 килобайта примерно так:
- 0x000000-0x00ffff: Flash page 0
- 0x010000-0x01ffff: Flash page 1
- 0x020000-0x02ffff: Flash page 2
- ... more Flash pages ...
- 0x800000-0x83ffff: Ram
- 0x000000-0x001fff: Compal loader
- 0x002000-0x00ffff: OSMOCOM menu
- 0x010000-........: OSMOCOM application and storage
Код:
cd src
host/osmocon/osmoload memdump 0x000000 0x2000 compal_loader.bin
Что бы проверить, что прошивка флеш-памяти проходит нормально, мы загрузим Compal и OSMOCOM Menu в неправильную локацию памяти. Если прошивка не удастся из-за какой-либо ошибки, то на телефоне всё ещё останется оригинальный Compal loader, и motorola не превратится в кирпич.
Затираем страницу 0x010000 и прошиваем только что сохранённый compal_loader.bin и OSMOCOM menu:
Код:
host/osmocon/osmoload funlock 0x010000 0x10000
host/osmocon/osmoload ferase 0x010000 0x10000
host/osmocon/osmoload fprogram 0 0x010000 compal_loader.bin
host/osmocon/osmoload fprogram 0 0x012000 target/firmware/board/compal_e88/menu.e88loader.bin
Код:
host/osmocon/osmoload funlock 0x000000 0x10000 # разблокировка первой страницы
host/osmocon/osmoload ferase 0x000000 0x10000 # очистка
host/osmocon/osmoload fprogram 0 0x000000 compal_loader.bin # прошивка загрузчика на место 0x000000
host/osmocon/osmoload fprogram 0 0x002000 target/firmware/board/compal_e88/menu.e88loader.bin # прошивка меню
Подготавливаем приложение
OSMOCOM menu ищет приложения по заголовкам, который делается так:
echo "highram:RSSI" >temp
В этом случае я сделал заголовок для RSSI, теперь надо добавить к нему само приложение
cat target/firmware/board/compal_e88/rssi.highram.bin >>temp
Прошивка приложения возможна только в том случае, если количество байт в файле temp чётное. Если это не так, то нужо добавить ещё один байт в конец.
Теперь приложение готово для прошивки во флеш-память.
Прошиваем приложение
Нужно определить, сколько места требуется приложению. В случае с RSSI оно занимает пространство между 64 и 128 килобайт, следовательно ему нужно 2 страницы флеш-памяти для прошивки.
Код:
host/osmocon/osmoload funlock 0x010000 0x20000 # Разблокируем первую и вторую страницы
host/osmocon/osmoload ferase 0x010000 0x20000 # Очищаем
host/osmocon/osmoload fprogram 0 0x010000 temp # Прошиваем в начало первой страницы (0x010000)
Приложение прошилось на первую и вторую страницу. В случае прошивки второго приложения, ему нужно будет выделять место на третей странице или выше, что бы оно не задело предыдущее.
Для примера: для приложения EMI так же нужно 2 страницы флеш-памяти:
Код:
host/osmocon/osmoload funlock 0x030000 0x40000 # Разблокируем первую и вторую страницы
host/osmocon/osmoload ferase 0x030000 0x40000 # Очищаем
host/osmocon/osmoload fprogram 0 0x030000 temp # Прошиваем в начало первой страницы (0x010000)
Тестируем
Выключаем телефон, отключаем от компьютера и зажимаем на 1.5 - 2 секунды. Появится картинка загрузчика, затем на экран будет выведено меню с выбором приложений. Не стоит зажимать кнопку слишком долго при включении, в таком случае (во всяком случае у меня) телефон выключается после отжатия кнопки.
На этом всё. Желаю удачи и не окирпичить телефон.