2012-03-22 31 views
13

Tôi đang tìm cách bắt đầu từ đầu để học lập trình hệ thống nhúng. Sau một thời gian nhìn quanh, tôi thấy mình bối rối.Lập trình được nhúng ... rất bắt đầu

Tôi có thể lập trình cả C và C++ nhưng tôi không biết bắt đầu từ đâu bằng lập trình nhúng, tôi có nên mua một loại thiết bị để thực hành, sử dụng bộ mô phỏng vi xử lý (nếu có, cái nào?) - như vậy, bất kỳ lời khuyên hay tài nguyên nào về nơi bắt đầu đều rất được hoan nghênh.

+1

Bạn có thể muốn thu hẹp phạm vi mục tiêu của mình. Một "hệ thống nhúng" có thể chạy phạm vi từ một CPU ARM 1GHz 32 bit, RAM 1GB, 32GB dung lượng lưu trữ, chạy Linux; xuống đến một vi điều khiển 8 bit với 1KB RAM không có O/S. Hãy thử tưởng tượng, cụ thể hơn, bạn muốn tạo ra những thứ gì và đi từ đó. –

+0

C/C++? Chọn một. – Puppy

+0

@DeadMG: Rõ ràng là trong bối cảnh anh ấy có thể lập trình cả hai. Chỉ cần cho bạn tôi đã làm cho nó rõ ràng hơn. – Clifford

Trả lời

8

Theo ý kiến ​​của tôi, bỏ qua Arduino. Tôi đã luôn luôn nhìn thấy nó như là một loại hệ thống dumbed xuống cho người không lập trình. Đi cho một cái gì đó cho phép bạn áp dụng kiến ​​thức C của bạn để có được mức độ thấp nhất có thể, lúc đầu. Bạn muốn hiểu cách các vectơ ngắt làm việc như thế nào, RAM giới hạn của bạn giới hạn ngăn xếp của bạn, cách gỡ lỗi.

Kiểm tra các bộ vi điều khiển 8 bit và 16 bit của Freescale, đặc biệt là HCS08 hoặc HCS12. Có một số $ 100-200 và một số hệ thống phát triển phụ $ 100 với giao diện gỡ rối được xây dựng (Chế độ gỡ lỗi nền). Đây cũng là hiệu suất và bộ nhớ cao hơn Arduino. Phần mềm CodeWarrior là miễn phí (giới hạn kích thước mã, nhưng trong hầu hết các trường hợp, số giới hạn lớn hơn số lượng flash trên các thiết bị này) và đầy đủ chức năng. Tôi không biết nếu bạn có thể thiết lập các điểm ngắt mã với Arduino, nhưng bạn có thể với những điều này. Có một lợi ích khác đối với CodeWarrior - trong khi đầu tiên bạn muốn tìm hiểu về các datasheets để hiểu cách các thanh ghi ánh xạ bộ nhớ cho các mô-đun khác nhau hoạt động (ví dụ: làm thế nào để xóa cờ, cách đặt chế độ, bất cứ điều gì), CodeWarrior đi kèm với bộ xử lý chuyên gia mà sẽ tạo ra các chức năng cho bạn cho các dẫn xuất gia đình HCSxx cụ thể và các mô-đun cụ thể của họ. Vì hầu hết các sản phẩm này sử dụng lại logic giữa các dẫn xuất, với một số khác biệt nhỏ, nó có ý nghĩa để sử dụng lại mã. Chuyên gia xử lý đã đi một chặng đường dài kể từ khi bắt đầu từ 10 năm trước. Về lâu dài, nó là một khoản tiết kiệm rất lớn cho thời gian phát triển, vì các chức năng này đảm nhiệm việc viết các hành động cấp thấp (ví dụ, cấu hình pin đầu ra bộ đếm thời gian PWM cho chu kỳ nhiệm vụ xx/yy với một cuộc gọi hàm C).

Sau đó, bạn có thể sử dụng một số hệ điều hành sẽ chạy trên các hệ điều hành này hoặc bạn có thể chuyển sang ARM hoặc ePPC. Tôi biết ít nhất một bản demo HCS12 đi kèm với Linux và một máy chủ web, mà bạn luôn có thể quét sạch cho sự phát triển đầu tiên của bạn, và sau đó đưa nó trở lại khi bạn đã sẵn sàng. Freescale cũng rất tốt với việc cung cấp hướng dẫn, ghi chú ứng dụng và tài liệu, ngoại trừ trang web của họ đôi khi khó điều hướng. Tôi cho rằng đó chỉ là một triệu chứng của một hệ sinh thái lớn. Chúc may mắn!

+1

Theo quan điểm của tôi Arduino (thiết bị) là một nền tảng uC khá rẻ. Chỉ cần không sử dụng thư viện Arduino. –

4

Có một số nền tảng được nhúng ở đó phổ biến với những người có sở thích và rất dễ sử dụng. Arduino có lẽ là phổ biến nhất. Bảng có giá rẻ ($ 20-30) và dễ sử dụng, và có rất nhiều phần mềm tốt. Trang web chính cho nền tảng Arduino là . Bạn sẽ tìm thấy nhiều liên kết ở đó với các tài nguyên khác sẽ giúp bạn bắt đầu.

Bạn có thể muốn xem SparkFun, mà chủ yếu là nhà cung cấp cấp độ sở thích của các bộ phận điện tử (bao gồm Arduino và các bảng hữu ích khác) và các công cụ. Họ đã có a lot of great content trên trang web của họ để giúp bạn bắt đầu với cả phần cứng và phần mềm.

2

Bạn có nhiều tùy chọn! Tôi đoán bạn sẽ bắt đầu với trình giả lập (không quan trọng loại hệ điều hành nhúng bạn sẽ sử dụng, có thể là bạn sẽ không sử dụng CPU x86). Nếu bạn làm việc với CPU X86, bạn không cần bất kỳ trình mô phỏng nào nhưng có thể bạn cần một Máy ảo.

Bạn đã gắn thẻ câu hỏi của mình bằng "cánh tay" nên tôi đoán bạn muốn sử dụng bộ xử lý ARM (khi đó bạn sẽ cần trình mô phỏng). Bắt đầu tìm kiếm here, bạn sẽ tìm thấy các hướng dẫn và tài nguyên để bắt đầu với chương trình được nhúng.

3

Người ta có thể phân chia hệ thống nhúng thành hai lớp:

  • Những người chạy một đầy đủ Hệ điều hành. Nếu có một cách được tài liệu để có được hệ điều hành và khởi động nó, thì chúng không thực sự được xử lý khác với máy tính để bàn, ngoại trừ bạn sẽ cần phải xây dựng hoặc tải xuống trình biên dịch chéo. Đối với những thứ như điện thoại, tất nhiên, môi trường phát triển phức tạp với các trình gỡ rối được cung cấp bởi nhà tài trợ của môi trường.

  • Những chương trình chạy chương trình gọi là "kim loại trần". Những chương trình này sẽ có ít hơn chương trình của bạn và thời gian chạy ngôn ngữ được tải. (Một số trong số này là thực sự đơn giản và chạy hoặc là một thông dịch viên hoặc lắp ráp ngôn ngữ đơn giản. Những có lợi thế của chương trình phức tạp không cần thiết chỉ để thiết lập các thiết bị ngoại vi tích hợp.)

Bạn có thể không cần một giả lập hoặc thiết lập gỡ lỗi phần cứng khác, trên thực tế, bạn thậm chí có thể không cần phần cứng để bắt đầu. Nếu có thể, hãy thử phát triển ban đầu trong một máy ảo.

Như mọi khi, bạn nhận được số tiền bạn thanh toán.Trong một dự án thương mại rất nhiều môi trường có sẵn nhưng đây có lẽ là không được sử dụng nhiều cho các dự án robot và muốn.

Có rất nhiều nền tảng đi kèm với số lượng hỗ trợ hợp lý. Cơn thịnh nộ mới nhất (do điểm giá $ 35 đáng chú ý của nó) là the Raspberry Pi, tuy nhiên, nó không có sẵn ngay lập tức tại thời điểm này.

2

Tôi khuyên bạn nên thử một số công cụ phát triển EZ430 của TI. Một số công cụ có thể được mua với ít nhất là 20 đô la và có chức năng cơ bản cũng như cách mở rộng chúng. Bạn có thể dễ dàng mua hai eZ430-F2013 và yêu cầu họ nói chuyện với nhau hoặc tới một máy tính khác.

TI đi kèm với Code Composer Studio cho MSP430 của họ, miễn phí và đầy đủ tính năng (dựa trên Eclipse) để môi trường lập trình rất thân thiện với người dùng. TI cũng cung cấp một số lượng lớn các mẫu mã bao gồm hầu hết các chức năng của hệ thống.

Với MSP430, bạn sẽ lập trình trên mã "kim loại trần" như đã nói, vì vậy bạn sẽ không lập trình C, bạn sẽ chuyển đổi kết quả đầu ra và bit-đập. Nhưng có vẻ như bạn đang quan tâm đến việc học nó xuống ở cấp độ này, vì vậy đây là một nơi tuyệt vời để bắt đầu.

Mặt khác, nếu bạn muốn một hệ điều hành nhúng (chẳng hạn như Linux) hãy kiểm tra trang web gumstix.

2

Vì câu hỏi của bạn cung cấp rất ít thông tin về loại ứng dụng, yêu cầu hiệu suất và ngân sách, v.v., không có câu trả lời nào sẽ được tập trung cụ thể.Tuy nhiên, tôi cho rằng bạn nên chọn một thiết bị kiến ​​trúc ARM, đơn giản là vì nó bao gồm các thiết bị từ một vài đô la với hiệu suất trong 10 của MIPS, và những ký ức nhỏ trên chip cho bộ vi xử lý ứng dụng trên bảng chi phí một vài trăm đô la có khả năng chạy Linux, WinCE hoặc Android chẳng hạn.

Giống như nó hay không ARM là phổ biến trong thế giới hệ thống nhúng; mọi thứ khác là thích hợp về mặt thiết kế và thị phần. Một thiết bị dựa trên Cortex-M3 trên một bảng phát triển/đánh giá đơn giản là một nơi tốt để bắt đầu. Tuy nhiên, bạn sẽ thất vọng nếu bạn không tính đến chi phí của các công cụ và phần cứng gỡ lỗi.

+0

Không có một số công cụ phần mềm tôi có thể sử dụng chỉ để tôi có thể thử một chút chương trình đang diễn ra? Ví dụ, một số hướng dẫn sử dụng bộ mô phỏng vi xử lý? Hay bạn khuyên bạn nên bắt đầu ngay lập tức bằng một con chip vật lý? – nuno

+1

+1 để tìm cách thu thập OP để thu hẹp phạm vi của câu hỏi. Tôi đề nghị OP rằng anh ta hoặc cô ta dành thời gian để quyết định xem thiết bị nhúng _must_ làm gì. Nếu nó phải làm mọi thứ, nó sẽ là một trong những bảng đắt tiền hơn. Nếu nó chỉ là một thiết bị đo từ xa hoặc một cái gì đó đơn giản (tức là giám sát nhiệt độ của tủ lạnh hoặc một cái gì đó) nó có thể là một bảng rẻ hơn nhiều. – ldav1s

+0

Tôi đồng ý rằng phạm vi câu hỏi của tôi có thể cực kỳ chung chung - xin lỗi vì điều đó. Tôi chỉ cố gắng để có được một số lời khuyên về cách bắt đầu làm một số chương trình khá đơn giản, chỉ để cho vui. Vì vậy, tôi đoán tôi sẽ chỉ đơn giản bắt đầu với một số bảng đơn giản/giá rẻ hoặc thậm chí một trình mô phỏng nếu có thể – nuno

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