mvb 0 21 января, 2014 Опубликовано 21 января, 2014 · Жалоба Здравствуйте, вопрос к тем, у кого есть опыт работы с 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 для данных места не хватает. Вопрос, как мне получить показатели, которые приведены в таблице в документации? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться