PDA

View Full Version : Một số câu hỏi về PIC


Duy_pro
21-08-2006, 04:48 PM
PIC không phải là sở trường của tôi, nhưng có một số vấn đề sau tôi chưa thấy F và các bạn đề cập trong diễn đàn. Mong giải đáp giúp:
1. Cơ chế ngắt trong PIC: theo tôi đc biết, khi có ngắt xảy ra, PIC dừng mọi hoạt động hiện thời, nạp giá trị bộ đếm chương trình vào ngăn xếp. Sau đó trỏ tới 0x0004H( vector ngắt) để phục vụ dịch vụ ngắt. Và trở về công việc trước đó khi gặp lệnh RETFIE. Tuy nhiên tôi thấy trong PIC chỉ có 1 vector ngắt tại 0x0004H. Do đó khi có bất kỳ ngắt nào con trỏ chương trình đều trỏ tới vector ngắt trên. Nhưng trong PIC có tới 14 ngắt. Vậy khi chương trình muốn SD nhiều ngắt thì làm thế nào?
Có phải kiểm tra nguồn gây ngắt để rẽ nhánh chương trình không?
VD: khi có ngắt TMR0 thì kiểm tra bit INTCON.2 (T0IF) rồi thực hiện lệnh GOTO để nhảy tới dịch vụ ngắt TIMER0 không? .........
2. Chế độ bảo vệ chương trinh: tôi có 2 con chip: PIC16LC715 và PIC16LF876
+ với PIC16LC715 chỉ cho phép nạp 1 lần đúng kô
+ Với PIC16LF876 cho phép nạp nhiều lần nhưng có Protect
vậy có cách nào có thể đọc đc chương trình từ hai con này ra không?
Mong cao kiến từ các FAN của PIC!

namqn
21-08-2006, 06:57 PM
PIC không phải là sở trường của tôi, nhưng có một số vấn đề sau tôi chưa thấy F và các bạn đề cập trong diễn đàn. Mong giải đáp giúp:
1. Cơ chế ngắt trong PIC: theo tôi đc biết, khi có ngắt xảy ra, PIC dừng mọi hoạt động hiện thời, nạp giá trị bộ đếm chương trình vào ngăn xếp. Sau đó trỏ tới 0x0004H( vector ngắt) để phục vụ dịch vụ ngắt. Và trở về công việc trước đó khi gặp lệnh RETFIE. Tuy nhiên tôi thấy trong PIC chỉ có 1 vector ngắt tại 0x0004H. Do đó khi có bất kỳ ngắt nào con trỏ chương trình đều trỏ tới vector ngắt trên. Nhưng trong PIC có tới 14 ngắt. Vậy khi chương trình muốn SD nhiều ngắt thì làm thế nào?
Có phải kiểm tra nguồn gây ngắt để rẽ nhánh chương trình không?
VD: khi có ngắt TMR0 thì kiểm tra bit INTCON.2 (T0IF) rồi thực hiện lệnh GOTO để nhảy tới dịch vụ ngắt TIMER0 không? .........
2. Chế độ bảo vệ chương trinh: tôi có 2 con chip: PIC16LC715 và PIC16LF876
+ với PIC16LC715 chỉ cho phép nạp 1 lần đúng kô
+ Với PIC16LF876 cho phép nạp nhiều lần nhưng có Protect
vậy có cách nào có thể đọc đc chương trình từ hai con này ra không?
Mong cao kiến từ các FAN của PIC!
1. Những gì bạn nói áp dụng cho các PIC dòng cơ bản (PIC12, PIC16), PIC10 hoàn toàn không xử lý ngắt. Bạn muốn xử lý ngắt nào thì kiểm tra cờ ngắt tương ứng và thực hiện những công việc tương ứng. Bằng cách này, bạn có thể tự quyết định thứ tự ưu tiên khi xử lý nhiều ngắt. Ví dụ của bạn là một trong những cách thích hợp.

2.
+ PIC16LC715 có phiên bản JW cho phép nạp/xóa chương trình nhiều lần (bộ nhớ chương trình là EPROM, xóa bằng UV). Chip này cũng có chế độ code protect (trừ vùng 0x00 - 0x3F).

Nếu cả hai chip đều bị protect code thì cách chắc chắn nhất mà dân reverse engineering hay làm là mài vỏ và dùng kính hiển vi để đọc.

Thân,

Duy_pro
22-08-2006, 01:03 PM
Cảm ơn Nam đã hồi âm!
Nói như vậy việc đọc code khi đã bị protect là có thể? Mình không hiểu cách thức dân reverse engineering hay làm như bạn nói! Nhưng có vẻ không có gì khó khăn để đọc đc code khi nó đã đc protect

falleaf
22-08-2006, 01:55 PM
Hiện nay trong giới crack, chỉ crack được một số loại chip, không chỉ có PIC, một số loại khác cũng có thể crack được, và với PIC chỉ crack được một số loại, không phải tất cả.

Thông tin về vấn đề này không phổ biến trong picvietnam.

Chúc vui.

Duy_pro
24-08-2006, 03:36 PM
Đồng ý với F! Việc Crack không nên phổ biến trong PICvietnam. Chúc các bạn có nhiều thành công với PIC!