Theo phương châm vài ngày một chủ đề ngẫu hứng, chủ đề hôm nay mình muốn chia sẻ với mọi người là về công việc của kĩ sư Embedded Linux ở Việt Nam.
Hiện tại chúng ta đang làm gì? Cần chuẩn bị những gì đối với người mới muốn tham gia vào lĩnh vực này?
Đây có lẽ là vấn đề cần tìm hiểu đầu tiên đối với người mới. Mình hiện tại là trưởng nhóm kỹ thuật về mảng này, do đó công việc chủ yếu của mình là tìm hiểu về các kiến thức mới trong Embedded Linux, đào tạo, phỏng vấn ứng viên, hô hào cổ động tinh thần học hành của anh em trong dự án. Do tính chất công việc, mình có cơ hội được tiếp xúc với nhiều người trong lĩnh vực này ở các công ty khác nhau nên đâu đó mình cũng nắm được bức tranh về Embedded Linux ở Việt Nam.
Sau đây là một vài chia sẻ từ góc nhìn cá nhân của mình. Hy vọng thông tin mình cung cấp sẽ giúp ích cho mọi người trong quá trình học tập và làm việc.
1. Linux embedded là gì?
Linux embedded được hiểu là những hệ thống embedded mà người ta chạy hệ điều hành Linux lên đó. Linux embedded có những ưu điểm mà một hệ thống nhúng theo dạng code thuần vi điều khiển không có. Tính năng của nó đa dạng hơn rất nhiều, thời gian phát triển ứng dụng nhanh, được hỗ trợ nhiều từ các thư viện có sẵn trên mạng. Khả năng đa phương tiện mạnh, có thể tái sử dụng giữa các nền tảng khác nhau.
2. Ở Việt Nam chúng ta đang làm gì về Linux embedded?
Nếu coi cả Việt Nam là một công xưởng sản xuất. Vậy chúng ta sẽ có những đơn vị chuyên làm về phần cứng. Có những đơn vị sau khi có phần cứng rồi thì sẽ lập trình các driver chạy trên Linux để điều khiển các phần cứng đó (nó giống với các bạn lập trình vi điều khiển nhưng ở đây code của các bạn phải chạy được trong hệ điều hành Linux), sau đó họ sẽ tích hợp các driver và chỉnh sửa một số thông số của hệ điều hành Linux để có thể chạy được trên phần cứng của họ. Cuối cùng, chúng ta có những đơn vị lập trình các ứng dụng dựa trên hệ điều hành Linux kèm với phần cứng ở các bước trên. Cách phân chia ở trên dựa vào phương diện về kiến thức.
Đối với góc nhìn về sản phẩm, hiện tại mạnh nhất là làm Linux embedded cho các thiệt bị trên ô tô. (Theo như mình tìm hiểu thì có FGA của Fsoft và LG Việt Nam là 2 đơn vị lớn nhất làm về mảng này, ngoài ra còn có thêm 1 công ty nữa của Hàn Quốc có thể là Toshiba hoặc Panasonic).
Mạnh nhì là làm Linux embedded cho các thiết bị mạng – bao gồm wifi, switch. (Mảng này thì có Viettel và một số công ty như Dasan Việt Nam, Bosh, Humax, Panasonic và một số công ty nhỏ khác mình không kể tên ở đây).
Ngoài ra còn có Android embedded cho các thiết bị gia dụng như tivi, tủ lạnh… (Mảng này thì tập trung vào các công ty của Hàn Quốc đặt tại Việt Nam như Humax, Panasonic, Samsung, LG… Mình cho Android embedded vào đây vì 1 người có thể làm giữa 2 mảng Android và Linux embedded được mà không gặp nhiều bỡ ngỡ lắm) .
Hiện tại ở Việt Nam mình ước tính có khoảng 1000 đến 2000 người làm về Linux embedded. Tuy nhiên, phần lớn mọi người đều tập trung ở tầng ứng dụng. Cái này do khả năng của chúng ta vẫn chưa đáp ứng được cho việc lập trình dưới tầng kernel. Số người có công việc chính là lập trình dưới tầng kernel chỉ khoảng 10% con số trên.
Khi thành lập cộng đồng “Cùng nhau học Linux”, mục tiêu của mình là để tăng con số 10% lên, Vậy cần chuẩn bị những hành trang gì để trở thành 1 thành viên trong con số 10% này?
3. Hành trang cần chuẩn bị trước khi tham gia vào lĩnh vực Linux embedded.
Trước tiên, bạn cần học tốt về C và một chút assembly. Sau đó, nắm chắc kiến thức về vi điều khiển. Bạn phải có khả năng đọc tài liệu tham khảo để lập trình driver cho một ngoại vi nào đó. Tiếp theo, các bạn cần trau dồi những kiến thức cơ bản về hệ điều hành như file system, lập lịch, virtual memory… Cuối cùng, thứ các bạn cần học lúc này là lập trình Linux device driver cơ bản. Đến đây, các bạn đã có đủ kiến thức để trở thành 1 junior trong lĩnh vực này.
Cả quá trình trên sẽ kéo dài 1 – 2 năm để học từ đầu. Nếu bạn càng ở những nấc thang cuối thì thời gian cần thiết sẽ càng giảm đi. Nếu đã lập trình tốt vi điều khiển thì mình ước lượng sẽ mất khoảng 3 – 6 tháng để chuyển sang Linux embedded. Hiện tại, hệ thống đào tạo trên cộng đồng “Cùng nhau học Linux” cũng đang được xây dựng theo hướng này.