motofan logo
11 страниц V « < 9 10 11        
> 

P2Kapi, Вопросы

Gulik17
сообщение 6.4.2008, 15:33


Новичок
*

Группа: Пользователи
Сообщений: 15
Регистрация: 31.10.2006
Пользователь №: 105 517
Модель телефона: E398 -> E1
Прошивка: *#9999#

Рейтинг: 0



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


Гуру
******

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

Рейтинг: 510



Gulik17,
Этот файл для разных версий Delphi будет разный, лучше так сделать:
1) Скопировать p2kapi.pas в папку с проектом
2) Добавить p2kapi.pas в проект (Project -> Add file или как там)
И всё, после добавления p2kapi в uses проблем не должно быть.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
n0wheremany
сообщение 10.4.2008, 17:01


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

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

Рейтинг: 341



Цитата
1) Скопировать p2kapi.pas в папку с проектом
2) Добавить p2kapi.pas в проект (Project -> Add file или как там)


1. Либо скопировать либо добавить в проект.
2. Добавить в uses

Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
B3nNa
сообщение 2.5.2008, 17:22


Новичок
*

Группа: Пользователи
Сообщений: 4
Регистрация: 27.1.2008
Пользователь №: 161 491
Модель телефона: Motorola V3x

Рейтинг: 0



Hi,

I'm trying to use P2k_SendCMD in Vb.Net, but when i try to execute code, i get this error:
QUOTE
Object reference not set to an instance of an object.


i declared the function in this way:
CODE
    Public Declare Function P2K_SendCMD Lib "p2kapi3.dll" (ByVal Cmd As Int32, ByVal SendBuff As Byte(), ByVal SendSize As Int32, ByVal RecvBuff As Byte(), ByVal RecvSize As Int32) As Integer


and that's the code:

CODE

                P2K_Init(0)
                Threading.Thread.Sleep(1500)
                Dim Send(10000), Recv(10000) As Byte
                Dim SendSize, RecvSize As Int32
                Send(0) = &HFF
                Send(1) = &HFF
                SendSize = 2
                Try
                    P2K_SendCMD(&H39, Send, SendSize, Recv, RecvSize)
                Catch ex As Exception
                End Try


can anyone help me?
thanks in advance,
B3nNa
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Ailinor
сообщение 29.5.2008, 10:34


Интересующийся
**

Группа: Разработчики
Сообщений: 86
Регистрация: 27.8.2007
Из: Днепропетровск, Украина
Пользователь №: 145 831
Модель телефона: V3r
Прошивка: R4515_G_0.BD.74R

Рейтинг: 69



ph34r.gif
Что-то V3re (не разлоченная) некоректно работает с библиотекой. Кто-то сталкивался с этой проблемой? Из-за чего это может быть?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VlzRu
сообщение 20.6.2008, 6:49


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 19.6.2008
Пользователь №: 175 279
Модель телефона: V/E/*

Рейтинг: 0



А в чем разница между функциями Flash_WriteData и Flash_Bin? Насколько успел разобраться, первая просто отправляет в порт данные, переданные ей в параметрах, при этом не понятно, по какому адресу будут зашиты отправленные байты? Вторая отсылает через SendCmd команду "BIN", и переданный ей буфер, при этом сказано, что перед ее[Flash_Bin] вызовом необходимо передать в тело(или точнее загрузчик?) адрес начала записываемой области (Flash_Addr). Т.е. существуют две функции, выполняющие одно и то же? Или я не прав?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
n0wheremany
сообщение 20.6.2008, 11:16


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

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

Рейтинг: 341



Цитата
Flash_WriteData

Ф-ия отправляет не форматированные данные телефону. Не знаешь не лезь.

Цитата
Flash_Bin

Ф-ия отправляет форматированные даные телефону на адрес отправленный ф-ей Flash_Addr до этого.

Ф-ия Flash_WriteData только для людей, знающий как ей пользоваться.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VlzRu
сообщение 20.6.2008, 15:55


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 19.6.2008
Пользователь №: 175 279
Модель телефона: V/E/*

Рейтинг: 0



Спасибо за ответ. Еще вопрос, не сочтите за наглость.
Чтобы записать данные в некоторую область памяти, нужно ее предварительно стереть. Правильно? Значит нужно чтобы начальный и конечный адреса этой области были забиты в лоадер? Т.е. алгоритм такой:
1. Инициализация библиотеки, телефона.
2. Запись лоадера с необходимыми адресами памяти.
3. Команда "ERASE" -> в телефон.
4. Вызываем в цикле Flash_Bin, переправляем всю прошивку в тело.
5. Радуемся. :-)

Так?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
n0wheremany
сообщение 20.6.2008, 17:56


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

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

Рейтинг: 341



Цитата
1. Инициализация библиотеки, телефона.
2. Запись лоадера с необходимыми адресами памяти.
3. Команда "ERASE" -> в телефон.
4. Вызываем в цикле Flash_Bin, переправляем всю прошивку в тело.
5. Радуемся. :-)


Чтото в этом роде.

ЗЫ - не знаешь не лезь.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VlzRu
сообщение 20.6.2008, 18:12


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 19.6.2008
Пользователь №: 175 279
Модель телефона: V/E/*

Рейтинг: 0



Охота стать знающим... smile.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 21.6.2008, 5:33


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Цитата(n0wheremany @ Вчера, 19:56)

ЗЫ - не знаешь не лезь.
*


n0wheremany :-) к людям относимся помягше , на мир смотрим пошишре , верно ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 21.6.2008, 6:00


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

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

Рейтинг: 680



VlzRu,
держи две функции для стирания/прошивания, пока беды не случилось:
Код
procedure TForm1.Erase;
var
    Size: Cardinal;
    OutData:array[0..1023] of Char;
    Res:Cardinal;
    StartTime,PointTime:Cardinal;
begin
    StartTime:=GetTickCount;
    Label1.Caption:='Erasing flash memory';
    Label1.Update;
    Size:=SizeOf(OutData);
    ProgBar.Max:=1000;
    Res:=Flash_SendCmd('ERASE',nil,0,OutData,Size,100);
    while Res<>0 do
    begin
        PointTime:=(GetTickCount-StartTime) mod 2000;
        if PointTime>=1000 then PointTime:=2000-PointTime;
        ProgBar.Position:=PointTime;
        Size:=SizeOf(OutData);
        Res:=Flash_ReadData(OutData,Size,20);
        Application.ProcessMessages;
    end;
end;

function TForm1.Flash(FName: string; Base: Cardinal):integer;
var
    F:file of Byte;
    FSize,Size:Cardinal;
    FlashAddr,FlashOff:Cardinal;
    InData:array[0..$ff] of Byte;
begin
result:=0;
    Label1.Caption:='Flashing Phone';
    Label1.Update;
    ProgBar.Position:=0;
    AssignFile(F,FName);
    Reset(F);
    FlashAddr:=Base;
    FlashOff:=0;
    FSize:=FileSize(F);
    ProgBar.Max:=FSize;
    repeat
        BlockRead(F,InData,$100,Size);
        result:=result+Flash_Addr(FlashAddr);
        result:=result+Flash_Bin(InData,Size);
        Inc(FlashAddr,$100);
        Inc(FlashOff,$100);
        ProgBar.Position:=FlashOff;
        Application.ProcessMessages;
    until FlashOff>=FSize;
end;
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
n0wheremany
сообщение 21.6.2008, 7:26


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

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

Рейтинг: 341



Osta

Верно конечно... Но будет как у меня более 1,5 года лежащий 398 с пробитой флэшкой... Благо умный человек позаботился ))

Цитата
procedure TForm1.Erase;

Надо читать ответ, а не просто возможные байты... ибо ERR тоже ответ. И весьма плохой.

Зы DmT, разве у тебя Flash_ReadData не стопорит прогу? до ответа?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 22.6.2008, 7:53


Гуру
******

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

Рейтинг: 510



n0wheremany,
У Flash_ReadData (и Flash_WriteData) последний параметр - таймаут в миллисекундах. И у Flash_SendCmd, кстати, тоже wink.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VlzRu
сообщение 22.6.2008, 13:45


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 19.6.2008
Пользователь №: 175 279
Модель телефона: V/E/*

Рейтинг: 0



Огромное спасибо n0wheremany и DmT ! Теперь я все понял.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VlzRu
сообщение 25.6.2008, 15:38


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 19.6.2008
Пользователь №: 175 279
Модель телефона: V/E/*

Рейтинг: 0



Хотя нет... не все :-)
Что, в теории, делает команда JUMP? судя по https://forum.motofan.ru/index.php?showforum=143 Flash&backup'у отправлять ее нужно после засылки лоадера, или это зависит от чего-то? На какой адрес нужно прыгать? На адрес, в котором начинается лоадер? (JUMP для Motorola == JMP для asm) ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 25.6.2008, 19:47


Гуру
******

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

Рейтинг: 510



VlzRu,
Для телефонов на платформе LTE нужно:

Добавлено позже (26.6.2008, 2:49):
VlzRu,
Для телефонов на платформе LTE нужно:
1) Записать лоадер по адресу 0x03fd0000
2) JUMP на 0x03fd0010
3) Если намерен что-то прошивать - стирание памяти (адреса вбиваются в лоадер)
4) Прошивание/чтение (для чтения лоадер должен это поддерживать)
5) Опционально выключение или перезапуск телефона
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 26.6.2008, 4:13


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

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

Рейтинг: 680



Цитата(VlzRu @ Вчера, 21:38)

JUMP для Motorola == JMP для asm
*


JUMP это команда лоадера
А jmp это команда ассемблера для x86
На асемблере для ARM эта команда BX

Сообщение отредактировал DmT - 26.6.2008, 20:58
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 26.6.2008, 13:08


Гуру
******

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

Рейтинг: 510



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

На асемблере для ARM эта команда B
*


Уж если на то пошло, то BX. B умеет переходить только по фиксированному адресу, а BX - по адресу в регистре.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
david768
сообщение 21.10.2009, 8:07


Новичок
*

Группа: Начинающие
Сообщений: 1
Регистрация: 21.10.2009
Пользователь №: 208 402
Модель телефона: E398

Рейтинг: 0



Я чайник...Как установить скины???
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexKooper
сообщение 21.10.2009, 10:26


Авторитет
********

Группа: Почётные мотофаны
Сообщений: 2 838
Регистрация: 27.7.2005
Из: Йошкар-Ола
Пользователь №: 47 140
Модель телефона: E398
Прошивка: AlexKooper mod v.47

Рейтинг: 1337



david768, Модификация Е398
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
P2Kapi, Вопросы · Ломаем и строим! · Forum
 

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

 



Текстовая версия Сейчас: 3.9.2025, 9:04

Форум живёт: