|
Предыдущая тема
:: Следующая тема |
| Автор |
Сообщение |
OLEG1973 Писатель
Зарегистрирован: 13.03.2003 Сообщения: 395 Откуда: Italy/Bassano del Grappa Возраст:52
|
Добавлено: 12 Сен 2007 09:28 |
|
|
лумес
после длительных мучений было выяснено )
в общем при перепрошивке бут и кернел ставятся без ошибок и проблем
а вот образ файловой не ставится изза наличия бэд блоков
в общем задача отформатить фс
в кернеле есть некий шелл встроеный с интерпертатором
там поддержка нандовских команд
но там формата нет ( есть nand erase clean к примеру
но оно просто киляет файлы и не форматит
при заходе через нормальный шелл (рут) там как я тебе говорил нет половины бинарников и mkfs не пашет _________________ My cars: Toyota MR2 / Mitsubishi 3000GT / Mitsubishi Pajero Sport
|
|
| Вернуться к началу |
|
 |
lymes BANNED
Зарегистрирован: 20.01.2005 Сообщения: 13827 Откуда: Roma
|
Добавлено: 12 Сен 2007 09:49 |
|
|
| OLEG1973 писал(а): | лумес
после длительных мучений было выяснено )
в общем при перепрошивке бут и кернел ставятся без ошибок и проблем
а вот образ файловой не ставится изза наличия бэд блоков
в общем задача отформатить фс
в кернеле есть некий шелл встроеный с интерпертатором
там поддержка нандовских команд
но там формата нет ( есть nand erase clean к примеру
но оно просто киляет файлы и не форматит
при заходе через нормальный шелл (рут) там как я тебе говорил нет половины бинарников и mkfs не пашет |
Олег, что такое для тебя "форматирование"? Это и есть создание файловой системы. Боюсь, что не существет никакого низкоуровнего форматирования флэш мемори. Возможные операции: создание, удаление, модификация партишенов и создание файловой системы на них.
Тут есть, имхо, такие варианты:
1. Если дивайс на гарантии - поменять его.
2. Если облом ждать или нет гарантии - посмотри, с какой ошибкой вылетает программа перепрошивки:
- ей не нравится само наличие бэд блоков. это плохо, тут уж ничего не поделаешь.
- ей не нравится недостаток места из-за бэд блоков, и сами бэд блоки для неё не проблема. здесь можно посмотреть, нельзя ли потеснить другие партишены (fdisk, если нет бинарника, можно скомпилить кросс-компайлером для ARM9 и как-нибудь его туда забросить), либо уменьшить image фс путём удаления оттуда чего-нить ненужного..
|
|
| Вернуться к началу |
|
 |
OLEG1973 Писатель
Зарегистрирован: 13.03.2003 Сообщения: 395 Откуда: Italy/Bassano del Grappa Возраст:52
|
Добавлено: 12 Сен 2007 10:39 |
|
|
для меня форматирование это создание "fat" и разметка дорожки, ну там запись в межсекторное пространство всяких данных обнуление секторов и так далее
а перепрошивка из образа может вовсе не означать форматирование
в имадже могут быть raw данные без учета межсекторных данных
тоесть я к примеру знаю что 1 сектор 2048 байта и все, беру с имаджа данные по 2048 и пихаю их в сектора
там 2 варианта у меня ерроров получается
если просто тупо распаковывать tar в / то пишет что нет места (изза бэдов)
если пытается залить туда имадж то получаю ерроры изза тех же бэд блоков
пс
видел на формуах намеки про возможность мотажа образа который физически на РС находится, было бы не плоха добится такого ) _________________ My cars: Toyota MR2 / Mitsubishi 3000GT / Mitsubishi Pajero Sport
|
|
| Вернуться к началу |
|
 |
lymes BANNED
Зарегистрирован: 20.01.2005 Сообщения: 13827 Откуда: Roma
|
Добавлено: 12 Сен 2007 10:46 |
|
|
| OLEG1973 писал(а): | для меня форматирование это создание "fat" и разметка дорожки, ну там запись в межсекторное пространство всяких данных обнуление секторов и так далее
|
| Цитата: | цитата:
--------------------------------------------------------------------------------
Кстати, а в FAT есть такое понятие, как межсекторное пространство ?
--------------------------------------------------------------------------------
Скажу больше, в FAT нет даже такого понятия как секторное пространство, он оперирует кластерами |
Ты путаешь хард диски с дорожками, прерывания биоса и флэшмемори.
| Цитата: | NAND devices also require bad block management to be performed by device driver software, or by a separate controller chip (SD cards, for example, include controller circuitry to perform bad block management and wear leveling). When a logical block is accessed by high-level software, it is mapped to a physical block by the device driver or controller, and a number of blocks on the flash chip are set aside for storing mapping tables to deal with bad blocks.
|
почитай здесь: http://www.answers.com/topic/flash-memory?cat=technology
|
|
| Вернуться к началу |
|
 |
lymes BANNED
Зарегистрирован: 20.01.2005 Сообщения: 13827 Откуда: Roma
|
Добавлено: 12 Сен 2007 10:55 |
|
|
| OLEG1973 писал(а): | | если просто тупо распаковывать tar в / то пишет что нет места (изза бэдов) |
А где при этом сам tar? Мож он сам это место занимает? Если у тебя там есть ssh, то можно распаковать тар, который физически лежит на другой машине в сети.
|
|
| Вернуться к началу |
|
 |
OLEG1973 Писатель
Зарегистрирован: 13.03.2003 Сообщения: 395 Откуда: Italy/Bassano del Grappa Возраст:52
|
Добавлено: 12 Сен 2007 10:57 |
|
|
все может быть что путаю так как флешки я ниразу програмно не форматил )))
а насчет фата вы не правы )
да фат оперирует кластерами но "межсекторное" пространство есть везде
во-первых оно нужно для синхронизации чтения на уровне железа
а во вторых там по любому лежит crc данных _________________ My cars: Toyota MR2 / Mitsubishi 3000GT / Mitsubishi Pajero Sport
|
|
| Вернуться к началу |
|
 |
OLEG1973 Писатель
Зарегистрирован: 13.03.2003 Сообщения: 395 Откуда: Italy/Bassano del Grappa Возраст:52
|
Добавлено: 12 Сен 2007 11:06 |
|
|
tar у меня лежит на SD карте
вот типичный набор файлов включая бут кернел и фс
| Цитата: | kwant@kwant-desktop:~/Desktop/gp2x/gp2x-f100_2.0.0_060428$ ls -l
totale 12324
-rwx------ 1 kwant kwant 373348 2006-04-23 13:58 gp2xboot.img
-rwx------ 1 kwant kwant 6889851 2006-04-28 12:48 gp2xfs.tar.gz
-rwx------ 1 kwant kwant 632985 2006-04-20 15:33 gp2xkernel.img
-rwx------ 1 kwant kwant 1318886 2006-04-28 12:48 gp2xnand.tar.gz
-rwx------ 1 kwant kwant 238636 2006-03-28 11:30 gp2xsound.wav
-rwx------ 1 kwant kwant 3065040 2006-04-28 12:48 gp2xyaffs.img
-rwx------ 1 kwant kwant 17990 2006-04-17 13:45 GPL.txt
-rwx------ 1 kwant kwant 26436 2006-04-17 13:45 LGPL.txt
-rwx------ 1 kwant kwant 531 2006-04-28 12:48 License.txt
kwant@kwant-desktop:~/Desktop/gp2x/gp2x-f100_2.0.0_060428$
|
все это копируется на SD втыкается в девайс
врубаеш питание и держиш пару кнопок на девайсе
бут который в девайсе начинает читать с карты файлы и пытается записать их по нужным адресам
после записи бута и кернела делается ребут автоматом
и далее попытка распаковать tar которая обламывается изза бэдов _________________ My cars: Toyota MR2 / Mitsubishi 3000GT / Mitsubishi Pajero Sport
|
|
| Вернуться к началу |
|
 |
lymes BANNED
Зарегистрирован: 20.01.2005 Сообщения: 13827 Откуда: Roma
|
Добавлено: 12 Сен 2007 11:08 |
|
|
| OLEG1973 писал(а): | все может быть что путаю так как флешки я ниразу програмно не форматил )))
а насчет фата вы не правы )
да фат оперирует кластерами но "межсекторное" пространство есть везде
во-первых оно нужно для синхронизации чтения на уровне железа
а во вторых там по любому лежит crc данных |
| Цитата: |
FAT
Файловая система FAT (File Allocation Table) была разработана Биллом Гейтсом и Марком МакДональдом в 1977 году и первоначально использовалась в операционной системе 86-DOS. Чтобы добиться переносимости программ из операционной системы CP/M в 86-DOS, в ней были сохранены ранее принятые ограничения на имена файлов. В дальнейшем 86-DOS была приобретена Microsoft и стала основой для ОС MS-DOS 1.0, выпущенной в августе 1981 года. FAT была предназначена для работы с гибкими дисками размером менее 1 Мбайта, и вначале не предусматривала поддержки жестких дисков. В настоящее время FAT поддерживает файлы и разделы размеров до 2 Гбайт.
В FAT применяются следующие ограничения на имена файлов:
- имя должно начинаться с буквы или цифры и может содержать любой символ ASCII, за исключением пробела и символов "/\[]:;|=,^*?
- максимальная длина имени - 8 символов, за ним следует точка и необязательное расширение длиной до 3 символов.
- регистр символов в именах файлов не различается и не сохраняется.
Структура раздела FAT изображена на рисунке 1. В BIOS содержится необходимая информация о характеристиках жесткого диска. Файловая система FAT не способна контролировать отдельно каждый сектор, поэтому она объединяет смежные сектора в кластеры ( clusters ).Этим достигается, уменьшение общего количества единиц хранения данных, за которыми следит файловая система. Размер кластера в FAT является степенью двойки и определяется размером тома при форматировании диска (таблица 1). Кластер представляет собой минимальное пространство, которое может занимать файл. из-за этого часть пространства диска не используется.
|
Олег, физический доступ к "секторам" (анахронизм в случае флэш), контроль за бэд блоками, осуществляет драйвер устройства. Файловая система здесь не при делах, это стопудово. Поэтому проблему форматированием не решишь. ИМХО. Где-то на низком уровне драйвер записал некие блоки как неиспользуемые. И драйвер просто не даст их программе, создающей файлсистем (форматировщик). Он заявит ей, что доступно X - Y bytes, где Х - общий объём устройства, а Y - количество недоступных по причине поломки байтов информации.
|
|
| Вернуться к началу |
|
 |
OLEG1973 Писатель
Зарегистрирован: 13.03.2003 Сообщения: 395 Откуда: Italy/Bassano del Grappa Возраст:52
|
Добавлено: 12 Сен 2007 13:55 |
|
|
не не ты шас путаеш абстрагированный уровень файловой системы и физический доступ
в винде как и в никсах есть понятие девайс
тоесть если я делаю CreateFile то могу таким макаром и создать файл и открыть pipe и mail slot и еше куче весчей сделать
но если к примеру я укажу как имя файла "\\Drive C" к примеру то получу доступ именно к диску а не к файловой системе но только к кластерам и секторам - это один из вариантов
второй вариант поставить драйвер который мне дает доступ к портам харда в этом случае могу хоть всю дорожку включая межсекторы
насчет флешек спорить не буду так как не увлекался никогда ими ))
но с другой стороны рассуждая логично предположим
на флешке есть хардварный контроль файловой системы (сомневаюсь)
обьясню почему сомневаюсь
если он хардварный то должен распознавать туеву хучу фс, яж могу спокойно форматить как в фат так и в фат 32 + нтфс + ехт2 + ехт3 и еще куча
физический формат у всех разный там где у фата лежит ну к примеру корневой каталог у ехт3 может лежать че угодно
так что хардварный контроль как бы отпадает думаю
в случае с нандом я могу предположить следушее
при установке другой фс к примеру физически было чтото записано , тоесть изменена геометрия фс, но в "цепочку фат" не были внесены изменения
что получаем при запуске дрова девайса смотрят "фат" и думают что работают с чем то им знакомым, при чтении секторов/кластеров находят там муть всякую (сrc не совпадает) вот и ошибка чтения записи _________________ My cars: Toyota MR2 / Mitsubishi 3000GT / Mitsubishi Pajero Sport
|
|
| Вернуться к началу |
|
 |
lymes BANNED
Зарегистрирован: 20.01.2005 Сообщения: 13827 Откуда: Roma
|
Добавлено: 12 Сен 2007 14:14 |
|
|
| OLEG1973 писал(а): | не не ты шас путаеш абстрагированный уровень файловой системы и физический доступ
в винде как и в никсах есть понятие девайс |
Олег. Давай не будем спорить. Я тебе щас отвечу по пунктам, а ты пробегись по докам, или, если хочешь, я тебе ссылок набросаю, если время будет:
1. Указывая девайс (см. пример кода) ты открываешь его в raw mode, только и всего. Забудь о секторах, для тебя это один большой файл. О секторах и дорожках заботится драйвер.
| Код: | char _devicename[] = "\\\\.\\PhysicalDrive0";
_devicename[strlen(_devicename)-1] += pTP->DeviceIndex;
HWND hWnd = pTP->DialogWnd;
CString fileName = pTP->ImagePath;
::PostMessage(hWnd, WM_THREAD_INIT, 0, 0);
try {
// Creating a handle to disk drive using CreateFile () function ..
hDevice = CreateFile(_devicename,
GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, NULL);
if (hDevice == INVALID_HANDLE_VALUE)
{
CString errMsg, errStr;
........
|
Это кусочек из кода моей прожки, которая прошивает карточку. Если тебя интересует полностью исходники - я тебе их предоставлю. Диск в этом случае видится как один большой файл, в который можно писать твой image, но никаких референс по секторам там нет.
2. Драйвер устройства абсолютно ничего не знает о файловой системе. Вся конструкция имеет слоёную схему, как сэндвич:
- низший слой, hw контроллер дивайса
- средний слой, драйвер, который использует ОС для обращений к дивайсу
- высший уровень, - файловая система, которая в свою очередь, тоже драйвер, но более высокого уровня.
Обращения идут от высшего уровня к низшему, по цепочке. Но не наоборот!
Так вот, драйвер накопительного устройства отвечает за сбойные участки на нём. Но не всегда, иногда это и hw контроллер. В случае флэшки - это драйвер.
А файловая система стоит на более высоком уровне, она ничего не знает о таких технических и пропьетарных деталях. Она обращается к устройству через драйвер.
3. Нет никакой цепочки FAT и изменений в ней. Могут быть сбойные участки, которые пришлись, например, на таблицу дескрипторов - тогда вообще хаос. Или же на файловый кластер, тогда при чтении/записи этого файла возникнут ошибки ФС.
Фух, задолбался писать.
Последний раз редактировалось: lymes (12 Сен 2007 14:24), всего редактировалось 1 раз
|
|
| Вернуться к началу |
|
 |
OLEG1973 Писатель
Зарегистрирован: 13.03.2003 Сообщения: 395 Откуда: Italy/Bassano del Grappa Возраст:52
|
Добавлено: 12 Сен 2007 14:24 |
|
|
да я не спорю )
просто как то писал прогу для восстановления данных с харда поэтому точно знаю как там что физически устроено
пойду про нанд читать ) _________________ My cars: Toyota MR2 / Mitsubishi 3000GT / Mitsubishi Pajero Sport
|
|
| Вернуться к началу |
|
 |
OLEG1973 Писатель
Зарегистрирован: 13.03.2003 Сообщения: 395 Откуда: Italy/Bassano del Grappa Возраст:52
|
Добавлено: 12 Сен 2007 18:35 |
|
|
лумес ) я вкурил (ты был не прав)
кароче на флешке как я и предполагал есть сектора и oob (out of band) проще говоря межсекторник (йес!) занимает от 16 до 64 байт в зависимости от размера сектора и в нем находится и контрольная сумма и маркер о "бэдности" или пригодности сектора
перезаписав маркер на 0xFF получим годный сектор
пишется этим
nand write.oob addr ofs size
Write `size' bytes from `addr' to the out-of-band data area
corresponding to `ofs' in NAND flash
шас буду писать програмулю для обнуления маркера ))) _________________ My cars: Toyota MR2 / Mitsubishi 3000GT / Mitsubishi Pajero Sport
|
|
| Вернуться к началу |
|
 |
lymes BANNED
Зарегистрирован: 20.01.2005 Сообщения: 13827 Откуда: Roma
|
Добавлено: 12 Сен 2007 18:39 |
|
|
| OLEG1973 писал(а): | лумес ) я вкурил (ты был не прав)
кароче на флешке как я и предполагал есть сектора и oob (out of band) проще говоря межсекторник (йес!) занимает от 16 до 64 байт в зависимости от размера сектора и в нем находится и контрольная сумма и маркер о "бэдности" или пригодности сектора
перезаписав маркер на 0xFF получим годный сектор
пишется этим
nand write.oob addr ofs size
Write `size' bytes from `addr' to the out-of-band data area
corresponding to `ofs' in NAND flash
шас буду писать програмулю для обнуления маркера ))) |
ну и слава богу. А чё я не прав-то был? К FATу-то это не имеет никакого отношения. А вот драйвер, ясен пень, куда-то пишет маркер о "бедности". Это хорошо, что ты разобрался куда именно. Но! Остаётся одна загвоздка, - а если блоки действительно глючные? Обнуление не поможет, оно уберёт следствие, но не причину.
|
|
| Вернуться к началу |
|
 |
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Время загрузки страницы: 0 сек.
|