|
|
  |
Linux для AT91SAM9260, Проблемы с ядром |
|
|
|
Mar 21 2008, 08:43
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(MTh @ Mar 21 2008, 10:04)  ФС лежит по адресу 0х21100000, ядро по 0х22200000 т.е. между ними около 20 МБ (знаю что много, пока поставил так,чтобы отладить  ) Еще вспомнил. Рекомендуется образ RAMDISK грузить в память по адресу MAX_MEM_ADDR - RAMDISK_SIZE. Не нужно воспринимать буквально, но нужно следовать принципу. Суть в том, что ядро распаковывается в нижние адреса при выключенном MMU (читай linux/Documentation/arm/Booting). Размер распакованного ядра будет не меньше чем размер файла vmlinux (посмотрите его размер). Если зазора не хватает - при распаковке ядра будет похерен образ RAMDISK (еще сжатый). Потом распаковывается RAMDISK, но на этот момент MMU уже включен, и ядро может управлять распаковкой RAMDISK.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 25 2008, 08:43
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(MTh @ Mar 25 2008, 02:27)  Итак, попытка сборки ядра 2.6.24 не удалась... вернее удалась, но ядро не видит RAM диск... никак....
(AT91_MATRIX_EBICSA и AT91_MATRIX_CS3A_SMC)... а будет ли работать? Проверить в железе пока возможности нет... На сколько я могу судить это выводы CS и/или другие управляющие выводы для NAND. Если да - то смотреть по схеме. Вожможно так-же, что при конфигурировании ядра был неправильно или не полностью сконфигурирован MTD NAND.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 25 2008, 09:05
|
Частый гость
 
Группа: Свой
Сообщений: 168
Регистрация: 26-05-05
Из: Москва
Пользователь №: 5 423

|
Цитата(MTh @ Mar 25 2008, 03:27)  Итак, попытка сборки ядра 2.6.24 не удалась... вернее удалась, но ядро не видит RAM диск... никак....
Решили пока остановиться на 2.6.19, от него удалось добиться стабильной сборки и запуска. Позволю себе небольшую ремарку. Юзайте ядро 2.6.22. На мой взгляд самое оно пока
|
|
|
|
|
Mar 25 2008, 09:25
|

Местный
  
Группа: Свой
Сообщений: 234
Регистрация: 28-02-06
Из: Иркутск
Пользователь №: 14 771

|
Цитата(slava2005 @ Mar 25 2008, 12:05)  Позволю себе небольшую ремарку. Юзайте ядро 2.6.22. На мой взгляд самое оно пока  Спасибо! Но это не раньше выходных.... кроме того опыта у меня маловато, хотя сидя без дела его не получишь.... Цитата На сколько я могу судить это выводы CS и/или другие управляющие выводы для NAND. Если да - то смотреть по схеме. Вожможно так-же, что при конфигурировании ядра был неправильно или не полностью сконфигурирован MTD NAND. Посмотрю. Спасибо.... Еще вопрос попутно :-[ Написал простенькую программку: Код # cat main.cpp #include <iostream> using namespace std;
int main() { cout << "g++ compiler test\n"; return 0; } Makefile: Код # cat Makefile main: main.o $(CC) -o main main.o
main.o: main.cpp $(CC) -c main.cpp Компилирую: Код # make ARCH=arm CC=arm-linux-uclibc-g++ arm-linux-uclibc-g++ -o main main.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__towupper_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strtold_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strftime_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__nl_langinfo_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__newlocale' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__freelocale' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wcsxfrm_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__iswctype_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__towlower_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strtod_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__uselocale' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strcoll_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wctype_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strxfrm_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wcsftime_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strtof_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wcscoll_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__duplocale' collect2: ld returned 1 exit status make: *** [main] Ошибка 1 Я что-то упустил при сборке? Хотя приложение (udp сервер) написанное на Си компилируется и работает "на УРА!"...
|
|
|
|
|
Mar 25 2008, 09:42
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(MTh @ Mar 25 2008, 11:25)  Код #include <iostream> using namespace std;
int main() { cout << "g++ compiler test\n"; return 0; } Makefile: Код main: main.o $(CC) -o main main.o
main.o: main.cpp $(CC) -c main.cpp В крне не верно!!!! Переменная CC - это C компилятор. Переменная CXX - это C++ компилятор. Переменная CPP - это C препроцессор. Эти перемнные проверяются make-ом. Используйте правильный синтаксис. Наберите в командной строке вот это Код arm-linux-uclibc-g++ -v -o main main.cpp Примечание: *-uclibc-* вообще-то расчитано на uClibc. Возможно используется glibc.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 26 2008, 00:26
|

Местный
  
Группа: Свой
Сообщений: 234
Регистрация: 28-02-06
Из: Иркутск
Пользователь №: 14 771

|
Цитата(amw @ Mar 25 2008, 12:42)  В крне не верно!!!! Переменная CC - это C компилятор. Переменная CXX - это C++ компилятор. Переменная CPP - это C препроцессор. Эти перемнные проверяются make-ом. Используйте правильный синтаксис. Наберите в командной строке вот это Код arm-linux-uclibc-g++ -v -o main main.cpp Примечание: *-uclibc-* вообще-то расчитано на uClibc. Возможно используется glibc. Вот что получается: Код # /usr/local/arm/gcc-3.4.6-uclibc/bin/arm-linux-uclibc-g++ -o main /home/mamonth/g++_test/main.cpp -v Reading specs from /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/specs Configured with: /root/arm/argussoft/toolchain_build_arm_nofpu_small/gcc-3.4.6/configure --prefix=/usr/local/arm/gcc-3.4.6-uclibc --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=arm-linux-uclibc --enable-languages=c,c++,objc --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --enable-shared --enable-threads --enable-multilib --with-float=soft --enable-sjlj-exceptions --with-float=soft Thread model: posix gcc version 3.4.6 /usr/local/arm/gcc-3.4.6-uclibc/libexec/gcc/arm-linux-uclibc/3.4.6/cc1plus -quiet -v -D_GNU_SOURCE -D__ARM_ARCH_3__ /home/mamonth/g++_test/main.cpp -quiet -dumpbase main.cpp -msoft-float -auxbase main -version -o /tmp/ccXMa3qM.s ignoring nonexistent directory "/usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/include" #include "..." search starts here: #include <...> search starts here: /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../include/c++/3.4.6 /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../include/c++/3.4.6/arm-linux-uclibc /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../include/c++/3.4.6/backward /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/include /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/sys-include End of search list. GNU C++ version 3.4.6 (arm-linux-uclibc) compiled by GNU C version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21). GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/bin/as -mfpu=softfpa -mfpu=softfpa -o /tmp/ccUYu4iU.o /tmp/ccXMa3qM.s /usr/local/arm/gcc-3.4.6-uclibc/libexec/gcc/arm-linux-uclibc/3.4.6/collect2 --eh-frame-hdr -dynamic-linker /lib/ld-uClibc.so.0 -X -m armelf_linux -p -o main /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/crt1.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/crti.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/crtbegin.o -L/usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6 -L/usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib /tmp/ccUYu4iU.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/crtend.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/crtn.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__towupper_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strtold_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strftime_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__nl_langinfo_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__newlocale' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__freelocale' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wcsxfrm_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__iswctype_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__towlower_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strtod_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__uselocale' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strcoll_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wctype_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strxfrm_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wcsftime_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strtof_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wcscoll_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__duplocale' collect2: ld returned 1 exit status Однако, если сделать вот так: Код # #arm-linux-uclibc-g++ -c main.cpp -o main И на выходе даже что-то получается... Код # arm-linux-uclibc-readelf -h main Заголовок ELF: Magic: 7f 45 4c 46 01 01 01 61 00 00 00 00 00 00 00 00 Класс: ELF32 Данные: дополнение до 2, little endian Версия: 1 (current) OS/ABI: ARM Версия ABI: 0 Тип: REL (Перемещаемый файл) Машина: ARM Версия: 0x1 Адрес точки входа: 0x0 Начало заголовков программы: 0 (байт в файле) Начало заголовков программы: 940 (байт в файле) Флаги: 0x200, GNU EABI, software FP Размер этого заголовка: 52 (байт) Размер заголовков программы: 0 (байт) Число заголовков программы: 0 Размер заголовков раздела: 40 (байт) Число заголовков раздела: 16 Индекс табл. строк загол. раздела: 13 однако это что-то потом не запускается... На целевой платформе выдается сообщение: Код # tftp -r main -g ХХ.ХХ.ХХ.ХХ # chmod +x main # ./main ./main: ./main: 1: Syntax error: word unexpected (expecting ")")
|
|
|
|
|
Mar 26 2008, 08:33
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(MTh @ Mar 26 2008, 05:04)  Вопрос снимается... проблема с компилятором.... А какая? Код /usr/local/arm/gcc-3.4.6-uclibc/libexec/gcc/arm-linux-uclibc/3.4.6/collect2 --eh-frame-hdr -dynamic-linker /lib/ld-uClibc.so.0 -X -m armelf_linux -p -o main /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/crt1.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/crti.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/crtbegin.o -L/usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6 -L/usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib /tmp/ccUYu4iU.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/crtend.o Проанализируйте на предмет наличия используемых библиотек (опции -l) в указанных путях (опции -L). А также соответствие форматов библиотек (поскольку --enable-multilib). Несколько смущает использование --enable-languages=c,c++,objc, у меня с objc были конфликты.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 26 2008, 16:02
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(MTh @ Mar 26 2008, 15:50)  Проблема как раз с баблиотеками для С++ (libsdtc++.so)... компилятор напрочь отказывается видеть процедуры и функции включенные в стандартные инклуды... в чем причина - понять не могу... А в самой библиотеке они есть? Судя по ошибке - нет. Тогда надо искать, в какой они библиотеке и подключить принудительно ее.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|