|
Tài trợ cho PIC Vietnam |
Tiny Bootloader Mọi vấn đề liên quan tinybootloader sẽ được tổng hợp ở đây. |
|
Ðiều Chỉnh | Xếp Bài |
15-05-2008, 04:35 PM | #46 |
Đệ tử 2 túi
|
Hi,
BootLoader (BLD) là một phần rất hay của lập trình VDK, tui luôn tìm cách sử dụng BLD khi sử dụng với một loại VDK nào. Xem trong topic này, tui thấy các bác trao đổi về việc sử dụng BLD có sẵn, tui thì lại không thích như vậy vì thực sự tui muốn hiểu chi tiết hơn về nó và viết một cái BLD cho riêng mình để có thể làm chủ nó, làm cho nó hoạt động theo ý mình. Tui tiếp cận với PIC bằng CCS vì vậy đọc mã nguồn bằng ASM tui không hiểu, nếu muốn hiểu thì phải mất thời gian nghiên cứu tập lệnh, cái này không có lợi đối với tui. Tui cũng đã đọc mã nguồn BLD của CCS (trong mục Example) nhưng cũng không hiểu lắm và cách nó làm cũng khác với tinyBLD mà các bác đang trao đổi ở đây mà tui thích kiểu tinyBLD này, thấy nó tiện hơn. Vì vậy tui muốn dùng CCS để viết riêng một BLD theo kiểu tinyBLD mà các bác đang trao đổi. Tuy nhiên, để BLD có thể giao tiếp với phần mềm truyền file hex trên PC thì phải biết giao thức của nó. Đấy chính là cái tui cần hỏi các bác về cách thức mà BLD và phần mềm trên PC như thế nào? Để bắt tay thì nó phải truyền cái gì? cái gì được truyền đầu tiên và tiếp theo là cái gì cho đến khi quá trình kết thúc? Phải nắm được những thông tin đó thì mới có thể lập trình được. Một câu hỏi nữa cần các bác trả lời là: tại sao tui viết #org 0x1F00 void main(void) { // code for testing here } Nhưng khi biên dịch thì kết quả trong file Hex là mất khá nhiều byte (khoảng vài chục) mới đến lệnh nhảy tới địa chỉ của hàm main() (tức 0x1F00). Không phải như chúng ta nghĩ là hàm main là hàm được thực thi đầu tiên nên chỉ mất 4 byte (từ 0000 đến 0003) cho lệnh nhảy. Nếu như vậy thì có cách nào để cho CCS biên dịch ra lệnh đầu tiên là lệnh nhảy đến hàm main lập tức không? Nếu không thực hiện được điều này thì không thể viết BLD kiểu tinyBLD được. Tui mới tìm hiểu về CCS và PIC nên cũng chưa nắm rõ để giải quyết vấn đề này. Rất mong các cao thủ bỏ chút công sức giúp đỡ. Cảm ơn các bác đã đọc bài. Thân ái. |
15-05-2008, 06:49 PM | #47 |
Trưởng lão PIC bang
|
Trước hết, bạn định dùng phần mềm trên host PC của Tiny Bootloader hay sẽ tự viết? Giao thức của Tiny Bootloader khá đơn giản, có thể thấy ngay trong phần chú thích của các mã nguồn firmware.
Về chuyện hàm main() được thực thi sau vài chục chu kỳ lệnh, đây là chuyện bình thường, vì các trình biên dịch cấp cao thường thiết lập một số điều kiện làm việc (ngăn xếp, biến được khởi tạo, ...) trước khi nhảy đến chương trình chính, trong giai đoạn startup. Nếu dùng C18 chẳng hạn, bạn có thể đọc mã nguồn startup. Với CCS C thì tôi không rõ bạn có thể can thiệp gì vào giai đoạn startup hay không, đơn giản vì tôi không dùng nó. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
16-05-2008, 09:04 AM | #48 |
Đệ tử 2 túi
|
Hi,
Đúng là ngôn ngữ bậc cao thì nó có làm một vài thao tác như vậy, nên tui muốn hỏi các bác là có cách nào để loại bỏ cái này không? Tui đã dùng cách như sau (xem đoạn code bên dưới) nhưng không được, khi biên dịch nó báo lỗi tùm lum, invalid org #org 0x0003, 0x1f00 {} // Báo cho trình biên dich biết là khi biên dịch không được bỏ bất kỳ mã lệnh nào vào vùng địa chỉ này. Nếu các bác để ý thì đó là phần bộ nhớ chương trình từ địa chỉ ngắt đầu tiên đến địa chỉ đầu tiên của BLD. Tuy nhiên, CCS chỉ cho phép bỏ trống từ địa chỉ 0x0033 trở đi thôi, xâm phạm vào vùng địa chỉ ngắt hay reset là không được. Có cách nào để giải quyết vấn đề này không nhỉ? Theo cách làm của CCS thì BLD của nó đặt ở phần đầu bộ nhớ chương trình nên các chương trình ứng dụng mình viết để nạp bằng BLD phải khai báo lại: #build(reset = BLD_END + 1, interrupt = BLD_END + 5) Tui không thích kiểu như vậy vì nếu làm thế thì không thể viết chương trình ứng dụng trên các trình biên dịch khác để dùng BLD được (vì địa chỉ reset luôn là 0x0000). Có ai có cao kiến nào không? Thân ái. |
24-09-2008, 10:05 AM | #49 |
Nhập môn đệ tử
Tham gia ngày: Sep 2008
Bài gửi: 6
: |
Cám ơn các bạn rất nhiều !
|
02-10-2009, 05:44 PM | #50 |
Nhập môn đệ tử
Tham gia ngày: Jul 2007
Bài gửi: 6
: |
ban ơi chỉ cho mình cách dịch lại firmware bootloader với sao mình dịch lại nó báo lỗi tùm num cả nhỉ
cám ơn nhiều |
15-06-2012, 12:44 AM | #51 |
Nhập môn đệ tử
Tham gia ngày: Oct 2010
Bài gửi: 4
: |
Xin thầy Nam vui lòng xem qua và trợ giúp phần biên dịch bootloader cho pic18f4520
Xin thầy Nam vui lòng xem qua phần lỗi này dùm em, em thường sử dụng ccsc để lập trình nên em không nắm rõ được các thanh ghi và nội dung đoạn code trong file TinyB18F của thầy, tuy nhiên em cũng đọc được các hướng dẫn ngay trong đoạn code và làm theo, tuy nhiên khi biên dịch thì lại xảy ra lỗi bên dưới. Em đã copy toàn bộ các file header vào cùng thư mục của file ".asm". Em cũng đã kiểm tra file nguồn đúng chuẩn windows(em sử dụng folder thầy gửi sau này và đã mở bằng notepad).
---------------------------------------------------------------------- Debug build of project `D:\picsource\new\Pic18f4520_20MHz_38400bps.mcp' started. Language tool versions: MPASMWIN.exe v5.45, mplink.exe v4.43, mplib.exe v4.43 Preprocessor symbol `__DEBUG' is defined. Thu Jun 14 23:11:23 2012 ---------------------------------------------------------------------- Make: The target "D:\picsource\other\TinyB18F\TinyB18F.o" is out of date. Executing: "C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe" /q /p18F4520 "TinyB18F.asm" /l"TinyB18F.lst" /e"TinyB18F.err" /d__DEBUG=1 Error[176] D:\PICSOURCE\OTHER\TINYB18F\TINYB18F.ASM 35 : CONFIG Directive Error: (setting "OSCSError[176] D:\PICSOURCE\OTHER\TINYB18F\TINYB18F.ASM 57 : CONFIG Directive Error: (setting "BORError[176] D:\PICSOURCE\OTHER\TINYB18F\TINYB18F.ASM 80 : CONFIG Directive Error: (setting "CCP2MUXError[176] D:\PICSOURCE\OTHER\TINYB18F\TINYB18F.ASM 99 : CONFIG Directive Error: (setting "STVRHalting build on first failure as requested. ---------------------------------------------------------------------- Debug build of project `D:\picsource\new\Pic18f4520_20MHz_38400bps.mcp' failed. Language tool versions: MPASMWIN.exe v5.45, mplink.exe v4.43, mplib.exe v4.43 Preprocessor symbol `__DEBUG' is defined. Thu Jun 14 23:11:25 2012 ---------------------------------------------------------------------- BUILD FAILED ------------------------------------------------------------------------------------- ---------------------------------------- Đoạn config sửa lại file TinyB18F.asm của thầy như sau: ---------------------------------------- radix DEC LIST P=18F4520 xtal EQU 20000000 baud EQU 38400 #include "D:\picsource\new\icdpictypes.inc" #include "D:\picsource\new\spbrgselect.inc" #include "D:\picsource\new\bankswitch.inc" #define first_address max_flash-200 ;100 words CONFIG OSC = HS, OSCS = OFF CONFIG PWRT = ON, BOR = ON, BORV = 27 CONFIG WDT = OFF, WDTPS = 128 CONFIG CCP2MUX = OFF CONFIG STVR = ON, LVP = OFF, DEBUG = OFF -------------------------------------------------------------- |
31-10-2012, 12:03 PM | #52 |
Đệ tử 9 túi
Tham gia ngày: May 2006
Bài gửi: 150
: |
Chắc đây là sản phẩm đầu tay của PICVN 6 năm về trước? Thời gian làm mạch này và thử đến khi có thể bắt đầu sử dụng được thì hết bao nhiêu thời gian? Mạch này có thể dùng breadboard được vì người làm nghiệp dư chắc khó có thể chế được mạch in, các linh kiện gồm:
1. IC MAX232x1 2. Tụ 1 uFx4 3. RS-232 connector x 1 4. J1 6-pin connector x 1 5. Breadboard x 1 6. RS-232 cable x 1 7. Một số dây nối và vài thứ lặt vặt khác Giá mua linh kiện trên ở Australia (có thể ở Mỹ rẻ hơn chút) ước chừng khoảng 30-40 AUD (gần tương đương 30-40 USD) đắt bằng 1 nửa giá mua PICKIT3 + bo mạch thử (khoảng 70 AUD). Còn mua thêm mạch thử nữa thì chắc sẽ mất khoảng 60-70 AUD, làm hỏng thì mất thêm chừng ít tiền nữa, vị chi cho project này hết chừng 100 AUD (gần tương đương 100 USD). >> Ở nước ngoài nhiều khi đi mua đồ về tự làm có khi đắt hơn là mua đồ làm sẵn. Nhưng có nhiều người thích DIY nên người ta vẫn mua đồ về tự làm lấy như là một hobby và như vậy có đất sống cho các cửa hàng hobby shops là vậy. Còn ở VN dường như ngược lại, ngoài chuyện hobby và thích làm thì mua linh kiện về làm giá rẻ hơn mua đồ làm sẵn thì phải??? thay đổi nội dung bởi: HaiAu2005, 31-10-2012 lúc 12:26 PM. |
31-10-2012, 01:27 PM | #53 |
Đệ tử 9 túi
Tham gia ngày: May 2006
Bài gửi: 150
: |
Tôi nhìn thấy cái programmer sau trên eBay giá chưa đầy 14 AUD:
http://www.ebay.co.uk/itm/PIC-USB-Mi...50847177167%26 So với tiny bootloader chắc cái này khác nhiều. Nếu không muốn làm mạch nạp, có lẽ mua cái này và mua một con PIC, một breadboard và vài linh kiện cũng như motor và IC điều khiển mô tơ nữa là có công cụ học PIC một cách nhanh chóng. |
|
|
Similar Threads | ||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
Cơ bản về bootloader & tiny bootloader | ntdung | Tiny Bootloader | 139 | 07-11-2024 07:34 PM |
Microchip Bootloader | falleaf | Bootloaders - Programmers - Debuggers - Emulators | 2 | 20-05-2017 11:43 AM |
xin bootloader của pic18f4331 | hoangminh1234 | Tiny Bootloader | 30 | 24-12-2011 02:38 PM |
Tiny bootloaders | falleaf | Tiny Bootloader | 15 | 01-02-2010 03:13 PM |
Xin file hex bootloader của PIC16F84A | hanhluckyly | Tiny Bootloader | 1 | 18-10-2006 09:36 PM |