Mỗi dòng vi điều khiển có ngôn ngữ / cú pháp lập trình riêng không?


10

Tôi đã lập trình Arduino và đã bắt đầu lập trình Teensy. Chúng tương tự như C nhưng có một số sắc thái nhỏ trong ngôn ngữ lập trình.

Ví dụ, trong C của Arduino, bạn gọi một hàm pinMode (pin #, Đầu ra / Đầu vào) để chỉ định một chân kỹ thuật số cho tín hiệu đầu ra hoặc nhận tín hiệu. Trong Teensy C, bạn đặt thanh ghi "DDR" được liên kết với một trong bốn cổng (mỗi cổng đại diện cho một tập hợp các chân) mà bạn chỉ định chung là đầu vào hoặc đầu ra ( cú pháp Tusky IO ).

Tôi muốn biết nếu đó là trường hợp khi bạn sử dụng một vi điều khiển mới đối với bạn, bạn cần học một "ngôn ngữ" mới một cách hiệu quả. Tôi đặt từ "ngôn ngữ" trong ngoặc kép vì mặc dù có nhiều sắc thái trong cú pháp, các thành phần và cách chúng được thiết lập trong phần mềm về cơ bản là tương đương, ví dụ, khái niệm cổng và chân vẫn đề cập đến một thiết bị đầu cuối mà bạn có thể xuất / nhập kỹ thuật số tín hiệu.

Trong cùng một diễn ngôn: có những bộ vi điều khiển không được lập trình trong phần mềm hay sẽ luôn có một lớp phần mềm được sử dụng để lập trình cho uContoder? Nếu sau này, ai viết / cung cấp tài liệu cho họ?


2
Các ngôn ngữ lập trình cho Arduino là C ++ (không phải (chỉ) C) - hoặc có lẽ chỉ là một tập hợp con của C ++ (hoặc thậm chí chế biến ). Nó không hoàn toàn rõ ràng, nhưng nó chắc chắn là nhiều hơn C; ví dụ, nó có các lớp và toán tử xác định người dùng + = .
Peter Mortensen

1
Nó là C ++, nó biên dịch bằng g ++ - avr. Về mặt kỹ thuật, đây sẽ là một triển khai C ++ độc lập và nó không bao gồm thư viện chuẩn C ++ (do những thứ như cấp phát bộ nhớ động và ngoại lệ là cần thiết). Bạn có thể sử dụng các tính năng ngôn ngữ như các lớp và các mẫu, tôi đã thấy một sự thay thế digitalWrite () dựa trên mẫu đạt được hiệu suất tương tự như truy cập trực tiếp vào các thanh ghi, phương thức Arduino có khá nhiều chi phí.
r_ahlskog

1
Ngôn ngữ là như nhau. Đó là API khác biệt. Nếu bạn rời khỏi vi điều khiển và bắt đầu viết các ứng dụng trên máy tính để bàn, bạn sẽ gặp chính xác các vấn đề tương tự khi viết chương trình C cho Windows, Linux và Mac. Ngay cả khi bạn sử dụng API POSIX hoàn toàn (mà cả 3 nền tảng đều hỗ trợ), bạn vẫn sẽ đạt được sự khác biệt cụ thể của nền tảng khi bạn muốn lưu cài đặt / tùy chọn của người dùng.
slebetman

Câu trả lời:


3

Bộ vi xử lý và Vi điều khiển thường sẽ sử dụng kiến trúc dùng chung giữa các dòng sản phẩm và nhà sản xuất khác nhau. Những kiến trúc thường xác định một lệnh thiết lập ở mức độ thấp ( instruction set ) chung cho tất cả hiện thực. Trình biên dịch AC hoặc C ++ sẽ có thể tạo mã thực thi mã byte trên tất cả các bộ xử lý ARM.

Tuy nhiên, kiến ​​trúc chỉ là một nửa hình ảnh. Vì có rất nhiều địa chỉ bộ nhớ cụ thể, trên các thiết bị ngoại vi, quản lý bộ nhớ và các chi tiết triển khai khác mà kiến ​​trúc không giải quyết

Một nhà sản xuất hoặc bên thứ ba thường sẽ cung cấp một tập hợp các tệp nguồn ( HDK ) sẽ cung cấp các định nghĩa, ánh xạ cổng và mã ví dụ. Thông thường, HDK dành cho CC ++ . Thông thường, HDK sẽ có một bảng trình diễn được liên kết với nó (nghĩ rằng $ 500 arduino). Rất nhiều công việc cấu hình chi tiết thường là cần thiết để điều chỉnh nền tảng phát triển / mẫu cho thiết bị bạn đang thiết kế

Arduino dựa trên kiến ​​trúc AVR và chủ yếu được hỗ trợ bởi Atmel. Arduino đã tạo ra một bộ tải khởi động nền tảng và một thư viện các hàm và đối tượng C ++ đơn giản hóa để bạn sử dụng nền tảng với nỗ lực tối thiểu. Nền tảng Arduino và IDE được thiết kế cho những người có sở thích với thiết bị tối thiểu. Trước arduino, PIC hoàn thành vai trò tương tự với môi trường BASIC dễ sử dụng và rẻ tiền.

Trong một môi trường chuyên nghiệp, thông thường sự hỗ trợ này được cung cấp bởi nhà cung cấp / nhà sản xuất hoặc được ký hợp đồng với bên thứ ba. Họ cung cấp mã và tiêu đề cấp thấp và bạn viết ứng dụng của mình với HDK đó, trong các tổ chức lớn hơn, việc này có thể được thực hiện tại nhà. Có một xu hướng gần đây cho các nhà sản xuất để xây dựng một hệ sinh thái API / Phần mềm mở xung quanh nền tảng của họ, giúp họ dễ dàng sử dụng ngay lập tức như arduino. Vẫn còn vô số chip với rất ít hỗ trợ lập trình và hầu hết kiến ​​thức nền tảng bị khóa trong thế giới doanh nghiệp.


14

Ngôn ngữ trong trường hợp này là hoàn toàn giống nhau. Môi trường Arduino tình cờ có thêm một số thư viện (chỉ cần thêm mã C) 'bao bọc' quyền truy cập vào các thanh ghi phần cứng thực tế (DDRx, PORTx, INx, v.v.) với các chức năng thân thiện với người dùng hơn một chút. Điều này làm tăng chi phí (cần thực hiện nhiều lệnh hơn cho cùng một hoạt động) nhưng tăng tính linh hoạt vì nó "đơn giản" để viết chương trình chỉ sử dụng các cuộc gọi này, sau đó nhắm mục tiêu lại cho một chip khác (giả sử là một arduino mega) và thư viện sẽ xử lý ánh xạ thích hợp trong nội bộ.

Thực sự không có bất kỳ API 'tiêu chuẩn' nào để truy cập ở mức độ thấp trên các chip từ các nhà cung cấp khác nhau. Tuy nhiên, tất cả các truy cập cấp thấp được thực hiện theo cùng một cách - đọc và ghi vào các địa chỉ bộ nhớ cố định - vì vậy phương thức truy cập tổng thể sẽ giống nhau giữa các phần khác nhau, chỉ các chi tiết và tên sẽ khác nhau. Có lẽ người ta sẽ chỉ cung cấp các tệp tiêu đề với danh sách lớn các địa chỉ đăng ký #defines được truyền tới con trỏ. Hoặc có lẽ các tệp tiêu đề sẽ sử dụng các cấu trúc để giữ mọi thứ được sắp xếp với một chút phân cấp. Một số nhà sản xuất cũng có thể cung cấp API cấp cao hơn. Điều này có thể rất hữu ích cho các thiết bị ngoại vi phức tạp và khó cấu hình. GPIO rất đơn giản, nhưng một cái gì đó như bộ điều khiển USB có hỗ trợ DMA có thể có hàng trăm thanh ghi.

Vì vậy, điểm mấu chốt là có, bạn sẽ cần học một số tên đăng ký mới, nhưng ngôn ngữ vẫn là C ++ (hoặc C, assembly, hoặc có lẽ là một cái gì đó bí truyền hơn).


4
Arduino không hoàn toàn chỉ là C (thực ra là C ++) - nó có một bộ tiền xử lý thực hiện một vài thay đổi trước khi đưa nó vào trình biên dịch C.
Nick Johnson

Trên thực tế, đối với Arduino, nó còn hơn C. Đó là C ++ (hoặc có lẽ là một tập hợp con của C ++).
Peter Mortensen

Có phải chỉ là C ++ bản địa với các thư viện Arduino, hoặc một cái gì đó nữa?
kayleeFrye_onDeck

Arduino IDE rõ ràng có một chút tiền xử lý bổ sung trên C ++ tiêu chuẩn khác. Hầu hết các IDE không làm điều này.
alex.forencich

Về cơ bản là C ++ nhưng main()được xác định trước cho bạn. Thay vào đó, bạn nhận được hai điểm vào: init()loop()(sửa tôi nếu tôi sai nhưng tôi chỉ chạm vào Arduino với cột 20ft)
slebetman

5

Bạn đang nhầm lẫn vi điều khiển và trình biên dịch. Các ngôn ngữ cấp cao mà bạn có thể lập trình cho bất kỳ vi cụ thể nào là một chức năng của trình biên dịch có sẵn cho vi mô đó.

Ở mức độ thấp, micro thực thi các lệnh máy, trình biên dịch xuất phát từ tệp văn bản mà bạn cung cấp cho nó mà bạn coi là "chương trình". Bạn đang thực sự chỉ định một số logic để thực hiện và trình biên dịch tìm ra cách sử dụng các hướng dẫn máy có sẵn để thực hiện logic đó. Trong trường hợp này, những gì bạn lập trình là một chức năng của trình biên dịch, không phải là tập lệnh gốc của micro.

Bạn có thể lập trình một vi bằng cách chỉ định trực tiếp các hướng dẫn riêng. Điều này được thực hiện bằng cách sử dụng ngôn ngữ lắp ráp. Giống như trình biên dịch, trình biên dịch chương trình là trình dịch lấy tệp văn bản bạn viết và tạo ra các hướng dẫn máy. Sự khác biệt là trong trường hợp này, bạn đang chỉ định trực tiếp các hướng dẫn máy đó. Mỗi hướng dẫn được cung cấp một tên và bạn viết các tên này thay vì các mã nhị phân, nhưng bạn vẫn chỉ định trực tiếp các hướng dẫn. Trình biên dịch chỉ thực hiện công việc khó khăn để tìm ra mã hóa nhị phân chính xác của mỗi lệnh từ tên và các tùy chọn bạn viết trong tệp văn bản.

Mặc dù ngôn ngữ cấp cao có thể giống nhau trên các micrô rất khác nhau, các hướng dẫn máy thường chỉ tương tự trong một họ các micrô liên quan. Ví dụ, tất cả Microchip PIC 18 có cùng một tập lệnh (hầu hết), khác với PIC 16 cơ bản và khác với các phần 16 bit như PIC 24 và DSPIC 30 và 33.


1
Trình biên dịch cũng giải quyết các nhãn cho các câu lệnh nhảy, rất dễ bị lỗi khi thực hiện bằng tay.
Pete Becker

2

Ngôn ngữ lập trình vẫn là C. Nhưng thư viện của nhà sản xuất để truy cập phần cứng khác nhau. Theo tôi biết không có tiêu chuẩn nên mỗi nhà sản xuất đều có API riêng. Nếu bạn muốn có thể di động giữa các nhà sản xuất khác nhau, bạn có thể muốn giới thiệu API trừu tượng của riêng mình để truy cập phần cứng với các triển khai cụ thể ánh xạ API của bạn với các phương thức cụ thể của nhà sản xuất.


Trên thực tế, nó còn hơn C. Đó là C ++ (hoặc có lẽ là một tập hợp con của C ++).
Peter Mortensen

2

Các câu trả lời khác đã phân biệt giữa các ngôn ngữ cấp cao (như C ++) và mã máy, mặc dù tôi không tin rằng điều đó làm mất hiệu lực tuyên bố của bạn rằng mỗi vi điều khiển có một 'ngôn ngữ' liên quan.

Sự khác biệt của việc triển khai ngôn ngữ không đủ lớn để được phân loại thành các ngôn ngữ khác nhau, mặc dù tôi sẽ không ngần ngại phân biệt chúng thành 'phương ngữ'. Hai lớp thay đổi có thể tồn tại ở đây.

  1. Thư viện trình bao bọc cấp cao có thể có sẵn từ nhà sản xuất hoặc một số bên thứ ba
  2. Một số trình biên dịch có thể không phát ra mã tuân thủ tiêu chuẩn

Hãy lấy những điểm này trong khi quan sát nền tảng Arduino.

  • Cộng đồng Arduino cung cấp các thư viện C ++ được trừu tượng hóa mạnh mẽ cho các chip kiến ​​trúc AVR. Các thư viện này đề xuất luồng điều khiển khác với những gì người ta có thể mong đợi từ một chương trình C ++ điển hình (ví dụ: ẩn của hàm main ()).
  • Dưới mui xe, Arduino biên dịch mã của nó bằng avr-gcc, phát ra mã C / C ++. Tuy nhiên, các ngoại lệ không được hỗ trợ tốt trên các chip AVR và hầu như luôn bị vô hiệu hóa. Với một tính năng lớn như vậy bị thiếu, chương trình kết quả có thể không hoạt động như một chương trình C ++ 'thông thường' sẽ như thế nào.

Biết được điều này, làm thế nào để bạn quyết định làm thế nào để lập trình bất kỳ vi điều khiển tùy ý? Bạn có một vài lựa chọn:

  1. Tìm kiếm các thư viện và IDE do cộng đồng tạo ra cho chip cụ thể của bạn. Các chip AVR đôi khi được phát triển chỉ sử dụng C, nhưng dự án Arduino cung cấp trải nghiệm thân thiện hơn cho người dùng.
  2. Tìm trình biên dịch có khả năng biên dịch cho chip cụ thể của bạn. Với trình biên dịch thích hợp, bảng dữ liệu của chip và một chút kiên nhẫn, bạn sẽ có thể viết mã rất gần với kim loại.

Để tham khảo, đây là danh sách các phụ trợ được hỗ trợ cho GCC. Bạn sẽ nhận thấy có hỗ trợ cho ARM, AVR, MIPS và một vài thứ khác.

Về các chip không được lập trình với 'phần mềm' ...

Bạn có thể muốn xem xét các mảng cổng lập trình trường (FPGA)! Các GPU được điều khiển bằng cách thay đổi các giá trị của các bảng tra cứu để mô phỏng các cổng logic. Điều này không có hình thức phần mềm tương ứng, nhưng vẫn được phát triển bằng các ngôn ngữ mô tả phần cứng như VHDL và Verilog.


1

Tôi nhìn vào một pcboard và thấy một số thiết bị gắn trên bề mặt, một số điện trở và tụ điện và đèn led. Điều đó có nghĩa là bởi vì một trong những bảng đó là một thẻ video, tất cả các bảng có điện trở và tụ điện và nhiều lớp và dấu vết đều là thẻ video? Không.

Đây là một ví dụ khác, trang web này sử dụng bảng chữ cái tiếng Anh và các từ tiếng Anh. Vì vậy, trang web new york lần, điều đó làm cho trang web này là thời gian new york? Không, họ chỉ chia sẻ cùng một bảng chữ cái và ngôn ngữ nhưng khác hoàn toàn.

C là một ngôn ngữ lập trình mục đích chung trừu tượng hóa tập lệnh bên dưới nó. Có thể được sử dụng cho kim loại trần, có thể được sử dụng để tạo khác nhau và không tương thích với các hệ điều hành khác, có thể được sử dụng để tạo trò chơi video, v.v ... Tất cả đều sử dụng cùng một ngôn ngữ C cơ bản, một số chức năng và cấu trúc C phổ biến cũng như chức năng gọi mà họ đã tạo được dành riêng cho ứng dụng đích. Đối với mỗi nền tảng mà bạn đề cập hoặc các nền tảng khác, có thể có một tập hợp các chức năng mà ai đó đã chọn để tạo. Giống như một số ít người cho đến nay bao gồm cả bản thân tôi đã cho bạn câu trả lời tương tự nhưng viết nó theo một cách khác. Lấy 100 lập trình viên và cách ly họ với nhau và giao cho họ một nhiệm vụ lập trình để giải quyết một vấn đề cụ thể, mà không hoàn toàn hạn chế quyền tự do lập trình của họ, và bạn sẽ nhận được từ 1 đến 100 khác nhau, không tương thích với các giải pháp khác nhau, có thể không phải 1 mà là một số chủ đề phổ biến tùy thuộc vào đào tạo và kinh nghiệm của họ, sau đó tên biến và tên hàm có thể là duy nhất cho mỗi cá nhân. Lấy các bảng tương tự mà bạn đã nói và bạn sẽ thấy rằng tôi chắc chắn có mã C riêng không tương thích (với các chức năng arduino) để chạy trên chúng, như với nhiều người khác, cũng như không tương thích với các nền tảng khác. Đó là vẻ đẹp của lập trình nhúng kim loại trần, bạn không bị gò bó theo bất kỳ cách nào, bạn không phải sống trong các cuộc gọi thư viện tiêu chuẩn của hệ điều hành hoặc bộ quy tắc giới hạn guis, v.v. có thể không phải là 1 mà là một số chủ đề phổ biến tùy thuộc vào đào tạo và kinh nghiệm của họ, sau đó tên biến và tên hàm có thể là duy nhất cho mỗi cá nhân. Lấy các bảng tương tự mà bạn đã nói và bạn sẽ thấy rằng tôi chắc chắn có mã C riêng không tương thích (với các chức năng arduino) để chạy trên chúng, như với nhiều người khác, cũng như không tương thích với các nền tảng khác. Đó là vẻ đẹp của lập trình nhúng kim loại trần, bạn không bị gò bó theo bất kỳ cách nào, bạn không phải sống trong các cuộc gọi thư viện tiêu chuẩn của hệ điều hành hoặc bộ quy tắc giới hạn guis, v.v. có thể không phải là 1 mà là một số chủ đề phổ biến tùy thuộc vào đào tạo và kinh nghiệm của họ, sau đó tên biến và tên hàm có thể là duy nhất cho mỗi cá nhân. Lấy các bảng tương tự mà bạn đã nói và bạn sẽ thấy rằng tôi chắc chắn có mã C riêng không tương thích (với các chức năng arduino) để chạy trên chúng, như với nhiều người khác, cũng như không tương thích với các nền tảng khác. Đó là vẻ đẹp của lập trình nhúng kim loại trần, bạn không bị gò bó theo bất kỳ cách nào, bạn không phải sống trong các cuộc gọi thư viện tiêu chuẩn của hệ điều hành hoặc bộ quy tắc giới hạn guis, v.v. Lấy các bảng tương tự mà bạn đã nói và bạn sẽ thấy rằng tôi chắc chắn có mã C riêng không tương thích (với các chức năng arduino) để chạy trên chúng, như với nhiều người khác, cũng như không tương thích với các nền tảng khác. Đó là vẻ đẹp của lập trình nhúng kim loại trần, bạn không bị gò bó theo bất kỳ cách nào, bạn không phải sống trong các cuộc gọi thư viện tiêu chuẩn của hệ điều hành hoặc bộ quy tắc giới hạn guis, v.v. Lấy các bảng tương tự mà bạn đã nói và bạn sẽ thấy rằng tôi chắc chắn có mã C riêng không tương thích (với các chức năng arduino) để chạy trên chúng, như với nhiều người khác, cũng như không tương thích với các nền tảng khác. Đó là vẻ đẹp của lập trình nhúng kim loại trần, bạn không bị gò bó theo bất kỳ cách nào, bạn không phải sống trong các cuộc gọi thư viện tiêu chuẩn của hệ điều hành hoặc bộ quy tắc giới hạn guis, v.v.

Bạn có thể chọn, và một tỷ lệ cao mọi người làm, để chơi trong hộp cát của ai đó thay vì tự xây dựng, nghĩa là sử dụng guduino arduino và thư viện C của họ.

Bạn có thể lấy cùng một máy tính và chạy các phiên bản khác nhau của windows, linux, bsd và danh sách các hệ điều hành khác ở mức độ nào đó đang sử dụng C nhưng các lệnh gọi chức năng không tương thích với nhau. Cùng một phần cứng và C không tương thích, mở rộng sang các phần cứng khác nhau, cùng ngôn ngữ, có thể có mã tương thích hoặc không tương thích. Ngôn ngữ không có cách nào làm cho chúng tương thích.

C được sử dụng trên các nền tảng nhúng này vì đó là thông lệ chung, không có ngôn ngữ nào khác có thể thay thế C cho việc này. Bước đầu tiên cho một bộ xử lý mới là lắp ráp tất nhiên sau đó hầu như luôn luôn là C tiếp theo, sau đó có thể là các bộ xử lý khác nếu nó đủ mạnh để chạy một hệ điều hành (linux, bsd, v.v.). C đã được phát minh và hy vọng giải quyết vấn đề tại thời điểm chuyển mã trên các nền tảng và miễn là bạn có một hệ điều hành là trường hợp trình biên dịch tương thích C tạo mã RUNS TRÊN HỆ THỐNG HOẠT ĐỘNG, sẽ thực hiện tệp C chuẩn hoạt động và printf và những thứ như vậy. Nhưng kim loại trần là một câu chuyện khác nhau, không có hệ điều hành, thường không có khái niệm về hệ thống tệp cũng như màn hình, nhưng theo thông lệ, có khả năng trình biên dịch C mà ở gốc của nó biến C thành ngôn ngữ lắp ráp cụ thể đích.


Trên thực tế, đối với Arduino, nó còn hơn C. Đó là C ++ (hoặc có lẽ là một tập hợp con của C ++).
Peter Mortensen

1

Để trả lời câu hỏi thứ hai của bạn, thuật ngữ "vi điều khiển" ngụ ý rằng chip có CPU và RAM (và có thể là ROM) trên tàu. Tất cả các vi điều khiển đều chạy phần mềm - đó là lý do tại sao chúng tôi thích chúng.

Đi sâu hơn vào câu hỏi đầu tiên, lưu ý rằng trong khi (gần như?) Tất cả các MCU đều có trình biên dịch C, ngôn ngữ C cơ bản không hỗ trợ mọi hướng dẫn trên mọi bộ xử lý. Ví dụ, C có các toán tử dịch chuyển trái / phải, nhưng không có toán tử xoay trái / phải. Hệ thống con trỏ của C không tự nhiên hỗ trợ các không gian địa chỉ dữ liệu và chương trình riêng biệt (như trong một số Kiến trúc Harvard). C không có hỗ trợ SIMD trực tiếp.

Trình biên dịch có một vài tùy chọn để xử lý các tính năng này:

  1. Mở rộng ngôn ngữ cơ bản, thường là với các từ khóa mới (ví dụ gần và xa cho các ký ức phân trang).

  2. Cung cấp các hàm nội tại (ví dụ __ror () và __rol () để xoay).

  3. Đưa chúng vào trình tối ưu hóa để các chuỗi thao tác C được biên dịch thành một lệnh hiệu quả (ví dụ: nhân / tích lũy).

  4. Bỏ qua chúng và làm cho người dùng viết mã lắp ráp nếu họ muốn các tính năng không chuẩn C.

Cấp độ tiếp theo là các tệp tiêu đề do nhà sản xuất cung cấp, chủ yếu xác định tất cả các thanh ghi cho bạn. Bạn có thể tự làm những thứ này, nhưng đó là một nỗi đau lớn trừ khi bạn là một chuyên gia về MCU đó.

Cuối cùng, có các chức năng thư viện do nhà sản xuất cung cấp, xử lý các công cụ thấp như thanh ghi ghi cho bạn.

Ví dụ của bạn trộn hai cấp độ. DDR là một macro đề cập đến một thanh ghi. Nó được triển khai như là một truy cập con trỏ hoặc một hàm nội tại của trình biên dịch (tôi quên cái này). pinMode () là một hàm ghi vào thanh ghi DDR cho bạn.

Khi bạn đi từ dòng MCU này sang dòng khác, bạn sẽ phải học các thanh ghi mới và các quirks trình biên dịch mới. Nếu bạn ở cùng một công ty, bạn có thể nhận được một API tương tự. Các công ty khác nhau không chia sẻ API; Tại sao chúng tôi sẽ giúp bạn chuyển sang đối thủ cạnh tranh của chúng tôi? :-)


1

Vi điều khiển thường có các vi mã khác nhau ở cấp độ phần cứng. Để tiết kiệm cho chúng tôi khỏi việc nhập mã máy (tức là hướng dẫn dưới dạng số - mỗi mã đại diện cho mã vi mô thô của vi điều khiển) hoặc trong trình biên dịch ký hiệu (cung cấp nhãn ghi nhớ cho mỗi lệnh mã máy), các ngôn ngữ cấp cao di động được sử dụng.

C và Forth được thiết kế có chủ ý để dễ dàng di chuyển trên các bộ mã máy khác nhau.

Vì vậy, nếu bạn sử dụng C trên Arduino và C trên Teensy, bạn đang sử dụng C trong cả hai trường hợp.

Nếu bạn đã sử dụng Forth trên Arduino và Forth trên Teensy, bạn sẽ sử dụng Forth trên cả hai trường hợp.

Đôi khi, các cơ sở phần cứng bổ sung sẽ nhắc người (hoặc nhóm) chuyển ngôn ngữ sang phần cứng mới để viết một số mã được chế tạo sẵn để cho phép bạn truy cập các tiện ích mới của nền tảng phần cứng, mà không phải viết nhiều mã cấp thấp bản thân bạn.

Các thư viện này (bằng C) hoặc từ điển (trong Forth) có thể có một số chức năng hoặc từ cụ thể về phần cứng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.