![]() |
|
Tài trợ cho PIC Vietnam |
Bootloaders - Programmers - Debuggers - Emulators Những công cụ cần thiết để lập trình cho PIC/dsPIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#7 |
Nhập môn đệ tử
Tham gia ngày: Jan 2008
Bài gửi: 10
: |
Chào Namqn, chúc năm mới vạn sự như ý. Thời gian qua mình về quê ăn Tết, sorry đã bỏ qua thread này khá lâu.
Mình đã thử viết theo mô hình của tiny bootloader. Hiện giờ chương trình của mình đã có thể nhảy đến phần start của user Main program sau khi bootloader download toàn bộ user code. Tuy nhiên đến đây thì con trỏ ko thực thi hết các instruction có trong user program. Dùng ICD2 debug thì mình thấy sau khi nhảy lên user main program, con trỏ chỉ đến opcode EE1E (LFSR 0x1, 0xe00) , tuy nhiên khi gõ F7 để execute instruction này thì con trỏ nhảy ngược về vùng nhớ của bootloader, trỏ đến ngay opcode EE1E (LFSR 0x1, 0xe00) và giống như bootloader đc chạy lại từ đầu. Và mình nghĩ có lẽ con trỏ đã nhảy ngược lại vùng _startup của bootloader. Linker của bootloader mình đã chỉnh là CODEPAGE NAME=vectors START=0x0 END=0x29 CODEPAGE NAME=page START=0x160 END=0x1FFF7 còn của user code là : CODEPAGE NAME=vectors START=0x0 END=0x29 PROTECTED CODEPAGE NAME=page START=0x2A END=0x15F _entry_scn của c18i.c ở cả hai file mình đều chọn _entry_scn = 0x0. Bổ sung thêm là khi debug thì thấy lệnh 'LFSR 0x1, 0xe00' là lệnh 'lfsr 1, _stack' trong file c18i.c. Xin hỏi làm thế nào để MCU có thể thực thi đc các lệnh ở ctrinh ứng dụng mà con trỏ đã nhảy đến? Cám ơn. thay đổi nội dung bởi: dvdsoul, 19-02-2008 lúc 05:58 PM. |
![]() |
![]() |
|
|