2008-09-18 29 views
10

Chúng tôi đang bắt đầu một dự án mới dựa trên vi mạch PIC18F252. Trình biên dịch 'c' tốt nhất để sử dụng là gì?Trình biên dịch c tốt nhất cho Pic18 vi

+2

Tôi khuyên bạn nên truy cập diễn đàn của nhà sản xuất cho từng trình biên dịch và so sánh các câu hỏi và khiếu nại của người dùng. –

Trả lời

6

nghệ PICC luôn luôn đáng tin cậy đối với tôi và nó đã có nhiều năm phát triển.

4

Chúng tôi sử dụng CCS và nó khá tốt. Rất chậm, nhưng nó hoạt động tốt. Dù sao, tôi không có bất kỳ so sánh với các trình biên dịch khác, do đó, có thể có sự lựa chọn tốt hơn.

+0

Tôi cũng là người dùng CCS. Tôi thực sự thích API C và việc chuyển sang các bộ xử lý khác dễ dàng như thế nào. Tôi tìm thấy trình biên dịch C lỗi buggy mặc dù, chắc chắn là một tập con của tiêu chuẩn C. – kenny

0

Nếu bạn có thể thoát khỏi nó (ưu tiên của tôi sẽ là) sử dụng Bộ ghép PIC18 với MPLAB. Nó có lợi thế là tự do và relativly cũng tài liệu cùng với thực tế là nó có hardwars phong nha/hỗ trợ trình sửa lỗi. Tập lệnh nhỏ và sự đơn giản của nó đã dẫn đến việc viết mã dễ dàng và nhanh chóng.

Nếu bạn đang đặt trên c mặc dù:

CCS là một trình biên dịch tốt để sử dụng, một chút lỗi và khá đắt tiền mà còn có khả năng gỡ lỗi tốt.

Microsoft Embedded Studio (hoặc một cái gì đó tương tự) là tuyệt vời nếu bạn đã quen với phương pháp Visual Studio 6 viết mã c. Một lần nữa hỗ trợ phần cứng tốt và trình gỡ lỗi tuyệt vời.

Tôi tin rằng nếu bạn đang tìm kiếm một giải pháp miễn phí, bạn thực sự có thể nhận được trình biên dịch c cho MPLAB, mặc dù cá nhân Ive không bao giờ sử dụng bất kỳ vì vậy tôi không thể vượt qua phán xét.

3

Tôi không thích CCS, quá kỳ quặc.

SourceBoost không phải là xấu và khá rẻ, khoảng £ 40.

Trình biên dịch C18 Microchip là IMO tốt nhất, nhưng rất tốn kém. Mặc dù vậy, có một phiên bản demo/sinh viên miễn phí.

8
  1. Microchip C18 compiler: thực sự là tốt nhất và dễ sử dụng nhất. Hoàn hảo cho sử dụng chuyên nghiệp.
  2. HI-TECH: Được sử dụng khi Microchip không hoạt động (đối với PIC16).
  3. CCS
  4. SourceBoost

PS: Bản thân tôi làm việc trên gia đình PIC18F25XX và PIC18F45xx, vì vậy tôi biết một chút về việc này. ;)

PS2: Trong trường hợp lỗi trình biên dịch (điều đó xảy ra với chúng tôi), nhóm Microchip khá phản ứng và các phiên bản mới được phát hành khá nhanh. Hãy thử tìm một đại lý bán lẻ địa phương có liên hệ với Microchip, sau đó tham gia một sự kiện với họ và nhận được liên hệ trực tiếp. Vô giá.

+0

Tôi đồng ý. Tôi chỉ sử dụng CCS và C18, nhưng tôi thích C18 hơn. Nó có một bộ sưu tập tuyệt vời các thư viện phần cứng/phần mềm và tích hợp vào MPLab tốt. – mjh2007

+1

Sử dụng CCS trong 1 năm. Nó dễ sử dụng nhưng có nhiều lỗi. – RHaguiuda

+0

Liên kết HI-TECH bị hỏng. – Tshepang

1

Tôi sẽ nhấn mạnh rằng bạn sử dụng trình biên dịch C18. Nó cực kỳ mạnh mẽ và rất dễ sử dụng. Đó là một phải có cho phát triển chuyên nghiệp. Nó thực sự phụ thuộc vào kích thước của dự án bạn đang làm việc.

Bắt đầu với phiên bản miễn phí/sinh viên và bạn sẽ có cảm giác tốt khi sử dụng nó. Nếu dự án của bạn nhỏ, đó có thể là tất cả những gì bạn cần. Tôi vừa hoàn thành một dự án dev kích thước lớn ish trên một PIC 18F và tôi đã rất hài lòng với trình biên dịch C18.

2

Tôi hiện đang sử dụng CCS và ghét nó. Nó rất phi tiêu chuẩn và quá nhiều của một tập hợp con của C, rằng nó chỉ hút. Tôi đang xem xét chuyển đổi ngay. Tôi sẽ thử trình biên dịch Microchip C18 đầu tiên và sau đó tôi sẽ nuốt khó và nhận được HighTech mà có vẻ khá vững chắc từ việc xem xét phiên bản dùng thử và các mẫu.

7

Tôi đã nghiên cứu sâu rộng về trình biên dịch Hitech PICC18 và trình biên dịch C18 Microchip vài năm trước. Tôi nghĩ rằng hầu hết mọi người quyết định đi với trình biên dịch Microchip C18 chỉ vì họ nhìn thấy nó khi họ đi đến trang web vi mạch và đã quen thuộc với MpLab từ lắp ráp (đó là một IDE IMHO khủng khiếp).

Giải pháp của HiTech gần gũi hơn với ANSI C (do đó mã di động nhiều hơn). Với C18, bạn đã thêm tất cả các loại từ khóa trình biên dịch cụ thể và buộc phải quản lý bộ nhớ nhiều hơn nữa.

  1. Bạn phải chỉ định ngân hàng ram nào sẽ phân bổ biến.
  2. Để có chuỗi const được phân bổ cho không gian chương trình (thay vì ram), bạn phải sử dụng từ khóa rom.
  3. Bạn không thể phân bổ các biến lớn hơn 256 byte mà không cần chỉnh sửa tập lệnh trình liên kết.

Một so sánh tuyệt vời mà đi cách sâu hơn có thể được tìm thấy ở đây: http://www.xargs.com/pic/picc18-vs-c18.html

Bên cạnh đó từ trình biên dịch bạn cũng cần phải đi vào xem xét IDE. Tôi là một fan hâm mộ cuồng nhiệt và vì vậy tôi thực sự thích HiTide HiTech vì lý do này. Tuy nhiên, kể từ khi Microchip đã mua HiTech ... có vẻ như họ không còn hỗ trợ HiTide nữa. Tôi không nghĩ rằng đây là chính thức ... nhưng từ kinh nghiệm của tôi với hỗ trợ HiTech ... họ không sửa lỗi nữa mà là một sự xấu hổ thực sự.


Tôi cũng đã thử trình biên dịch chuyên nghiệp của mình. Tôi thực sự thích ý tưởng. Nhưng, dự án của tôi đã vượt quá các yêu cầu về khối thông số tự động và không thể sử dụng nó. Nó cũng có vẻ mất nhiều thời gian để biên dịch nhưng nó có thể là b/c của sự phức tạp của chương trình.

2

Tôi đã sử dụng CCS trong nhiều năm. Tôi đã tìm thấy một vài lỗi nhưng có hỗ trợ là rất tốt và tôi có thể phát triển nhanh hơn và dễ dàng hơn với CCS so với C18 hoặc HITEC

1

MPLAB C18 - Sinh viên

5

Tôi đã không được sử dụng các trình biên dịch Microchip, nhưng đã được sử dụng Sản phẩm của HiTech trong nhiều năm. Tôi đã thường thích trình biên dịch PIC16 của họ, nhưng tìm trình biên dịch PIC18 của họ khá bực bội. Trong khi tôi đánh giá cao việc không phải đặt tất cả các biến vào ngân hàng, các quy tắc được sử dụng bởi trình biên dịch của HiTech là gây phiền nhiễu, kỳ quái và ngốc nghếch. Tóm tắt: chip có 16 ngân hàng 256-byte của các biến (* không phải tất cả 256 byte có sẵn trong tất cả các ngân hàng) và một con trỏ ngân hàng. Truy cập trực tiếp vào một biến yêu cầu chọn đúng ngân hàng; thay đổi ngân hàng có một chỉ dẫn.

Ints và cấu trúc toàn cục và tĩnh và mảng của chúng có kích thước từ 2-255 byte sẽ được phân bổ thành các phần tử trên cơ sở mỗi mô-đun; psect của mỗi module phải phù hợp với trang 256 byte. Mảng byte, cũng như các byte riêng lẻ, đi vào một "lớn" psect nơi mỗi byte được giả định có thể cư trú trong một trang khác nhau.

Tất cả các biến và tham số tự động trong suốt chương trình phải phù hợp với trang 256 byte (chúng được phân bổ tĩnh tại thời gian liên kết). Trình liên kết thực hiện các biến lớp phủ không bao giờ phát trực tiếp đồng thời, nhưng giả định bất kỳ cuộc gọi nào đến một con trỏ hàm có chữ ký cụ thể có thể gọi bất kỳ hàm nào có địa chỉ được lấy và có chữ ký đó.

Có thể khai báo tối đa 128 byte giá trị của biến toàn cục và biến tĩnh để 'gần'. Đây có thể được truy cập mà không cần chuyển đổi ngân hàng. Không thể chỉ định các biến hoặc tham số tự động được đặt 'gần'.

Quy tắc chuyển đổi ngân hàng được HiTech sử dụng có nghĩa là nhiều chức năng, ngay cả khi chúng không bao giờ sử dụng bất kỳ biến nào ngoài mô-đun riêng của chúng, sẽ được hướng dẫn bằng lệnh movlb (chuyển đổi ngân hàng).

Tôi không muốn "tạo mã toàn diện". Tôi muốn khả năng thêm một vài gợi ý để đặt mọi thứ một cách hợp lý bằng cách xác định từ khóa hoặc macro cho các biến tùy chỉnh, cho phép các biến tự động và cục bộ chia sẻ psects với các biến khác (che phủ các biến tự động/tham số đến mức có thể cho các hạn chế ngân hàng được chỉ định). Nếu nhà cung cấp trình biên dịch thực sự muốn trở nên tốt đẹp, hãy cho phép con trỏ chấp nhận vòng loại ngân hàng, để một con trỏ chỉ trỏ đến mọi thứ trong một bộ phận nhất định có thể được lưu trữ trong 8 bit. Tương tự như vậy, cho phép vòng loại ngân hàng về chức năng và con trỏ hàm để xác định rằng một số cuộc gọi gián tiếp nhất định chỉ có thể hoạt động với một số chức năng nhất định. Thay vì tạo các con trỏ hàm 24 bit hoặc phải làm việc để đảm bảo các hàm được gọi gián tiếp kết thúc trong 64K đầu tiên, hãy đặt GOTO tự động trong 64K đầu tiên để các con trỏ hàm có thể là 16 bit. Hoặc tốt hơn, nếu một hàm 'lớp' có ít hơn 64 hàm khác nhau, hãy sử dụng một con trỏ 8 bit.

Tôi có yêu cầu quá nhiều không?

+0

Không, bạn không hỏi quá nhiều. Tôi đồng ý; Tôi tìm thấy trình biên dịch HiTech không sử dụng được khi tôi đã sử dụng các con trỏ hàm. C18 đã làm việc tốt hơn nhiều, nhưng vẫn có vấn đề. Tuy nhiên, chúng khá dễ giải quyết. – janm

+1

Bạn đang đề cập đến trình biên dịch của Microchip? Hồi ức của tôi là C18 không quảng bá tính toán nhân vật cho int; mã của tôi thường dựa vào quảng cáo int, vì vậy độ lệch từ hành vi tiêu chuẩn cho điều đó sẽ không thể chấp nhận được. – supercat

1

Tôi đã sử dụng SourceBoost trong một năm hoặc lâu hơn và tôi không hoàn toàn hồi hộp nhưng điều đó vẫn ổn. Tuy nhiên, tôi vừa hoàn thành một bài kiểm tra kích thước mã giữa SourceBoost 7, MCC18 và Hi-Tech C. Kết quả thật đáng chú ý.

Đối với một chương trình mẫu nhỏ (cấu trúc thô, mảng, con trỏ hàm, con trỏ cấu trúc, ký tự và int) bộ SB7 đã tạo mã khoảng 2/3 kích thước của MCC18 và HTC. Tôi muốn xác định số tiền đó là khởi động và chi phí thời gian chạy, vì vậy tôi đã thêm nhiều thứ ngẫu nhiên vào chương trình mẫu và đồng bằng kích thước cho thấy SB vẫn bằng 2/3 kích thước của những người khác. HTC hơi nhỏ hơn MCC18 nhưng không đáng kể. Tất cả các tối ưu hóa đều có trong mọi môi trường.

Những điều mà tôi không thích về SB là:

  • giới hạn trong dòng lắp ráp
  • chậm chạp trong việc biên dịch & liên kết
  • IDE là chỉ tốt hơn một chút so với MPLAB.

Những điều mà tôi thích về nó là:

  • Vâng, mã kích thước chắc chắn có vẻ nhỏ hơn so với đối thủ cạnh tranh.
  • Một vài tiện ích mở rộng cho ngôn ngữ (ví dụ:tham khảo). Tuy nhiên, giết chết tính di động.
  • Giá.
  • Hỗ trợ qua diễn đàn thực sự khá tốt. Các tác giả thường đăng bài.
  • tự động loại bỏ các mã không sử dụng (Tôi nghĩ rằng tính năng này làm giảm tốc độ biên dịch và liên kết)

Vì tôi không thích SB IDE, tôi sử dụng Nguồn Cái nhìn sâu sắc cho một biên tập viên và nó ROCKS! Tiện ích SB "make" cũng vô dụng, vì vậy tôi sử dụng GnuWin32, đây là một giao dịch thực sự hoàn toàn miễn phí.

Vì vậy, tất cả trong tất cả, tôi cảm thấy khá hơn một chút về lựa chọn công cụ của mình.

Dù sao, hy vọng điều này sẽ giúp ai đó ở đó.

0

MPLAB C-18 đẹp, và chúng có phiên bản dành cho sinh viên miễn phí. Nó có một giao diện người dùng tốt mà là đơn giản, đủ để nó không gây nhầm lẫn cho người dùng. Đó là những gì tôi sử dụng.

Các vấn đề liên quan