ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: Очистка памяти  (Прочитано 11526 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

ParshikovAlexey

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 45
Очистка памяти
« : 08 Декабря, 2009, 11:59:23 »

Здравствуйте. У нас следующая ситуация:
Мы установили U-boot, образ ядра, образ КФС на ТИОН Про2. Весь процесс установки проводился по документации с сайта, использовался скрипт для U-boot, скачанный с сайта.
У нас следующие вопросы:
1. Как можно стереть все, что было залито на Тион, т.е. сделать так, чтобы Тион был совершенно пустой, без загрузчика, файловой системы и ядра?
2. Можно ли установить КФС на флэш, если у нас есть образ ядра, скачанный с сайта для U-boot и мы не можем менять настройки ядра?
3. Как установить КФС на флэш.

Пожалуйста, опишите этот процесс детально, т.к. мы не являемся большими специалистами в Linux.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Очистка памяти
« Ответ #1 : 08 Декабря, 2009, 13:31:26 »

> Как можно стереть все, что было залито на Тион, т.е. сделать так, чтобы Тион был совершенно пустой, без загрузчика, файловой системы и ядра?

В U-Boot:
protect off all
erase 60000000 64000000

См. также flinfo

> Можно ли установить КФС на флэш, если у нас есть образ ядра, скачанный с сайта для U-boot и мы не можем менять настройки ядра?

Поддержка Flash на Tion-Pro2 началась с svn615, я сейчас добавлю образы ядра (старше svn615) на сайт.
На них вы сможете установить КФС во Flash, используйте ФС JFFS2.

> мы не можем менять настройки ядра

Почему?

> Как установить КФС на флэш
См. http://www.zao-zeo.ru/dokuwiki/doku.php/linux#flash
если возьмёте собранное ядро, то только п.2 и п.3

PS. Если не получиться, тогда напишу по командам.
Записан

ParshikovAlexey

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 45
Re: Очистка памяти
« Ответ #2 : 09 Декабря, 2009, 12:08:23 »

Попытался установить КФС на Flash, но понял, что делаю что-то неправильно. Подскажите как нужно действовать.
Я выполняю следующие шаги:
1. Очистил всю память Flash командами, указанными выше.
2. Копирую с помощью утилиты download архив с образом КФС в адрес 0x800000:
download.exe -o 0x800000 -s 1 uramdisk.gz.
3. Копирую с помощью этой же утилиты Образ U-boot в адрес 0х0.
4. Загружаюсь в u-boot и загружаю с ftp модернизированный скрипт для дальнейшей загрузки:
setenv kern_file uImage
setenv rd_file uramdisk.gz
setenv kern_fladdr 60080000
setenv rd_fladdr   60300000
setenv rd_addr     60800000
setenv fileaddr    0
setenv kern_flash 'tftpboot ${fileaddr} ${kern_file}; erase ${kern_fladdr} +${filesize}; cp.b ${fileaddr} ${kern_fladdr} ${filesize}'
setenv bootcmd 'echo Load Kernel; bootm ${kern_fladdr} ${rd_addr}'
setenv reflash 'echo Re-flashing...; protect off all; run kern_flash; run rd_flash; imls; saveenv; echo Re-flash done'
setenv bootargs 'console=ttyAM0,57600n8 root=/dev/mtdblock2 rootfstype=jffs2 rw'
saveenv;
3. Перезагружаю Тион.
После перезагрузки грузится ядро и паникует, т.к. не находит КФС, выдается следующая ошибка
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x006c0024: 0x4c93 inRegistered protocol family             
Old JFFS2 bitmask found at 0x00762004..
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Очистка памяти
« Ответ #3 : 09 Декабря, 2009, 18:30:46 »

1. Образ JFFS должен располагаться по адресу:
0x60000000 + 0x00300000 = 0x60300000
См. flinfo и mtdpartd в U-Boot
В параметрах download 0x300000, есть так необходимо записывать его через download.

2. Копирую с помощью утилиты download архив с образом КФС...
Вы не стерли весь раздел с началом 0x60300000 и размером 0x03d00000, вы только записали его часть образом.

2. setenv bootcmd 'echo Load Kernel; bootm ${kern_fladdr} ${rd_addr}'
Если вы ramdisk не используете, то второй параметр bootm не задаётся, т.е.
setenv bootcmd 'echo Load Kernel; bootm ${kern_fladdr}'
Записан

ParshikovAlexey

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 45
Re: Очистка памяти
« Ответ #4 : 10 Декабря, 2009, 09:41:19 »

Здравствуйте. Попробовал учесть ваши рекомендации, но установить КФС на Flash не удалось. Пробовал различные варианты(загружать образ КФС через download, очистив в u-boot нужный блок командой erase, также пробовал загружать с помощью скрипта), но результат один и тот же. Приведу пример скрипта. Может быть что-то не так указал:
'
setenv kern_file uImage
setenv rd_file uramdisk.gz
setenv kern_fladdr 60080000
setenv rd_fladdr   60300000
setenv rd_addr    60800000
setenv rd_size    03d00000
setenv fileaddr    0
setenv serverip 192.168.1.102
setenv ipaddr 192.168.1.86
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
setenv kern_flash 'tftpboot ${fileaddr} ${kern_file}; erase ${kern_fladdr} +${filesize}; cp.b ${fileaddr} ${kern_fladdr} ${filesize}'
setenv rd_flash 'tftpboot ${fileaddr} ${rd_file}; erase ${rd_fladdr} +${filesize}; cp.b ${fileaddr} ${rd_fladdr} ${filesize}'
setenv bootcmd 'echo Load Kernel; bootm ${kern_fladdr}'
setenv reflash 'echo Re-flashing...; protect off all; run kern_flash; run rd_flash; imls; saveenv; echo Re-flash done'
setenv bootargs 'console=ttyAM0,57600n8 root=/dev/mtdblock2 rootfstype=jffs2 rw'
saveenv;
В итоге после загузки ядра выдается следующее сообщение:
'jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x002c0024: 0xc787 in
stead
Further such events for this erase block will not be printed
Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes
empty_blocks 231, bad_blocks 0, c->nr_blocks 243
VFS: Cannot open root device "mtdblock2" or unknown-block(31,2)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)
'
По нему понял, что не может подмонтироваться mtdblock2, но как это исправить не знаю.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Очистка памяти
« Ответ #5 : 10 Декабря, 2009, 13:14:49 »

Цитировать
Значение переменной jffs_fladdr для Тион-Про2 3d00000, для Тион/Тион-Про 500000
Речь о переменной jffs_size, как видно по коду ниже.


setenv jffs_file rootfs.jffs2
setenv kern_file uImage
setenv kern_fladdr 60080000
setenv jffs_fladdr 60300000
setenv jffs_size 3d00000
setenv fileaddr 0
setenv serverip 10.42.42.1
setenv kern_flash 'tftpboot ${fileaddr} ${kern_file}; erase ${kern_fladdr} +${filesize}; cp.b ${fileaddr} ${kern_fladdr} ${filesize}'
setenv jffs_flash 'tftpboot ${fileaddr} ${jffs_file}; erase ${jffs_fladdr} +${jffs_size}; cp.b ${fileaddr} ${jffs_fladdr} ${filesize}'
setenv bootcmd 'bootm ${kern_fladdr}'
setenv reflash 'echo Re-flashing...; protect off all; run kern_flash; run jffs_flash; imls; echo Re-flash done'
setenv bootargs 'console=ttyAM0,57600n8 root=/dev/mtdblock2 rootfstype=jffs2'

run reflash

PS. Почему вы ожидаете, что приведённый вами скрипт запишет образ JFFS по нужному адресу?
« Последнее редактирование: 24 Августа, 2010, 09:26:18 от asv »
Записан

ParshikovAlexey

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 45
Re: Очистка памяти
« Ответ #6 : 11 Декабря, 2009, 06:01:47 »

Подскажите, а где можно найти распакованную КФС, а то из архивов с сайта она не хочет извлекаться?
И подскажите пожалуйста как можно отключить эхо в COM-порте Тиона?
« Последнее редактирование: 11 Декабря, 2009, 09:15:21 от ParshikovAlexey »
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Очистка памяти
« Ответ #7 : 11 Декабря, 2009, 11:31:21 »

>где можно найти распакованную КФС, а то из архивов с сайта она не хочет извлекаться?

1. Можно взять из образа для U-Boot, т.е. получить образ файловой системы EXT2
http://www.zao-zeo.ru/dokuwiki/doku.php/u-boot#создание_из_образа_оригинального_файла

2. Можно собрать с помощью Crater, или Buildroot, или ...
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Очистка памяти
« Ответ #8 : 11 Декабря, 2009, 11:36:03 »

> как можно отключить эхо в COM-порте Тиона

На каком "этапе" вы хотите его выключить: в U-Boot (можно переключить на другой порт),
в Linux (сообщения ядра или пользовательскую консоль)?
Записан

ParshikovAlexey

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 45
Re: Очистка памяти
« Ответ #9 : 11 Декабря, 2009, 11:54:36 »

> как можно отключить эхо в COM-порте Тиона

На каком "этапе" вы хотите его выключить: в U-Boot (можно переключить на другой порт),
в Linux (сообщения ядра или пользовательскую консоль)?


На этапе работы приложения на самом ТИОНЕ. Мы скомпилировали и установили на тион разработанную программу для работы с устройством по COM-порту. В настройках ком-порта в самой программе мы эхо отключаем, но фактически получается. что оно остается. В пользовательской консоли тоже хотелось бы его отключить, но это не критично.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Очистка памяти
« Ответ #10 : 11 Декабря, 2009, 12:30:15 »

Тогда
1. Уберите параметр console из bootargs в U-Boot
2. Уберите строку ttyAM0 из /etc/inittab
Записан

ParshikovAlexey

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 45
Re: Очистка памяти
« Ответ #11 : 14 Декабря, 2009, 10:38:46 »

Значение переменной jffs_fladdr для Тион-Про2 3d00000, для Тион/Тион-Про 500000

setenv jffs_file rootfs.jffs2
setenv kern_file uImage
setenv kern_fladdr 60080000
setenv jffs_fladdr 60300000
setenv jffs_size 3d00000
setenv fileaddr 0
setenv serverip 10.42.42.1
setenv kern_flash 'tftpboot ${fileaddr} ${kern_file}; erase ${kern_fladdr} +${filesize}; cp.b ${fileaddr} ${kern_fladdr} ${filesize}'
setenv jffs_flash 'tftpboot ${fileaddr} ${jffs_file}; erase ${jffs_fladdr} +${jffs_size}; cp.b ${fileaddr} ${jffs_fladdr} ${filesize}'
setenv bootcmd 'bootm ${kern_fladdr}'
setenv reflash 'echo Re-flashing...; protect off all; run kern_flash; run jffs_flash; imls; echo Re-flash done'
setenv bootargs 'console=ttyAM0,57600n8 root=/dev/mtdblock2 rootfstype=jffs2'

run reflash

PS. Почему вы ожидаете, что приведённый вами скрипт запишет образ JFFS по нужному адресу?


Использовал ваш приведенный выше скрипт и ФС, вытащенную из образа КФС для u-boot. В результате ничего так и не получилось, ядро паникует и все.

Выдает следующие ошибки
"jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00200010: 0x70c8 instead"  много раз повторяется
в конце идут следующие ошибки:
"Further such events for this erase block will not be printed
Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes
empty_blocks 231, bad_blocks 0, c->nr_blocks 243
VFS: Cannot open root device "mtdblock2" or unknown-block(31,2)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)
".

Кроме того, просматривая весь текст загрузки в гипертерминале обнаружил следующую запись:
"You cannot use older JFFS with newer kernel". Видимо данное ядро не может работать с этой устаревшей КФС.

Подскажите, что делать.

Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Очистка памяти
« Ответ #12 : 14 Декабря, 2009, 11:47:27 »

> вытащенную из образа КФС для u-boot

1. Как делали?
После нормальной записи в U-Boot по комаде ls должен выводиться список файлов.

Вот образ КФС для записи во Flash Тион-Про2
http://www.zao-zeo.ru/media/files/rootfs/ep93xx/rootfs_crater_svn819_tion-pro2.jffs2

2. Приведите полный лог зазгузки ядра до panic.
Записан

ParshikovAlexey

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 45
Re: Очистка памяти
« Ответ #13 : 14 Декабря, 2009, 12:12:03 »

Тогда
1. Уберите параметр console из bootargs в U-Boot
2. Уберите строку ttyAM0 из /etc/inittab

Видимо вы не поняли меня, поэтому подсказали как решить другую проблему. Дело в том, что написанная нами программа работает с прибором через COM-порт, мы используем ttyAM2 (RS-485), при работе с которым остается эхо, несмотря на то, что в настройках Com-порта программы мы явно задаем отключение эха. Нам нужно убрать эхо на com-порте ttyAM2 (COM3). Подскажите как это сделать.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Очистка памяти
« Ответ #14 : 14 Декабря, 2009, 12:22:31 »

> убрать эхо на com-порте ttyAM2 (COM3). Подскажите как это сделать.

На AM2 -- никак, аппаратная особенность, те ИМС ADM485 всегда включена на приём и вы получаете те данные,
которые отправляете.
Записан