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:
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
Đâ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.
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
Đâ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
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.
Không có nhận xét nào:
Đăng nhận xét