motofan logo
       
> 

LIBusb, разработка...

n0wheremany
сообщение 18.4.2008, 10:21 Закрепленное сообщение!


Прогр@ммер
*****

Группа: Почётные мотофаны
Сообщений: 564
Регистрация: 10.9.2005
Пользователь №: 51 111

Рейтинг: 341



Итакс

LIBusb - Это многоплатформенная библиотека (драйвер) для доступа приложений к USB устройствам. библиотека libusb была первоначально разработана для Linux, а позже перенесена на Windows платформы.

Для чего нужна:
Работа с телефоном обходя все ограничения P2Ksys

Скачать 0.1.12.1 for Windows

Дополнительно прилагаю демку MotoVCL для работы как с драйвером P2KSys, Так и USBlib для Windows

Moto VCL Demo - Flash Mode Тестируем скорость работы. Что лучше? Что быстрее?

Добавлено позже (18.4.2008, 13:31):
По поводу ускорения работы (чтение/запись) флэш мода.

ИМХО увеличение возможно лишь с помощью вариаций буферов чтения...

Добавлено позже (18.4.2008, 15:31):
Вот для тестов:

Программа: MotoVCLDemos_FlashMode_Testing // Перезалил на свой сайт

Инструкция:
0. Скачать программу - ссылка выше ))
1. Переключение проги в режим P2Ksys, USBlib
2. Подключение телефона
3. Выбрать телефон в списке
4. OpenPhone
5. Send loader и выставляем свои параметры.
Выбираем лоадер от Вилко для чтения через Dump (только для бута 07D0) // Прикрепил чтобы не искали
Выбираем свой (которые в комплекте с ФБ идёт) для чения через READ (все поддерживаемые)
6. SaveMem (useDump или useRead)
7. Пишем сюда свои время и скорость, которые покажет программа.

Формат записи (Итоги моих тестов):
P2KSys:
useDump: не могу прочитать (особенность телефона)
useRead: 32 мБ - 2 минуты 4 секунды - 270600 Б/с

USBLib:
useDump: не могу прочитать (особенность телефона)
useRead: 32 Мб - 1 мин 32 сек - 342392 Б/с


8. The End.

Сообщение отредактировал n0wheremany - 21.4.2008, 17:08
Прикрепленный файл LdrByVilko.rar   ( 19.6 килобайт ) Кол-во скачиваний: 91
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nicron
сообщение 18.4.2008, 13:08


Мастер
****

Группа: Пользователи
Сообщений: 151
Регистрация: 4.11.2007
Из: Якутск
Пользователь №: 152 811
Модель телефона: тютю
Прошивка: тю

Рейтинг: 35.5



Протестил я всё это дело, у меня оказалось немного больше результаты smile.gif

Удалось слить аж целых 14кб, правдо только со второго раза, первый раз слил 5кб, и по завершении прога пишет то что он слил это всё за 32 секунды, и тел перезапускается.

Log:

I Found Phone Flash Mode count: 1
[I] Открытие устройства ()
[I] Отправка загрузчика (JUMP03FD0010 > ACKJUMP,03FD0010)
[I] Закрытие устройства (DUMP10000400 > OK)
I Found Phone Flash Mode count: 0
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
n0wheremany
сообщение 18.4.2008, 13:27


Прогр@ммер
*****

Группа: Почётные мотофаны
Сообщений: 564
Регистрация: 10.9.2005
Пользователь №: 51 111

Рейтинг: 341



Цитата
DUMP10000400 > OK


Ты слил лишь 1 кБ не больше... Итог №1
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nicron
сообщение 18.4.2008, 14:28


Мастер
****

Группа: Пользователи
Сообщений: 151
Регистрация: 4.11.2007
Из: Якутск
Пользователь №: 152 811
Модель телефона: тютю
Прошивка: тю

Рейтинг: 35.5



Цитата(n0wheremany @ 18.4.2008, 23:27) *

Ты слил лишь 1 кБ не больше... Итог №1


Правдо почему то в свойствах файла пишет: 14,0 КБ (14 336 байт)

Выложи другие лодыри, которые у тебя иммеются, на них поэксперентировать.


А как вам такой лог:

I Found Phone Flash Mode count: 1
[I] Îòêðûòèå óñòðîéñòâà ()
[I] + ADDR (ADDR03FD0000 > ACKADDR,03FD0000AD)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FD2000 > ACKADDR,03FD2000AF)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FD4000 > ACKADDR,03FD4000B1)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FD6000 > ACKADDR,03FD6000B3)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FD8000 > ACKADDR,03FD8000B5)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FDA000 > ACKADDR,03FDA000BE)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FDC000 > ACKADDR,03FDC000C0)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FDE000 > ACKADDR,03FDE000C2)
[I] + BIN (BIN > ACKBIN)
[I] + JUMP (JUMP03FD0010 > ACKJUMP,03FD0010)
[I] Îòïðàâêà çàãðóç÷èêà (JUMP03FD0010 > ACKJUMP,03FD0010)
[I] + DUMP (DUMP10000000 > OK)
[I] + DUMP (DUMP10000400 > OK)
[I] + DUMP (DUMP10000800 > OK)
[I] + DUMP (DUMP10000C00 > OK)
[I] + DUMP (DUMP10001000 > OK)
[I] + DUMP (DUMP10001400 > OK)
[I] Çàêðûòèå óñòðîéñòâà (DUMP10001400 > OK)
I Found Phone Flash Mode count: 0
[E] Óñòðîéñòâî íå îòêðûòî. Îòêðîéòå óñòðîéñòâî è ïîâòîðèòå ïîïûòêó ()
[I] ×òåèå ïàìÿòè ()

Размер: 6кб

Причем каждый раз по разному:


I Found Phone Flash Mode count: 1
[I] Îòêðûòèå óñòðîéñòâà ()
[I] + ADDR (ADDR03FD0000 > ACKADDR,03FD0000AD)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FD2000 > ACKADDR,03FD2000AF)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FD4000 > ACKADDR,03FD4000B1)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FD6000 > ACKADDR,03FD6000B3)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FD8000 > ACKADDR,03FD8000B5)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FDA000 > ACKADDR,03FDA000BE)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FDC000 > ACKADDR,03FDC000C0)
[I] + BIN (BIN > ACKBIN)
[I] + ADDR (ADDR03FDE000 > ACKADDR,03FDE000C2)
[I] + BIN (BIN > ACKBIN)
[I] + JUMP (JUMP03FD0010 > ACKJUMP,03FD0010)
[I] Îòïðàâêà çàãðóç÷èêà (JUMP03FD0010 > ACKJUMP,03FD0010)
[I] + DUMP (DUMP10000000 > OK)
[I] + DUMP (DUMP10000400 > OK)
[I] + DUMP (DUMP10000800 > OK)
[I] + DUMP (DUMP10000C00 > OK)
[I] + DUMP (DUMP10001000 > OK)
[I] + DUMP (DUMP10001400 > OK)
[I] + DUMP (DUMP10001800 > OK)
[I] + DUMP (DUMP10001C00 > OK)
[I] + DUMP (DUMP10002000 > OK)
[I] + DUMP (DUMP10002400 > OK)
[I] + DUMP (DUMP10002800 > OK)
[I] + DUMP (DUMP10002C00 > OK)
[I] + DUMP (DUMP10003000 > OK)
[I] + DUMP (DUMP10003400 > OK)
[I] + DUMP (DUMP10003800 > OK)
[I] + DUMP (DUMP10003C00 > OK)
[I] Çàêðûòèå óñòðîéñòâà (DUMP10003C00 > OK)
I Found Phone Flash Mode count: 0
[E] Óñòðîéñòâî íå îòêðûòî. Îòêðîéòå óñòðîéñòâî è ïîâòîðèòå ïîïûòêó ()
[I] ×òåèå ïàìÿòè ()

Размер: 16кб


Прастите за кодировку винда старая тупит ужасно sad.gif

Сообщение отредактировал Nicron - 18.4.2008, 14:45
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
n0wheremany
сообщение 18.4.2008, 18:57


Прогр@ммер
*****

Группа: Почётные мотофаны
Сообщений: 564
Регистрация: 10.9.2005
Пользователь №: 51 111

Рейтинг: 341



Помимо всего перечисленного посмотри че там в самом файле - если одни 0х00... То всё тот же №1
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 19.4.2008, 5:03


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Однако, тема для владельцев E398 biggrin.gif
Прикладываю исходные тексты одной программы под линукс, работающей с телефоном через Libusb. Попробуйте под винду собрать (нужны заголовочные файлы libusb) и попробовать... подключите телефон во флеш-моде, запустите программу и на приглашение LinRamldr> введите help, она сама всё о себе расскажет smile.gif<br />На какое-то удобство в работе не претендует, но я ей успешно снимал бекап с Motorola C380 и Motorola C350L
DUMP поддерживает только размером 0x100 байт, но это можно исправить (см. функцию cmd_dumpfile)

Файл с первого раза не прикрепился, исправил.

Сообщение отредактировал motoprogger - 19.4.2008, 8:03
Прикрепленный файл linramldr.7z   ( 5.14 килобайт ) Кол-во скачиваний: 86
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
n0wheremany
сообщение 19.4.2008, 7:19


Прогр@ммер
*****

Группа: Почётные мотофаны
Сообщений: 564
Регистрация: 10.9.2005
Пользователь №: 51 111

Рейтинг: 341



Цитата
Однако, тема для владельцев E398


Я имел ввиду те, у которых бут 07.D0.

Если ты прикладываешь, то надо прикладывать biggrin.gif
Думаю, что ты имел ввиду эту прогу в 1 посте которая Маленький шаг по большому пути.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Umka85
сообщение 19.4.2008, 7:26


Гуру
******

Группа: Пользователи
Сообщений: 712
Регистрация: 13.7.2005
Из: Кузнецк
Пользователь №: 46 099
Модель телефона: Е398, L9, Z6, V6
Прошивка: разные
Победитель конкурса 2008

Рейтинг: 283



А что с поддержкой других платформ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 19.4.2008, 8:00


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(n0wheremany @ Сегодня, 13:19)

Я имел ввиду те, у которых бут 07.D0.
*


Почему именно он? Он поддерживает READ?
Цитата(n0wheremany @ Сегодня, 13:19)

Если ты прикладываешь, то надо прикладывать
*


Исправил biggrin.gif
Цитата(n0wheremany @ Сегодня, 13:19)

Думаю, что ты имел ввиду эту прогу в 1 посте которая Маленький шаг по большому пути.
*


Нет, вот на ней как раз у меня DUMP читал только первый блок. Я это исправил, а потом существенно расширил эту программу и добавил встроенную справку. Есть планы по её дальнейшему развитию.

Добавлено позже (19.4.2008, 14:02):
Цитата(Umka85 @ Сегодня, 13:26)

А что с поддержкой других платформ?
*


В смысле платформ, на которых программа будет работать? Мой исходник, по идее, должен компилиться подо что угодно, где есть терминал (консоль), файловая система и libusb. MotoVCL - только в Delphi.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
n0wheremany
сообщение 19.4.2008, 8:08


Прогр@ммер
*****

Группа: Почётные мотофаны
Сообщений: 564
Регистрация: 10.9.2005
Пользователь №: 51 111

Рейтинг: 341



Цитата
А что с поддержкой других платформ?


У меня есть хедеры для Делфи и для Си. Пока тестируем, потом выложу...

Цитата
Почему именно он? Он поддерживает READ?


Да не поддерживает. У него есть Dump, Read загрузчики у каждого есть.

Цитата
Нет, вот на ней как раз у меня DUMP читал только первый блок.


Во щас и посмотрим.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 19.4.2008, 15:17


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(n0wheremany @ Сегодня, 14:08)

Да не поддерживает. У него есть Dump,
*


Бут???
Цитата(n0wheremany @ Сегодня, 14:08)

Во щас и посмотрим.
*


Вроде при втором вызове usb_bulk_read из DUMP возвращала какую-то ошибку, я по её текстовому описанию понял, что нужно тупо повторить чтение )
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 20.4.2008, 7:37


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(n0wheremany @ Сегодня, 0:46)

Искал на основном сайте - тама нету... Ссылку дай на ошибки.
*


Не искал, извини. Так что сам не знаю. Я у Libusb запросил значение ошибки функцией usb_strerror(). Код ошибки - -110. Смотри у меня u_read_lim().
Загрузчик попытаюсь приложить smile.gif правда, он только для LTE 16MB моделей.

Ну как всегда.

Добавлено позже (20.4.2008, 13:43):
Вспомнил, я этот лоадер из F&B 3.0.4 взял, думаю, в других версиях тот же. Посмотри, какой там в профиле для Е398

Сообщение отредактировал motoprogger - 20.4.2008, 7:41
Прикрепленный файл ldr_read.7z   ( 22.81 килобайт ) Кол-во скачиваний: 49
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 20.4.2008, 7:43


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



n0wheremany,
Вот функция Read и программы Boot Loader 08.26 Remover
Код
function TForm1.Dump(FName: string; Base, FSize: Cardinal):integer;
var
    Size: Cardinal;
    InData:array[0..17] of Char;
    OutData:array[0..$7ff] of Char;
    F:file of Byte;
    ReadAddr,ReadOff,ReadSize:Cardinal;
begin
result:=0;
    Label1.Caption:='Reading Flash Memory';
    Label1.Update;
    ProgBar.Position:=0;
    AssignFile(F,FName);
    Rewrite(F);
    ReadAddr:=Base;
    ReadOff:=0;
    ProgBar.Max:=FSize;
    repeat
        ReadSize:=FSize-ReadOff;
        if ReadSize>$800 then ReadSize:=$800;
        Size:=Flash_Read(Base+ReadOff,ReadSize,OutData);
        result:=result+size;
        BlockWrite(F,OutData,ReadSize,Size);
        Inc(ReadAddr,ReadSize);
        Inc(ReadOff,ReadSize);
        ProgBar.Position:=ReadOff;
        Application.ProcessMessages;
    until ReadAddr>=Base+FSize;
    CloseFile(F);
end;

ЗЫ Не смотри что она Dump называется, это Read.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
n0wheremany
сообщение 20.4.2008, 8:20


Прогр@ммер
*****

Группа: Почётные мотофаны
Сообщений: 564
Регистрация: 10.9.2005
Пользователь №: 51 111

Рейтинг: 341



Всем пасибо...

Всё работает

Новый тест, прошу читать в 1 топике

Добавлено позже (20.4.2008, 13:44):
Для качества экспериментов рекомендуется сделать несколько опытов.

Сообщение отредактировал n0wheremany - 20.4.2008, 9:15
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 25.4.2008, 16:16


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Для интересующихся - выкладываю linramldr, скомпиленную под линукс.
Запускать либо под рутом, либо настроить udev так, чтобы он разрешал кому угодно читать/писать в USB-устройства, а именно:
Код
# libusb device access
SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", MODE="0666"
, я это редактировал в /etc/udev/rules.d/50-udev-default.rules. После этого потребуется, я так понимаю, перезапустить udev (проще перезагрузить компьютер).

Сообщение отредактировал motoprogger - 25.4.2008, 16:21
Прикрепленный файл linramldr.7z   ( 14.04 килобайт ) Кол-во скачиваний: 45
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
azt59
сообщение 28.4.2008, 14:33


Мастер
****

Группа: Пользователи
Сообщений: 258
Регистрация: 26.9.2005
Из: Perm
Пользователь №: 52 732
Модель телефона: E398/V3x/C650/Z6
Прошивка: ---

Рейтинг: 140



ктонить из владельцев z6/v8 попробуйте эту штуку.
Ненадо засылать никакой лоадер просто пишите сразу READ.
попробуйте слить одну из КГ...возможно тут мы получим рабочий быкап....
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 28.4.2008, 14:43


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(azt59 @ Сегодня, 21:33)

попробуйте слить одну из КГ...возможно тут мы получим рабочий быкап....
*


Вроде лоадеры с READ читают всё на флехе, кроме бута, PDS и, возможно, паник. А без PDS как-то не так интересно бекап делать )
Только не знаю, позволят ли они читать по 8 КБ одной командой.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
n0wheremany
сообщение 28.4.2008, 14:56


Прогр@ммер
*****

Группа: Почётные мотофаны
Сообщений: 564
Регистрация: 10.9.2005
Пользователь №: 51 111

Рейтинг: 341



Собсно есть Soft TP ))
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 28.4.2008, 17:02


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Под SoftTP - сомневаюсь, что есть READ.
А запись загрузчика через срыв стека - отдельный разговор... нигде не видел описания, как это в точности реализуется, идея-то предельно проста.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
n0wheremany
сообщение 28.4.2008, 17:26


Прогр@ммер
*****

Группа: Почётные мотофаны
Сообщений: 564
Регистрация: 10.9.2005
Пользователь №: 51 111

Рейтинг: 341



Цитата
Под SoftTP - сомневаюсь, что есть READ.
А запись загрузчика через срыв стека - отдельный разговор... нигде не видел описания, как это в точности реализуется, идея-то предельно проста.


Объяснять что такое сот тп, я не буду. Но тебе надо. Обратись к Вилко, возможно, он тебе скажет как расчитать точка срыва стёка (в моей проге - адрес Basе), и собсно будет тебе счастье...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
LIBusb, разработка... · Ломаем и строим! · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.7.2025, 3:17

Форум живёт: