Có bao giờ sẽ có thể sử dụng C ++ để mã hóa PIC không?
Vâng, bây giờ có thể. Đối với DSPIC, có Trình biên dịch IAR Systems C ++ (mặc dù nó rất cũ và không được hỗ trợ).
Một lựa chọn khác là sử dụng bộ chuyển đổi C ++ sang C. Sử dụng bước xây dựng trước, chuyển đổi C ++ thành C, sau đó cung cấp C (tìm kiếm khó chịu) cho trình biên dịch C bình thường của bạn. Hãy xem trình biên dịch C ++ của LLVM hoặc Comeau , cả hai đều làm được điều đó. Comeau's chỉ có 50 đô la, nhưng có lẽ sẽ mất một số nỗ lực để làm cho toàn bộ chuỗi công cụ và thư viện hoạt động tốt.
Có giới hạn phần cứng nào ngăn chúng ta sử dụng C ++ không?
Câu trả lời ngắn, không, không có giới hạn phần cứng. Câu trả lời dài, C ++ chắc chắn khuyến khích việc sử dụng một đống và / hoặc ngăn xếp, mà các MCU nhỏ hơn với RAM hạn chế sẽ phải vật lộn với.
Tại sao họ phải vật lộn với một đống / đống? Vì hai lý do: A) nhiều MCU có RAM hạn chế, không đủ cho một đống chắc chắn và chỉ đủ cho một ngăn xếp. B) nhiều MCU không xử lý tốt con trỏ, vì vậy sử dụng các biến trên ngăn xếp thực sự giết chết hiệu suất.
Khi mọi người hỏi về việc sử dụng C ++ trên MCU, tôi thấy việc xây dựng C ++ để so sánh với C. Các câu hỏi tương tự chính xác là (và vẫn còn) được hỏi về C trên MCU. Mọi người thường chùn bước trước ý tưởng. Một ngôn ngữ cấp cao, trên MCU RAM 256 byte ?? Không thể nào. Nhưng bây giờ chúng ta đều biết điều đó là có thể. Tôi đã viết C cho PIC12. Không vấn đề gì. Có thể vì A) các nhà phát triển phần mềm biết rằng họ phải cẩn thận một chút: không sử dụng malloc (), v.v. và B) trình biên dịch đã được viết riêng cho MCU. Trình biên dịch cũng sẽ hết sức cẩn thận với việc cấp phát bộ nhớ, nó sẽ không cố tạo ra một đống và có thể không tạo ra một ngăn xếp. Một số trình biên dịch C đơn giản sẽ không cho phép bạn viết mã đăng ký lại (đệ quy) mà hoàn toàn yêu cầu một ngăn xếp.
Biết rằng có thể viết C cho MCU, các câu trả lời tương tự cũng áp dụng cho câu hỏi viết C ++ trên MCU. Miễn là trình biên dịch hiểu được các giới hạn của thiết bị đích và người dùng cũng hiểu ngôn ngữ, thực sự không có vấn đề gì. Trong C ++, bạn chỉ trả tiền cho những gì bạn sử dụng. Hoàn toàn có thể viết C ++ (với các đối tượng và mọi thứ) tạo ra đầu ra asm chính xác mà bạn sẽ có nếu bạn sử dụng C.
Bây giờ, PIC32 chắc chắn có thể đối phó với C ++. Chúng có RAM lên tới 64kB và dựa trên lõi MIPS, đây là bộ xử lý 32 bit được phát triển đúng cách. Nó có thể đối phó với con trỏ và ngăn xếp cũng như PC. Thật vậy, có những PC dựa trên MIPS (hoặc ít nhất, đã từng có).
Đáng buồn thay, có rất nhiều hiểu lầm xung quanh C ++. Ngay cả các lập trình viên rất có kinh nghiệm dường như không biết làm thế nào ngôn ngữ hoạt động. Xem câu trả lời của tôi về lý do tại sao C ++ phù hợp trên các CPU nhúng.
Kích thước của tệp .hex được tạo và thời gian chạy của chương trình tăng bao nhiêu khi chúng tôi sử dụng C ++ thay vì C?
Như tôi đã nói, có thể không có sự khác biệt. Bjarne Stroustrup đã so sánh một loạt các trình biên dịch C / C ++ để so sánh hiệu suất thời gian và không gian cho một số hoạt động. Kết quả rất đa dạng. Trong một số trường hợp, C ++ ra đời chậm hơn và lớn hơn, một số trường hợp chậm hơn và nhỏ hơn, hoặc nhanh hơn và lớn hơn, và thậm chí nhanh hơn và nhỏ hơn! Vì vậy, câu trả lời cho câu hỏi của bạn là nó phụ thuộc rất nhiều vào trình biên dịch, nhưng nói chung, nó không cần tạo ra sự khác biệt nào cả. Để biết thêm chi tiết, xem Báo cáo kỹ thuật về hiệu suất C ++
Có bất kỳ kế hoạch trong tương lai hoặc phát triển liên tục về điều này?
Điều đó tôi không biết. Tôi biết rằng trình biên dịch Microchip C32 được mở nguồn và bạn có thể tải xuống nguồn. Tôi cũng biết rằng ai đó mà tôi đã làm việc thực sự đã tìm thấy một số hướng dẫn trực tuyến và quản lý để có được trình biên dịch để biên dịch mã C ++. Nhưng anh ấy đã rời công ty trước khi anh ấy có thể thiết lập cho tôi một chuỗi công cụ thích hợp.
CẬP NHẬT
Microchip hiện có trình biên dịch C ++ cho các MCU nhúng PIC32.