fillsv 0 22 января, 2013 Опубликовано 22 января, 2013 · Жалоба Программирую C8051F500 через Keil. Как с его помощью установить lock байт, для запрета чтения и записи флеш памяти через программатор? Lock байт - это последний байт флеш-памяти. Т.е. Keil при генерации прошивки должен последним байтом прошивки прописать нужный байт. Как ему это указать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbinger 10 23 января, 2013 Опубликовано 23 января, 2013 · Жалоба Так ведь залочка нужна в процессе производства, а там куда удобнее использовать FlashUtil или MCUProductionProgrammer, в которых опции залочки есть. Можно и в Кейле приготовить, через отдельный файл и опции линкера, здесь об этом уже было, но утонуло в недрах. Вместо строки поставить отдельный байт и указать линкеру соответствующий адрес. (upd) Заранее приготовленный файл с лок-байтом сводит к нулю вероятность ошибки на производстве, так что "code_at" таки оптимальный вариант, независимо от способа программирования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fillsv 0 24 января, 2013 Опубликовано 24 января, 2013 · Жалоба Спасибо! Я разобрался и в Вашем примере, и с MCUProductionProgrammer, все работает! Могу добавить ещё один вариант, который мне подсказали. CSEG AT 1DFFh CFG_BYTE_0: DB 00h END Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 25 января, 2013 Опубликовано 25 января, 2013 · Жалоба Такой вариант возможен, если у вас памяти менее 64К. на Silabs582 128К ПЗУ и байт блокировки находится в банке памяти, не доступном напрямую (сперва надо переключить странцу и все такое). В этом случае либо пользовать утилиту производителя, либо вживить в код проверку байта и если не блокирован, то записать блокировку. В Си расположение по адресу (без шаманства) выглядит так code unsigned char LockByte _at_ 0xFDFF; // байт блокировки страниц памяти Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться