Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT91RM9200/linux
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
yuriypro
Я на самодельной плате завел линукс 2.4.27 с патчем от санпиплов. В принципе меня оно устраивает в том смысле что все работает. Единственное хочется полноценной поддержки USB 2.0, которая есть у 2.6. Есть ли у кого опыт с 2.6 на AT91RM9200?
yuriypro
неужели никто линукс не пользовал на атмеле?
d__
Ну я уже близок к тому, чтобы оживлять ядро 2.6.11.5. По крайней мере тулза GCC 2.4.3 и LIBC 2.3.3 сгенерированы и кросс-компилят кернель без ошибок. Остается решить проблемы связанные с размещением и загрузкой кернеля... Беспокоят размер кернеля-- в скомпрессированном виде он занимает порядка 900-1050к, а в развернутом порядка 1800к и это практически при всех вырубленных фичах...
yuriypro
Цитата(d__ @ Mar 21 2005, 11:23)
Ну я уже близок к тому, чтобы оживлять ядро 2.6.11.5. По крайней мере тулза GCC 2.4.3 и LIBC 2.3.3 сгенерированы и кросс-компилят кернель без ошибок. Остается решить проблемы связанные с размещением и загрузкой кернеля...


Размещением где? Вы его по езернету грузили?

2.6.11.5 это с патчем от Максима? http://maxim.org.za/AT91RM9200/2.6/

Цитата(d__ @ Mar 21 2005, 11:23)
Беспокоят размер кернеля-- в скомпрессированном виде он занимает порядка 900-1050к, а в развернутом порядка 1800к и это практически при всех вырубленных фичах...
*


У меня 64 мега памяти, поэтому разницы в этом отношении не много. 2.4.27-vrs1 голый весит под 500-600 кил в зипе, а со всем что нужно около мега.
d__
Ну по каким адресам должен лежать кернель, по каким адресам должен лежать рамдиск, как происходит процесс раскрутки изапуска кернеля-- где-то это все описано но как это найти?
yuriypro
Цитата(d__ @ Mar 21 2005, 15:10)
Ну по каким адресам должен лежать кернель, по каким адресам должен лежать рамдиск, как происходит процесс раскрутки изапуска кернеля-- где-то это все описано но как это найти?
*


Куда его класть не суть важно, этим занимается загрущик. Я использую U-Boot (http://u-boot.sourceforge.net/). Его же пользуют и атмеловцы. Есть и другие лоадеры, но мне и с этим нормально. Адрес рамдиска передается через параметр ядра. В У-Буте есть mkimage, который делает из имиджа ядра то, что потребно лоадеру.

По-поводу загрузки есть в кернеле: linux/Documentation/arm/Booting

Для рамдиска я заюзал cramfs, хотя это не принципиально, просто для него есть mkcramfs (http://developer.axis.com/), которая ест МЕТА файлы с описанием девайсовых нодов.

Может я чего не понимаю и в 2.6 все по другому?
d__
За прошедшую неделю узнал очень много нового, нашел много интересного для автоматизации генерации кернеля и системы, но к сожалению не удалось найти для автоматизации генерации вхождений в /dev директории системы по информации находящейся в ядре кернеля, только табличка заполняемая ручками...
yuriypro
Цитата(d__ @ Mar 27 2005, 23:36)
За прошедшую неделю узнал очень много нового, нашел много интересного для автоматизации генерации кернеля и системы, но к сожалению не удалось найти для автоматизации генерации вхождений в /dev директории  системы по информации находящейся в ядре кернеля, только табличка заполняемая ручками...
*


дык я ж по мылу скинул, не уж то не доехало?
dch
Цитата(d__ @ Mar 27 2005, 23:36)
в /dev директории

Можно подставить свое ядро для AT91RM9200 в дистрибутив uClinux,
там это автоматизировано. Заодно можно восспользоваться GLIBC,
приложениями пользователя входящими в состав uClinux и ихней системой
включения/выключения компиляции нужных вам приложений.
Если нужно подставить свое приложение или библиотеку, то там это тоже
просто делается.

Берете, копируете каталог с ядром на верхний уровень дистрибутива uClinux,
заменяете дефисы на точки в имене каталога, в конце имени добавляете ".x"
и ихняя система конфиругирования подхватит ваше ядро автоматом.

В каталоге vendor заводите свой каталог, например,
vendor/Atmel/<имя каталога> В нем должны находится файл конфигурации
вашего ядра, файл конфигурации приложений пользователя, файл config.arch,
который задает опции компилятора, Makefile, который в частности делает
/dev каталог. В качестве примера можно взять, любого vendor-a.

При настройке, как обычно запускаете в каталоге дистрибутива uClinux:

make menuconfig

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

Если нужно, могу выложить пример таких манипуляций для EVM9200.

При компиляции, на верхнем уровне будет создан каталог romfs, в котором
будут лежать скомпилированные приложения, библиотеки.
Обычно в файле vendor/Atmel/<имя каталога>/Makefile есть также команда
которая конвертит этот каталог в файл образа файловой системы, который
в свою очередь шьется во flash.
d__
Ха! 30 секунд полет нормальный!
Uncompressing Linux............................................................
done, booting the kernel.
Linux version 2.6.11.5 (root@neelnx) (gcc version 3.4.2) #3 Tue Mar 29
10:57:01 EEST 2005
CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Machine: ATMEL AT91RM9200
Memory policy: ECC disabled, Data cache writeback
Built 1 zonelists
Kernel command line: mem=8M console=ttyS0,115200
PID hash table entries: 64 (order: 6, 1024 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 8MB = 8MB total
Memory: 5220KB available (1514K code, 293K data, 84K init)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
checking if image is initramfs...it isn't (bad gzip magic numbers); looks like a
n initrd
Freeing initrd memory: 936K
NET: Registered protocol family 16
SCSI subsystem initialized
NetWinder Floating Point Emulator V0.97 (double precision)
Real Time Clock Driver v1.12
Non-volatile memory driver v1.2
AT91 SPI driver loaded
AT91 Watchdog Timer enabled (5 seconds)
ttyS0 at MMIO 0xfefff200 (irq = 1) is a AT91_SERIAL
ttyS1 at MMIO 0xfefc4000 (irq = 7) is a AT91_SERIAL
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: loaded (max 8 devices)
SLIP: version 0.8.4-NET3.019-NEWTTY (dynamic channels, max=256) (6 bit encapsula
tion enabled).
CSLIP: code copyright 1989 Regents of the University of California.
SLIP linefill/keepalive option.
Equalizer2002: Simon Janes (simon@ncm.com) and David S. Miller (davem@redhat.com
)
tun: Universal TUN/TAP device driver, 1.6
tun: © 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
eth0: Link now 100-FullDuplex
eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (00:00:00:a3:04:00)
eth0: Realtek RTL8201(cool.gifL PHY
$Id: ftl.c,v 1.54 2004/11/16 18:33:15 dwmw2 Exp $
physmap flash device: 200000 at 10000000
mice: PS/2 mouse device common for all mice
i2c /dev entries driver
Found AT91 i2c
at91_i2c: timeout 1
NET: Registered protocol family 2
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
NET: Registered protocol family 1
NET: Registered protocol family 17
RAMDISK: cramfs filesystem found at block 0
RAMDISK: Loading 936KiB [1 disk] into ram disk... done.
VFS: Mounted root (cramfs filesystem) readonly.
Initializing random number generator... rm: unable to remove `/etc/random-seed':
Read-only file system
urandom start: failed.
done.
Starting network...
run-parts: failed to open directory /etc/network/if-pre-up.d: No such file or di
rectory
ifup: /var/run/ifstate: Read-only file system
alexf
Я пытаюсь использовать 2.4.21rmk2 с платой от KwikByte.
Проблема с dataflash:

AT91 SPI driver loaded
at91_dataflash: Atmel AT45DB161B detected [spi0] (2162688 bytes)
Creating 3 MTD partitions on "Atmel AT45DB161B":
0x00000000-0x00010000 : "bootloader"
mtd: Giving out device 1 to bootloader

и тут зависает. Если отключить перемычку, то все грузится.

Вопросы:
1. кто нибудь на эти грабли наступал?
2. Где именно найти стабильное ядро для этой платы (KB9201(www.kwikbyte.com))
d__
Траблы с установкой MAC адреса: не удается с помощью ifconfig'а выставить в 2.6 собственный МАС адрес в эзернет AT91RM9200. Поиски в GOOGLE привели к какой-то дискусии в ARM Linux kernel типа "а вот как бы выставить МАС адрес? -- сам ты дурак..."
dch
Цитата(d__ @ Apr 27 2005, 09:24)
Траблы

там сделано MAC адрес выставляет u-boot, а Ethernet драйвер адрес использует выставленный, наверное, может быть
alexf
Цитата(dch @ Apr 27 2005, 10:15)
Цитата(d__ @ Apr 27 2005, 09:24)
Траблы

там сделано MAC адрес выставляет u-boot, а Ethernet драйвер адрес использует выставленный, наверное, может быть
*




Если выставлен, так останется. А если нет, то busybox вызываемый как ifconfig вполне справляется. Только есть одна тонкость: компилировать busybox надо с правильными .h файлами от ядра. Иначе он не работает. Более того - если ядро 2.4.27 а заголовки были 2.4.21 - и то не работает.
d__
Да, очень хорошая подсказка, показала правильное направление развития... Только надо не busybox, а uClibc собирать с правильными хедерами, а уж тогда Busybox собирается относительно uClibc и все чуки-пуки...
alexf
Цитата(d__ @ May 2 2005, 00:50)
Только надо не busybox, а uClibc собирать с правильными хедерами, а уж тогда Busybox собирается относительно uClibc и все чуки-пуки...
*


Наверное ВСЕ надо собирать с правильными хедерами smile.gif
Лично у меня не работал ifconfig hw пока не подставил ему что надо. А с uClibc не было проблем.
d__
А вот уважаемые коллеги подскажите что-нибудь про MTD. Нужен ли FTL для работы с JFFS2 или прямо можно будет монтировать и читать -писать в /dev/mtdblock/xxx ? Такой косноязычной документации как посвященной MTD я еще не видел...
Samum 095
Требуется плата
- Контроллер AT91RM9200 (Atmel)
- 8 Мбайт SPI flash AT45
- 16 Мбайт SDRAM (4M x 32)
- 1 асинхронный интерфейс 4 проводной (RS-485)
- 1 CAN внешний контроллер MCP2515 (SPI)
- 1 асинхронный интерфейс RS-232 (консоль)
- 10/100 Мбит/сек Ethernet интерфейс (RJ-45)
- 4 светодиода программно управляемых
- 32 контактный разъем для подключения питания, RS-485 и CAN
- USB host
- Разъем под MMC или SDC
- кнопка Reset
-Габариты платы 160 мм x 100 мм
-Напряжение питания 24В ± 10%
+ Тестовое ПО под Линукс
Кто сможет сделать, заключим немедленно контракт.
dch
Цитата(Samum 095 @ May 16 2005, 09:52)
Требуется

могу:
http://www.ucrouter.ru/contacts.html
mail@ucrouter.ru
dch
Поддержка AT91RM9200 для uClinux

http://www.ucrouter.ru/download/EVM9200-uC...41215.patch.tgz

1. Copy & Unpack uClinux distributive to opt
cp uClinux-dist-20041215.tar.bz2 /opt
cd /opt
tar -xjvf ./uClinux-dist-20041215.tar.bz2

2. Copy & Unpack Atmel Linux kernel to uClinux tree
cp linux-2.4.19-rmk7.tar.gz /opt/uClinux-dist
cd /opt/uClinux-dist
tar -xzvf linux-2.4.19-rmk7.tar.gz

3. Copy & apply EVM9200 support for linux-2.4.19-rmk7
cp linux-2.4.19-rmk7-EVM9200.patch /opt/uClinux-dist
cd /opt/uClinux-dist
cat ./linux-2.4.19-rmk7-EVM9200.patch | patch -p0
ln -s /opt/uClinux-dist/linux-2.4.19-rmk7 /opt/uClinux-dist/linux-2.4.19.rmk7.x

4. Copy & Apply EVM9200 support for uClinux
cp EVM9200-uClinux-20041215.patch /opt
cd ./opt
cat ./EVM9200-uClinux-20041215.patch | patch -p0

5. Configure & compile linux-2.4.19-rmk7 & uClinux user applications

type:
make menuconfig

From main menu select item: 'Vendor/Product Selection'

From 'Vendor/Product Selection' dialog
Select Vendor:
'(Atmel) Vendor'
Select Product:
'(EVM9200)'

From main menu select item:'Kernel/Library/Default Selection'

Аrom 'Kernel/Library/Default Selection' dialog
Select kernel version:(linux-2.4.19-rmk7.x)
and Libc Version : (glibc)

Select "Exit" to exit from 'make menuconfig' utility.

type:

make dep 2>&1 | tee make_dep.out
make | tee make.out

/opt/uClinux-s/images/ucImage - ядро для прошивки u-boot-ом
/opt/uClinux-s/images/ucInitrd - initrd диск для прошивки u-boot-ом
klogg
Я QNX завёл. Правда USB не поднимал - мне нет необходимости.
Загрузчик, драйвера Ethernet и UART писал сам. Сейчас флэшку прикручиваю.
dch
Цитата(klogg @ Jul 2 2005, 13:05)
Я QNX завёл
*

Вречатлениями не поделитесь? Как у них там ситуация с лицензиями.
Что поставляется в исходных тескстах, что в загрузочных модулях.
Откуда качать. Стоит эо чтонибудь или нет. QNX классная вещь.
vzn
А не подскажет ли народ близкий к AT91RM9200
какой-нибуть open source/hardware проект для этого процессора. Интересует подробная схематика, и печатная плата, плюс какая нибуть документация и тестовео ПО. (кроме atmel EK)

Интересно в образовательных целях, чтобы можно было отчего-то оттолкнутся.
dch
>open source/hardware(кроме atmel EK)
http://www.dlharmon.com/sbc.html
Schematics: gEDA gschem PCB Layout PCB
Сейчас gEDA, PCB стали включать в дистрибутивов Linux-а, по крайней мере в ASPLinux они есть.
klogg
Цитата(dch @ Jul 2 2005, 18:15)
Цитата(klogg @ Jul 2 2005, 13:05)
Я QNX завёл
*

Вречатлениями не поделитесь? Как у них там ситуация с лицензиями.
Что поставляется в исходных тескстах, что в загрузочных модулях.
Откуда качать. Стоит эо чтонибудь или нет. QNX классная вещь.
*



По порядку:
1. лицензии стоят денег (я не про лицензии места разработки, а про лицензии инсталляции ОС), у нас - около 200$. а вообще зависит от того, что входит в состав ОСи
2. вместе с средой разработки QNX Momentics PE поставляется куча искходников - DDK, BSP (Board Support Package - для портирования ОСи под конкретную плату и проц). в бинарниках поставляется ядро и различные программы - от простых типа ls, cat, mount до qnx-специфичных типа модуля io-net. за отдельные деньги у них существуют дополнительные специфические наборы разработчиков - т.н. TDK (Technology Development Kit)
3. качать неоткуда. только покупать. хотя чтобы поиграться есть QNX4.25 - бесплатная, и QNX6.xxNC - несколко обрезанная 6-я.
4. место разработчика соит $$$ и очень прилично... sad.gif хотя вообще-то эта цена растворяется в цене нашего устройства. если заинтересован в покупке - смотри на сайте QNX что где и как. а там тебе уже скажут сколько.

токо вчера файловую систему на флэшке поднял smile.gif
vzn
Цитата(dch @ Jul 4 2005, 19:10)
>open source/hardware(кроме atmel EK)
http://www.dlharmon.com/sbc.html
Schematics: gEDA gschem PCB Layout PCB
Сейчас  gEDA,  PCB стали включать в дистрибутивов Linux-а, по крайней мере в ASPLinux они есть.
*

Спасибо
Плохо только, что этот gEDA и PCB не совместимы с PCAD
klogg
Цитата(vzn @ Jul 4 2005, 16:04)
А не подскажет ли народ близкий к AT91RM9200
какой-нибуть open source/hardware проект для этого процессора. Интересует подробная схематика, и печатная плата, плюс какая нибуть документация и тестовео ПО. (кроме atmel EK)

Интересно в образовательных целях, чтобы можно было отчего-то оттолкнутся.
*


Тут вроде в этой ветке появлялся товарисч из проека uCrouter...
www.ucrouter.ru
dch
Цитата(vzn @ Jul 5 2005, 10:28)
PCAD

open source/hardware и PCAD плохо совместимы
7277
Цитата(klogg @ Jul 2 2005, 13:05)
Я QNX завёл. Правда USB не поднимал - мне нет необходимости.
Загрузчик, драйвера Ethernet и UART писал сам. Сейчас флэшку прикручиваю.
*


Ужасно интересно
никак нельзя bsp глянуть?
и что за железо потребовало написания драйверов Ethernet? и какую версию 6-ки использовали?
vvj
Цитата(yuriypro @ Mar 21 2005, 15:38)
В У-Буте есть mkimage, который делает из имиджа ядра то, что потребно лоадеру.
Интересная утилита этот mkimage - из 5ти вариантов сгенерированного им образа для uBoot'а, грузиться только один. Смотрю - а он к одному и тому же исходному zImage может добавить разные header'ы! При одинаковых параметрах и иходном зипованом бинарнике! Что он туда и время пишет? А большинство сгенерированных образов или виснут при их вызове (uBoot'ом) или перегружают проц (очевидно exeption). Повезло ещё что первые образы были удачные, ведь поначалу на подправленый мной kernel грешил.
Попробовал взять mkimage от версии (uBoot'а) 1.3 для linux'а, пока юзаю 1.1 для cygwin'а - таже фигня.
Может кто сталкивался?
Ещё интересная вещь - когда uBoot распаковывает образ, обращает на себя внимание сообщение насчёт Bad gzipped data:
Код
...
## Booting image at 20008000 ...
  Image Name:  
  Image Type:   ARM Linux Kernel Image (gzip compressed)
  Data Size:    810360 Bytes = 791.4 kB
  Load Address: 20008000
  Entry Point:  20008000
  Verifying Checksum ... OK
  Uncompressing Kernel Image ... Error: Bad gzipped data
GUNZIP ERROR - must RESET board to recover
OK
No initrd
## Transferring control to Linux (at address 20008000) ...

Starting kernel ...

Uncompressing Linux...................................................... done, booting the kernel.

Linux version 2.6.13.3 (root@linux) (gcc version 3.4.1) #1...

Это не смертельно? А то kernel вроде работоспособен smile3046.gif
Hercules
Цитата(vvj @ Oct 25 2005, 20:32)
Цитата(yuriypro @ Mar 21 2005, 15:38)
В У-Буте есть mkimage, который делает из имиджа ядра то, что потребно лоадеру.
Интересная утилита этот mkimage - из 5ти вариантов сгенерированного им образа для uBoot'а, грузиться только один. Смотрю - а он к одному и тому же исходному zImage может добавить разные header'ы! При одинаковых параметрах и иходном зипованом бинарнике! Что он туда и время пишет? А большинство сгенерированных образов или виснут при их вызове (uBoot'ом) или перегружают проц (очевидно exeption). Повезло ещё что первые образы были удачные, ведь поначалу на подправленый мной kernel грешил.
Попробовал взять mkimage от версии (uBoot'а) 1.3 для linux'а, пока юзаю 1.1 для cygwin'а - таже фигня.
Может кто сталкивался?
Ещё интересная вещь - когда uBoot распаковывает образ, обращает на себя внимание сообщение насчёт Bad gzipped data:
Код
...
## Booting image at 20008000 ...
  Image Name:  
  Image Type:   ARM Linux Kernel Image (gzip compressed)
  Data Size:    810360 Bytes = 791.4 kB
  Load Address: 20008000
  Entry Point:  20008000
  Verifying Checksum ... OK
  Uncompressing Kernel Image ... Error: Bad gzipped data
GUNZIP ERROR - must RESET board to recover
OK
No initrd
## Transferring control to Linux (at address 20008000) ...

Starting kernel ...

Uncompressing Linux...................................................... done, booting the kernel.

Linux version 2.6.13.3 (root@linux) (gcc version 3.4.1) #1...

Это не смертельно? А то kernel вроде работоспособен smile3046.gif
*


А почему у Вас сам скомпрессированный имидж лежит по тому же адресу, куда он должен грузиться?
Цитата
Код
## Booting image at 20008000 ...
  ...
  Load Address: 20008000
  ...

По идее, адрес, где скомпрессированный имидж лежит, и адрес куда он затем после распаковки грузится должны быть разные. А иначе Вы рискуете запортить свой скомпрессированный имидж.

Нормальная ситуация, когда скомпрессированный имидж лежит, например, во флешке, а u-Boot его затем из флешки распаковывает и грузит в SDRAM.

Hercules.
vvj
Цитата(Hercules @ Oct 26 2005, 10:04)
А почему у Вас сам скомпрессированный имидж лежит по тому же адресу, куда он должен грузиться?Hercules.

Сам пока не задумывался - до размещения linux'а во Flash дело не дошло. Пользовался инструкциями из документа "AT91RM9200DK U-Boot Developper Manual" :
Код
($U-BOOT-PATH)/tools > ./mkimage -A arm -O linux -T kernel -C gzip -a
0x20008000 -e 0x20008000 -d linux.bin.gz uImage /tftpboot/
и
Код
Uboot> tftp 20008000 uImage
Uboot> tftp 21100000 ramdisk
Uboot> setenv bootargs root=/dev/ram rw initrd=0x21100000,
60000000 ramdisk_size=15360 console=ttyS0,115200 mem=32M
Uboot> saveenv
Uboot> bootm 20008000 21100000
Hercules
Цитата(vvj @ Oct 26 2005, 11:28)
Цитата(Hercules @ Oct 26 2005, 10:04)
А почему у Вас сам скомпрессированный имидж лежит по тому же адресу, куда он должен грузиться?Hercules.

Сам пока не задумывался - до размещения linux'а во Flash дело не дошло. Пользовался инструкциями из документа "AT91RM9200DK U-Boot Developper Manual" :
Код
($U-BOOT-PATH)/tools > ./mkimage -A arm -O linux -T kernel -C gzip -a
0x20008000 -e 0x20008000 -d linux.bin.gz uImage /tftpboot/
и
Код
Uboot> tftp 20008000 uImage
Uboot> tftp 21100000 ramdisk
Uboot> setenv bootargs root=/dev/ram rw initrd=0x21100000,
60000000 ramdisk_size=15360 console=ttyS0,115200 mem=32M
Uboot> saveenv
Uboot> bootm 20008000 21100000

*


Вы немного неправильно делаете (у Вас неправильно указан адрес, куда нужно грузить скомпрессированное ядро linux-а). Нужно где-то так:
Код
Uboot> tftp 21000000 uImage
Uboot> tftp 21100000 ramdisk
Uboot> setenv bootargs root=/dev/ram rw initrd=0x21100000,60000000 ramdisk_size=15360 console=ttyS0,115200 mem=32M
Uboot> saveenv
Uboot> bootm 21000000

т.е. мы грузим скомпрессированное ядро linux-а по адресу 0x21000000, а ramdisk по адресу 0x21100000. Затем распаковывается и запускается ядро linux-а (команда bootm). Причем ядро после распаковки будет лежать начиная с адреса 0x20008000 и туда же будет передано управление т.к. "Load Address" так же был установлен на 0x20008000 (судя по той информации, что Вы привели "($U-BOOT-PATH)/tools > ./mkimage ..."). Указывать в команде bootm еще и адрес, где у нас лежит ramdisk не нужно, так как его распаковывать будет ядро linux-а (ему будет передана информация о том где лежит ramdisk в аргументах (bootargs)).

Командой setenv вы устанавливаете переменную bootargs в нужное значение. А затем командой saveenv Вы сохраняете все свое окружение во флэшку. При последующей загрузки u-Boot-а все сохраненные переменные будут востановлены. Т.е. до тех пор пока Вы сами не удалите переменную bootargs (например, командой setenv bootargs без указания значения переменной или сотрете тот сектор флешки, где у Вас располагаются переменные окружения) все последующие запуски linux-а можно делать так:
Код
Uboot> tftp 21000000 uImage
Uboot> tftp 21100000 ramdisk
Uboot> bootm 21000000

т.е. уже не нужно вы полнять команды:
Код
Uboot> setenv bootargs root=/dev/ram rw initrd=0x21100000,60000000 ramdisk_size=15360 console=ttyS0,115200 mem=32M
Uboot> saveenv


Вот в кратце вроде все. Пробуйте.
Hercules

PS. Надеюсь у Вас на tftp сервере, с которого осуществляется загрузка, скомпрессированное ядро лежит именно под именем uImage, а RAM диск под именем ramdisk.
vvj
Благодарю за исчерпывающий ответ, извиняюсь за то, что я привёл оригинальную выдержку из документа, где работают с DevKit'ом. У меня же в "раме", "всего" 16 метров. Сам использую скрипт для bootcmd:
Код
Uboot> printenv
bootdelay=3
baudrate=115200
ethaddr=12:34:56:78:9A:BC
bootargs=root=/dev/ram0 rw initrd=0x20410000,3145728 mem=16M console=ttyS0,115200
filesize=dcf68
ipaddr=10.0.3.2
serverip=10.0.3.1
flashit=tftp 20008000 uImage; tftp 20410000 root.cramfs; bootm 20008000
bootcmd=run flashit

а то уже снится стали эти "tftp 20008000 uImage tftp .."

Идею я понял, спасибо. Однако тогда не пойму как оно сейчас работает - ведь распаковывающийся образ, из-за бОльшего размера перетирает пакованный по тому же адресу uImage "быстрее"?

И вот ещё: что надо чтоб "пингануть" этот кастрированный Linux? Должен ли он это по умолчанию делать или добавить какой модуль надо? А то он кроме ls и cd других команд (типа ifconfig) не признаёт. Я понимаю, что это по идее отдельные апликации, но сам пока не знаю как делать тот самый rootfs. Пользуюсь одолженным. blush.gif

ЗЫ: и кто бы подсказал что это за число магическое: 60000000?
Код
setenv bootargs root=/dev/ram rw initrd=0x21100000,60000000 ramdisk_size=15360 console=ttyS0,115200 mem=32M

ЗЫ2:
Товарищ Hercules! Не работает Ваша теория: проверено несколько раз по 8ми и 10ти метровому адресу excl.gif
Код
Uboot> tftp 20800000 uImage
...
Uboot> tftp 20410000 root.cramfs
...
Uboot> bootm 20800000 ## Booting image at 20800000 ...
  Image Name:  
  Image Type:   ARM Linux Kernel Image (gzip compressed)
  Data Size:    810360 Bytes = 791.4 kB
  Load Address: 20008000
  Entry Point:  20008000
  Verifying Checksum ... OK
  Uncompressing Kernel Image ... Error: Bad gzipped data
GUNZIP ERROR - must RESET board to recover
OK
No initrd
## Transferring control to Linux (at address 20008000) ...

Starting kernel ...<прим:ПОВИС>
RRRR
Цитата(vvj @ Oct 26 2005, 13:26)
ЗЫ2:
Товарищ Hercules! Не работает Ваша теория: проверено несколько раз по 8ми и 10ти метровому адресу  excl.gif
Код
Uboot> tftp 20800000 uImage
...
Uboot> tftp 20410000 root.cramfs
...
Uboot> bootm 20800000 ## Booting image at 20800000 ...
  Image Name:  
  Image Type:   ARM Linux Kernel Image (gzip compressed)
  Data Size:    810360 Bytes = 791.4 kB
  Load Address: 20008000
  Entry Point:  20008000
  Verifying Checksum ... OK
  Uncompressing Kernel Image ... Error: Bad gzipped data
GUNZIP ERROR - must RESET board to recover
OK
No initrd
## Transferring control to Linux (at address 20008000) ...

Starting kernel ...<прим:ПОВИС>

*


Я хоть и не Hercules, но присоединюсь:

Может у Вас просто память (SDRAM) шалит?
И во-вторых, можно для начала вообще не сжимать ядро (с помощью mkimage), а делать plain image, и потом уже (для записи во флешку) делать zImage и его уже обрабатывать mkimage. Мне показалось что zImage разкручивается быстрее...

PS Посмотрел более ранние сообщения, у вас похоже ядро сжато дважды? Сначала u-boot рапортует про gzipped image, потом видим Uncompressing linux??? Это же двойное время на распаковку!
vvj
Убрал параметр -C gzip из mkimage, всё равно (uBoot) пытается его распаковать:
Код
## Booting image at 20008000 ...
  Image Name:  
  Image Type:   ARM Linux Kernel Image (gzip compressed)
  Data Size:    810360 Bytes = 791.4 kB
  Load Address: 20008000
  Entry Point:  20008000
  Verifying Checksum ... OK
  Uncompressing Kernel Image ... Error: Bad gzipped data
GUNZIP ERROR - must RESET board to recover
OK
No initrd
## Transferring control to Linux (at address 20008000) ...
Starting kernel ...
Uncompressing Linux...................................................... done, booting the kernel.

SDRAM впорядке. Если сазданный mkimage'ом образ виснет, то он виснет ВСЕГДА (раз пять подряд пробовал). Тогда делаю с того же(!) zImage'а ещё раз uImage пока не получу работающий образ. И этот образ грузится ВСЕГДА.
Короче этот mkimage клепает разные образы с одного и того же исходника!
RRRR
Цитата(vvj @ Oct 26 2005, 16:31)
Убрал параметр -C gzip из mkimage, всё равно (uBoot) пытается его распаковать
*


Попробуйте c ключом -С none
vvj
Цитата(RRRR @ Oct 26 2005, 18:33)
Попробуйте c ключом -С none

Семён Семёныч! Не дочитал я документ однако!

Но всё же избавление от повторной зиповки, не помогло избежать проблем с появлением виснущих образов wacko.gif
Hercules
А можно глупый вопрос?
Судя по:
Цитата(vvj @ Oct 26 2005, 21:48)
Код
Starting kernel ...
Uncompressing Linux...................................................... done, booting the kernel.
Linux version 2.6.13.3 (root@linux) (gcc version 3.4.1) #1...
*
и
Цитата(vvj @ Oct 26 2005, 21:48)
Код
($U-BOOT-PATH)/tools > ./mkimage -A arm -O linux -T kernel -C gzip -a 0x20008000 -e 0x20008000 -d linux.bin.gz uImage /tftpboot/
*

Вы вначале собираете ядро Linux-а версии 2.6.13.3, а затем при помощи mkimage получаете готовый имидж для u-Boot-а.
А почему Вы сразу при сборке ядра не получаете готовый имидж для u-Boot-а? Это можно сделать так:
make uImage
В ядре 2.4 такой возможности не было и действительно приходилось вначале собирать ядро, а затем самому получать имидж для u-Boot-а, а в ядре 2.6 уже есть (ядро 2.5 я не собирал, поэтому не знаю можно там сразу получить uImage или нет).
Hercules
Вот нашел у себя книжечку. Может пригодиться. Правда там все расказывается на примере ядра 2.4, а не 2.6, но все равно можно почитать.

Убрал аттач. Содержимое книги лежит в закромах по адресу /pub/DOC/Books/OS/Unix_linux/linux_embedded/oreilly.building.embedded.linux.systems
vvj
Цитата(Hercules)
Вот нашел у себя книжечку. Может пригодиться. Правда там все расказывается на примере ядра 2.4, а не 2.6, но все равно можно почитать.
Читаю читаю, спасибо.
Цитата(Hercules)
А почему Вы сразу при сборке ядра не получаете готовый имидж для u-Boot-а?

Так ведь тёмный я, не в въехал пока как ему при этом параметры "-e 20008000" и "-a 20008000" передавать.
ЗЫ: есть там правда в папке arch/arm/boot файл .uImage.cmd с узнаваемыми параметрами, но по сообщению "mkimage" command not found (при make uImage) понятно что это просто шелскрипт и сделает он тоже что и я.
d__
Заговор имени компакт флеша на AT91RM9200DK. Вот уж сколько времени я пытаюсь запустить компакт флеш на плате, схемотехника которой сильно похожа на субж. В майл листе посвященном данной теме проносятся какие-то обрывки информации о том, что данная плата имеет баг в этом отношении. Кто либо может подсказать или связать с человеком обладающим информацией по данной проблеме или запустившим компакт флеш любым способом под линух 2.6. Заранее благодарен.
Dimchansky
Цитата(yuriypro @ Mar 21 2005, 14:38) *
Я использую U-Boot (http://u-boot.sourceforge.net/). Его же пользуют и атмеловцы. Есть и другие лоадеры, но мне и с этим нормально. Адрес рамдиска передается через параметр ядра. В У-Буте есть mkimage, который делает из имиджа ядра то, что потребно лоадеру.

По-поводу загрузки есть в кернеле: linux/Documentation/arm/Booting


Немного не по теме, но правильно ли я понимаю, что У-Буту нету разницы, по какому USART я подключусь (в смысле, я хочу по RXD3, TXD3)? Я так понял, что это конфигурируется вначале?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.