Định hướng nghề nghiệp: Kĩ sư lập trình nhúng!


Vì chúng tôi không phải là chuyên gia, nên bài viết chắc chắn có thiếu sót, mong nhận được phản hồi của độc giả!
Hệ thống nhúng đang dần trở thành một ngành phát triển mạnh mẽ trong lĩnh vực công nghệ thông tin với những ứng dụng rộng rãi trong công nghiệp và đời sống, được phát triển từ những năm đầu thập niên 1960.

Theo các chuyên gia, ước tính đến năm 2020, hệ thống nhúng toàn cầu sẽ đạt doanh số là 8 tỷ đô-la Mỹ. Cùng với sự xuất hiện ngày càng nhiều các đối tác lớn trong lĩnh vực này tại Việt Nam, đã mở ra một hướng đi mới cho những ai đi theo con đường học lập trình nhúng.

lap-trinh-nhung

Giới thiệu về lập trình nhúng

Hiện nay, tại Việt Nam, có khá ít các trường đại học đào tạo lập trình nhúng. Nhưng nguồn nhân lực cho ngành này rất nhiều và đang thiếu hụt. Hay nói cách khác lập trình nhúng đang là một trong những ngành hot nhất hiện nay. Bằng chứng là Học viện kĩ thuật mật mã – một trong những trường đại học lớn nhất nước đào tạo các chuyên gia bảo mật và an toàn thông tin, đã mở thêm ngành lập trình nhúng tuyển sinh học viên. Lập trình nhúng là một ngành rất rộng, dể dễ hiểu, chúng ta chia lập trình nhúng thành 2 hướng như sau:

1. Embedded software: Đi theo hướng này, các bạn chủ yếu làm việc về phần mềm, nghĩa là bạn sẽ code, còn code những gì thì bạn xem phần sau. Có rất nhiều trường đại học dạy về hướng này như: Khoa Học Tự Nhiên, Bách Khoa, FPT,… Và nó nằm trong các nhóm ngành công nghệ thông tin. Đi theo hướng này bạn có thể không biết về phần cứng (kiến thức điện tử) vẫn được. Nhưng lời khuyên là bạn nên biết một ít sẽ rất tốt.

2. Embedded hardware: Bạn sẽ được làm việc trên phần cứng, bạn sẽ là chuyên gia thiết kế PCB (printed circuit board ). Đây là một ngành trong nhóm ngành điện tử truyền thông.

Nếu bạn đã theo lập trình nhúng, bạn cần học gì?

Không giống như các ngành khác: Ví dụ như Android, Web Deverloper,… ban đầu bạn sẽ cảm thấy rất dễ, nhưng con đường phía sau bạn sẽ vô cùng gian nan nếu muốn trở thành chuyên gia (expert). Còn đối với lập trình nhúng, những thứ bạn phải học ban đầu là vô cùng gian nan, vô cùng khó khăn, vô cùng nhiều, khi bạn đạt được rồi, tương lai bạn sẽ dễ dàng hơn.

Những điều bạn cần học sẽ được liệt kê bên dưới:
1. Lập trình C: bạn cần học C đến mức chuyên gia, đây là ngôn ngữ quan trọng bật nhất trong lập trình nhúng.
2. Tiếng anh: ít nhất bạn phải đọc được tài liệu chuyên ngành kĩ thuật, nhất là datasheet.
3. Kiến thức về điện tử: các kiến thức về logic, vi điều khiển, vi xử lý (software thì cần một chút mảng này), ADC, TIMER, INTERRUPT, vv.
4. Các loại giao tiếp (protocol): UART, I2C, SPI, RS232, JTAG,… (nâng cao: SATA, PCIE, USB, CAN, MOST).
5. Hệ điều hành: kiến trúc hệ điều hành, kiến trúc máy tính, nhất là hệ điều hành linux.
6. Cấu trúc dữ liệu và giải thuật: nghe cái tên thôi bạn đủ hiểu, là chuyên gia phần cứng, bạn cũng phải code, đã code thì phải có giải thuật!
7. Memory: NOR, NAND, SRAM, DRAM, vv.
7. Hệ điều hành thời gian thực (Real time OS).

Trên đây là những kiến thức chung bắt buộc một kĩ sự lập trình nhúng phải có. Chúng ta sẽ đi sâu hơn về các kiến thức phải có của Embedded software và Embedded hardware.

Embedded software
Ngoài những kiến thức trên, bạn cần phải có:
1. Lập trình ứng dụng (application): C++, Java.
2. Lập trình device driver (dùng ngôn ngữ C).
3. Lập trình Android, lập trình web (basic).
4. Scrip: Perl, Python, đặt biệt là Shell script trên linux.
5. Cấu trúc dữ liệu và giải thuật cực tốt.
6. Xây dựng môi trường (build environments): Makefile, Cmake.

Embedded hardware
1. Thiết kế PCB: Allegro hay Antium.
2. Design schematic: bạn cần có kiến thức điện tử thật tốt để làm việc này.
3. Test board: sau khi đã thiết kế xong, bạn cần phải biết test board.
4. Review, đánh giá và lựa chọn linh kiện cho dự án sao cho tối ưu.
5. Sử dụng các loại dụng cụ máy đo.
6. Kĩ năng hàn mạch, sửa mạch (nếu bạn là Freelancer).

Trên đây là những kiến thức đã được tổng hợp, chắc chắn sẽ còn những thiếu sót, bạn đọc hãy bổ sung.
Mặc dù chúng tôi phân ra những kiến thức của 2 hướng như trên, nhưng trong thực tế, khi bạn là Embedded hardware thì không có nghĩa bạn không biết gì về Embedded software hay ngược lại. Bạn cần phải kiển trì rèn luyện tích lụy kiến thức từng ngày, nhất là đang ở trên giảng đường đại học. Bạn không được có suy nghĩ về việc ra trường sẽ được đào tạo những thứ này. Không đâu, học sẽ cho bạn tự học tự tìm hiểu là chính, vì vậy không có lý do gì mà ngay từ bây giờ bạn không học.

Internet of thing (IoT) và bảo mật trên các thiết bị IoT

iot

Đây là gì thì mời các bạn tìm hiểu trên google!
Hiện nay IoT là xu hướng phát triển cực mạnh và nhanh, bạn không thể lạc hậu được, vì vậy bạn phải trang bị cho mình những kiến thức sau:
1. Networking: đây là kiến thức bạn bắt buộc phải biết khi làm IoT như: IP, TCP/IP protocol, Wifi, Bluetooth, Cellurla, Zigbee, RF, vv.
2. Webserver: bạn cần phải biết cách thức hoạt động của Webserver và cách “ra lệnh” cho phần cứng là việc từ internet (CGI, Java, Javascript, vv), và bạn cần biết lập trình web và andoid ở mức cơ bản.
3. Cloud: 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: HTTP, CoAP, Lighweight M2M, …
4. Bảo mật trên các thiết bị IoT: hiện tại các thiết bị IoT đang bị tấn công rất nhiều, vì vậy là một kĩ sư IoT, bạn phải có trách nhiệm làm cho thiết bị của bạn được bảo mật hơn. Phần này có thể do IT đảm nhận.

Embedded linux

serembedded

Hiện nay, với sức mạnh của vi điều khiên thì chúng ta không thể đáp ứng được nhu cầu trong các hệ thống nhúng. Embedded linux là một giải pháp, đây có thể gọi là một máy tính nhúng, sức mạnh sẽ vượt trội hơn rất nhiều so với các vi điều khiển. Được sử dụng trong các hệ thống nhúng lớn hơn.

Quá trình học Embedded linux như sau:
1. Học về hệ điều hành linux: nói cách khác là cài thêm một hệ điều hành linux mà bạn thích rồi vọc.
2. Học command line và shell script trên linux.
3. Học về cách boot hệ thống, load firmware, cách debug sửa và vá lỗi.
4. Bạn cần phải biết cách build một hệ thống nhúng, cách tốt nhất là thực hành build hệ điều hành thường xuyên trên một board ví dụ như Raspberry Pi.
5. Viết device driver để giao tiếp với các ngoại vi.
6. Phát triển ứng dụng (application).

Sau khi đọc tới đây, bạn đã hình dung được những gì mình cần phải học và phải làm trong tương lai chưa?
Đây là toàn bộ kiến thức chúng tôi tổng hợp được. Bạn nào có kinh nghiệm trong ngành này thì hãy cho ý kiến bằng cách comment vào dưới hay liên lạc qua mail hoặc facebook.
Rất mong được sự quan tâm và chia sẽ từ các bạn.

Advertisements

5 thoughts on “Định hướng nghề nghiệp: Kĩ sư lập trình nhúng!

  1. Mình đang học viễn thông muốn đi theo hướng nhúng thì có khả thi ko nhỉ ?
    Mình có học cơ bản về kiến trúc máy tính, vđk, C/C++, VHDL.

    Like

    1. Nếu bạn đam mê, bạn sẽ tự học được thôi, nhưng sẽ khó khăn lắm nếu không có người hướng dẫn bạn! Vì kiến thức cần học rất nhiều.

      Like

  2. Thân chào, các bạn cho mình hỏi : hiện ngành ” khoa học máy tính ” có đào tạo lập trình nhúng không cụ thể là Embedded software. Mình muốn học văn bằng hai ngành này. Bạn nào học ĐH Bách khoa tphcm có thể cho mình biết thêm thông tin không. mình xin cảm ơn. Thân

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s