Ник:
Пароль:

Контакты

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

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
rootfs SK-AT91SAM9260-S3E
tenkjm
Добавлено 20.01.2010 18:03 Редактировалось 20.01.2010 20:33
0
Сообщение: 1
tenkjm
0

Пункты: 772
Регистрация: 09.10.2009
Собираюсь добавить новые службы в стандартную rootfs, поставляемую с платой и загружать её по сети командой

U_BOOT> run tftp_boot

Просто добавить в смонтированный образ не получилось из-за ограниченного размера - 4 Мб.
Больше в DataFlash и не входит.

Тогда я

создал образ нужного размера, отформатировать в ext2, скопировал содержимое стандартного rootfs, переименовал в ramdisk.img, исполнил скрипты mount_rootfs и umount_rootfs, а затем U_BOOT>RUN TFTP_BOOT

образ создал следующими командами:
dd if=/dev/zero of=/home/user/MyFilesystem.img bs=512 count=25000

затем омформатировал
mkfs.ext2 MyFilesystem.img

Полученный архив rootfs оказался в /tftpboot (5,3 mb)



Далее при загрузке следующая ошибка:
RomBOOT initia
>Start AT91Bootstrap...192K size 1024 blocksiz
Copy application ...
Run ...


U-Boot 1.1.5 (Apr 29 2008 - 20:23:52)
ssc ssc.0: Atmel SSC de

DRAM: 64 MB0000 (irq 14
NAND: NAND device: Manufacturer ID: 0xec, Chip ID: 0xd_mii_bus: probed

Nb pages: 8192fffff:01, irq=-1
Page Size: 528
Size= 4325376 bytes
Logical address: 0xC0000000ting - please use bus_type
Area 0: C0000000 to C0003FFF (RO)
NFT
Area 1: C0004000 to C0007FFFn: 1.98 $, nftlmount.c $Revi
Area 2: C0008000 to C0037FFF (RO)
Area 3: C0038000 to C041FFFF: Manufacturer ID: 0xec, Chi
*** Warning - bad CRC, using default environment

In: serial
t)
Out: serial-bit, <NULL>
Err: serial
KS8721 PHY Detected for bad blocks
ETH: 100M Full Duplex.
Bad eraseblock 345
End of Autonegociation
Hit any key to stop autoboot: 000
U-Boot> run tftp_boot1 at 0x0a520000
Load address: 0x20400000artition 2"
Loading: #################################################################ffc8000 (irq 12)
#################################################################
usbmon: debugfs is not available
#################################################################
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1
#################################################################91_ohci: irq 20, io mem 0x00500000
##################on #1 chosen from 1 choice
done
Bytes transferred = 1422886 (15b626 hex) 1-0:1.0: USB hub found
TFTP from server 192.168.0.2; our IP d

#################################################################
mice: PS/2 mouse device common for all mice
#################################################################bcore: registered new interface driver usbhid
#################################################################
TCP cubic registere
#######################################################
NET: Registered protocol family 17
done
Bytes transferred = 1610868 (189474 hex)ransport module.
## Booting image at 20400000 ... transport module.
Image Name: Linux Kernel
Entry Point: 20008000
Verifying Checksum ... OKry: 116K
Uncompressing Kernel Image ... OK
mount: Mounting none on /dev

Starting kernel ...file or directory

Linux version 2.6.24 (root@armmaker) (gcc version 4.2.0 20070413 (prerelease) (Coup name: utmp
yaffs: dev is 32505857 name is "mt
odeSourcery Sourcery G++ Lite 2007q1-10)) #61 Thu Aug 28 21:29:58 MSD 2008
yaffs: Attempting MTD mount on 31.1, "mtdblock1"
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177ing yaffs2
block 282 is bad
Machine: StarterKit.ru SK-AT91SAM9XE512-S3E
block 1258 is bad

Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
eth0: link up (100/Full)
mount: Mounting /dev/sd
Kernel command line: root=/dev/ram0 rw initrd=0x23100000,0x500000 console=ttyS0,
Please press Enter to activate this console. RomBOOT
115200 mem=64M
AT91: 96 gpio irqs in 3 banksotstrap...
PID hash table entries: 256 (order: 8, 1024 bytes...



Mount-cache hash table entries: 512
Area 0: C0000000 t
CPU: Testing write buffer coherency: ok
Area 1: C0004000 to C0007FFF
net_namespace: 64 bytes
Area 2: C0008000 to
NET: Registered protocol family 16
Area 3: C0038000 to C0
SCSI subsystem initialized
*** Warning - bad
usbcore: registered new interface driver usbfs

In: serial
usbcore: registered new interface driverErr: serial

JFFS2 version 2.2. (NAND) (SUMMARY) &#194;© 2001-2006 Red Hat, Inc.
done
Bytes transferred = 1422886 (1
yaffs Apr 22 2008 10:39:18 Installing.
TFTP from server 192.168.0
io scheduler noop registered (default)
atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIALs: 0x23100000
Loading: ####################
atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL
######
atmel_usart.2: ttyS2 at MMIO 0xfffb8000 (irq = 8) is a ATMEL_SERIAL

RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize###
loop: module loaded
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bi #################################################################
t)
AT91 NAND: 8-bit, <NULL> ECC

Scanning device for bad blocks##############################
Bad eraseblock 345 at 0x02b20000
Bad eraseblock 1321 at 0x0a520000
Creating 2 MTD partitions on "at91_nand":#########################################
0x00000000-0x00800000 : "Partition 1"
0x00800000-0x10000000 : "Partition 2"#####################################
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
done

usbcore: registered new interface driver usb-storage Kernel Image (gzip compressed)
USB Mass Storage support registered. Data Size: 1422822 Bytes = 1.
udc: at91_udc version 3 May 2006
Load Address: 200
mice: PS/2 mouse device common for all micet: 20008000
Ve
i2c /dev entries driver
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RAMDISK: Compressed image found at block 0
RAMDISK: incomplete write (-28 != 32768) 8388608
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 116K
attempt to access beyond end of device
ram0: rw=0, want=16508, limit=16384
EXT2-fs error (device ram0): ext2_get_inode: unable to read inode block - inode=
1633, block=8253
Warning: unable to open an initial console.
attempt to access beyond end of device
ram0: rw=0, want=16512, limit=16384
EXT2-fs error (device ram0): ext2_get_inode: unable to read inode block - inode=
1654, block=8255
attempt to access beyond end of device
ram0: rw=0, want=16498, limit=16384
EXT2-fs error (device ram0): ext2_get_inode: unable to read inode block - inode=
1600, block=8248
Kernel panic - not syncing: No init found. Try passing init= option to kernel.


Со rootfs от Павла загрузка по сети проходит без ошибок.

Подскажите пожалуеста в чем моя ошибка и как можно создать rootfs для загрузки по сети или с mmc.
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 20.01.2010 18:13 Сообщение: 2
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
Проще всего конечно положить на SD/MMC. Отформатируйте карту в ext2, скопируйте туда дерево файлов как есть. Kernel command line сделайте "rootwait root=/dev/mmcblk0p1 console=ttyS0,115200"
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 20.01.2010 19:59 Редактировалось 20.01.2010 20:00 Сообщение: 3
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Относительно логики создания rootfs, принцип правильный, только даже я сам не смог его реализовать (натыкался примерно на такое же поведение системы), в итоге когда то взял rootfs от какой то из плат для 9200 и подменил ее содержимое на свое (с тех далеких пор к этому вопросу не возвращался), отсюда и эти "выкрутасы" с монтированием-размонтированием (а не создание и копирование).
Хотя этот метод представляет интерес разве что из академических соображений, когда дальше начнете наполнять корневуху, поймете что потратите тучу времени на сборку требуемых утилит, как догадываетесь, радикальное решение buildroot, сейчас он во вполне "вменяемом" состоянии, обсуждение здесь там же и конфиги есть.
Спуститься к концу Подняться к началу
Персональная информация
tenkjm
Добавлено 20.01.2010 20:36 Сообщение: 4
tenkjm
0

Пункты: 772
Регистрация: 09.10.2009
Те для включения

Kernel command line сделайте "rootwait root=/dev/mmcblk0p1 console=ttyS0,115200
нужно пересобрать ядро?
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 20.01.2010 20:56 Редактировалось 20.01.2010 20:58 Сообщение: 5
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
Не обязательно. Можно подправить в переменых u-boot

Совет пользоваться buildroot хороший. Я буквально месяц назад его использовал (свежий) - все работает.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 20.01.2010 21:00 Редактировалось 20.01.2010 21:45 Сообщение: 6
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
Не пользуйтесь старьем initrd - используйте _нормальный актуальный на данный момент метод_ initramfs. Там достаточно в конфиге просто указать путь к rootfs, при сборке ядра все будет автоматически сделано. Если поискать здесь на форуме все давно разжевано. initrd _во всем_ хуже initramfs.

Цитата

нужно пересобрать ядро?


Небольшой хинт - не обязательно ядро очищать make clean после изменения конфига и сборкой. Изменяйте конфиг и просто make - сильно экономит время :)

2Strijar
Цитата
Kernel command line сделайте "rootwait root=/dev/mmcblk0p1 console=ttyS0,115200"


console=ttyS0,115200 - это у Павла еще с первых плат видимо тянется :) Если заглянуть в исходники, linux-xy/arch/arm/mach-at91/board-sam9260ek.c

static void __init ek_map_io(void)
{
/* Initialize processor: 18.432 MHz crystal */
at91sam9260_initialize(18432000);

/* DBGU on ttyS0. (Rx & Tx only) */
at91_register_uart(0, 0, 0);

/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
| ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
| ATMEL_UART_RI);

/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);

/* set serial console to ttyS0 (ie, DBGU) */
at91_set_serial_console(0);

}

Т.о. консоль и так будет на ttyS0 по умолчанию.
Спуститься к концу Подняться к началу
Персональная информация
tenkjm
Добавлено 21.01.2010 18:57 Редактировалось 21.01.2010 19:15 Сообщение: 7
tenkjm
0

Пункты: 772
Регистрация: 09.10.2009
А как SD карточку правильно отформатировать?

Я использовал

sudo mkfs.ext2 /dev/mmcbk0p1

Была под ДОС левой кнопкой в Ubuntu кликаю там в свойствах

Filesystem type: ext3/ext4

Kernel command line настраивал в U-BOOT
U-Boot>setenv bootargs rootwait root=/dev/mmcblk0p1

далее в логе загрузки
--------------------------------------------------------------------
.......
CPU0: D cache: 8192 bytes, associativity 4, 32 byte li
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: root=/dev/mmcblk0p1 console=ttyS0,115200
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
.........
-----------------------------------------------------------------
Ошибка выскочила по поводу педеданных параметров
-------------------------------------------------------------------------
.........
RPC: Registered tcp transport module.
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "mmcblk0p1" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
1f00 8192 mtdblock0 (driver?)
1f01 253952 mtdblock1 (driver?)
1f02 4224 mtdblock2 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
------------------------------------------------------------------------
(на флеш скопировал содержимое примонтированной во временную папку rootfs)
Думаю флеш не так отформатирована
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 21.01.2010 20:40 Редактировалось 21.01.2010 20:42 Сообщение: 8
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Kernel command line: root=/dev/mmcblk0p1 console=ttyS0,115200

rootwait root=/dev/mmcblk0p1 console=ttyS0,115200
есть одно маленькое но существенное отличие
:)

ЗЫ ядро берет параметры из своего брюшка а не переменных юбута

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
tenkjm
Добавлено 21.01.2010 22:12 Сообщение: 9
tenkjm
0

Пункты: 772
Регистрация: 09.10.2009
Так тоже пробовал, тогда загрузка останавливается и пишет
wait root
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 21.01.2010 22:46 Сообщение: 10
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
У вас случайно драйвер mmc не динамическим модулем собран ? Это я к тому что так было раньше на диске с платой - сейчас не знаю. Если да - это проблема яйца и курицы :) Для чтения root нужен драйвер mmc который лежит в root. Все что касается mci, mmc и фс должно быть собрано статически.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux