Jump to content

Recommended Posts

Posted

Знаете, у меня сейчас мозг взорвется.

 

Имеется дерево исходников от 5460, там, в исходниках ядра имеется директория drivers/flash/nor.

В этой директории лежит nor_core.lib, из которого должен получиться nor.o, реалтковский закрытый драйвер NOR-флеша.

В конфиге сказано, CONFIG_FLASH_NOR, однако этот nor.o упорно не хочет появляться. Куда копать?

  • Replies 4.2k
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Posted

ЭЭЭ, вообще-то там уже скомпиленная библиотека лежит nor_core.lib и ее проблематично настраивать. У меня еще есть директория export в ней есть исходники, но это другие файлы, по-моему никак не касающие библиотеку.

Posted

Ну у меня тоже есть export, но похоже, что драйвера среди этих исходников нету.

И, даже если в конфиге ядра сказано CONFIG_FLASH_NOR, этот драйвер реально не собирается и в ядро не вставляется.

В итоге отсутствует доступ из flash к собственно флеш-памяти, и ничего не работает, MAC-адреса отсутствуют, и т.д. и т.п.

Чего с этим делать - пока не знаю...

Posted

ЭЭЭ, вообще-то там МАС-адреса есть, просто мы их стираем при перезаписи прошивки вот и все. Струкутра прошивки с использованием команды flash такая же как и в официальной прошивке. так что искать МАС нет смысла.

Posted

А вот и нет.

Конкретно.

Заливаю прошивку (ядро+рамдиск), заливаю веб-странички, заливаю даже конфиг.

Перезаливаю много раз.

Потом откатываюсь на старую прошивку, от производителя - все конфиги сохранены, вплоть до пароля на VPN

 

Так как драйвер подцепить? ;)

Posted

Не знаю, правильно это или нет, но я сделал так:

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, и сборщик его подобрал. Буду пробовать вечером, получилось или нет ;)

Добавка: получилось ;)

Posted
Заливаю прошивку (ядро+рамдиск), заливаю веб-странички, заливаю даже конфиг.  

Перезаливаю много раз.  

Потом откатываюсь на старую прошивку, от производителя - все конфиги сохранены, вплоть до пароля на 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 метра.

Posted

а, еще. NOR флеша там нет.

Я не шибко специалист в типах фоеша - но, как сказанно в даташите по 8186

Support boot from NAND type to reduce total bone cost

и ни слова о загрузке с NOR.

А поскольку система таки грузится, то значит флеш типа NAND.

Posted

Угу слава богу что flash параметры они пределали (3 экземляра и сравнение при прошивке) ... а я вот на днях ovis 1120 востанавливал .. (слетела нафиг вся прошивка - и к томуже в области где храняться параметры получился бардак полный) ... кроме как залить туда shortlinux и дать через rs-232 команду flash reset hardaware - , больше ничего не помогло - все прошивки отваливались в кернел паник !!! а после данной процедуры асе прошивки работали - специально проверил (поначалу было впечатленин в физической неисправности - типа флеш микруха накрылась частично) .....

Posted

Можно поискать даташит на 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.

Posted

;)

Я наверное неправильно вопрос поставил. Попробую еще раз.

Итак, есть дерево исходников, в котором есть в бинарном виде драйвер 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. После "ручной" процедуры все прекрасно работает - ядро через этот модуль определяет флешку, конфиги читаются, точка конфигурится и т.д.

Posted

Почему не ставится сам ? Потому что SDK, которое гуляет по инету не есть полностью доделанное. Т.е. дрова под NOR выпущенны реалтеком, но не используются в точках типа 5460 и т.д. и писатели конфигов и майков не утруждали себя доделыванием этого.

 

Вопрос в другом. В принципе. А тебе зачем все это ? Эсть готовый работающий доступ к флешу через /dev/mtb - зачем еще что-то ?

Тот же флеш - вид сбоку ?

Posted

У меня вопрос к линуксоидам.

Где (и как) ядро грузит файловую, собранную как sqfs. Немогу найти точку обращения к флешу за куском, начинающимся с сигнатуры ROOT

 

Задача стоит в том, чтобы смонтировать эту вот sqfs не в корень, а в отдельную папку. А в корень смонтировать рамдиск, прилинкованный к ядру.

Может кто посоветует - где искать

 

Монтирования корня проходит в fs/super.c - но вот что-то именно доступа к sqfs там нет. Вечером конечно еще посижу - но может кто уже искал.... и даже находил ?

Posted

Отвечаю на первый вопрос (про mtd).

Потому, что мне нужно было до сегодняшнего дня сделать работающую прошивку. Я сделал ;) Переделывать все "с нуля" времени не было. И без дров под NOR доступа к флешу все-равно бы не было.

 

Про файловую систему.

А вот не следом ли за ядром (с рамдиском) оно лежит?

Точно, там и лежит.

Гляди в RTL8186 Linux system note.doc, там написано.

Posted

Судя вот по этому, шьется по адресу 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"

Posted

Kitsok,

доступ к флешу был, есть и будет без дров NOR. Сам подумай - ядро файловую берет ? Настройки берет ? веб-странички берет ?

Откуда ? Из флеша. И берет он ее через /dev/mtd, который в свою очередь формируется mtd_четатам.o, который в дровах реалтека в папке линуха.

Доступ есть - просто попробуй :)

Я ужо давно работаю напрямую с флешем - возьми исходники моей прошивки (где-то здесь на ветке есть ссылка), и посмотри файлик flash_sr - он пишет и читает флеш без дополнительных дров.

 

По второй мессаге.

Где лежит корневая система во флеше - и так понятно. Даже если она вдруг потеряется - найти ее по сигнатуре ROOT не составляет труда. Мне не понятно, где ее монтирует ядро (вернее, уже почти понятно. Кому интересно - посмотрите init/main.c и fs/stat.c - очень глубокомысленное решение по сборке ядра от реалтека. Руки бы повырывал таки программистам.)

В общем - сегодня я таки прицеплю sqfs поверх intrd - уже знаю как. А это снимает ограничение на RO_FS при 8 метрах оперативки.

Posted
У меня вопрос к линуксоидам.

Где (и как) ядро грузит файловую, собранную как sqfs. Немогу найти точку обращения к флешу за куском, начинающимся с сигнатуры ROOT

 

Задача стоит в том, чтобы смонтировать эту вот sqfs не в корень, а в отдельную папку. А в корень смонтировать рамдиск, прилинкованный к ядру.

Может кто посоветует - где искать

 

Монтирования корня проходит в fs/super.c - но вот что-то именно доступа к sqfs там нет. Вечером конечно еще посижу - но может кто уже искал.... и даже находил ?

 

Может pivot_root подойдет. Вроде все то он и делает.

Posted

dgreen, Дааа ... помоему так и есть ... исходя из pivot_root вроде оно ...

но это смотря только с одной стороны исходника .... фууууух башка перестала уже совсем соображать .... (сигнализацию делаю дома - в 24-проводах начал путаться) .... :( P/S Пора спатки наверно ...

Posted

На счет зависаний Ovislink 5460 - уже даже руки начали опускаться .. :(

В общем прошол тестирование в комплексе (точка без радиаторов замотанная в поролон - чтобы побольше грелась) Выше 60 градусов температуры не было замечено .. условия были такими : сам 5460 был замотан в поролон и припаен биквад + к этому был подключен электорнный осцилограф .... после внутреннего источника было 3.3 В стабильно - без нюансов :( Сделал лично свой вывод ИМХО - драйвер (wlan) очень глюченный .... больше ничего не ост аеться ... вообщем НЛО какоето .....

Posted

Фу-у-у-х. Поборол я двухфайловую систему :)

Самое трудноре было понять, как заставить ядро пользоавть обе.

Оказалось все очень просто. Программеры из реалтека, описывая возможные ситуаци условной компиляцией просто не задумались о том. что возможна ситуация наличия 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, и что можно оставить.

Результаты - завтра на ветке.

Posted

Alexnik,

Сегодня полезу по коду ядра - смотреть, что убирает CONFIG_KERNEL_TINY, и что можно оставить.

Результаты - завтра на ветке.

Posted

Прикольно... насчет двуфайловой системы...

 

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

Posted
Kitsok,

доступ к флешу был, есть и будет без дров NOR. Сам подумай - ядро файловую берет ? Настройки берет ? веб-странички берет ?

Откуда ? Из флеша. И берет он ее через /dev/mtd, который в свою очередь формируется mtd_четатам.o, который в дровах реалтека в папке линуха.

Доступ есть - просто попробуй :)

Я ужо давно работаю напрямую с флешем - возьми исходники моей прошивки (где-то здесь на ветке есть ссылка), и посмотри файлик flash_sr - он пишет и читает флеш без дополнительных дров.

Отвечаю.

Без этого долбанного драйвера никто после загрузки ядра ничего из флеша не берет ;)

Ядро файловую систему не берет вообще, она подшита к ядру в виде рамдиска. В память ее берет бутлоадер.

Настройки тоже не берет, бо нету доступа. И веб-странички не берет.

И вообще ничего не работает, как я уже и писал два или три раза ;)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...