у меня там сейчас в системной области повторение текущего сектора и типа сектора, а в области данных 0х4040. Честно говоря, я взял ту 0 дорожку, что приаттачил в своем сообщении.
- - - Добавлено - - -
Как у меня сделаны чтение/запись. В RAM памяти СТМки лежит полностью 0 цилиндр (6250 байт), а в EPROM: массив (размером с цилиндр, 6250 байт) с синхрометками для чтения и второй массив, такой же длинны, с синхрометками для записи. Я понимаю, что не экономно, но "облагораживать" я буду потом, тем более, что в 32ф411 аж 512 КБ EPROMа, а задействовано около 9%.
- - - Добавлено - - -
Alex_K, Скажи пожалуйста, а вот бит WM выставляется всегда, если были изменения в секторе? до этого момента отправить головку на другой цилиндр УКНЦ не может?
Ясно, спасибо. Мне не очень нравится как у меня на данный момент сделана запись, пишет на сд-карту каждый раз после записи сектора и пишет весь цилиндр целиком, понятно, что сд-карте все равно, она на переписывает одинаковые данные, но можно как-то определить, закончилась ли запись в этом цилиндре или нет, но как.. пока идей нет.
Однозначным сигналом о том, что запись на этом цилиндре закончилась, будет команда "Шаг" на переход к другому цилиндру. До этого можно спокойно использовать дорожку в памяти МК в качестве кэша отложенной записи. Ну, и, чтобы не потерять информацию, если шага не потребовали, можно сделать тайм-аут, секунды на 3. Если в течении этих трех секунд обращение к диску не последовало, кэш надо сбросить принудительно. А писать каждый сектор - это, конечно, лишнее.
- - - Добавлено - - -
В смысле НЕ переписывает? Так это не так. Запись на SD выполняется страницами, переписывая один сектор, мы, на самом деле, даем команду контроллеру SD-шки считать из флеш-памяти в своё внутреннее ОЗУ всю страницу, кроме записываемого сектора, стереть эту страницу и записать ее заново, с тем самым замененным сектором. Расходуя, заодно, ресурс записи на флешь. Наиболее правильной и быстрой записью на SD будет запись полными страницами.
Когда SD-шка форматируется специальной для них программой, это делают так, чтобы кластеры FAT ложились точно на эти самые страницы, при этом, если запись делать целыми кластерами, то достигается максимальная скорость записи и минимальный расход ресурса записи флеш-памяти. Именно поэтому не рекомендуют форматировать флешки виндой - она-то ничего не знает о страницах, границы кластеров FAT не будут совпадать с границами страниц и запись на SD-шку будет тормозить.
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
Не согласен, я могу записать только 1 сектор на текущей дорожке.
Тоже не пойдет, целиком дорожка может быть и не загружена в память вообще, я только пишу в нее пару секторов, но не читаю.
Получается, мне надо хранить не только содержимое секторов, но и № секторов которые были изменены. Теоретически это сделать не сложно, но дело в том, что по 1 сектору писать, что группой секторов, для СД-карты в реализации FatFs по барабану, она пишет блоками по 512 байт. По идее, и скорость-то не сильно увеличится, тк затраты на всю математику и вход в подпрограмму записи ничтожны по сравнению со временем самой записи 512-байтного блока.
То что вы пишите, верно только отчасти, сейчас контроллеры СД, ССД и других EPROMов очень поумнели, если блоки совпадают, блоки просто не переписываются.
Вот тут я совсем не согласен. Размер блока при форматировании в Виндовс, да и любой другой системы (я не говорю о спецнастройках, я имею ввиду "по умолчанию") кратен 512 байтам.
У меня вопрос к гуру, запись вроде как работает, но как всегда есть один нюанс.. Если я пишу в уже созданный файл, то файлы пишутся, стираются и выполняются любые операции над ними, но если я отформатировал диск, то при попытке DIR выдается сообщение: DIR-F-Invalid-directory, а при попытке записи туда файла: PIP-F-В оглавлении MZ2: DISPL.SAV произошла ошибка ввода-вывода
Я что-то опять не знаю?![]()
Последний раз редактировалось ZPilot; 22.07.2020 в 18:19.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Спасибо, сработало.
Могу сказать, что запись теперь работает тоже. Если нужен видеоотчет, напишите, выложу.
- - - Добавлено - - -
Запись на СД-карту выполняется по попаданию позиции "головки" в зону CRC и по секторно. Поэтому записываются только полезные данные. От записи цилиндра отказался.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)