Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Старый форум » SK-MAT91SAM9XE512
Загрузка linux напрямую с bootstrap минуя вторичный загрузчик
sasamy (Guest)
Добавлено 30.11.1999 00:00 Редактировалось 09.04.2009 11:40
0
Сообщение: 1
sasamy (Guest)

Topic opened
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 21.01.2009 02:21 Редактировалось 21.01.2009 02:21 Сообщение: 2
sasamy (Guest)

Я тут подумал - зачем мне вообще нужен u-boot, если можно dataflash записывать из под linux как mtd разделы... и написал небольшое дополнение к bootstrap которое сразу запускает ядро linux. Испробовано на bootstrap-1.11. Что я имею в итоге:
1) Ядро linux с initramfs
2) В dataflash только bootstrap и ядро
Цитата
# cat /proc/mtd
dev: size erasesize name
mtd0: 00004200 00000210 "bootstrap"
mtd1: 0041be00 00000210 "kernel"

3) Ядро не нужно готовить каким-то mkimage, оно уже готово к прошивке после сборки и лежит в ../linux-2.6.x.y/arch/arm/boot/zImage - все как на большом linux :) К тому же u-boot после прошивки ядра через cp отказывался грузить его ссылаясь на ошибку crc, сейчас все ок.
4) Прошивка dataflash простым cp - спасибо repairman за отличную идею.
В аттаче переделаный main.с - не стал делать патч - можно просто заменить то что в исходниках этим файлом, он там прямо в корне лежит. Если нужно - легко дописать загрузку и с initrd, дело буквально пары минут - мне это уже не интересно :)
Если заливать изначально из самбы то bootstrap как обычно через специальный скрипт а образ ядра по адресу 0x4200. Если через cp то как готовить бинарник bootstrap я недавно описывал. С ядром ничего не надо делать - копировать обычный zImage.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно sasamy 21.01.2009 г. в 18:48:19
Спуститься к концу Подняться к началу
starterkit (Guest)
Добавлено 21.01.2009 08:36 Редактировалось 21.01.2009 08:36 Сообщение: 3
starterkit (Guest)

Спасибо за участие!
Пост в котором описывается подключение DataFlash партиции в Linux здесь.
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 21.01.2009 11:07 Редактировалось 21.01.2009 11:07 Сообщение: 4
sasamy (Guest)

На всякий случай в аттаче конфиг от моего bootstrap - частота процессора отличается от стандартной стартеркитовской для использования аудиокодека - имейте ввиду.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно sasamy 21.01.2009 г. в 18:48:50
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 25.01.2009 22:32 Редактировалось 25.01.2009 22:32 Сообщение: 5
sasamy (Guest)

Немного еще переделал bootstrap - сейчас он заточен под starterkit, появилась командная строка для передачи параметров ядру, настраиваемая по времени автозагрузка (загрузка если не нажимать ничего). Загрузчик занимает 4 кбайт флеша - все остальное под образ ядра с инитрамфс. Если нужна поддежка initrd и той схемы загрузки как была в starterkit - это буквально одна строчка в main.c. Я намеренно не стал это дописывать - мне очень понравилась идея initramfs - собственно для этого я и переписал загрузчик. В аттаче все исходники. Частота оптимизирована под использование аудиокодека. Если кого заинтересует - могу написать подробней как им пользоваться. Сборка так же как и в bootstrap - команда make в директории mbs/board/at91sam9260ek/dataflash. makefile настроен на кросскоапилятор arm-none-linux-gnueabi - он должен быть в пределах видимости шела (в PATH), можно указать и другой - главное чтобы полученный бинарный файл был меньше 3950 байт (примерно так - точней не знаю) - иначе ядро не грузится)
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 25.01.2009 22:41 Редактировалось 25.01.2009 22:41 Сообщение: 6
sasamy (Guest)

Для пробы в аттаче мой бинарник ядра с initrafs. В самбе загрузчик залить через специальный скрипт для бутлоадера, имидж ядра залить по адресу 0х1080. В командной строке загрузчика указать
boot: loglevel=0 mem=32M
без этого работать не будет - это из-за моего драйвера для lcd.

Погорячился :) Форум не дает больше 2 Мгбайт залить... Имидж можно скачать тут Еще раз напомню - имидж заливается тот который получается после сборки ядра - не нужно с ним больше ничего делать - просто найти zImage в дереве исходников. Аттаче - бинарник загрузчика.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно sasamy 25.01.2009 г. в 23:02:11
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 25.01.2009 23:33 Редактировалось 25.01.2009 23:33 Сообщение: 7
sasamy (Guest)

Тут описание с примером на которое я ориентриовался.
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 26.01.2009 13:36 Редактировалось 26.01.2009 13:36 Сообщение: 8
sasamy (Guest)

Поковырял исходники - освободил около 700 байт, так что на очереди поддержка протокола xmodem и загрузка ядра по нему с терминала. Если хватит места возможно будет и прошивка этого образа в dataflash.
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 27.01.2009 06:14 Редактировалось 27.01.2009 06:14 Сообщение: 9
sasamy (Guest)

Сделал поддержку xmodem - теперь ядро можно загружать с любого терминала поддерживающего этот протокол. Для реализации записи на dataflash места уже не хватит. Чтобы начать загрузку по xmodem нужно в командной строке ввести команду xe:
boot: xe
после этого можно отсылать zImage. Теоретически можно подсунуть любой бинарник, но почему-то u-boot например не работает если его запускать с адреса 0x21000000. Я не стал разбираться - знаю что если например запустить его с этого загрузчика по адресу 0х21D00000 то заработает...Ну и нужно помнить что на этом этапе отключены прерывания и оба кеша - данных и команд. Хотел дописать чтобы можно было указать адрес в ram по которому производить запись и последующий запуск - но никак не могу уложиться в 4 кбайта - это предел sram для кода на этом этапе загрузки. Я собирал старым тулчайном который 2007q - более новый 2008q генерирует слишком большой бинарник и он не влазит в 4 кбайта.
Спуститься к концу Подняться к началу
alexey123 (Guest)
Добавлено 27.01.2009 10:53 Редактировалось 27.01.2009 10:53 Сообщение: 10
alexey123 (Guest)

sasamy, идея и реализация понятна. Непонятна цель:)
чем насолил uboot?
1. ядро по TFTP записывать/обновлять быстрее, чем по xmodem
2. можно память тестировать (nm), писать в порты, и вообще - руками щупать периферию процесора..
3. место жрет на dataflash? впаять 8М и забыть

в конечном устройстве нет нужды перешивать ядра и отлаживаться? это до той поры, пока устройство не окажется в ремонте (у вас на столе). а возиться с ним всяко удобнее имея uboot...

где недостаток от его присутствия?
Спуститься к концу Подняться к началу
Форум » starterkit.ru » Старый форум » SK-MAT91SAM9XE512