Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:3
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:7
Форум » starterkit.ru » Embedded Linux
SK-AT91SAM9G45(M10)-XC6SLX + u-boot
radist_ort
Добавлено 07.09.2011 17:41 Редактировалось 07.09.2011 17:55
0
Сообщение: 1
radist_ort
0

Пункты: 928
Регистрация: 04.04.2011
Пол: Мужчина
Из: Ukraine, Kharkov
Имеется плата SK-AT91SAM9G45(M10)-XC6SLX и убут, настроенный под неё. Необходимо реализовать сплэш скрин.

убут был скомпилен с поддержкой сплеш скрина, т.е. теперь необходимо записать рисунок по определённому адрессу в нанд и установить системную переменную в убуте - splashimage, равную данному адрессу.

вот здесь и возникла заминка. рисунок был залит на нанд флеш по адрессу 900000. Но при этом я обнаружил, что чтение памяти командой md 900 000 и чтение nand read (параметры) - выдаёт разные результаты. т.е. получаеться нанд не замапин на область памяти с офсетом 0.

Вопрос, кто нибудь знает, как можно замапить нанд на адрессное пространство в убуте?

была идея написать скрипт для загрузки рисунка в озу при стартапе, но убут пытается рисовать сплэш сразу после включения питания, и дальнейшее копирования рисунка из нанда в реальный адрес ничего не даёт
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 10.09.2011 11:54 Сообщение: 2
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
вот здесь и возникла заминка. рисунок был залит на нанд флеш по адрессу 900000. Но при этом я обнаружил, что чтение памяти командой md 900 000 и чтение nand read (параметры) - выдаёт разные результаты. т.е. получаеться нанд не замапин на область памяти с офсетом 0.

а ваши "900000" это в какой системе? DEC или HEX?
и какая версия юбута?

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
radist_ort
Добавлено 11.09.2011 13:51 Сообщение: 3
radist_ort
0

Пункты: 928
Регистрация: 04.04.2011
Пол: Мужчина
Из: Ukraine, Kharkov
0x900000 HEX, на место zlinux_safe
версия убута 2010.09
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 12.09.2011 00:32 Сообщение: 4
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
0x900000 HEX, на место zlinux_safe
версия убута 2010.09

ну в общем то нормальный вариант для тестов (вместо резервного ядра), я пробовал складывать в последний мегабайт нанда. мой вариант "не хорош" с т.з. рутовой на UBIFS :)

подозреваю, что вы не делали стирание перед записью..
телодвижения такие:
стираем нанд и смотрим его содержимое:
Код
U-Boot> nand erase 900000 60000
NAND erase: device 0 offset 0x900000, size 0x60000
Erasing at 0x940000 -- 100% complete.
OK
U-Boot> nand read 70400000 900000 20
NAND read: device 0 offset 0x900000, size 0x20
32 bytes read: OK
U-Boot> md.b 70400000 20
70400000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
70400010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................

считываем картинку и пишем в нанд:
Код
U-Boot> tftpboot 70400000 splash.bmp
Filename 'splash.bmp'.
Load address: 0x70400000
Loading: ###########################
done
Bytes transferred = 391734 (5fa36 hex)
U-Boot> nand write 70400000 900000 60000
NAND write: device 0 offset 0x900000, size 0x60000
393216 bytes written: OK

выключаем плату, включаем:
Код
Hit any key to stop autoboot: 0
U-Boot> md.b 70400000 20
70400000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
70400010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
U-Boot> nand read 70400000 900000 20
NAND read: device 0 offset 0x900000, size 0x20
32 bytes read: OK
U-Boot> md.b 70400000 20
70400000: 42 4d 36 fa 05 00 00 00 00 00 36 00 00 00 28 00 BM6.......6...(.
70400010: 00 00 e0 01 00 00 10 01 00 00 01 00 18 00 00 00 ................

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 12.09.2011 00:43 Сообщение: 5
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
в продолжение..
если вы разведаете, КАК юбуту объяснить, что картинка лежит в нанде и предварительно ее надо считать, то будет здорово..
путь попроще и покривее - "пристегнуть" бинарник картинки к бинарнику юбута и оптом вытаскивать всё из нанда..
кстати, пара моментов:
1. в "непиленном" виде мой юбут отказался показывать 24-битные BMP, требует 8-ми битку..
2. надо прописать в переменной окружения юбута
Код
splashimage=71000000

где цифры - адрес начала картинки в SDRAM

я картинку и юбут положил в SDRAM, запустил, вот фото:

title

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
radist_ort
Добавлено 12.09.2011 13:33 Редактировалось 12.09.2011 13:45 Сообщение: 6
radist_ort
0

Пункты: 928
Регистрация: 04.04.2011
Пол: Мужчина
Из: Ukraine, Kharkov
Спасибо за ответ, картинка хорошая :)

НАНД я стирал, так что с этим всё ок.
Прицепить картинку к убуту - классный вариант, попробую.

На текущий момент я сделал немного по другому, тоже выкрутился :)

сделал следующее:
-загрузил картинку по адрессу 0х900000 в нанд
-изменил скрипт запуска ядра - добавил перед ним загрузку картинки из нанда в ОЗУ, а затем прорисовку картинки на экран с помощью bmp display. всё работает вроде нормально.

Но всё же хочу допилить убут, для установки картинки напрямую с нанда...)

по ходу столкнулся с тем, что надо каким то образом отключить инициализацию фрэйм буффера ядром линукса в начале, и делать эту инициализацию в конце, перед самим запуском приложения. Не в курсе, как такое сделать?

Т.к. во время инициализации фрейм буффера ядро стирает мою картинку и рисует пингвина)
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 12.09.2011 16:18 Сообщение: 7
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
можно попробовать поиграть в п\п инита устройств в файле борды - поставить инит экрана последним, но большого эффекта это не даст..
хм.. а если в ядре тупо выключить "лого" (через менюконфиг) - счастье настанет?
еще существуют пакеты типа splash для рутовой..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
radist_ort
Добавлено 12.09.2011 16:29 Сообщение: 8
radist_ort
0

Пункты: 928
Регистрация: 04.04.2011
Пол: Мужчина
Из: Ukraine, Kharkov
Цитата
можно попробовать поиграть в п\п инита устройств в файле борды - поставить инит экрана последним, но большого эффекта это не даст..
хм.. а если в ядре тупо выключить "лого" (через менюконфиг) - счастье настанет?
еще существуют пакеты типа splash для рутовой..


лого выключал, тогда только чёрный экран :)
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 12.09.2011 23:08 Сообщение: 9
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
лого выключал, тогда только чёрный экран :)

что логично, сначала юбут интит контроллер, чтобы вывести буковки и картинку. потом все то же самое делает ядро.. и конечно рушит изображение нарисованное юбутом..
надо или доку на ядро читать или пилить драйвер экрана в ядре - в процедуре probe откусить инит контроллера LCD или чистку экрана..
впрочем, может это неправильный путь и есть более простые варианты..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Comatoz
Добавлено 19.12.2011 10:07 Сообщение: 10
Comatoz
0

Пункты: 105
Регистрация: 19.12.2011
to radist_ort
Получилось заставить убут показывать картинку?
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux