Kitsok Posted April 11, 2006 Posted April 11, 2006 Знаете, у меня сейчас мозг взорвется. Имеется дерево исходников от 5460, там, в исходниках ядра имеется директория drivers/flash/nor. В этой директории лежит nor_core.lib, из которого должен получиться nor.o, реалтковский закрытый драйвер NOR-флеша. В конфиге сказано, CONFIG_FLASH_NOR, однако этот nor.o упорно не хочет появляться. Куда копать? Вставить ник Quote
N.leiten Posted April 12, 2006 Posted April 12, 2006 ЭЭЭ, вообще-то там уже скомпиленная библиотека лежит nor_core.lib и ее проблематично настраивать. У меня еще есть директория export в ней есть исходники, но это другие файлы, по-моему никак не касающие библиотеку. Вставить ник Quote
Kitsok Posted April 12, 2006 Posted April 12, 2006 Ну у меня тоже есть export, но похоже, что драйвера среди этих исходников нету. И, даже если в конфиге ядра сказано CONFIG_FLASH_NOR, этот драйвер реально не собирается и в ядро не вставляется. В итоге отсутствует доступ из flash к собственно флеш-памяти, и ничего не работает, MAC-адреса отсутствуют, и т.д. и т.п. Чего с этим делать - пока не знаю... Вставить ник Quote
N.leiten Posted April 12, 2006 Posted April 12, 2006 ЭЭЭ, вообще-то там МАС-адреса есть, просто мы их стираем при перезаписи прошивки вот и все. Струкутра прошивки с использованием команды flash такая же как и в официальной прошивке. так что искать МАС нет смысла. Вставить ник Quote
Kitsok Posted April 12, 2006 Posted April 12, 2006 А вот и нет. Конкретно. Заливаю прошивку (ядро+рамдиск), заливаю веб-странички, заливаю даже конфиг. Перезаливаю много раз. Потом откатываюсь на старую прошивку, от производителя - все конфиги сохранены, вплоть до пароля на VPN Так как драйвер подцепить? ;) Вставить ник Quote
Kitsok Posted April 12, 2006 Posted April 12, 2006 Не знаю, правильно это или нет, но я сделал так: mips-linux-gcc -I /home/kostik/acorp/build/wr254x1/linux-2.4.18/include/asm/gcc -D__KERNEL__ -I/home/kostik/acorp/build/wr254x1/linux-2.4.18/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -G 0 -mno-abicalls -fno-pic -DR3000 -mips1 -pipe -nostdinc -g -DJACKSON_NET_WORK -gstabs+ -c nor_cmds.c -o nor_cmds.o mips-linux-gcc -I /home/kostik/acorp/build/wr254x1/linux-2.4.18/include/asm/gcc -D__KERNEL__ -I/home/kostik/acorp/build/wr254x1/linux-2.4.18/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -G 0 -mno-abicalls -fno-pic -DR3000 -mips1 -pipe -nostdinc -g -DJACKSON_NET_WORK -gstabs+ -c nor_info.c -o nor_info.o cd ../ mips-linux-ld -G 0 -r -o nor.o export/nor_info.o export/nor_cmds.o nor_core.lib после чего добавил drivers/flash/nor/nor.o в основной Makefile, и сборщик его подобрал. Буду пробовать вечером, получилось или нет ;) Добавка: получилось ;) Вставить ник Quote
dgreen Posted April 12, 2006 Author Posted April 12, 2006 Заливаю прошивку (ядро+рамдиск), заливаю веб-странички, заливаю даже конфиг. Перезаливаю много раз. Потом откатываюсь на старую прошивку, от производителя - все конфиги сохранены, вплоть до пароля на VPN здесь просто реалтеки перестраховались. У них 3 (вот это избыточность) копии настроек. А все прошивки в нете работают максимум с двумя. А родные ртслеживают, если что не так - на старте переливают из первой. Вот кусок из родного init.sh # See if flash data is valid$TOOL test-hwconf if [ $? != 0 ]; then echo 'HW configuration invalid, reset default!' $LOADDEF fi $TOOL test-dsconf if [ $? != 0 ]; then echo 'Default configuration invalid, reset default!' $LOADDEFSW fi $TOOL test-csconf if [ $? != 0 ]; then echo 'Current configuration invalid, reset to default configuration!' $LOADDS fi так что ничего другого во флеше нет. Можешь ее через /dev/mtd открыть и всю прочесть - читается все 2 метра. Вставить ник Quote
dgreen Posted April 12, 2006 Author Posted April 12, 2006 а, еще. NOR флеша там нет. Я не шибко специалист в типах фоеша - но, как сказанно в даташите по 8186 Support boot from NAND type to reduce total bone cost и ни слова о загрузке с NOR. А поскольку система таки грузится, то значит флеш типа NAND. Вставить ник Quote
Alexnik Posted April 12, 2006 Posted April 12, 2006 Угу слава богу что flash параметры они пределали (3 экземляра и сравнение при прошивке) ... а я вот на днях ovis 1120 востанавливал .. (слетела нафиг вся прошивка - и к томуже в области где храняться параметры получился бардак полный) ... кроме как залить туда shortlinux и дать через rs-232 команду flash reset hardaware - , больше ничего не помогло - все прошивки отваливались в кернел паник !!! а после данной процедуры асе прошивки работали - специально проверил (поначалу было впечатленин в физической неисправности - типа флеш микруха накрылась частично) ..... Вставить ник Quote
Kitsok Posted April 12, 2006 Posted April 12, 2006 Можно поискать даташит на Intel 28F160, но мне лень. В моем конкретном WR-G стоит именно NOR флешка. И в даташите на 8186 об этом написано в разделе Memory Controller. Кроме этого, практика - лучший критерий истины ;) : RealTek Nor-Type Flh System Driver. © 2002 RealTek Corp. Found 1 x 2M Bye Intel TE28F160C3 flash: init complete (31), size 2048(KB) blks 1024 hs 512 RealTek E-Flash System Driver. © 2002 RealTek Corp. Cannot find driver for DiskOnChip Millennium at 0x6000 Can't allocate major number 31 for Memory Technology Devices. Вставить ник Quote
Alexnik Posted April 12, 2006 Posted April 12, 2006 Kitsok, а все наверно просто .. неправильно опрелеляет ядро флешку .... иль вообще такой просто не знает ... Вставить ник Quote
Kitsok Posted April 13, 2006 Posted April 13, 2006 ;) Я наверное неправильно вопрос поставил. Попробую еще раз. Итак, есть дерево исходников, в котором есть в бинарном виде драйвер NOR-type флеша. Лежит в директории drivers/flash/nor: root@:/home/kostik/acorp/build/wr254x1/linux-2.4.18/drivers/flash/nor# ls -al * -rwxr-xr-x 1 kostik kostik 418 2005-06-07 13:48 Config.in -rwxr-xr-x 1 kostik kostik 301 2005-06-07 13:48 Makefile -rw-r--r-- 1 root root 834 2006-04-12 19:39 make.sh -rwxr-xr-x 1 kostik kostik 15112 2005-06-07 13:48 nor_core.lib -rw-r--r-- 1 root root 211453 2006-04-13 01:08 nor.o export: итого 20 drwxr-xr-x 2 kostik kostik 160 2006-04-13 10:50 . drwxr-xr-x 3 kostik kostik 208 2006-04-13 10:50 .. -rwxr-xr-x 1 kostik kostik 155 2005-06-07 13:48 Makefile -rwxr-xr-x 1 kostik kostik 2829 2005-06-07 13:48 nor_cmds.c -rwxr-xr-x 1 kostik kostik 5819 2005-06-07 13:48 nor_info.c -rwxr-xr-x 1 kostik kostik 315 2005-06-07 13:48 struct.h root@:/home/kostik/acorp/build/wr254x1/linux-2.4.18/drivers/flash/nor# nor/Makefile : root@:/home/kostik/acorp/build/wr254x1/linux-2.4.18/drivers/flash/nor# cat Makefile obj-y += nor_core.lib obj-m := obj-n := obj- := O_TARGET := nor.o export-objs := list-multi := mod-subdirs := subdir-y := subdir-m := subdir-$(CONFIG_FLASH_NOR) += export obj-$(CONFIG_FLASH_NOR) += export/export.o include $(TOPDIR)/Rules.make root@11:/home/kostik/acorp/build/wr254x1/linux-2.4.18/drivers/flash/nor# В конфиге ядра (.config) опция CONFIG_FLASH_NOR включена: root@:/home/kostik/acorp/build/wr254x1/linux-2.4.18# cat .config | grep CONFIG_FLASH_NOR CONFIG_FLASH_NOR=y root@:/home/kostik/acorp/build/wr254x1/linux-2.4.18# Однако при сборке ядра (make) nor.o не компилируется, т.е. даже не пытается. Более того, он не попадает в Makefile (основной), поэтому его приходится вставлять туда руками: DRIVERS-$(CONFIG_FLASH_NOR) += drivers/flash/nor/nor.o Но и в этом случае make не пытается скомпилировать nor.o, он лишь включает его в список объектных модулей ядра на этапе линковки, что вызывает ошибку, т.к. модуля нету. Пришлось руками скомпилировать nor.o из nor_cmds.c, nor_info.c и nor_core.lib, после чего все заработало. Вопрос: почему при компиляции ядра компилятор не пытается скомпилировать nor.o сам? P.S. После "ручной" процедуры все прекрасно работает - ядро через этот модуль определяет флешку, конфиги читаются, точка конфигурится и т.д. Вставить ник Quote
dgreen Posted April 13, 2006 Author Posted April 13, 2006 Почему не ставится сам ? Потому что SDK, которое гуляет по инету не есть полностью доделанное. Т.е. дрова под NOR выпущенны реалтеком, но не используются в точках типа 5460 и т.д. и писатели конфигов и майков не утруждали себя доделыванием этого. Вопрос в другом. В принципе. А тебе зачем все это ? Эсть готовый работающий доступ к флешу через /dev/mtb - зачем еще что-то ? Тот же флеш - вид сбоку ? Вставить ник Quote
dgreen Posted April 13, 2006 Author Posted April 13, 2006 У меня вопрос к линуксоидам. Где (и как) ядро грузит файловую, собранную как sqfs. Немогу найти точку обращения к флешу за куском, начинающимся с сигнатуры ROOT Задача стоит в том, чтобы смонтировать эту вот sqfs не в корень, а в отдельную папку. А в корень смонтировать рамдиск, прилинкованный к ядру. Может кто посоветует - где искать Монтирования корня проходит в fs/super.c - но вот что-то именно доступа к sqfs там нет. Вечером конечно еще посижу - но может кто уже искал.... и даже находил ? Вставить ник Quote
Kitsok Posted April 13, 2006 Posted April 13, 2006 Отвечаю на первый вопрос (про mtd). Потому, что мне нужно было до сегодняшнего дня сделать работающую прошивку. Я сделал ;) Переделывать все "с нуля" времени не было. И без дров под NOR доступа к флешу все-равно бы не было. Про файловую систему. А вот не следом ли за ядром (с рамдиском) оно лежит? Точно, там и лежит. Гляди в RTL8186 Linux system note.doc, там написано. Вставить ник Quote
Kitsok Posted April 13, 2006 Posted April 13, 2006 Судя вот по этому, шьется по адресу 100000 echo "============Create Squashfs=====================" rm squashfs.o #$MKCRAMFS $RAMFSDIR cramfs.o -r $MKSQUASHFS $RAMFSDIR squashfs.o -be echo "doing CVIMG" $CVIMG root squashfs.o root.bin 100000 100000 ROOTSIZE=`du -s $RAMFSDIR | cut -f1` IMGSIZE=`du -s squashfs.o | cut -f1` echo "==============================================" echo "Summary:" echo "==>Squashfs disk size = $ROOTSIZE KBytes" echo "==>Squashfs image size = $IMGSIZE KBytes" Вставить ник Quote
dgreen Posted April 13, 2006 Author Posted April 13, 2006 Kitsok, доступ к флешу был, есть и будет без дров NOR. Сам подумай - ядро файловую берет ? Настройки берет ? веб-странички берет ? Откуда ? Из флеша. И берет он ее через /dev/mtd, который в свою очередь формируется mtd_четатам.o, который в дровах реалтека в папке линуха. Доступ есть - просто попробуй :) Я ужо давно работаю напрямую с флешем - возьми исходники моей прошивки (где-то здесь на ветке есть ссылка), и посмотри файлик flash_sr - он пишет и читает флеш без дополнительных дров. По второй мессаге. Где лежит корневая система во флеше - и так понятно. Даже если она вдруг потеряется - найти ее по сигнатуре ROOT не составляет труда. Мне не понятно, где ее монтирует ядро (вернее, уже почти понятно. Кому интересно - посмотрите init/main.c и fs/stat.c - очень глубокомысленное решение по сборке ядра от реалтека. Руки бы повырывал таки программистам.) В общем - сегодня я таки прицеплю sqfs поверх intrd - уже знаю как. А это снимает ограничение на RO_FS при 8 метрах оперативки. Вставить ник Quote
adron2 Posted April 13, 2006 Posted April 13, 2006 У меня вопрос к линуксоидам.Где (и как) ядро грузит файловую, собранную как sqfs. Немогу найти точку обращения к флешу за куском, начинающимся с сигнатуры ROOT Задача стоит в том, чтобы смонтировать эту вот sqfs не в корень, а в отдельную папку. А в корень смонтировать рамдиск, прилинкованный к ядру. Может кто посоветует - где искать Монтирования корня проходит в fs/super.c - но вот что-то именно доступа к sqfs там нет. Вечером конечно еще посижу - но может кто уже искал.... и даже находил ? Может pivot_root подойдет. Вроде все то он и делает. Вставить ник Quote
Alexnik Posted April 13, 2006 Posted April 13, 2006 dgreen, Дааа ... помоему так и есть ... исходя из pivot_root вроде оно ... но это смотря только с одной стороны исходника .... фууууух башка перестала уже совсем соображать .... (сигнализацию делаю дома - в 24-проводах начал путаться) .... :( P/S Пора спатки наверно ... Вставить ник Quote
Alexnik Posted April 13, 2006 Posted April 13, 2006 На счет зависаний Ovislink 5460 - уже даже руки начали опускаться .. :( В общем прошол тестирование в комплексе (точка без радиаторов замотанная в поролон - чтобы побольше грелась) Выше 60 градусов температуры не было замечено .. условия были такими : сам 5460 был замотан в поролон и припаен биквад + к этому был подключен электорнный осцилограф .... после внутреннего источника было 3.3 В стабильно - без нюансов :( Сделал лично свой вывод ИМХО - драйвер (wlan) очень глюченный .... больше ничего не ост аеться ... вообщем НЛО какоето ..... Вставить ник Quote
dgreen Posted April 14, 2006 Author Posted April 14, 2006 Фу-у-у-х. Поборол я двухфайловую систему :) Самое трудноре было понять, как заставить ядро пользоавть обе. Оказалось все очень просто. Программеры из реалтека, описывая возможные ситуаци условной компиляцией просто не задумались о том. что возможна ситуация наличия initrd и sqfs одновременно :) Подправил руками. sqfs монтируется очень просто - напрямую из блочного девайса mtdblock (в некоторых версиях ядра он почему-то называется mtd1). Что я сделал: Сделал 2 файловый - одна RO, хранящая все бинарники и библиотеки. (/bin,/sbin,/lib,/usr/bin,/usr/sbin) Вторая - RW, хранит все остальное RW - это root, организованный через initrd - т.е. прилинкован к ядру. RO - это sqfs. Он монтируется сразу после initrd (дописал прямо в init/main.c) в точку /ro_fs, а RW-fs изначально проложенны символические ссылки. Вроде как файловые собрал - тепереь надо разобраться с ядром. Если его собирать без CONFIG_KERNEL_TINY - то его размер (неупакованный - то, что будет выложено память) - около 7 метров. Для d-linka это катастрова. Памяти не останется :( Если собрать с CONFIG_KERNEL_TINY - то пропадает часть функциональности. Сегодня полезу по коду ядра - смотреть, что убирает CONFIG_KERNEL_TINY, и что можно оставить. Результаты - завтра на ветке. Вставить ник Quote
Alexnik Posted April 14, 2006 Posted April 14, 2006 dgreen, Если собрать с CONFIG_KERNEL_TINY - то пропадает часть функциональности. Что тут имееться ввиду под функциональностью ?? Вставить ник Quote
dgreen Posted April 14, 2006 Author Posted April 14, 2006 Alexnik, Сегодня полезу по коду ядра - смотреть, что убирает CONFIG_KERNEL_TINY, и что можно оставить. Результаты - завтра на ветке. Вставить ник Quote
N.leiten Posted April 14, 2006 Posted April 14, 2006 Прикольно... насчет двуфайловой системы... Вот только узнал еще один глюк дровов для беспроводного интерфейса - когда точка в режиме роутера, то до нее никак нельзя достучаться с беспроводки, если она сама не начинает передавать инфу. Вставить ник Quote
Kitsok Posted April 14, 2006 Posted April 14, 2006 Kitsok, доступ к флешу был, есть и будет без дров NOR. Сам подумай - ядро файловую берет ? Настройки берет ? веб-странички берет ? Откуда ? Из флеша. И берет он ее через /dev/mtd, который в свою очередь формируется mtd_четатам.o, который в дровах реалтека в папке линуха. Доступ есть - просто попробуй :) Я ужо давно работаю напрямую с флешем - возьми исходники моей прошивки (где-то здесь на ветке есть ссылка), и посмотри файлик flash_sr - он пишет и читает флеш без дополнительных дров. Отвечаю. Без этого долбанного драйвера никто после загрузки ядра ничего из флеша не берет ;) Ядро файловую систему не берет вообще, она подшита к ядру в виде рамдиска. В память ее берет бутлоадер. Настройки тоже не берет, бо нету доступа. И веб-странички не берет. И вообще ничего не работает, как я уже и писал два или три раза ;) Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.