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