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

 
 
> Размер out-of-band данных в YAFFS2
mvb
сообщение Jan 21 2014, 12:55
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 7-06-08
Пользователь №: 38 128



Здравствуйте, вопрос к тем, у кого есть опыт работы с YAFFS
Тут возникло глобальное недопонимание. Я настраиваю yaffs2 для применения на AT45DB321D -- NAND, сектор 512+16 байт. chunk делаю размером в 2 сектора флеши -- 1024 байт данные 32 байта на всё остальное.
В документации http://www.yaffs.net/yaffs-2-specification есть таблица Tag structure, из которой следует, что мне как раз хватает на всё, включая ECC на данные и на саму структуру тэгов тоже.

Код
╔═══════════════╦═════════════════════════════════════╦═════════════════════╦═════════════════════╗
║ Field         ║ Comment                             ║ Size for 1kb chunks ║ Size for 2kB chunks ║
╠═══════════════╬═════════════════════════════════════╬═════════════════════╬═════════════════════╣
║ blockState    ║ Block state. non-0xFF for bad block ║ 1                   ║ 1                   ║
║ chunkId       ║ 32-bit chunk Id                     ║ 4                   ║ 4                   ║
║ objectId      ║ 32-bit object Id                    ║ 4                   ║ 4                   ║
║ nBytes        ║ Number of data bytes in this chunk  ║ 2                   ║ 2                   ║
║ blockSequence ║ sequence number for this block      ║ 4                   ║ 4                   ║
║ tagsEcc       ║ ECC on tags area                    ║ 3                   ║ 3                   ║
║ ecc           ║ ECC, 3 bytes/256 bytes of data      ║ 12                  ║ 24                  ║
║ Total         ║                                     ║ 30                  ║                     ║
╚═══════════════╩═════════════════════════════════════╩═════════════════════╩═════════════════════╝


Однако, когда вызываются мои функции чтения или записи chunk'а, мне передаётся oob_len равный 28 байт. Причина в том, что в файле yaffs_packedtags2.h есть структура:
Код
struct yaffs_packed_tags2 {
    struct yaffs_packed_tags2_tags_only t;
    struct yaffs_ecc_other ecc;
};

А в yaffs_ecc.h
Код
struct yaffs_ecc_other {
    unsigned char col_parity;
    unsigned line_parity;
    unsigned line_parity_prime;
};


Которые как раз и получаются размером 28 байт, если учесть выравнивание 4 байта. Т.е. на 12 байт для ECC для данных места не хватает.

Вопрос, как мне получить показатели, которые приведены в таблице в документации?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 02:31
Рейтинг@Mail.ru


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