‮Сдвиг по фазе (kincajou) wrote,
‮Сдвиг по фазе
kincajou

Тернист наш путь.

Вот же непруха! упёрся в странный глюк, когда безобидный вызов функции вызывает hard fault - именно сам вызов, а не то, что функция начинает делать. Покумекал, увеличил стэк до 2 килобайт (было 256 байт всего) - глюк пропал.

Теперь Mass Storage распознаётся системой более лучше™. Я вижу объём (уже не новость, впрочем), но "диск" по-прежнему не размечен и при попытке его форматировать вижу очень странное: запись идёт по нужным адресам, затем адрес "заворачивается через верх" (т.е. доходит до максимального значения, обнуляется, и снова начинает расти), доходит до значения 00004E00 и система фиксирует невозможность продолжения работы с диском.

4E00 это ровно 39 секторов (по терминологии файловой системы, не физических!) по 512 байт. А когда я смотрю, что же там записалось, то вижу только FF.

Перед записью, разумеется, я стираю затронутые сектора (физические, не файловой системы! это две разные сущности - сектор флэш-памяти и сектор файловой системы), затем уже пишу данные. То, что функции записи и чтения работают, я уже раньше проверил.

А это магическое значение в 39 секторов проявляется, какой бы размер памяти я не указал - что при штатных 32 мегабитах, что при крошечных 64 килобитах... и вот теперь где этот глюк искать, блин.

Ещё заметил, что иногда приращение адресов идёт так: 00000000, 00000200, 007EEF00, 00000600,.. т.е. среди нормальных значений, появляющихся с шагом в 512 единиц, нет-нет да и выскочит какая-то аномалия. Это фирменный код от ST.com так себя ведёт!
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments