Chủ đề ngành Nhúng · Bài 1/1
Bài 1: From Firmware Engineering to Intelligent System Engineering
56 lượt đọc9 phút đọc
Trong nhiều năm, kỹ sư nhúng được đánh giá qua khả năng làm cho một chiếc vi điều khiển chạy đúng, đủ nhanh và đủ nhỏ. Điều đó vẫn đúng. Nhưng sản phẩm ngày nay không còn dừng ở việc "chạy đúng": thiết bị phải kết nối, cập nhật từ xa, tự hiểu dữ liệu và ra quyết định ngay trên thiết bị. Vai trò của người làm nhúng đang dịch chuyển từ Firmware Engineering sang Intelligent System Engineering.
1.Firmware Engineering: nền móng không thay đổi
Firmware là phần mềm sống sát phần cứng nhất. Người viết firmware phải hiểu thanh ghi, ngắt, bộ nhớ, thời gian thực và những ràng buộc rất cụ thể: vài trăm KB RAM, vài chục mA dòng tiêu thụ, một deadline tính bằng micro giây.
Những năng lực cốt lõi của một firmware engineer gồm:
- Lập trình C/C++ an toàn, tuân thủ chuẩn như MISRA C và BARR-C.
- Hiểu bộ nhớ: stack, heap, memory layout, alignment, lỗi tràn bộ nhớ.
- Làm việc với ngoại vi: GPIO, UART, I2C, SPI, ADC, PWM, timer.
- Thiết kế đồng thời và thời gian thực với RTOS: task, queue, semaphore, mutex.
- Debug trên phần cứng thật: logic analyzer, JTAG, trace.
2.Điều gì đang thay đổi?
Có ba thay đổi lớn khiến công việc của kỹ sư nhúng rộng hơn trước.
- Kết nối trở thành mặc định. Thiết bị nói chuyện qua WiFi, BLE, MQTT, và phải được cập nhật an toàn từ xa bằng OTA.
- Dữ liệu được xử lý ngay trên thiết bị. Gửi mọi thứ lên cloud tốn băng thông, chậm và lộ dữ liệu. Xử lý ngay trên thiết bị giúp phản hồi nhanh hơn và riêng tư hơn.
- AI đủ nhỏ để chạy trên vi điều khiển. Nhờ lượng tử hóa INT8, thư viện như TensorFlow Lite Micro và các tập lệnh tăng tốc, những mô hình nhận diện âm thanh, rung động, hình ảnh nhẹ đã chạy được trên vi điều khiển giá vài đô la.
Kết quả là một thiết bị nhúng hiện đại giống một hệ thống nhỏ hoàn chỉnh hơn là một bộ điều khiển đơn lẻ.
3.Công việc của kỹ sư nhúng đang dịch chuyển như thế nào?
Sự thay đổi không nằm ở chỗ "AI viết code thay kỹ sư", mà ở chỗ thời gian của kỹ sư được dồn vào những việc khác nhau. Có thể nhìn qua các dịch chuyển sau:
- Từ viết từng dòng code sang thiết kế và kiểm chứng. Phần code lặp lại như khởi tạo ngoại vi, parser, khung driver có thể được AI sinh nhanh. Giá trị còn lại nằm ở việc quyết định kiến trúc, đặt ràng buộc và chứng minh code chạy đúng.
- Từ làm việc với một thành phần sang làm việc với cả chuỗi. Một lỗi giờ có thể đến từ firmware, từ dữ liệu huấn luyện, từ mô hình bị lượng tử hóa làm mất quá nhiều độ chính xác, hoặc từ chính bản OTA vừa phát hành.
- Từ "chạy được" sang "đo được". Độ trễ suy luận, RAM, flash, năng lượng mỗi lần đánh thức, độ chính xác ngoài hiện trường đều phải có con số cụ thể, không thể chỉ dựa vào cảm tính.
- Từ bàn giao một lần sang vận hành liên tục. Sản phẩm chạy trên thiết bị nhiều năm: cần giám sát, cập nhật mô hình, vá bảo mật, thu dữ liệu hiện trường để cải tiến.
- Từ chuyên sâu một mảng sang hiểu nhiều mảng liên quan. Người hiểu cả phần cứng, RTOS, Linux và machine learning đủ sâu để phối hợp với từng nhóm sẽ rất khó thay thế.
4.Cách làm việc của kỹ sư nhúng trong thời đại AI
Khi AI trở thành công cụ hỗ trợ trong công việc hằng ngày, quy trình làm việc cũng thay đổi. Một vòng làm việc hợp lý thường như sau:
- Đặt bài toán rõ ràng. Viết ra yêu cầu, ràng buộc phần cứng (chip, bộ nhớ, tốc độ, nguồn), chuẩn code cần theo và tiêu chí chấp nhận. Prompt tốt bắt đầu từ đặc tả tốt.
- Cung cấp ngữ cảnh đúng. Đưa datasheet, reference manual, sơ đồ và đoạn code hiện có cho AI. Không để nó đoán địa chỉ thanh ghi hay thời gian chờ của cảm biến.
- Cho AI làm bản nháp. Nhờ sinh khung driver, test, script build, tài liệu, hoặc giải thích một đoạn code lạ. Giao việc theo từng bước nhỏ, kiểm tra từng bước.
- Tự kiểm chứng. Đọc code như review code của một đồng nghiệp mới, chạy static analysis, unit test, sanitizer và quan trọng nhất là chạy trên phần cứng thật với logic analyzer hoặc oscilloscope.
- Đo và tối ưu. Đo timing, stack, heap, mức tiêu thụ. AI có thể gợi ý hướng tối ưu, nhưng con số thật mới là căn cứ.
- Ghi lại quyết định. Lưu lý do chọn thiết kế, giới hạn đã biết và cách tái tạo lỗi để cả người lẫn AI sau này có ngữ cảnh.
AI làm tốt gì, và chỗ nào cần con người
AI thường làm tốt:
- Sinh code mẫu, khung dự án, test, script tự động hóa.
- Giải thích mã nguồn, log, thông báo lỗi và tài liệu dài.
- Chuyển đổi giữa các API, đề xuất cách tái cấu trúc.
Con người vẫn phải chịu trách nhiệm về:
- Những lỗi chỉ lộ ra trên phần cứng thật: race condition, ngắt lồng nhau, tràn stack, nhiễu tín hiệu, thời gian khởi động.
- Các quyết định đánh đổi: tốc độ hay năng lượng, độ chính xác hay kích thước mô hình, tính năng hay độ ổn định.
- An toàn và bảo mật: thiết bị điều khiển thực tế, dữ liệu cá nhân, chuỗi cập nhật.
Những kỹ năng tăng giá trị
Khi code nháp trở nên rẻ, các kỹ năng sau trở nên quý hơn:
- Hiểu sâu nền tảng: bộ nhớ, ngắt, thời gian thực, giao thức. Không hiểu thì không thể review được.
- Debug có phương pháp: tách vấn đề, đặt giả thuyết, đo để kiểm chứng.
- Viết đặc tả và test: biến yêu cầu mơ hồ thành tiêu chí kiểm tra được.
- Đọc tài liệu kỹ thuật nhanh và chính xác.
- Tư duy hệ thống: nhìn dữ liệu, mô hình, firmware và vận hành như một thể thống nhất.
5.Intelligent System Engineering là gì?
Intelligent System Engineering không thay thế firmware. Nó là bước mở rộng: người kỹ sư chịu trách nhiệm cho cả vòng đời của một hệ thống có khả năng cảm nhận, suy luận và vận hành lâu dài.
Một hệ thống như vậy thường gồm các lớp:
- Cảm biến và thu thập dữ liệu: lấy mẫu đúng tần số, tiền xử lý, lọc nhiễu.
- Xử lý tín hiệu: FFT, MFCC, spectrogram để biến dữ liệu thô thành đặc trưng.
- Mô hình Edge AI: huấn luyện, lượng tử hóa, triển khai và đo độ trễ, RAM, flash.
- Hệ điều hành thời gian thực: tách luồng I/O khỏi luồng suy luận, tận dụng đa nhân.
- Kết nối và vận hành: MQTT, OTA, giám sát mô hình giảm độ chính xác theo thời gian (drift), cập nhật mô hình mà không cần nạp lại toàn bộ firmware.
- Năng lượng và bảo mật: deep sleep, đo mức tiêu thụ thực tế, bảo vệ dữ liệu và mô hình.
6.Một ví dụ cụ thể
Hãy hình dung một cảm biến rung gắn trên động cơ công nghiệp.
Cách làm truyền thống: firmware đọc gia tốc kế, so với ngưỡng cố định và bật cảnh báo. Đơn giản, nhưng dễ báo sai và bỏ sót lỗi mới.
Cách làm thông minh: thiết bị thu dữ liệu rung, trích xuất đặc trưng tần số, chạy một mô hình nhỏ để phát hiện bất thường ngay trên MCU, chỉ gửi cảnh báo khi cần, chạy bằng pin nhiều tháng, và nhận bản cập nhật mô hình qua OTA khi điều kiện vận hành thay đổi.
Để làm được điều này, một người phải nắm cả hai mảng kiến thức: giới hạn của firmware (bộ nhớ, thời gian thực, năng lượng) và quy trình làm việc của machine learning (dữ liệu, huấn luyện, đánh giá mô hình).
7.Lộ trình cho kỹ sư nhúng
Không cần bỏ nghề để chuyển hướng. Cách thực tế là xây từng lớp trên nền tảng đã có:
- Củng cố nền tảng: C nâng cao, bộ nhớ, con trỏ hàm, máy trạng thái, build và test chuyên nghiệp.
- Làm chủ MCU và RTOS: ngoại vi ở mức thanh ghi và driver, ngắt, timer, FreeRTOS trên ESP32-S3.
- Học Embedded Linux: process, thread, IPC, kernel module, driver và Device Tree khi sản phẩm cần một hệ điều hành đầy đủ.
- Thêm TinyML và Edge AI: dữ liệu, DSP, lượng tử hóa, TFLite Micro, tăng tốc phần cứng.
- Làm dự án thực tế: một sản phẩm AIoT chạy pin, có OTA, có đo đạc, để chứng minh năng lực bằng kết quả.
8.Dùng AI đúng cách trong công việc nhúng
AI hỗ trợ lập trình cũng là một phần của sự thay đổi này. Nhưng code nhúng sai có thể làm hỏng phần cứng hoặc gây mất an toàn, nên cần kiểm soát chặt:
- Cung cấp datasheet và reference manual cho AI thay vì để nó đoán thanh ghi.
- Yêu cầu code ở mức driver API, kèm giải thích và ràng buộc rõ ràng.
- Luôn tự review, chạy trên phần cứng thật và kiểm tra theo chuẩn code.
9.Kết luận
Firmware vẫn là nền móng, và những kỹ sư vững nền tảng sẽ đi nhanh nhất. Điều khác biệt của thế hệ kỹ sư tiếp theo là họ nhìn cả hệ thống: từ thanh ghi, RTOS, Linux đến dữ liệu, mô hình AI và vận hành từ xa.
Nếu bạn đang làm firmware và muốn đi tiếp theo hướng này, hãy bắt đầu từ một dự án nhỏ: đọc một cảm biến, chạy một mô hình nhẹ trên ESP32-S3, rồi từng bước thêm kết nối và cập nhật từ xa. DevLinux Academy xây dựng các khóa Embedded C Advanced, ESP32 MCU & Edge AI, FreeRTOS, Embedded Linux và TinyML & Edge AI theo đúng lộ trình đó.
