2013-06-20 26 views
10

Tôi muốn tạo một danh sách những thứ cần tìm hiểu có giá trị cho sự nghiệp của tôi. Bạn nghĩ kỹ năng nào là quan trọng đối với nhà phát triển được nhúng, hiện tại và tương lai xa?Nhà phát triển được nhúng, kỹ năng nào là quan trọng

Tôi đã trở nên khá thành thạo với bộ xử lý C và ARM thông qua làm việc với nhân Linux nhúng và tôi sắp đi sâu vào trình điều khiển Linux. Tuy nhiên tôi không thể không nghĩ rằng tôi có thể thu hẹp kĩ năng của mình thành nhiều. Tôi muốn tiếp tục làm việc với các hệ thống nhúng trong tương lai nhưng bạn không bao giờ biết thị trường việc làm (hoang tưởng rằng tôi sẽ được khoán ngoài cho Trung Quốc và Ấn Độ).

Tôi cảm thấy rằng tôi hiện khá yếu với C++ và Java, tôi cũng muốn tìm hiểu hạt nhân Android trong tương lai. Tôi cũng không biết bất kỳ ngôn ngữ kịch bản nào.

Có ai đã từng làm việc với các hệ thống nhúng trong một thời gian không, hãy đưa ra một số đầu vào về những kỹ năng/ngôn ngữ mà họ nghĩ là quan trọng đối với nhà phát triển được nhúng? Tôi có nên tiếp tục chỉ trau dồi kỹ năng C của mình hay tôi nên học những điều mới.

+3

Câu hỏi của bạn quá rộng nên câu hỏi sẽ bị đóng. Dù sao, như một quy tắc của ngón tay cái, gần gũi hơn với phần cứng bạn nhận được, kiến ​​thức tổng quát hơn và rộng hơn, bạn sẽ nhận được.Nếu bạn biết về hạt nhân Linux, hoặc hạt nhân Android, bạn vẫn làm việc trên cấp ứng dụng, và bạn sẽ trở thành một chuyên gia tại một số ứng dụng cụ thể. Nếu bạn biết chung, lập trình C liên quan đến phần cứng, một số bộ lắp ráp và bất kỳ loại điện tử nào, thì bạn có một năng lực cốt lõi có thể được sử dụng bất kể bản chất của ứng dụng. – Lundin

+0

Xin lỗi, nhưng trang web này dành cho các sự cố kỹ thuật có câu trả lời cụ thể, không phải là lời khuyên về nghề nghiệp hoặc câu hỏi thu hút danh sách mở đã kết thúc. –

+0

Bạn không biết nhúng cho đến khi bạn làm việc với sổ đăng ký trực tiếp :) –

Trả lời

29

Dưới đây là danh sách của tôi:

  • C cần thiết
  • OOP/C++ - lớp học, đóng gói, đa hình, quá tải/trọng, các mẫu
  • Algorithms - tìm kiếm, sắp xếp, b cây
  • Mẫu thiết kế - nhà máy, người quan sát, singleton, v.v.
  • Điều hành thời gian thực Syste ms - nguyên thủy (semaphore, mutex), kỹ thuật lập lịch trình, không gian người dùng/kernel
  • Linux nguyên tắc cơ bản, lái xe văn bản, bao
  • nguyên tắc cơ bản bộ vi xử lý - xử lý ngắt, thanh ghi, mã lắp ráp vv
  • nguyên tắc cơ bản vi điều khiển - ADC, DAC, Timers, PWM, DMA, cơ quan giám sát vv
  • Memory - NOR, NAND, SRAM, DRAM, mặc san lấp mặt bằng
  • giao thức cơ bản - I2C, SPI, UART, LIN
  • giao thức nâng cao - SATA, PCIE, USB, CAN, MOST
  • Co lập trình song song/song song - MPI cho SMP, v.v.
  • Sơ đồ lớp UML, sơ đồ thành phần, sơ đồ trạng thái, sơ đồ trình tự
  • Perl hoặc Python để tạo tập lệnh, ví dụ: để sửa đổi các tệp văn bản đơn giản.
  • Java và Android
  • điện tử cơ bản - sơ đồ đọc sách, sử dụng dao động, vạn năng, sắt hàn
  • kỹ thuật chuyên ngành để lập trình nhúng ví dụ debouncing của thiết bị chuyển mạch, thiết bị chuyển mạch thang điện trở, bộ mã hóa quay, vv
  • kỹ thuật phần mềm - SDLC, CMMI, các phương thức nhanh, ví dụ: SCRUM, kiểm soát phiên bản (ClearCase, git, svn), kiểm tra lỗi (JIRA?), Kiểm tra mã tĩnh, Lint, kiểm tra đơn vị, tích hợp liên tục
  • xây dựng môi trường - makefile, cmake
  • Thiết kế FPGA/ASIC cơ bản, DSP cơ bản
+0

Đây chính xác là những gì tôi đang tìm kiếm! Cảm ơn bạn, có vẻ như tôi có rất nhiều thứ để học :) – MrGigu

2

Dù tên miền bạn muốn chọn không chỉ lập trình C bạn nên biết nhưng bạn cũng nên quen thuộc với phần cứng.

Không quan trọng bạn đang làm việc trên miền nào (linux, vlsi, arm ....). Nhưng vấn đề làm thế nào hiệu quả mã của bạn đang chạy trên phần cứng.

Nếu bạn thực sự muốn làm việc trong thế giới nhúng, bạn sẽ tìm thấy con đường của bạn.

6

Như đã đề cập bởi Lundin, câu hỏi này được mở cho nhiều câu trả lời khác nhau. Bạn có từ các thiết bị nhúng kim loại trần bị hạn chế về bộ nhớ pin nhỏ cho các hệ thống phức tạp hơn chạy Linux.

Trước hết, điều rất quan trọng là trở thành nhà phát triển linh hoạt. Bạn cần có khả năng thích ứng với các thay đổi nhanh nhất có thể. Bạn có thể cần phải làm một nguyên mẫu chứng minh bằng chứng chỉ trong một vài tuần trong một ngôn ngữ mà bạn chưa bao giờ sử dụng trước đây, hoặc để bắt đầu làm việc trong một dự án kế thừa để sửa lỗi một cách nhanh chóng.

Điều rất quan trọng cần biết về khái niệm kiến ​​trúc phần mềm, RTOS, hệ thống hướng sự kiện (hệ thống nhúng có tính tương tác) và mô hình hóa quá (UML). Có thể phát triển theo hướng thử nghiệm (TDD). Đây là những ngôn ngữ bất khả tri, và sẽ giúp bạn phát triển phần vững tốt từ mặt đất lên.

Về ngôn ngữ, tôi nghĩ rằng C được sử dụng trong cả hai hệ thống nhỏ và lớn, do đó, có một nền tảng tốt trong C là phải. Ở đây tôi không nói về lập trình c ở cấp độ mới. Tôi đang nói về việc biết bộ xử lý và trình biên dịch làm gì đằng sau hậu trường. Theo những gì bạn đề cập, bạn có thể có những kỹ năng này. Điều này là rất hữu ích trong trường hợp của các hệ thống nhỏ, nơi mà mỗi byte RAM và ROM đếm. Biết điều gì đó về quy tắc MISRA-C sẽ giúp bạn phát triển mã C an toàn hơn.

Có lẽ bạn sẽ cần một số chương trình tập lệnh để thực hiện kiểm tra tự động, xử lý dữ liệu, tạo mã công cụ, v.v. Tôi sử dụng Python cho tất cả điều này và cũng có một số kịch bản lệnh shell linux. Có thể thiết kế các ứng dụng dựa trên PC rất hữu ích để tạo các thiết bị thử nghiệm để kiểm tra các thiết bị nhúng trong dây chuyền sản xuất, hoặc có thể do thiết bị nhúng chỉ cần phần mềm máy tính hoạt động như dao động dựa trên USB. Trong trường hợp này, tôi sử dụng Qt, vì nó là nền tảng chéo, nhưng bạn có thể sử dụng Visual Studio với C# nếu bạn chỉ muốn làm việc trong Windows.

Trong trường hợp hệ thống nhúng, tốt hơn nếu bạn có nền phần cứng vững chắc.Ngoài ra, bạn cần để có thể sử dụng một dao động, một phân tích logic, một máy phát tín hiệu, vv Đôi khi bạn sẽ cần phải sửa chữa các vấn đề phần cứng với phần mềm. :)

Dưới đây là một danh sách nhỏ của cuốn sách tôi thấy rất hữu ích:

  • thực hành UML biểu đồ trạng thái trong C/C++.
  • UML chưng cất.
  • Làm hệ thống nhúng.
  • Máy tính làm linh kiện.
  • Phần mềm nhúng lót.
  • Phần mềm hệ thống nhúng tốt hơn.

Tôi hy vọng điều đó sẽ hữu ích.

Fernando

+0

Cảm ơn bạn đã nhập! Lời khuyên rất tốt! – MrGigu

+0

1. Tìm hiểu cách thực hiện liên kết mã - hầu hết các nhà phát triển được nhúng mà tôi đã thấy trong 20 năm qua không làm cách nào để thực hiện điều đó. – zzz777

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