Имеется плата SK-AT91SAM9G45(M10)-XC6SLX и убут, настроенный под неё. Необходимо реализовать сплэш скрин.
убут был скомпилен с поддержкой сплеш скрина, т.е. теперь необходимо записать рисунок по определённому адрессу в нанд и установить системную переменную в убуте - splashimage, равную данному адрессу.
вот здесь и возникла заминка. рисунок был залит на нанд флеш по адрессу 900000. Но при этом я обнаружил, что чтение памяти командой md 900 000 и чтение nand read (параметры) - выдаёт разные результаты. т.е. получаеться нанд не замапин на область памяти с офсетом 0.
Вопрос, кто нибудь знает, как можно замапить нанд на адрессное пространство в убуте?
была идея написать скрипт для загрузки рисунка в озу при стартапе, но убут пытается рисовать сплэш сразу после включения питания, и дальнейшее копирования рисунка из нанда в реальный адрес ничего не даёт
ну в общем то нормальный вариант для тестов (вместо резервного ядра), я пробовал складывать в последний мегабайт нанда. мой вариант "не хорош" с т.з. рутовой на UBIFS :)
подозреваю, что вы не делали стирание перед записью..
телодвижения такие:
стираем нанд и смотрим его содержимое:
в продолжение..
если вы разведаете, КАК юбуту объяснить, что картинка лежит в нанде и предварительно ее надо считать, то будет здорово..
путь попроще и покривее - "пристегнуть" бинарник картинки к бинарнику юбута и оптом вытаскивать всё из нанда..
кстати, пара моментов:
1. в "непиленном" виде мой юбут отказался показывать 24-битные BMP, требует 8-ми битку..
2. надо прописать в переменной окружения юбута
где цифры - адрес начала картинки в SDRAM
я картинку и юбут положил в SDRAM, запустил, вот фото:
НАНД я стирал, так что с этим всё ок.
Прицепить картинку к убуту - классный вариант, попробую.
На текущий момент я сделал немного по другому, тоже выкрутился :)
сделал следующее:
-загрузил картинку по адрессу 0х900000 в нанд
-изменил скрипт запуска ядра - добавил перед ним загрузку картинки из нанда в ОЗУ, а затем прорисовку картинки на экран с помощью bmp display. всё работает вроде нормально.
Но всё же хочу допилить убут, для установки картинки напрямую с нанда...)
по ходу столкнулся с тем, что надо каким то образом отключить инициализацию фрэйм буффера ядром линукса в начале, и делать эту инициализацию в конце, перед самим запуском приложения. Не в курсе, как такое сделать?
Т.к. во время инициализации фрейм буффера ядро стирает мою картинку и рисует пингвина)
можно попробовать поиграть в п\п инита устройств в файле борды - поставить инит экрана последним, но большого эффекта это не даст..
хм.. а если в ядре тупо выключить "лого" (через менюконфиг) - счастье настанет?
еще существуют пакеты типа splash для рутовой..
что логично, сначала юбут интит контроллер, чтобы вывести буковки и картинку. потом все то же самое делает ядро.. и конечно рушит изображение нарисованное юбутом..
надо или доку на ядро читать или пилить драйвер экрана в ядре - в процедуре probe откусить инит контроллера LCD или чистку экрана..
впрочем, может это неправильный путь и есть более простые варианты..