Ник:
Пароль:

Контакты

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 » Embedded Linux
sasamy (Guest)
Добавлено 22.11.2008 12:43 Редактировалось 22.11.2008 12:43 Сообщение: 31
sasamy (Guest)

>Я даже смонтировал angstrom JFFS2 Image
>Он очень большой для RAMDISK ( ~12MB). Памяти всего 32MB.

Что-то у вас каша в голове - зачем размещать это на рамдиске. На http://www.angstrom-distribution.org есть образы rootfs в tar.gz. Распаковываете его на флэш-диске c любой ФС поддерживаемой ядром (лучше конечно нежурналируемой ext2). То что зашито в dataflash используется в качестве initrd а далее монтируется root которая на флэше. JFFS2 - ФС специально разработанная для флэш-дисков но для тех которые являются mtd-устройствами а не блочными устройствами - отсюда ваш геморой с монтированием образа :) Изначальный смысл образа initrd - разместить небольшую rootfs в рам-диске, подгрузить необходимые модули для поддержки железа и ФС основной rootfs, смонтировать ее и сделать pivot_root - эта команда отмонтирует старую rootfs, освобождает память от рамдиска и запускает процесс /sbin/init в новой смонтированной rootfs как будто это сделало ядро - т.е. этому процессу будет дан pid = 1. Далее init выполняет загрузочные скрипты согласно сценариям загрузки.
Спуститься к концу Подняться к началу
starterkit (Guest)
Добавлено 22.11.2008 13:10 Редактировалось 22.11.2008 13:10 Сообщение: 32
starterkit (Guest)

Кстати, насколько я знаю, в новых ядрах грозятся убрать поддержку initrd оставив только Initramfs в котором корневуха влинуовывается в ядро.
Насчет linuxrc можно здесь почитать.
Кстати, JFFS2 не лучший выбор, если в предыдущий раз размонтирование прошло аварийно (что в наших условиях происходит очень часто) при последующем монтировании она начнет начнет "задумываться" и причем временной интервал ее размышлений будет только увеличиваться с ростом аварийных отключений, вроде есть какие то патчи и может сейчас что изменилось.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно starterkit 22.11.2008 г. в 13:17:11
Спуститься к концу Подняться к началу
MiniMax (Guest)
Добавлено 25.11.2008 10:53 Редактировалось 25.11.2008 10:53 Сообщение: 33
MiniMax (Guest)

2starterkit
Спасибо за ссылку.
2sasamy
Все мои проблемы были из-за того, что я не мог собрать Busybox используя arm-elf-gcc+newlib.
Поэтому я и пытался вытащить файлы с большого JFFS2, чтобы попробовать их на моей плате в составе RAMDISK.
Это уже решено.
Я загрузил Sourcery G++ Lite из CodeSourcery и собрал Busybox при помощи arm-arm-none-linux-gnueab+GLIBC.
Это все работает.

Теперь остался последний этап (hello world).
Пробовал компилить с различными опциями. Пока не работает.
Это мой последний вариант Makefile

TARGET=hello.elf
OBJECTS=hello.o
CC=arm-none-linux-gnueabi-gcc
CFLAGS=-Wall -static -mcpu=arm926ej-s -static-libgcc
LDFLAGS=
LIBS=
.PHONY: all
all: $(TARGET)
$(TARGET): $(OBJECTS)
$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
.PHONY: clean
clean:
-$(RM) $(TARGET) $(OBJECTS) hello.txt

ELF файл компилится. Но при запуске на плате пишет Not found.

CodeSourcery говорит
http://www.codesourcery.com/gnu_toolchains/arm/portal/kbentry47

GLIBC Not Found
Question
Why do I get "Not found" or libc.so.6 errors when trying to run applications on my target system?
Answer

This often occurs when running binaries generated by CodeSourcery's toolchain on existing Linux systems.
It probably means you don't have the correct GLIBC and associated dynamic loader installed on your target board.
Please see the following FAQ entry on how to install CodeSourcery's GLIBC.

http://www.codesourcery.com/gnu_toolchains/arm/portal/kbentry48

Но на этом этапе я не хочу использовать разделяемые/динамические библиотеки.
Мне достаточно иметь статически слинкованное приложение (наподобие Busybox).
Просмотрел, как собирается Busybox.
Похоже, что они только используют -static. И все работает у них.

Что-то с моим Makefile неправильно.
Есть у кого-то готовый Makefile для таких простых задач (наподобие hello world)?
Спуститься к концу Подняться к началу
starterkit (Guest)
Добавлено 25.11.2008 11:11 Редактировалось 25.11.2008 11:11 Сообщение: 34
starterkit (Guest)

Цитата
CFLAGS=-Wall -static -mcpu=arm926ej-s -static-libgcc

Насколько я понимаю, при таких параметрах линкуются не все библиотеки, "нормальный" makefile есть, например, в /home/user/src/utils/tip
Спуститься к концу Подняться к началу
MiniMax (Guest)
Добавлено 25.11.2008 11:28 Редактировалось 25.11.2008 11:28 Сообщение: 35
MiniMax (Guest)

starterkit
У меня нет этого "нормального" makefile.
Можно его опубликовать ?
Спуститься к концу Подняться к началу
starterkit (Guest)
Добавлено 25.11.2008 11:48 Редактировалось 25.11.2008 11:48 Сообщение: 36
starterkit (Guest)

Я чего то не пойму, Вы не на SK-MAT91SAM9XE512 упражняетесь?
Спуститься к концу Подняться к началу
MiniMax (Guest)
Добавлено 25.11.2008 12:08 Редактировалось 25.11.2008 12:08 Сообщение: 37
MiniMax (Guest)

starterkit
Спасибо за Makefile. Заработало

У меня другая плата.
См. http://www.starterkit.ru/new/index.php?name=Forums&op=showtopic&id=131&pagenum=1#2
Сообщение номер 2
Спуститься к концу Подняться к началу
rw9uao (Guest)
Добавлено 25.11.2008 14:13 Редактировалось 25.11.2008 14:13 Сообщение: 38
rw9uao (Guest)

можно и не в статике собирать. только /lib нужно положить все использованные библиотеки, типа той-же libc.so.6
Спуститься к концу Подняться к началу
ivanz (Guest)
Добавлено 15.01.2009 17:07 Редактировалось 15.01.2009 17:07 Сообщение: 39
ivanz (Guest)

Здравтвуйте,
напишите подробнее ка настроить initrd?
Спуститься к концу Подняться к началу
starterkit (Guest)
Добавлено 15.01.2009 19:46 Редактировалось 15.01.2009 19:46 Сообщение: 40
starterkit (Guest)

А что Вы хотите насраивать в initrd?
Спуститься к концу Подняться к началу
Форум » starterkit.ru » Embedded Linux