В идеале вы должны читать-модифицировать-записывать, без гарантии успеха, когда вы переходите на новый чип с разными битами, вы все равно меняете код.Я видел поставщиков, в которых запись нулей в зарезервированные биты не удалась, когда они восстановили чип, и пришлось прикоснуться к коду.Так что нет никаких гарантий.Самая большая подсказка в том, что в коде поставщика вы видите регистр или набор, которые явно читаются-модифицируются-записываются или просто записываются.Это могут быть разные разработчики, пишущие разные разделы примера, или в этом периферийном устройстве есть регистр, который является чувствительным, имеет недокументированный бит и нуждается в чтении-изменении-записи.
На чипах, над которыми я работаюЯ удостоверяюсь, что недокументированные (для клиента), но не неиспользованные биты помечены каким-либо образом, чтобы отличаться от других неиспользованных битов.Мы обычно помечаем неиспользуемые / зарезервированные биты как ноль, и эти другие биты получают имя, и a должен записывать это значение.Не все поставщики делают это.
Суть в том, что нет никакой гарантии, допустим, что во всех документациях и примерах программ есть ошибки, и вам нужно прорваться, чтобы выяснить, что правильно, а что нет.Независимо от того, по какому пути вы пойдете (чтение, изменение, запись, запись нулей и т. Д.), Время от времени вы будете ошибаться, и вам придется заново выполнять код, чтобы соответствовать изменениям оборудования.Я настоятельно рекомендую, чтобы, если у поставщика был какой-либо идентификатор чипа, чтобы ваше программное обеспечение считывало этот идентификатор, и если это идентификатор, с которым вы не тестировали свой код, объявляйте ошибку и не программируйте эту часть.В производственном тестировании задолго до того, как покупатель увидит продукт, будет обнаружено изменение детали, и программное обеспечение будет вовлечено в понимание причины замены детали, поскольку разрешение, являющееся альтернативной деталью, несовместимо и отклонено, или изменения программного обеспечения и т. Д.