Những kiến thức nào cần có để học Embedded System?

anh ơi, anh làm 1 bài chi tiết về vấn đề này đi ạ. đọc thấy hấp dẫn quá. :smiley:

2 Likes

Sau một thời gian ngâm cứu với lĩnh vực Embedded. Mình xin chia sẽ một số features như sau:

Một kỹ sư, hay một ai muốn theo ngành này thì mình sẽ chia ra thành các mảng để mọi người dễ hình dung:

  1. Platform
  2. Conectivity
  3. Cloud
  4. Security

I. Platform
1.1. Hardware
VD:
MCU: PIC, AVR, ARM, 8051, …
Board: Raspberry pi, Arduino, mbed, …
=> Nếu mình cần lập trình cho con nào thì phải tìm hiểu qua datasheet của chúng

1.2. Software
1.2.1. Driver Stack:
Hay còn gọi là Device Driver: như TCP/IP, I2C, SPI, USB, CAN, …
=> Driver Stack sẽ được chia thành 2 tầng chính

  • Tầng HAL: tầng này sẽ lập trình theo từng dòng vi điều khiển, tần này gần với phần cứng nhất
  • Tầng API: Tâng này là tầng common sẽ dùng để gọi tầng HAL phía dưới

1.2.2. OS (Hệ điều hành)
Hệ thống nhúng có thể ko cần phải dùng tới hệ điều hành. Nhưng đa số các ứng dụng ngày nay cần phải xữ lý nhiều chức năng, cũng như cần có sự tin cậy và độ ổn định cao,đáp ứng thời gian thực thì cần phải có hệ điều hành (OS)

  • Trong các hệ thống lớn hay người ta thường dùng linux OS
  • Ngày nay OS rất đa dạng, mà đặc biệt là các OS thời gian thực và tương lai sẽ hướng tới OS thời gian thực có tính nhỏ gọn để ướng dụng trong IoT
    VD: VxWord, RTX, Free RTOS, micro kernel, Tkernel, contiky, …

II. Conectivity
Các thiết bị cần phải liên lạc với nhau: wire and wireless

  • Wire: Dùng mạng lan (TCP/IP protocol)
  • Wireless: rất đa dạng
    VD: Wifi, Bluetooth, Cellurla, Zigbee, RF, …
    Mỗi loại có một giao thức riêng:
    VD:
  • Wifi: TCP/IP (IPv4 and IPv6), 6loWPAN
  • Bluetooth: GAP, GATT.

III. Cloud
Embedded ngày nay, Cloud rất quan trọng trong trong việc quản lý, điều khiển thiết bị từ xa.
Một số giao thức có thể thấy là: HTTP, CoAP, Lighweight M2M, …

IV. Security
Bảo mật thông tin là một phần không thể thiếu trong thời đại thông tin ngày nay: Một hề thống có tín bảo mật cao sẽ đem lại sự an toàn cho người dùng.
Khái niệm bảo mật được biết đến trước đây trong embedded là TLS (Transport Layer Security), và trong IoT là DTLS (đang phát triển)

Trên đây là một số khái niệm tổng quan về Embedded mà mình biết. Vì chưa có kinh nghiệm nhiều trong lĩnh vực này nên vẫn còn nhiều thiếu sót. Mình cũng đang học hỏi thêm

Ai có nhiều kinh nghiệm trong lĩnh vực này có thể chia sẽ cho mọi người được học hỏi thêm nhé!

21 Likes

Anh cho em hỏi theo về lập trình nhúng thì ở Hà Nội có thể vào những công ty nào ạ? Hiện tại em chỉ biết mỗi FPT và Viettel

Phần Software của bạn đề cập chỉ là 2 phần nhỏ trong Embedded Software System :slight_smile: Thực tế Embedded Software nó sẽ được làm thành kiến trúc sao cho hầu như không phải phụ thuộc phần cứng, cùng một Software nhưng thay đổi phần cứng nào cũng được.
Nó thường chia thành tầng từ trên xuống dưới như:
Tầng: Application
Tầng: Runtime / Virtual Function Bus
Tầng: uC Abstraction + OS + Driver + Service

1 Like

Anh không rành về các công ty lập trình nhúng ở HN. Anh chưa làm việc ở HN bao giờ.

3 Likes

Em cũng đang tìm hiểu về nhúng trên linux nhưng liệu chỉ học mỗi C++ có khả thi không anh?
Em học C++ cũng được một thời gian rồi(theo 77 bài trên youtube của anh + làm bài trên hacker rank + viết vài ứng dụng vui vui) và e có tự đặt ra cho mình mục tiêu 10000 giờ code để tránh sao lãng/hứng lên học ngôn ngữ khác -> mất thời gian nên về cơ bản e muốn follow theo rules của mình và chưa muốn học thêm ngôn ngữ khác
Hiện tại thì em đang học song song C++/ASM :smiley: (em học assembly trước C++,xong rồi bỏ assembly một thời gian qua học C++ và giờ thì học song song cả 2) nên e muốn hỏi liệu ko học C có được ko?
Em đang là sinh viên năm nhất… :stuck_out_tongue: Và anh có thể chia sẻ kinh nghiệm cho dân nhúng để ra trường có thể tìm được việc ko ạ?

1 Like

mình cx học c++ và muốn theo nhúng. bạn có kinh nghiệm gì chưa. chia sẻ mình vs :smile:

trong Sài Gòn lĩnh vực liên quan đến nhúng ,c/c++ có nhiều không anh ?anh giới thiệu một số tham khảo được không ạ , Em đang có ý định vào nam

Nhúng thì C là quan trọng nhất sử dụng nhiều nhất. C++ và ASM rất ít dùng.

2 Likes

em có vài câu hỏi ạ
1.embeded hardware có nhiều nơi tuyển không ạ
2.em học tự động hoá ra trường muốn làm embeded software thì cần phải học thêm những kiến thức gì ạ vì chương trình đào tạo của trường em chủ yếu là học về e-hardware

Mọi người cho em hỏi, em làm việc với VĐK khá yếu, vậy có thể học embeddeb linux được không ạ, mục tiêu của em là viết divece driver.

1 Like

bạn tham gia group “Cùng nhau học linux kernel” trên facebook nhé

anh cũng học hệ thống nhúng à! em cũng đang hướng theo ngành đó nhưng chưa biết bắt đầu từ đâu! anh chỉ dẫn cho em phát.

Thanks a. A có thể liệt kê những phần nào nên đọc trong những cuốn đó đc ko ạ (nếu có chapter thì tốt). Vs 1 newbie như e thì việc này sẽ giúp giảm bớt rất nhiều thời gian. Cám ơn a trc!

Có thể cho em xin 1 chân được không ạ? Em đang học năm 2 muốn theo embedded sofware system ạ

em cũng là sinh viên cơ điện tử mà mới năm đầu, giúp em: ngành cdt về lập trình nên học thạo ngôn ngữ C là được phải không anh, em thấy ngành cdt

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?