Спустя долгих 5 лет, вопрос все-таки решен
-
- Адрес
- The Republic of Bashkortostan
- Сообщений
- 3,845
- Репутация
- 7780 (0)
18.12.2018 22:22
-
- Адрес
- Москва (Ярославль)
- Сообщений
- 324
- Репутация
- 950 (0)
18.12.2018 22:26=Andrey=,
Я правильно понимаю, что пытаетесь собрать свежий билд под старую версию экрана?
Детально не смотрел, но вот, что по данной теме нашлось за пару минут (вдруг поможет):
1. Add support for HM-601 slims with new lcds.
2. Fix white screen bug
-
- Адрес
- Москва
- Сообщений
- 209
- Репутация
- 368 (0)
-
Пользователи, сказавшие Спасибо =Andrey= за полезный пост
dachshund (18.12.2018)
-
- Адрес
- Москва (Ярославль)
- Сообщений
- 324
- Репутация
- 950 (0)
18.12.2018 22:51Посмотрите по второй ссылке (из моего предыдущего поста), там видно что в процедуру инициализации экрана (lcd_display_init) mortalis добавил функцию сброса (reset_lcd), в которую специально добавлены пауза в 5000мс. Если для первой версии этого не достаточно и выпадает в белый экран, то можно попробовать увеличить эту паузу например в 1.5-2 раза, чтобы инициализация точно успела завершится. А так по идее все настройки у него уже учтены для обоих версий экрана.
-
- Адрес
- Москва
- Сообщений
- 209
- Репутация
- 368 (0)
18.12.2018 22:59Именно это я и сделал, увеличил udelay, смутила задержка в 10мс... видимо в свежих 60х что-то удешевили, и оно перестало успевать за кодом)
Пробовал жестко прописывать V1, эффект любопытный, первый белый экран меняется на нормальную заставку, потом гаснет и появляется белый экран.
Была бы возможность отладить на ходу...
Удалил из reset_lcd вторую задержку и уменьшил первую, грузиться стало ощутимо быстрее
static void reset_lcd(void)
{
GPIO_PCCON |= (1<<7);
GPIO_PCDR &= ~(1<<7);
udelay(40); // ставил 20 - все ок, если <= 10, то привет белый экран
// udelay(10);
GPIO_PCDR |= (1<<7);
// udelay(5000);
}
Если кто-нибудь знает что происходит в этой функции, напишите комментарии плз, очень любопытно:
void udelay(unsigned usecs)
{
unsigned cycles_per_usec;
unsigned delay;
if (cpu_frequency == CPUFREQ_MAX) {
cycles_per_usec = (CPUFREQ_MAX + 999999) / 1000000;
} else {
cycles_per_usec = (CPUFREQ_NORMAL + 999999) / 1000000;
}
delay = (usecs * cycles_per_usec) / 5;
asm volatile(
"1: subs %0, %0, #1 \n" /* 1 cycle */
" nop \n" /* 1 cycle */
" bne 1b \n" /* 3 cycles */
: : "r"(delay)
);
}Последний раз редактировалось =Andrey=; 19.12.2018 в 00:56.
-
- Адрес
- Vinnitsya, Ukraine
- Сообщений
- 45
- Репутация
- 210 (0)
18.12.2018 23:47Отпишитесь, плиз, у кого заработало на новых ревизиях экрана...
-
- Адрес
- Москва
- Сообщений
- 4,989
- Репутация
- 105621 (0)
19.12.2018 08:00Насколько я понял, дело обстоит следующим образом:
Код:if (cpu_frequency == CPUFREQ_MAX) { cycles_per_usec = (CPUFREQ_MAX + 999999) / 1000000; } else { cycles_per_usec = (CPUFREQ_NORMAL + 999999) / 1000000; }
Код:#define CPUFREQ_DEFAULT 50000000 #define CPUFREQ_NORMAL 50000000 #define CPUFREQ_MAX 200000000
Далее
Код:delay = (usecs * cycles_per_usec) / 5;
Далее собственно сам код, который осуществляет задержку
Код:asm volatile( "1: subs %0, %0, #1 \n" /* 1 cycle */ " nop \n" /* 1 cycle */ " bne 1b \n" /* 3 cycles */ : : "r"(delay) );
1. Вычитаем из delay единицу (занимает 1 такт процессора): инструкция subs %0, %0, #1
2. Ничего не делаем один такт: инструкция nop
3. Проверяем, если в регистре не 0, т.е. delay > 0, возвращаемся к шагу 1 (занимает 3 такта процессора): инструкция bne 1bММ4 / FitEar 335 DW AA
_________
Suum cuique
-
Пользователи, сказавшие Спасибо gemzza за полезный пост
=Andrey= (19.12.2018)
-
- Адрес
- Москва
- Сообщений
- 209
- Репутация
- 368 (0)
19.12.2018 12:04gemzza, Большое спасибо, все понятно)
-
- Адрес
- Москва (Ярославль)
- Сообщений
- 324
- Репутация
- 950 (0)
19.12.2018 12:08Очень даже возможно, тут где-то была инфа на форуме, что какие-то партии собирали из того, что под рукой было (даже зарядные другие в коробке были).
Я в таких случаях делаю сразу несколько сборок с разными параметрами, чтобы потом просто поочередно закидывать на карту и смотреть результат.
-
- Адрес
- Москва
- Сообщений
- 209
- Репутация
- 368 (0)
20.12.2018 12:40Текущие результаты экспериментов:
static void reset_lcd(void)
{
GPIO_PCCON |= (1<<7);
GPIO_PCDR &= ~(1<<7);
udelay(200);
// < 13 = белый экран на V2, < 50 + microSD = ATA error -4 на V1 (один раз словил при задержке 100, по этому остановился на 200)
GPIO_PCDR |= (1<<7);
udelay(2000)
// < 843 = белый экран на V1, с 843 до ~880 инициализация цвета(экран темнеет до нормы), затем всё ок.
}
задержки из других функций выпилил, никаких изменений не заметил
на руках 3 мужика, два 601 с разными экранами и один свеженький 603, это вариант пашет на всех без глюков.Последний раз редактировалось =Andrey=; 20.12.2018 в 13:44.
-
- Адрес
- The Republic of Bashkortostan
- Сообщений
- 3,845
- Репутация
- 7780 (0)
-
- Адрес
- Москва
- Сообщений
- 209
- Репутация
- 368 (0)
-
- Адрес
- Москва (Ярославль)
- Сообщений
- 324
- Репутация
- 950 (0)
20.12.2018 19:15
-
Пользователи, сказавшие Спасибо rusandy за полезный пост
gemzza (21.12.2018)
-
- Адрес
- Москва
- Сообщений
- 209
- Репутация
- 368 (0)
20.12.2018 19:34rusandy, это я видел, ветку всю перечитал... даже где-то на буржуйских форумах на куски этого кода натыкался
-
- Адрес
- Москва
- Сообщений
- 4,989
- Репутация
- 105621 (0)
21.12.2018 07:43Так репозиторий рокбокса вроде как не на гитхабе. Если действительно хотите запушить Ваши изменения в рокбокс, Вам необходимо создать код ревью на сайте gerrit.rockbox.org, а затем написать кому-нибудь из ревьюверов, которые имеют право заливать.
---------- Добавлено в 09:43 ---------- Предыдущее сообщение было размещено в 09:42 ----------
Это было так давно, что даже я об этом забыл. Учитывая, что с тех пор ни 60x ни 801 мужиков у меня так и не появилось, это нормальноММ4 / FitEar 335 DW AA
_________
Suum cuique
-
- Адрес
- Москва
- Сообщений
- 209
- Репутация
- 368 (0)
-
- Адрес
- Москва (Ярославль)
- Сообщений
- 324
- Репутация
- 950 (0)
-
- Адрес
- Москва
- Сообщений
- 4,989
- Репутация
- 105621 (0)
-
- Адрес
- The Republic of Bashkortostan
- Сообщений
- 3,845
- Репутация
- 7780 (0)
24.12.2018 20:49gemzza, с ММ6 итак уже выше крыши), только вот пока непонятно с ОУ-шками, никак определиться не могут, жду финальный вариант).
-
24.12.2018 22:48
Камрады программисты, посмотрите, плиз формирование мастерклока i2s в 601 мужике, на последних страницы темы про мм6 описал. Скважность в рокбоксе корявенькая получается, а в стоке все ок.
Собсно
http://player.ru/showthread.php?p=2687095Правильного выбора в реальности не существует — есть только сделанный выбор и его последствия.
Информация о теме
Пользователи, просматривающие эту тему
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)
Похожие темы
-
Прошивка ROCKBOX для iBasso DX50.
от DOC2008 в разделе Flash-плеерыОтветов: 1956Последнее сообщение: 18.08.2021, 16:14 -
Hifiman HM-603 4Gb RockBox
от makarov111935 в разделе АрхивОтветов: 11Последнее сообщение: 21.03.2018, 15:34 -
Hifiman HM-601 Slim 4Gb Rockbox
от Urzilo в разделе АрхивОтветов: 3Последнее сообщение: 01.04.2016, 21:53 -
Sansa Clip + прошивка Rockbox 3.13: проблема с динамическим списком воспроизведения
от restet в разделе Модификации и ремонт плееровОтветов: 0Последнее сообщение: 28.01.2015, 23:59 -
Прошивка ROCKBOX для Colorfly CK4/CK4+
от Incura в разделе Выбор плеераОтветов: 6Последнее сообщение: 02.12.2014, 20:43