SDCC là một trình biên dịch tùy biến cao, hỗ trợ nhiều loại vi điều khiển, và miễn phí. SDCC được phát triển bởi một cộng đồng đông đảo lập trình viên khắp thế giới và rất phổ biến với người dùng Linux. SDCC cũng có phiên bản dành cho Windows. Ở những nước phát triển, việc sử dụng phần mềm ***** bị hạn chế nên SDCC là một giải pháp thay thế rất tốt cho các trình dịch thương mại Keil, Raisonace hay IAR...
Một chương trình nạp chip khá nổi tiếng được dịch bởi SDCC là EZ downloader (chương trình miễn phí dùng để nạp chip qua cổng COM cho họ 89).
Sau một thời gian tìm hiểu và sử dụng, tôi có một số nhận xét sau. Ưu điểm của SDCC là miễn phí, được hỗ trợ tốt, hỗ trợ nhiều họ vi điều khiển (8051, PIC, Motorola, Zilog,...), tính tùy biến cao, mã nguồn mở. Nhược điểm của SDCC là cấu hình tương đối phức tạp, không tích hợp sẵn môi trường phát triển và soạn thảo, dùng không cẩn thận sẽ phát sinh lỗi (Tất nhiên cái này thì cả Keil cũng có).
Để sử dụng SDCC trên Windows và dịch cho 8051, các bạn cần có: bộ cài SDCC và một trình soạn thảo. Ở đây tôi dùng trình soạn thảo Programmers Notepad. Trình soạn thảo này rất tuyệt vời, các bạn thử sẽ biết. (Các bộ cài tìm trên google nhé, tất cả đều free và tải rất dễ). Sau đó thực hiện các bước sau:
Link download:
SDCC: http://sourceforge.net/project/showf...ckage_id=28921
Programmers Notepad: http://www.pnotepad.org/download/
1. Cài đặt SDCC. Khi cài đặt gần xong, Có một dialog hỏi bạn xem có đặt SDCC như một lời gọi hệ thống không. Bạn chọn Yes.
2. Cài đặt (hoặc unzip) và chạy Programmers Notepad (PN.EXE).
3. Định nghĩa một số lệnh trong Programmers Notepad để bắt SDCC dịch:
3.1. Định nghĩa lệnh dịch (compile, Ctrl+Shift+C) : Vào Tools/Options, vào Tools chọn Scheme: C/C++, sau đó nhấn Add để tạo và định nghĩa lệnh dịch. Điền các tham số như sau:
Name: Compile with SDCC
Command: sdcc
Folder: %d
Parameters: -c %d%f --stack-auto --nooverlay
Shortcut: Ctrl+Shift+C (nhấn Ctrl và Shift, gõ C)
Save: Current File
Tick vào This tool will modify the current file
Xong lệnh dịch (compile). Khi bạn nhấn tổ hơp phím Ctrl+Shift+C khi đang mở một file .C nào đó thì sdcc sẽ dịch file đó và tạo ra các object và liên kết. Tuy nhiên để có file hex để nạp vào chip thì cần thêm lệnh build
3.2. Định nghĩa lệnh dịch tạo file nạp .ihx (build, Ctrl+Shift+B) : Vào Tools/Options, vào Tools chọn Scheme: C/C++, sau đó nhấn Add để tạo và định nghĩa lệnh dịch tạo file nạp .ihx. Điền các tham số như sau:
Name: Build with SDCC
Command: sdcc
Folder: %d
Parameters: %d%f *.rel --stack-auto --nooverlay
Shortcut: Ctrl+Shift+B (nhấn Ctrl và Shift, gõ B)
Save: Current File
Tick vào This tool will modify the current file
Xong lệnh dịch (build). Khi bạn nhấn tổ hơp phím Ctrl+Shift+B khi đang mở một file .C nào đó thì sdcc sẽ dịch file đó và tạo ra file .ihx. File này giống hệt file hex mà các trình dịch khác tạo ra để nạp vào chip.
4. Test:
Chạy Programmers Notepad (PN.EXE). Vào File/New/Project
Click chuột phải vào cửa sổ projects, chọn add files và chọn một file C nào đó có nội dung như sau:
#include <8051.h>
#include <stdio.h>
void main()
{
// Khởi tạo cổng COM (rất giống Keil phải không các bạn)
TMOD|= 0x20; // 00100000 Timer 1, Mode 2
SCON= 0x50; // 01010000 Data 1-8-1, No Parity
TH1= 0xFB; // Baud Rate 9600, giả sử Clock= 18.432MHz
TR1= 1; // Start Timer 1
// Test hàm printf
printf("Hello World!\r\nThis is SDCC");
while(1);
}
Nhấn tổ hợp Ctrl+Shift+B bạn sẽ có một file ihx để nạp vào chip.
Chúc các bạn vui vẻ với trình biên dịch hay ho này nhé.
-------------------------------------------------------------------------
Chú ý: Một số chương trình mô phỏng như proteus không chấp nhận tên tệp là .ihx, nên bạn phải đổi tên tệp vừa dịch ra thành .hex. Tôi đưa ra một cách đổi tên tự động với phím nóng trong Programmers Notepad như sau: Bạn tạo ra một file tên là Rename.bat (file tự chạy), click chuột phải vào nó và chọn edit, soạn nội dung như sau:
IF EXIST *.HEX (del *.HEX & ren *.IHX *.HEX) ELSE (ren *.IHX *.HEX)
Sau đó save và copy file này vào thư mục bin trong thư mục mà bạn cài SDCC. Định nghĩa một lệnh mới trong SDCC tương tự như ở trên. Ví dụ:
Name: Rename IHX to HEX
Command: Rename.bat
Folder: %d
Parameters:
Shortcut: Ctrl+Shift+N (nhấn Ctrl và Shift, gõ N)
Save: None
Lệnh tự động đổi tên tệp .ihx bạn vừa dịch sang .hex
Một chương trình nạp chip khá nổi tiếng được dịch bởi SDCC là EZ downloader (chương trình miễn phí dùng để nạp chip qua cổng COM cho họ 89).
Sau một thời gian tìm hiểu và sử dụng, tôi có một số nhận xét sau. Ưu điểm của SDCC là miễn phí, được hỗ trợ tốt, hỗ trợ nhiều họ vi điều khiển (8051, PIC, Motorola, Zilog,...), tính tùy biến cao, mã nguồn mở. Nhược điểm của SDCC là cấu hình tương đối phức tạp, không tích hợp sẵn môi trường phát triển và soạn thảo, dùng không cẩn thận sẽ phát sinh lỗi (Tất nhiên cái này thì cả Keil cũng có).
Để sử dụng SDCC trên Windows và dịch cho 8051, các bạn cần có: bộ cài SDCC và một trình soạn thảo. Ở đây tôi dùng trình soạn thảo Programmers Notepad. Trình soạn thảo này rất tuyệt vời, các bạn thử sẽ biết. (Các bộ cài tìm trên google nhé, tất cả đều free và tải rất dễ). Sau đó thực hiện các bước sau:
Link download:
SDCC: http://sourceforge.net/project/showf...ckage_id=28921
Programmers Notepad: http://www.pnotepad.org/download/
1. Cài đặt SDCC. Khi cài đặt gần xong, Có một dialog hỏi bạn xem có đặt SDCC như một lời gọi hệ thống không. Bạn chọn Yes.
2. Cài đặt (hoặc unzip) và chạy Programmers Notepad (PN.EXE).
3. Định nghĩa một số lệnh trong Programmers Notepad để bắt SDCC dịch:
3.1. Định nghĩa lệnh dịch (compile, Ctrl+Shift+C) : Vào Tools/Options, vào Tools chọn Scheme: C/C++, sau đó nhấn Add để tạo và định nghĩa lệnh dịch. Điền các tham số như sau:
Name: Compile with SDCC
Command: sdcc
Folder: %d
Parameters: -c %d%f --stack-auto --nooverlay
Shortcut: Ctrl+Shift+C (nhấn Ctrl và Shift, gõ C)
Save: Current File
Tick vào This tool will modify the current file
Xong lệnh dịch (compile). Khi bạn nhấn tổ hơp phím Ctrl+Shift+C khi đang mở một file .C nào đó thì sdcc sẽ dịch file đó và tạo ra các object và liên kết. Tuy nhiên để có file hex để nạp vào chip thì cần thêm lệnh build
3.2. Định nghĩa lệnh dịch tạo file nạp .ihx (build, Ctrl+Shift+B) : Vào Tools/Options, vào Tools chọn Scheme: C/C++, sau đó nhấn Add để tạo và định nghĩa lệnh dịch tạo file nạp .ihx. Điền các tham số như sau:
Name: Build with SDCC
Command: sdcc
Folder: %d
Parameters: %d%f *.rel --stack-auto --nooverlay
Shortcut: Ctrl+Shift+B (nhấn Ctrl và Shift, gõ B)
Save: Current File
Tick vào This tool will modify the current file
Xong lệnh dịch (build). Khi bạn nhấn tổ hơp phím Ctrl+Shift+B khi đang mở một file .C nào đó thì sdcc sẽ dịch file đó và tạo ra file .ihx. File này giống hệt file hex mà các trình dịch khác tạo ra để nạp vào chip.
4. Test:
Chạy Programmers Notepad (PN.EXE). Vào File/New/Project
Click chuột phải vào cửa sổ projects, chọn add files và chọn một file C nào đó có nội dung như sau:
#include <8051.h>
#include <stdio.h>
void main()
{
// Khởi tạo cổng COM (rất giống Keil phải không các bạn)
TMOD|= 0x20; // 00100000 Timer 1, Mode 2
SCON= 0x50; // 01010000 Data 1-8-1, No Parity
TH1= 0xFB; // Baud Rate 9600, giả sử Clock= 18.432MHz
TR1= 1; // Start Timer 1
// Test hàm printf
printf("Hello World!\r\nThis is SDCC");
while(1);
}
Nhấn tổ hợp Ctrl+Shift+B bạn sẽ có một file ihx để nạp vào chip.
Chúc các bạn vui vẻ với trình biên dịch hay ho này nhé.
-------------------------------------------------------------------------
Chú ý: Một số chương trình mô phỏng như proteus không chấp nhận tên tệp là .ihx, nên bạn phải đổi tên tệp vừa dịch ra thành .hex. Tôi đưa ra một cách đổi tên tự động với phím nóng trong Programmers Notepad như sau: Bạn tạo ra một file tên là Rename.bat (file tự chạy), click chuột phải vào nó và chọn edit, soạn nội dung như sau:
IF EXIST *.HEX (del *.HEX & ren *.IHX *.HEX) ELSE (ren *.IHX *.HEX)
Sau đó save và copy file này vào thư mục bin trong thư mục mà bạn cài SDCC. Định nghĩa một lệnh mới trong SDCC tương tự như ở trên. Ví dụ:
Name: Rename IHX to HEX
Command: Rename.bat
Folder: %d
Parameters:
Shortcut: Ctrl+Shift+N (nhấn Ctrl và Shift, gõ N)
Save: None
Lệnh tự động đổi tên tệp .ihx bạn vừa dịch sang .hex
Comment