Как многие другие люди, меня вдохновили серию Бена Этер, которая проведет вас через строительство 8-битного компьютера на хлебных щитах, и я хотел воспроизвести его работу (и, возможно, улучшить дизайн с некоторыми собственными идеями в будущем). Однако при составлении списка компонентов, которые мне нужно было купить, я обнаружил, что чипы EEPROM практически не поддаются в любом месте в наши дни и, таким образом, задавались вопросом, как решить эту проблему.
После некоторых исследований я обнаружил, что флэш-чипы SST39SF010 очень похожи на использование чипа чипа eeprom eeprom, а также с некоторыми улучшениями, такими как написание/скорость чтения, время удержания, энергопотребление ... конечно, однако, это призывы к другому программиру, чем тот, который написан Бен Эйтер, beneater/eeprom-programmer slu4coderSST39SF010-FLASH-Programmer может быть тем, что мне нужно. Однако, на мой взгляд, он был написан в совершенно ином стиле в отношении идеи преподавания, которая стояла за проектом Бена.
Поэтому я решил написать своего собственного программиста, что, хотя наверняка менее оптимизировано, чем Slu4coder, я думаю, что больше подходит для новичка, который хочет подходить к программированию Flash, не имея большого опыта кодирования. По этой причине я попытался прокомментировать код и быть как можно более четким в своем стиле. Мой проект также основан на Arduino Nano в сочетании с двумя чипами 74HC595, как и два вышеупомянутых проекта.
Я мог бы расширить это программное обеспечение, чтобы быть совместимым с общими чипами Flash SST39SF0X0 в будущем; Хотя, если вы попали сюда и вам нужно прошить чипы более высокой емкости, вы, вероятно, способны расширить этот проект самостоятельно. :)
В моем коде я также включил механизм проверки для записи данных и очистки функций чипа, который можно включить и настроить во время компиляции.
Макро WRITE_CHK определяется по умолчанию как 0 , но может быть изменен на 1 , чтобы включить проверку. В этом случае каждый байт данных, записанных в память, автоматически проверяется, и программное обеспечение вызовет ошибку, если считывание отличается от ожидаемых данных. Для получения дополнительной информации, пожалуйста, обратитесь к функции writeMem() внутри кода.
Macro CLR_CHK определяется по умолчанию как 0 , но может быть изменен на положительное число, чтобы включить проверку. В этом случае, после команды CLEAR Chip, номер, назначенный на макрос, будет количество случайных байтов, считываемых из вспышки и проверенных. Если какой -либо из этих байтов отличается от 0xFF (значение по умолчанию после чистого чипа), программное обеспечение вызовет ошибку. Существует еще один макрос, называемый CLR_CHK_MAX , который определяет самый высокий адрес, который можно поступать из случайной функции; По умолчанию он определяется как 131071 , который составляет (2^17) -1, самый высокий адресуемый байт в SST39SF010. Однако я хотел дать возможность настроить этот макрос, потому что в некоторых случаях флэш -память используется только для нескольких первых байтов, и поэтому полезно проверять только байты, которые использовались в предыдущем цикле записи. Для получения дополнительной информации, пожалуйста, обратитесь к функции eraseAll() внутри кода.