Bạn đã không chỉ định chip, phần sau đây chủ yếu hướng đến các thiết bị atmega 8 bit, nhưng đó là thông tin chung. Đọc phần 'Lập trình bộ nhớ' để biết bảng dữ liệu của chip cụ thể để biết thêm thông tin cụ thể!
Điều đó đang được nói, và như bạn đã nói, tất cả các thiết bị AVR đều chứa hai bit Khóa có tên LB1 và LB2. Lập trình những cái này (về 0, thấp) sẽ thêm bảo vệ cho nội dung được ghi vào bộ nhớ Flash và EEPROM theo bảng bên dưới. Mức độ bảo vệ được chia thành ba chế độ, trong đó chế độ 1 không bảo vệ và chế độ 3 cung cấp bảo vệ tối đa. Có thể chuyển sang chế độ bảo vệ cao hơn chỉ bằng cách lập trình lại các bit Khóa.
AVR cho phép thay đổi các bit "cao" thành "thấp", nhưng không phải là cách khác. Không thể thay đổi bit Khóa "thấp" thành "cao", do đó việc giảm mức độ bảo vệ là không thể. Để xóa các bit Khóa, cần phải xóa Chip hoàn chỉnh, xóa bộ nhớ Flash.
Chỉ riêng 2 bit khóa (LB1 và LB2) khi thấp sẽ ngăn 99,9% mọi người ăn cắp phần sụn của bạn! Có lẽ hơn 99,9%. Hầu như luôn luôn dễ dàng hơn để thiết kế mã của bạn.
Vì vậy, không có cách nào để cho phép người dùng cập nhật chương trình cơ sở bằng bộ tải khởi động tùy chỉnh và bảo vệ flash khỏi việc đọc cùng một lúc?
Theo hiểu biết tốt nhất của tôi (tôi có thể nhầm lẫn nhưng tôi nghĩ rằng tôi đã có vấn đề với điều này trước đây), trên các thiết bị có cầu chì bảo vệ bộ nạp khởi động (BLB12 và BLB11), bạn có thể khóa bộ tải khởi động tùy chỉnh của mình phần , tắt SPI và được bảo vệ từ 97-98% người dân.
Tuy nhiên, khi không có bit Lock nào được lập trình, không có tính năng khóa bộ nhớ nào được bật !!!Vô hiệu hóa ISP chỉ đủ để chặn 70% mọi người.
Đối với một số thông tin bổ sung, các bit Khóa và Cầu chì không nằm trong không gian flash hoặc EEPROM thông thường, cũng không thể truy cập được từ phần mềm, ngoại trừ các bit Khóa liên quan đến Trình tải khởi động trong các thiết bị có tính năng Tự lập trình. Bảng 2 trong ghi chú ứng dụng này sẽ giúp bạn xác định những gì bạn có thể làm cho thiết bị cụ thể của mình!
Dòng AVR của Atmel không phải là thiết bị bảo mật cao (trừ khi được ghi chú rõ ràng!) Và như vậy chúng hoàn toàn không đi kèm với bất kỳ đảm bảo an toàn mã nào, cũng không nên! Giống như tất cả các thiết bị không bảo mật (và đáng buồn là ngay cả một số thiết bị an toàn), chúng dễ bị tấn công phổ biến!
Biên tập
Tôi sẽ đặt tiêu đề giao diện lập trình HV trên tàu. Nhưng ai đó có thể sử dụng lập trình viên HV để đọc flash? Tôi biết lập trình viên HV có thể xóa chip ngay cả ISP / Jtag bị vô hiệu hóa.
Tôi không nghĩ bạn nên đưa lập trình viên HV vào thiết kế bảng của mình trừ khi thực sự cần thiết và bạn biết chắc chắn nó sẽ không gây ra vấn đề gì. Lập trình viên HV (tín hiệu 12 volt,) chỉ khả dụng như một biện pháp an toàn cho các chương trình bị khóa (hầu hết bị khóa). Về lý thuyết, điều này chỉ có nghĩa là lập trình cho thiết bị không đọc bất cứ thứ gì. Và tôi chưa bao giờ nghe nói về một khai thác sẽ cho phép đọc.
Để nâng cấp bootloader (thỉnh thoảng) tôi sẽ đặt tiêu đề giao diện lập trình HV trên bo mạch. Nhưng ai đó có thể sử dụng lập trình viên HV để đọc flash? Tôi biết lập trình viên HV có thể xóa chip ngay cả ISP / Jtag bị vô hiệu hóa.
Tôi nghĩ rằng có thể có một cách để cập nhật flash bị khóa thông qua bootloader, (có thể làm gì đó với cờ ghi nội bộ và / hoặc ISR có thể ???) Nhưng tôi sẽ phải tìm kiếm ghi chú của mình và có thể phải kiểm tra nó. Tôi sẽ không thể làm điều này trong ~ 20 giờ; Vì vậy, tôi khuyên bạn nên hỏi một câu hỏi mới chỉ tập trung vào vấn đề này và cho bộ xử lý mà bạn đã đề cập. Đó là một câu hỏi rất hay !