Ник:
Пароль:

Контакты

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 » Embedded Linux
Strijar (Guest)
Добавлено 23.01.2009 16:16 Редактировалось 23.01.2009 16:16 Сообщение: 11
Strijar (Guest)

Надо не забыть что sam-ba на плате "запустится" только если не найдет прогу на DataFlash - надо перед подачей питания разомкнуть J6, потом подать питание и замкнуть снова. При этом в терминале (rs-232) появится что то типа RomBOOT>

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно Strijar 23.01.2009 г. в 16:16:37
Спуститься к концу Подняться к началу
starterkit (Guest)
Добавлено 23.01.2009 16:31 Редактировалось 23.01.2009 16:31 Сообщение: 12
starterkit (Guest)

Действительно, спасибо за уточнение.
Спуститься к концу Подняться к началу
Strijar (Guest)
Добавлено 23.01.2009 18:33 Редактировалось 23.01.2009 18:33 Сообщение: 13
Strijar (Guest)

По моему эти вопросы уже обсуждались "сто тыщь мильонов" раз ;) - если бы не лепили все в одну кучу, и читали то что уже написано...
Спуститься к концу Подняться к началу
Tyug (Guest)
Добавлено 01.02.2009 20:38 Редактировалось 01.02.2009 20:38 Сообщение: 14
Tyug (Guest)

Спасибо всем ответившим, очень помогает этот форум.
Сам я с линуксом на уровне пользователя, с ядрами и прочими внутренностями не работал никогда.
Почитал про большой линукс, появились вопросы по маленькому.
Как я уже понял на плате сидят 2 загрузчика (bootstrap, u-boot), ядро и образ корневой файловой системы.
Большая просьба пояснить что есть что.

Я понимаю что для гуру ответы наверное очевидны, но поиск в гугле займёт гораздо больше чем 15 минут вашего времени,
да и с наскока получилось найти весьма поверхностные знания

1. В двух словах что есть что?


vmlinux
zlinux
linux.bin

Судя по папке tftpboot
zlinux как раз и является тем самым ядром коорое нужно заливать
на плату

2.Вот листинг директории rootfs из /home/user/src



mkimage - видимо создает ramdisk.img - из чего?

mount_ramdisk - с этим понятно
umount_ramdisk - с этим понятно

starterkit писал
6) Коренвая ФС создается в "ручную" (без builtrootfs), лежит в /home/user/src/rootfs.
Порядок манипуляций:
а)запускаете скрипт mount_ramdisk добавляете/удаляете необходимое,
б)запускаете скрипт umount_ramdisk. Утилиты для коревой ФС (busybox ...) лежат /home/user/utils


ramdisk.img - образ корневой ФС, откуда он получается? Неужели всё вручную пишется, и структура папок, и скрипты и т.п.?
ramdisk.orig - ?
ramdisk.gz - ? разархивировал, полученный бинарник не совпадает ни с одним из ramdisk*

rootfs - ?



3. Заливается это дело в dataflash я полагаю по отдельности

u-boot 0x21D00000
ядро 0х20000000
корневая ФС 0х21100000

А где bootstrap? Или это и есть встроенный загрузчик самбы?
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 01.02.2009 22:05 Редактировалось 01.02.2009 22:05 Сообщение: 15
sasamy (Guest)

Цитата
u-boot 0x21D00000
ядро 0х20000000
корневая ФС 0х21100000

Это адреса в ram куда их копирут загрузчики. Старт происходит следующим образом:
1 стартует программа самого at91sam9260 - она ищет устройства с которых можно загрузиться или в конце концов если нет таких - samba (подробней - даташит раздел 13, стр 75)
2 в нашем случае она находит валидный загрузчик на dataflash (условия валидности - считывание первых 28 байт и проверка правильности векторов прерываний за исключением №6 где должен быть размер загрузчика в байтах) под названием boostrap, загружает его во внутреннюю sram и передает ему управление
3 bootstrap переключает осциллятор на высокоскоростной режим, настраивает plla, pllb, master clock, processor clock, контроллер внешней sdram, dbgu, gpio, spi - dataflash, копирует с определенного в его конфиге адреса из dataflash программу по определенному в конфиге адресу в ram - теперь уже адресуется весь доступный объем и передает ей управление (в нашем случае это u-boot)
4 u-boot любым доступным методом (tftp, dataflash, nand, usb и тд) получает ядро копирует его по определнному в конфиге адресу, отключает кеши и прерывания и запускает ядро.

Состояние dataflash есть в первом посте в сообщении u-boot
Цитата

DataFlash:AT45DB321
Nb pages: 8192
Page Size: 528
Size= 4325376 bytes
Logical address: 0xC0000000
Area 0: C0000000 to C0003FFF (RO)
Area 1: C0004000 to C0007FFF
Area 2: C0008000 to C0037FFF (RO)
Area 3: C0038000 to C041FFFF

Если из этих адресов вычесть Logical address: 0xC0000000 - то во второй колонке получите физические смещения в dataflash.
Только эта таблица немного неправильная :) Там 5 разделов
1 bootstrap
2 u-boot env
3 u-boot
4 kernel
5 initrd image (rootfs)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно sasamy 01.02.2009 г. в 22:26:33
Спуститься к концу Подняться к началу
Tyug (Guest)
Добавлено 01.02.2009 23:35 Редактировалось 01.02.2009 23:35 Сообщение: 16
Tyug (Guest)

sasamy, спасибо большое.
Я правильно понимаю что если я хочу залить ядро то мне нужно записать его по конкретному адресу во флэшку, например самбой?
с ramdisk вроде разобрался чуть чуть только не пойму какие параметры забить для mkimage, разные rootfs получаются на выходе, хоть размер тот же(по сравнению с тем что идёт на диске).
А что есть u-boot-env?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно Tyug 01.02.2009 г. в 23:36:45
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 02.02.2009 00:49 Редактировалось 02.02.2009 00:49 Сообщение: 17
sasamy (Guest)

Цитата
Я правильно понимаю что если я хочу залить ядро то мне нужно записать его по конкретному адресу во флэшку

Да правильно. Хотя если вы легких путей не ищите - можно записать куда угодно :) Этот адрес указан в конфиге u-boot в его командах для загрузки (в конфиге, они созданы автором). Конфиг находится тут
u-boot-1.1.5/include/configs/at91sam9260ek.h
Цитата
#define CONFIG_BOOTCOMMAND "run boot_df"

#define CONFIG_EXTRA_ENV_SETTINGS
"tftp_update=tftpboot 20400000 zlinux; cp.b 20400000 c0038000 170000; tftpboot 20400000 rootfs;
cp.b 20400000 c01a8000 277fff�"
"tftp_boot=tftpboot 20400000 zlinux; tftpboot 21100000 rootfs; bootm 20400000�"
"boot_df=cp.b c0038000 20400000 170000; cp.b c01a8000 21100000 277fff; bootm 20400000�"

Вот тут хоошо видно
boot_df=cp.b c0038000 20400000 170000
u-boot копирует ядро (вернее кусок памяти в котором ядро должно уместиться) с физического адреса 0х38000 датафлэша по адресу в ram 20400000 (размер 0х170000 байт)
Цитата
А что есть u-boot-env?

Это место для переменных окружения самого u-boot hint: по идее нафик не нужно и на самом деле пропадает зря если вы после прошивки u-boot не сделаете saveenv о чем и говорит u-boot в первом посте этого треда:
*** Warning - bad CRC, using default environment
он не читает оттуда ничего а берет то что зашито у него в теле при сборке. Если после прошивки в командной строке u-boot набрать saveenv то он их туда запишет, при следующей загрузке будет читать уже оттуда и сообщение об ошибке пропадет. Поэтому в переменные коружения можно переопределить-переписать-написать новые соотвественно с адресами какие душе угодны :)
Цитата
не пойму какие параметры забить для mkimage, разные rootfs

Это есть в скриптах автора в rootfs - umount_ramdisk и помоему никаких mkimage для rootfs не требуется (просто gzip).

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно sasamy 02.02.2009 г. в 01:12:32
Спуститься к концу Подняться к началу
Tyug (Guest)
Добавлено 03.02.2009 00:39 Редактировалось 03.02.2009 00:39 Сообщение: 18
Tyug (Guest)

Цитата
Это есть в скриптах автора в rootfs - umount_ramdisk и помоему никаких mkimage для rootfs не требуется (просто gzip).

Да, действительно, проглядел.
Спасибо огромнейшее, теперь всё стало намного понятнее.
Скажите а файловую систему ядро само тащит с флэшки в память или же в ядро зашит какой то минимум?
Просто скопировал u-boot'ом в память одно ядро и всё равно всё запустилось и файловая система есть,
затем загрузил ядро а файловую систему залил по ком порту, загрузилась моя файловая система.
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 03.02.2009 01:07 Редактировалось 03.02.2009 01:07 Сообщение: 19
sasamy (Guest)

Цитата
Скажите а файловую систему ядро само тащит с флэшки в память


Не совсем понял о чем речь. Флээш она разная - если dataflash и речь идет о том варианте загрузки который у автора - то имидж ram-диска в ram копирует загрузчик (u-boot в данном случае) а ядру передаются через строку парметров параметры рамдиска - адрес в рам и размер а также что root нужно искать на рамдиске (в конфиге ядра - параметр CONFIG_CMDLINE="root=/dev/ram0 rw initrd=0x21100000,0x500000 mem=32M console=ttyS0,115200")
Если речь об usb,mmc,sd флэше то в этом случае ядру передается параметр root=/dev/sda1, /dev/mmcblk0p1 например - это говорит ядру где нужно искать корневую фс и оно ее монтирует само.
Вслучае рамдиска параметры можно передать и из загрузчика - там есть специальные тэги initrd2 и ramdisk, в данном случае он не используется а парметры передаются через командную строку ядра.
Спуститься к концу Подняться к началу
Tyug (Guest)
Добавлено 03.02.2009 12:09 Редактировалось 03.02.2009 12:09 Сообщение: 20
Tyug (Guest)

дада, я говорил про датафлэш что на плате.
Я загрузил ядро в оперативную память, а рамдиск не загружал,
потмо сделал bootm 20400000 и всё загрузилось, хотя я ожидал что не загрузится потому что рамдиск я не подгружал в память.
Вот и не пойму как же оно загрузилось...
Про mmc спасибо, хочется сделать ФС на mmc, а то все чем я привык пользоваться отсутствует и не убирается в dataflash,
хотя наверное проще будет купить ethernet кабель.
А кто нибудь знает подойдёт только кросс или обычный тоже можно?
Спуститься к концу Подняться к началу
Форум » starterkit.ru » Embedded Linux