реклама на сайте
подробности

 
 
> Драйвер NAND флешки для Linux
3.14
сообщение Sep 11 2007, 13:01
Сообщение #1


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Нужно написать/адаптировать сабжевый драйвер для PXA270.
Покопавшись в потрохах драйверов NAND устройств, пришел к выводу что сие естьмногослойная структура ... в простейшем случае (драйвер TOTO) объявляется область чтения записи IO и описываются функции управления пинами CE,ALE,CLE.
Моя флешка подключена:
1) шина данных на обшей шине данных
2) WE подключен к глобальному стробу записи
3) RE плдключен к глобальному стробу чтения OE
4) CE, ALE, CLE подключены к IO

Взял за основу этот самый TOTO драйвер, объявил для области NAND неиспользуемый блок SRAM (в __init функции модуля):
Код
        ...
/* Set address of NAND IO lines */
        this->IO_ADDR_R = my_io_base; // переменная, при объявлении присваивается 0х800000
        this->IO_ADDR_W = my_io_base;
        ...
Далее подправил функцию управления CE,ALE,CLE.
Но при инициализации драйвера ядро говорит:
Цитата
NAND flash driver init ...
Unable to handle kernel paging request at virtual address 00800000
pgd = c0004000
[00800000] *pgd=00000000
Internal error: Oops: 8f5 [#1]
Т.е. мне где то надо еще ядру сказать о существовании адреса 0х800000 (где)?


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
3.14
сообщение Sep 20 2007, 06:16
Сообщение #2


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Уперся ...
Итак, у меня K9K8G08U0A (1Gx8).
Глюки начались на этапе идентификации ее драйвером более высокого уровня, пока не добавил команду сброса устройства.
Сейчас драйвер правильно определяет, и вроде как "лично знает" этот чип, выводя сообщение:
Цитата
NAND device: Manufacturer ID: 0xec, Chip ID: 0xd3 (Samsung NAND 1GiB 3,3V 8-bit)
Размер страницы, размер "запасной" зоны, размер блока и объем всего устройства определяются драйвером правильно. Но, далее на этапе сканирования сбойных блоков, выводится сообщение о найденых ~70 сбойных блоков. Причем их количество первоначально было меньше, пока я не поэкспериментировал с записью нулей во все устройство (dd if=/dev/zero of=/dev/mtd3 bs=2048 count=524288).
Не понятно, сбойный блок маркируется первым не 0хFF байтом в "запасной" области страницы, хотя в то же время она используется ECC ... ???
Далее, я попробовал, перед сканированием сбойных блоков, стереть все блоки устройства, как ни сранно, меньше сбойных блоков не стало.
Еще хуже то что запись в устройство иногда завершается ошибкой, читается то же с глюками.
Например если читать dd if=/dev/ьев3 of=/tmp/data.hex bs=2048 count=30, то имеются области, которые всегда содержат "осмысленный" код, а есть обоасти с "плавающим" мусором.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 22:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01493 секунд с 7
ELECTRONIX ©2004-2016