Объявление

#401 27-06-2010 14:38:51

Re: Архитектура RockChip

Никто не встречал отладчик для платформы rk? Не эмулятор, а именно отладчик. Без него ой как тяжко

 

#402 29-06-2010 17:21:13

Re: Архитектура RockChip

RKP Disassembler&Assembler

http://www.mediafire.com/?43myymh5zyz

Такой отладчик подойдёт?

 

#403 30-06-2010 00:10:24

Re: Архитектура RockChip

Barracuda72
Все, что делает elfloader - размещает этот код в памяти и передает ему управление.

а разве rkp файлы не являются нативными?! прошивка изначально все это умеет, только структура файлов не elf а собственная rkp, что ни чуточки не мешает прошивке передавать приложению управление при загрузке.

SW I-хук же позволяет вызывать функции прошивки не так:
BL Rock0sSendMsg
а так:
SWI 35 ;
Так как на каждой конкретной прошивке адрес функции Rock0sSendMsg разный, вариант с простым бранчем не подходит.

т.е.ты хочешь swi затачивать под конкретную прошивку, а не перекомпилировать программку с Platform.h принадлежащим прошивке?


Тааак, обогреватель мы из него сделали. Осталось сделать из него сервер...

 

#404 30-06-2010 00:11:43

Re: Архитектура RockChip

Возможно ли изменить уровень громкости каторая устонавливается по умалчиванию при перепрошиве плеера?

Возможно, изменив начальные установки громкости, перекомпилировав прошивку, и залив ее на плеер


Тааак, обогреватель мы из него сделали. Осталось сделать из него сервер...

 

#405 30-06-2010 08:24:04

Re: Архитектура RockChip

MrRockchip написал:

, нет, мне нужно прошивку отлаживать... никак не могу вернуться из swi, даже без обработки. Возможно, у арм7 есть какие-то особенности, я раньше только с арм9 дело имел.

SWIRL написал:

да, можно сказать и так. В родной прошивке прерывания не используются вовсе, я хочу попытаться их использовать. Мне кажется, .ркп не так удобен, как .elf, тем более мой рк2705 в стандартной прошивке .ркп не тянет:)
Сейчас пытаюсь собрать прошивку из исходников, имеющихся в сдк27 и восстановить недостающее по иде. На ritmix 8900 работает уже все, кроме тачпада. Как только заведу его - буду продолжать искания с swi, устал уже делать врезки и искать место под патч.
Да, у меня одного CodeWarrior из комплекта ads1.2 постоянно падает? невозможно даже с первой попытки скомпилировать прошивку

 

#406 10-08-2010 01:13:10

Re: Архитектура RockChip

Прошу прощения за столь длительное отсутствие, личная жизнь...
Мне удалось сделать следующее:
- на моем ritmix rf-8900 работает тачпад и экран, частично звук - пока больше и не нужно
- доработан эмулятор, теперь в нем тоже работает "тачпад" (любая кнопка мыши)
- интегрирован и доработан загрузчик эльфов, при выборе пункта меню "Секундомер" загружается эльф из файла С:/elf.elf
- постарался адаптировать интерфейс к тачскрину, уже можно слушать музыку и радио
В выходные постараюсь выложить свои наработки, в планах таки допилить swi-хук

 

#407 10-08-2010 03:26:16

Re: Архитектура RockChip

Barracuda72

никак не могу вернуться из swi, даже без обработки.

В смысле даже если прямо в таблицу векторов тыкнуть subs pc,lr,#4, всё равно не возвращается?
(я тут проходом... ни один сабжевый экземпляр не то, что в руках не держал, даже не видел вживую никогда... не интересовался :-))


No love, no mercy — no pain.

 

#408 10-08-2010 12:05:20

Re: Архитектура RockChip

l_inc написал:

Barracuda72

никак не могу вернуться из swi, даже без обработки.

В смысле даже если прямо в таблицу векторов тыкнуть subs pc,lr,#4, всё равно не возвращается?
(я тут проходом... ни один сабжевый экземпляр не то, что в руках не держал, даже не видел вживую никогда... не интересовался :-))

Почти что так, в таблице векторов просто
ldr pc, =swi_addr

и далее
swi_addr:
subs pc, lr, #4
Виснет намертво
Компилируется верно... Единственное, что приходит в голову - это что swi явным или неявным образом запрещены

 

#409 10-08-2010 13:40:52

Re: Архитектура RockChip

Barracuda72
А если всё таки в таблицу векторов запихать subs pc,lr,#4? Мало ли... может смещение swi_addr относительно адреса вектора неверно рассчитали? :-)
И ещё на всякий случай спрошу... там точно не flash или rom на месте таблицы векторов лежит? Может remap сделать забыли?


No love, no mercy — no pain.

 

#410 10-08-2010 14:05:28

Re: Архитектура RockChip

Попробую, но смещение рассчитывал не я, а компилятор:) Да и дизасм показывает, что все 0К
Чип не имеет MMU, таблица векторов просто копируется в 0х00000000 при каждой загрузке

 

#411 10-08-2010 14:13:42

Re: Архитектура RockChip

Barracuda72
Не совсем понимаю, причём здесь MMU. Remap'ом занимается не сопроцессор MMU, а контроллер памяти.
Я ставил обработчик swi вот так:

Код:

#define STRINGIFY_INTERNAL(X) #X

#define STRINGIFY(X) STRINGIFY_INTERNAL((X))

void svc_vector(void) __attribute__ ((naked));
void svc_handler(void) __attribute__ ((naked));

#define SVC_BASE        0x08
#define SVC_VECT        0x20

void init_services(void)
{
    *(uint32_t *)SVC_BASE = *(uint32_t *)&svc_vector;       //store svc vector
    *(uint32_t *)SVC_VECT = (uint32_t)(&svc_handler);       //store svc handler vector
}

void svc_vector(void)
{
    __asm volatile ("LDR pc,[pc,#"STRINGIFY(SVC_VECT-(SVC_BASE+4*2))"]");
}

void svc_handler(void)
{
    __asm volatile ("ADD lr,lr,#4\n\t"                      //+4 emulates irq behavior
                    "STMDB sp!,{R0-R12,lr}\n\t"
                    "MOV R0,sp\n\t"
                    "BL svc_handler_internal\n\t"
                    "LDMIA sp!,{R0-R12,lr}\n\t"
                    "SUBS pc,lr,#4");
}

Как Вам удалось переложить рассчёт SVC_VECT-(SVC_BASE+4*2) на компилятор? :-)
Кстати... Насчёт subs pc,lr,#4. После SWI ведь сохраняется адрес следующей за swi инструкции. Поэтому, видимо, в Вашем случае нужно писать всё-таки movs pc,lr (насчёт subs pc,lr,#4 прямо в таблицу векторов — то мой прогон).

Отредактировано l_inc (10-08-2010 14:17:26)


No love, no mercy — no pain.

 

#412 10-08-2010 14:45:47

Re: Архитектура RockChip

Я все пишу на ассемблере, чтобы не мучаться со всякими приведениями типов и кучей звездочек:) Выглядит сейчас оно так:
swi_vector:
mov pc, swi_addr

swi_addr:
dcd swi_handler

swi_handler:
stmfd sp!, {r0-r3, lr}
...здесь идет обработка, код выброшен...
ldmfd sp!, {r0-r3, pc}^
виснет:(

 

#413 10-08-2010 15:35:01

Re: Архитектура RockChip

Barracuda72
Лучше покажите, как Вы устанавливаете вектор, а не как он потом выглядит. Потому что

Код:

swi_vector:
mov pc, swi_addr

swi_addr:
dcd swi_handler

тянет в лучшем случае на псевдокод. Реально для прыжка по произвольному адресу вектором должна быть инструкция
ldr pc,[pc,#(swi_addr-(swi_vector+4*2))]. При этом swi_vector = 8, а по swi_addr лежит адрес обработчика (собственно, последнее у Вас, очевидно, соблюдено).

Я все пишу на ассемблере, чтобы не мучаться со всякими приведениями типов и кучей звездочек:)

Зато можно недолго думая написать одну строку, которая на асме будет занимать десять, над которыми ещё и посидеть придётся. И код обозримее становится.
Ну да ладно. Это Ваше право. :-)

Отредактировано l_inc (10-08-2010 15:35:32)


No love, no mercy — no pain.

 

#414 10-08-2010 16:22:23

Re: Архитектура RockChip

Я не устанавливаю вектор, он жестко задается при компиляции и в дальнейшем не меняется. При запуске загрузчик копирует прошивку в rаm, копирует готовую таблицу векторов на адрес 0х00000000 и дергает Reset_Vector. Собственно, строки
swi_vector: mov pc, swi_addr
swi_addr: dcd swi_handler
и есть часть таблицы векторов.
Просто нравится мне АРМ ассемблер, очень мощный язык, можно сказать, почти магия на кончиках пальцев:) Основную кодовую массу конечно лучше писать на С, но критичные участки кода все же на асме надежнее и быстрее, процессор все же работает всего на 12 мгц

Отредактировано Barracuda72 (10-08-2010 16:27:06)

 

#415 10-08-2010 16:36:14

Re: Архитектура RockChip

Barracuda72
Ну так тогда понятно, почему виснет: Вы прыгаете на swi_addr, а не на swi_handler.
Во-первых, поставьте ту инструкцию, которую я указал в посте 413.
Во-вторых, переставьте swi_addr куда подальше. А то затираете вектор prefetch abort.


No love, no mercy — no pain.

 

#416 10-08-2010 16:46:31

Re: Архитектура RockChip

Прошу прощения, пишу по памяти и с телефона, забыл квадратные скобки. Должно быть так:
swi_vector: mov pc, [swi_addr]
swi_addr: dcd swi_handler
ида раскрывает это как
swi_vector: ldr pc, =swi_hаndler
swi_addr: dcd swi_handler
Нет, prefetch не затирается, строка swi_addr: dcd swi_handler
расположена внизу таблицы векторов, просто я не стал весь код перепечатывать, на самом деле все вектора на месте.
Попробую вставить инструкцию, предложенную Вами, и отпишусь о результатах

Отредактировано Barracuda72 (10-08-2010 16:47:55)

 

#417 10-08-2010 17:07:04

Re: Архитектура RockChip

Barracuda72
Если ида раскрывает, как Вы указали, тогда всё верно. Думаю, в Вашем случае имелось в виду даже не
mov pc, [swi_addr], а ldr pc,[swi_addr]. Обычно для таких случаев поддерживается псевдоинструкция, указанная идой:
ldr pc, =swi_hаndler. Но тогда нельзя указать, где именно будет размещено слово с адресом swi_hаndler.
P.S. А чем компилируете-то?

Отредактировано l_inc (10-08-2010 17:08:14)


No love, no mercy — no pain.

 

#418 10-08-2010 17:38:03

Re: Архитектура RockChip

До этого пробовал binedit'ом, сейчас взял в руки АDS (все равно в итоге писать под него, им собирается прошивка). Конструкция
swi_vector:
mov pc, [swi_addr]
swi_addr:
dcd swi_handler
swi_handler:
movs pc, lr
работает, спасибо за помощь:) дописать обработчик (возможно, действительно на С?) уже не так сложно

 

#419 16-08-2010 23:53:58

Re: Архитектура RockChip

Пожалуйста, подскажите:

Есть у меня плеер Explay T10 (походу rk2706)
Объем памяти:4 Гб
Синхронизация с ПК: USB 2.0
Тип дисплея:LCD
Размер:2.40"
Кол-во цветов:260 тыс.
Разрешение:240 x 320

Прошивается с помощью файлов *.rkw (T10.rkw) путем его копирования в корень и перезагрузки.
Так вот, можно ли на этот плеер поставить кастомную прошивку, либо проги *.rkp?
Заранее спасибо за ответ!

http://mobiguru.ru/f/image/1/7/1/17118_explay_t10_2.jpg

Отредактировано drmsaih (16-08-2010 23:54:18)

 

#420 17-08-2010 15:00:44

Re: Архитектура RockChip

Извиняюсь за задержку, вот то, что я накропал:
http://depositfiles.com/files/8f0r8nl8f
да, наверняка возможно, сдк Вам в помощь:)

 

Board footer

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson