Ник:
Пароль:

Контакты

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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Отладочные платы » SK-MAT91SAM9XXXXX
Пересборка RooTFS
KakTyzzz
Добавлено 15.05.2010 13:55
0
Сообщение: 1
KakTyzzz
5

Пункты: 86
Регистрация: 28.01.2010
Пол: Мужчина
Из: Орёл
Итак, перечитав кучу веток на форуме, с горем пополам разобрался с внутренним устройством платы, где что хранится, как загружается, как пересобрать загрузчики и ядро и, главное, писать проги под этого "зверя" и возвращать поломаную прошивку назад )) .

Возник вопрос: "А как же нам "вкрутить" свою программу в dataflesh?"

По моим, сугубо личным представлениям, для решения этого вопроса необходимо должным образом пересобрать корневую файловую систему.
Вчитываясь тут http://dmilvdv.narod.ru/AT91SAM9260/index.html?linux.html , я так и не понял как участвуют бинарники программ, которые я хочу залить на плату при сборке.
Подскажите пожалуйста, кто как с этим борется и желательно поподробнее, от начала до конца, так сказать )). спасибо.

Учение - свет, а неучение - чуть свет и на работу
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 15.05.2010 16:53 Редактировалось 15.05.2010 17:03 Сообщение: 2
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Возник вопрос: "А как же нам "вкрутить" свою программу в dataflesh?"

допустим у вас есть бинарный исполнимый файл для АРМа
загружаем линукс на виртуальной машине от Павла
логинимся
переходим в каталог /home/user/src/rootfs
изучаем там два полезных скрипта
- mount_ramdisk - берет файл ramdisk.img и монтирует его в каталог ./mnt в виде развернутой структуры диска
в корень ./mnt или любой понравившийся каталог копируем свою программу
- umount_ramdisk демонтирует новую корневую, сжимает и копирует в /tftpboot/rootfs

пара советов - очень большой образ rootfs может не распаковаться при загрузке
ну и не забыть про права на запуск программы.. :)

предвосхищая следующий вопрос: -static

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
KakTyzzz
Добавлено 15.05.2010 20:17 Сообщение: 3
KakTyzzz
5

Пункты: 86
Регистрация: 28.01.2010
Пол: Мужчина
Из: Орёл
Я так и думал что в этих скриптах собака порылась. Спасибо.

Цитата
предвосхищая следующий вопрос: -static

Я так полагаю этот ключ к вопросу о компиляции программ, если да то это я уже осмыслил.

А какой размер rootfs является гарантированно допустимым и работает?

И раз уж пошла дискуссия о размере файловой системы, как перенести на USB flash или MMC карту, так как на моей плате например нету NAND flash, как выяснилось.
Я понимаю, что одним форматированием в файловую систему ext2 не обойтись, необходимо пересобирать ядро. Опять же пролистывая форум и вышеуказанный "учебник" не осознал пока, где меняется местонахождение файловой системы, её поддержка и тип.

Учение - свет, а неучение - чуть свет и на работу
Спуститься к концу Подняться к началу
Персональная информация
Artemius
Добавлено 15.05.2010 20:44 Редактировалось 15.05.2010 20:47 Сообщение: 4
Artemius
0

Пункты: 3655
Регистрация: 02.12.2009
Цитата
предвосхищая следующий вопрос: -static

А можно использовать компилятор, которым buildroot собирает корневую систему, тогда -static не обязателен. Этот компилятор располагается в <папка_buildroot>/output/staging/usr/bin/. Или наоборот заставить buildroot использовать ваш компилятор.

Цитата
как перенести на USB flash или MMC карту

Как запуститься с SD/USB Jury093 описывает в теме по установке Debian. Поддержка ext2 в ядре уже есть, раз у вас работает initrd.
Вроде еще придется сделать владельцем файлов корневухи root'а, я так делаю, но может можно как-то по-другому.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 15.05.2010 20:53 Редактировалось 15.05.2010 20:59 Сообщение: 5
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
к сожалению, мне прямо сейчас не проверить ниженаписанное, могу лишь общий план действий:
подмонтируйте свой накопитель USB-flash или SD/MMC
форматируете накопитель - флешку или SD в ФС ext/ext3
запустите скрипт mount_ramdisk
содержимое ./mnt копируете на носитель с целью получить дерево корневой системы на накопителе
запускаете скрипт umount_ramdisk, чтобы корректно закрыть образ ramdisk.img
отмонтируйте накопитель

теперь ядро
запуск конфигуратора ./make_menuconfig
подключаете поддержку нужной ФС ext2/ext3
подключаете поддержку нужного интерфейса накопителя USB/SD
откорректировать Kernel command line к виду
например у меня для usb-накопителя строка такая:
console=ttyS0,115200n8 rw rootdelay=10 mem=64M root=/dev/sda1
для SD-карточки такая:
console=ttyS0,115200n8 rw rootwait mem=64M root=/dev/mmcblk0p1
32/64 - свое число мегабайт
выйти из конфига с сохранением
запустить сборку ядра ./make_kernel

по идее, должно загрузиться, если что присутствующие поправят
обязательно сделайте копии рабочих файлов, чтоб была возможность откатиться назад..

update о! уже поправляют :)

Цитата
А какой размер rootfs является гарантированно допустимым и работает?

"..и опыт - сын ошибок трудных.." - если честно - я не знаю, тут похожее обсуждалось и не раз, ищите

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
KakTyzzz
Добавлено 17.05.2010 15:54 Сообщение: 6
KakTyzzz
5

Пункты: 86
Регистрация: 28.01.2010
Пол: Мужчина
Из: Орёл
Цитата

допустим у вас есть бинарный исполнимый файл для АРМа
загружаем линукс на виртуальной машине от Павла
логинимся
переходим в каталог /home/user/src/rootfs
изучаем там два полезных скрипта
- mount_ramdisk - берет файл ramdisk.img и монтирует его в каталог ./mnt в виде развернутой структуры диска
в корень ./mnt или любой понравившийся каталог копируем свою программу
- umount_ramdisk демонтирует новую корневую, сжимает и копирует в /tftpboot/rootfs


Всё - правда. Работает. Спасибо.)

Учение - свет, а неучение - чуть свет и на работу
Спуститься к концу Подняться к началу
Персональная информация
KakTyzzz
Добавлено 19.05.2010 01:57 Редактировалось 19.05.2010 10:24 Сообщение: 7
KakTyzzz
5

Пункты: 86
Регистрация: 28.01.2010
Пол: Мужчина
Из: Орёл
Цитата
запуск конфигуратора ./make_menuconfig
подключаете поддержку нужной ФС ext2/ext3
подключаете поддержку нужного интерфейса накопителя USB/SD
откорректировать Kernel command line к виду
например у меня для usb-накопителя строка такая:
console=ttyS0,115200n8 rw rootdelay=10 mem=64M root=/dev/sda1
для SD-карточки такая:
console=ttyS0,115200n8 rw rootwait mem=64M root=/dev/mmcblk0p1
32/64 - свое число мегабайт
выйти из конфига с сохранением
запустить сборку ядра ./make_kernel

Попробовал - не работает)))
Вообщем походу всё включено.
Поменял только cmd line
CONFIG_CMDLINE="console=ttyS0,115200n8 rw rootwait mem=32M root=/dev/mmcblk0p1"
Меня смутило root=/dev/mmcblk0p1 - откуда это и как это определить?
На форуме мелькнула фраза о том, что SD иногда и на /dev/sda1 подцепляется, может в этом и дело?!
При загрузке вот такая картина

Тра-ля-ля..........................
Starting kernel ...

Linux version 2.6.24 (root@armmaker) (gcc version 4.2.0 20070413 (prerelease) (C
odeSourcery Sourcery G++ Lite 2007q1-10)) #24 Wed May 21 12:30:50 MSD 2008
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053173
Machine: Starterkit.ru SK-MAT91SAM9XE
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 200 MHz, master 100 MHz, main 12.000 MHz
CPU0: D VIVT write-back cache
CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128
Kernel command line: console=ttyS0,115200n8 rw rootwait mem=32M root=/dev/mmcblk
0p1
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 128 (order: 7, 512 bytes)
Console: colour dummy device 80x30
console [ttyS0] enabled
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 32MB = 32MB total
Memory: 29692KB available (2408K code, 226K data, 108K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 64 bytes
NET: Registered protocol family 16
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Time: pit clocksource has been installed.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
NetWinder Floating Point Emulator V0.97 (double precision)
JFFS2 version 2.2. (NAND) (SUMMARY) В© 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler anticipatory registered (default)
atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL
atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL
atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL
RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
loop: module loaded
ssc ssc.0: Atmel SSC device at 0xc2870000 (irq 14)
MACB_mii_bus: probed
eth0: Atmel MACB at 0xfffc4000 irq 21 (00:00:00:00:00:00)
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:01, irq=-1)
Driver 'sd' needs updating - please use bus_type methods
atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffc8000 (irq 12)
mtd_dataflash spi0.0: AT45DB321x (4224 KBytes)
usbmon: debugfs is not available
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1
at91_ohci at91_ohci: irq 20, io mem 0x00500000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
udc: at91_udc version 3 May 2006
mice: PS/2 mouse device common for all mice
i2c /dev entries driver
usbcore: registered new interface driver usbhid
drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
Waiting for root device /dev/mmcblk0p1...

И висим...

Учение - свет, а неучение - чуть свет и на работу
Спуститься к концу Подняться к началу
Персональная информация
KakTyzzz
Добавлено 19.05.2010 09:46 Редактировалось 19.05.2010 10:19 Сообщение: 8
KakTyzzz
5

Пункты: 86
Регистрация: 28.01.2010
Пол: Мужчина
Из: Орёл
Попробовал собрать ядро для загрузки с USB флешки.
Исправил cmdline /dev/sda1
Подсоединив sd карту - то же самое что и до этого - висим
Всунув usb флешку с rootfs ситуация немножко изменилась

Waiting for root device /dev/sda1...
scsi 0:0:0:0: Direct-Access JetFlash Transcend 2GB 8.07 PQ: 0 ANSI: 2
sd 0:0:0:0: [sda] 3944446 512-byte hardware sectors (2020 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] 3944446 512-byte hardware sectors (2020 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Assuming drive cache: write through
sda: sda1
sd 0:0:0:0: [sda] Attached SCSI removable disk
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 108K
Warning: unable to open an initial console.

Значит почему-то половина файлов не копируются из подмонтированного /mnt, что сейчас, что до этого, ошибка при копировании, это нормально?
И возможно чтото с правами доступа.
И ещё - питание от usb.

Учение - свет, а неучение - чуть свет и на работу
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 19.05.2010 10:22 Сообщение: 9
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
к сожалению инета у меня нет - пробегам мимо компа с ним
в сообщение 7 - похоже не включена поддержка SD в ядре
в логе про SD ничего не видно
в сообщение 8 есть фраза из лога unable to open an initial console - есть соответствующий тред - надо в /dev заранее создать console и проверить там же null

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 19.05.2010 10:51 Редактировалось 19.05.2010 10:52 Сообщение: 10
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
...или включить в ядре devfs. Хотя в 2.6.24 вроде еще не было
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-MAT91SAM9XXXXX