Ngành lập trình nhúng trên ô tô và cơ hội cho các lập trình viên Việt Nam

Sơ lược về hệ thống nhúng trên ô tô (Automotive Embedded Systems)

Ngành công nghiệp ô tô hiện nay là nền kinh tế lớn thứ sáu trên thế giới, sản xuất hàng chục triệu xe mỗi năm và đóng góp quan trọng vào thu nhập của các chính phủ trên toàn thế giới. Và ngày nay thì công nghệ điện tử và phần mềm đang đóng góp rất lớn trong việc cải thiện về tính năng, hiệu suất, sự thoải mái và an toàn của xe ô tô. Kể từ năm 1990 thì lĩnh vực phần mềm nhúng (embedded sofware) vẫn đang tăng trưởng với tỉ lệ hàng năm là 10%.

Năm 2004, hệ thống điện tử nhúng của một chiếc xe Volkswagen Phaeton bao gồm hơn 10.000 thiết bị điện, 61 vi xử lý, 3 mạng CAN (controller area networks) hỗ trợ trao đổi dữ liệu giữa các vi xử lý. Trong khi đó Volvo S70 có 2 networks hỗ trợ giao tiếp giữa các vi xử lý điều khiển gương, điều khiển cửa xe và hệ thống điều khiển truyền động. Vị trí của các gương được điều khiển tự động theo cảm giác xe chạy và âm lượng của radio được điều chỉnh theo tốc độ xe được cung cấp bởi hệ thống chống bó cứng phanh (ABS). Vào năm 2006 thì giá thành của một hệ thống nhúng (bao gồm cả điện tử và phần mềm) chiếm khoảng 25% tổng giá thành của 1 chiếc xe (đối với dòng xe cao cấp là khoảng 35%).

Ngành công nghiệp ô tô đã phát triển nhanh chóng và sẽ phát triển nhanh hơn nữa dưới sự tác động của một số yếu tố như áp lực từ các quy định của luật pháp (liên quan đến khí thải, môi trường), áp lực từ phía khách hàng, áp lực về tiến bộ công nghệ (cả khía cạnh phần cứng và phần mềm). Đã có một sự thay đổi lớn trong việc phát triển các hệ thống điều khiển điện tử xuất phát từ vấn đề liên quan đến ô nhiễm không khí. Người dùng thì đòi hỏi xe có hiệu suất cao hơn (ở mức tiêu thụ nhiên liệu thấp hơn), thoải mái và an toàn hơn. Và chỉ có tiến bộ và đột phá về công nghệ mới có thể giải quyết và đáp ứng được các yêu cầu này.

Công nghệ điện tử đã có những bước tiến lớn và ngày nay, chất lượng của các thành phần điện tử bao gồm hiệu suất, độ bền và độ tin cậy đã cho phép chúng ta sử dụng chúng ngay cả đối với các hệ thống quan trọng. Đồng thời, chi phí giảm dần của công nghệ điện tử cho phép chúng được sử dụng để hỗ trợ bất kỳ chức năng nào trong xe hơi. Hơn nữa, trong thập kỷ qua, một số networks nhúng trong ô tô (automotive-embedded networks) như LIN, CAN, TTP / C, FlexRay đã được phát triển với ưu điểm chính là giúp giảm đáng kể chi phí về dây dẫn kết nối và tăng tính linh hoạt (ví dụ: tốc độ xe được đo bởi một con vi điều khiển và dữ liệu được truyền đến các vi điều khiển khác qua networks).

Một lý do công nghệ khác cho sự phát triển của các hệ thống nhúng ô tô là do các công nghệ này có thể làm được chức năng mà sẽ tốn kém hoặc thậm chí không khả thi nếu chỉ sử dụng công nghệ cơ khí hoặc thủy lực. Do đó, cho phép đáp ứng các yêu cầu của người dùng cuối về sự an toàn, thoải mái và cả chi phí. Các ví dụ điển hình là hệ thống chống bó cứng phanh (ABS – Anti-lock Braking System), chương trình cân bằng điện tử (ESP – Electronic Stability Program), hệ thống treo chủ động,… Tóm lại, nhờ những công nghệ này, khách hàng có thể mua một chiếc xe an toàn, hiệu quả và có thể được cá nhân hóa phù hợp với sở thích hơn.

Các Domains chính trong Automotive Embedded Systems

Các nhà sản xuất xe hơi đưa ra 5 Domains (tạm hiểu là các nhóm chức năng) chính cho các thiết bị điện tử nhúng trong xe hơi bao gồm: Power train, Chassis, Body, HMI Telematics.
  • Power train domain liên quan đến chức năng điều khiển chuyển động của xe bao gồm các động cơ, hệ thống truyền động, tăng tốc, giảm tốc.
  • Chassis domain liên quan đến điều khiển lái (vị trí và hướng di chuyển của bánh), phanh.
  • Body domain bao gồm các thành phần không liên quan trực tiếp đến chuyển động của xe như: túi khí, cần gạt nước, đèn đóm, điều hòa, …
  • HMI domain bao gồm các thiết bị (màn hình hiển thị, nút bấm) dùng để trao đổi thông tin giữa hệ thống điện tử của xe và người dùng (lái xe và hành khách). HMI bao gồm nhiều hệ thống nhỏ như Head Unit hay còn gọi là AVN – Audio Video Navigation hoặc Infotainment (chứa hệ thống thông tin giải trí, nghe nhạc, xem video, dẫn đường, …), Instrument Cluster (hệ thống hiển thị thông tin cụm đồng hồ), HUD – Head Up Display (hệ thống hiển thị các thông tin như tốc độ, dẫn đường trên kính, thẳng mặt lái xe, giống kiểu trên máy bay ý anh em ạ)
  • Telematics domain là hệ thống trao đổi thông tin giữa xe với thế giới bên ngoài, có thể là giữa xe với xe, giữa xe với cơ sở hạ tầng và dịch vụ xung quanh.

Trong 5 domains ở trên thì hiện nay phần lớn anh em lập trình viên Việt Nam mới chỉ được làm phần HMI và Telematics. Trong đó chủ yếu là HMI, Telematics chiếm phần nhỏ. Lý do là vì 2 domains này không liên quan trực tiếp đến tính mạng, an toàn của người dùng (LOL).

Head Unit (Infotainment, AVN)

Cluster

HUD – Head Up Display

Có lẽ chém vĩ mô về hệ thống nhúng trên ô tô như vậy thôi, giờ sẽ sang phần tiếp theo là tình hình công việc về Automotive Embedded Systems tại Việt Nam giờ ra sao nhé.

Tình hình công việc về Automotive Embedded Systems tại Việt Nam

Ở Việt Nam hiện nay, nói đến ô tô thì không thể không nhắc đến VINFAST, công ty đi đầu trong việc sản xuất ô tô mang thương hiệu Việt. Và tất nhiên VINFAST có tham vọng đưa người Việt làm chủ công nghệ ô tô của VINFAST trong đó bao gồm cả hệ thống nhúng trên ô tô. Tuy hiện tại chưa thể tự sản xuất nhưng VINFAST đã có những viện nghiên cứu về hệ thống nhúng trên ô tô với rất nhiều chuyên gia Tây lông cũng như những kỹ sư Việt Nam rất giỏi. Do đó có thể nói, với tiềm lực về kinh tế của mình, nói về công nghệ hệ thống nhúng trên ô tô, VINFAST có lẽ là mạnh nhất Việt Nam dù mới thành lập được 2 năm.

Trước khi sang VINFAST R&D và bây giờ chuyển sang Viện Công Nghệ Ô Tô của VINFAST thì mình làm lập trình Embedded ở FPT Software. Theo mình biết thì từ đầu những năm 2010 trở đi thì FSOFT đâu đó đã có những dự án làm về Automotive với một số khách hàng Nhật nhưng quy mô còn nhỏ, việc chủ yếu là Demo, nói chung là chủ yếu làm le ve, vừa học vừa làm. Năm 2012 đến 2014 thì FSOFT đã có được những dự án lớn và thử thách hơn, nhưng đến năm 2015 thì mảng công việc về nhúng trên ô tô mới thật sự bùng nổ với rất nhiều dự án lớn của các khách hàng Nhật, Hàn. Cho đến nay thì mảng công việc này tại FSOFT cũng vẫn đang rất hot và có nhiều dự án, FSOFT thậm chí còn thành lập một đơn vị riêng chuyên về Automotive đó là FGA – FPT Global Automotive.

Ngoài VINFAST, FSOFT thì ở Việt Nam mình biết có 2 công ty lớn khác cũng đang làm trong lĩnh vực Automotive. Đó là:

  • LG VS DCV – LG Vehicle Component Solutions Development Center Vietnam: Là một thành viên của Công ty TNHH LG Electronics Việt Nam Hải Phòng (LGEVH). Địa điểm tại tầng 34, 35 tòa nhà Keangnam – Hà Nội. Chuyên phát triển hệ thống thông tin giải trí trong ô tô (In-Vehicle Infotainment) như: hệ thống hiển thị thông tin cụm đồng hồ (Clusters), hệ thống nghe nhìn và dẫn đường (Audio Video Navigation), hệ thống trợ lái tiên tiến (Advanced Driver Assistant System), Telematics. Hiện đang làm các dự án của các công ty lớn như GM, BMW, Huyndai. Lương lậu ở đây KHÁ ngon so với mặt bằng chung.
  • Panasonic R&D Center Vietnam: Là công ty con của công ty Panasonic Việt Nam trực thuộc tổng công ty Panasonic Nhật Bản. Địa điểm: Tầng 17, Tháp Đông, Tòa nhà Lotte Center Hà Nội, 54 Liễu Giai, Cống Vị, Ba Đình, Hà Nội. Cũng làm một số các hệ thống nhúng trên ô tô theo yêu cầu từ công ty mẹ bên Nhật. Theo đánh giá của mình thì không mạnh mẽ bằng LG VS DCV. Mình từng đi phỏng vấn ở đây và passed nhưng thấy lương trả khá bèo, không ăn thua lắm.

Hiện nay ngành Automotive Embedded ở Việt Nam đang có rất nhiều cơ hội và cũng đang rất khát nhân lực bao gồm lực lượng Developer, Tester. Đối với các công ty outsourcing như FSOFT thì họ còn thiếu nhân lực BrSE (kỹ sư cầu nối) làm việc tại Nhật Bản, Hàn Quốc nữa (làm BrSE được trải nghiệm cuộc sống nước ngoài, lương cũng ngon hơn trong nước). Lương BrSE của FSOFT trong ngành Automotive này theo mình biết thì thường nằm trong khoảng 200~350.000 yên / tháng tùy năng lực và kinh nghiệm, tiền nhà và đi lại công ty hỗ trợ. Còn Hàn Quốc thì chưa đi bao giờ nên không biết.

Để làm về Automotive Embedded Systems thì cần kiến thức chuyên môn gì ?

*** Ngôn ngữ lập trình

Đầu tiên về ngôn ngữ lập trình thì chủ yếu dùng C/C++ để phát triển ứng dụng nhúng chạy trên các thiết bị nằm trên ô tô (Head Unit, Cluster, HUD). Ngoài ra thì còn sử dụng một số ngôn ngữ khác như C#, NodeJs, Python, … để phát triển tools hỗ trợ và tự động hóa quá trình phát triển và kiểm thử. Ví dụ như các tools để tự động generate code C/C++, tools giả lập tín hiệu CAN cho mục đích testing, tool update firmware,… nói chung là đủ các thể loại.

Chính vì vậy nắm vững kiến thức về C/C++ là yêu cầu tiên quyết và quan trọng nếu bạn muốn trở thành lập trình viên cho ngành này. Biết thêm các ngôn ngữ khác sẽ là điểm cộng và là lợi thế giúp bạn nhanh chóng tạo ra sự khác biệt so với các đồng nghiệp khác.

*** Hệ điều hành Hệ điều hành chạy trên hệ thống nhúng của ô tô chia làm 2 loại chính là RTOS (Real Time OS) và Non-RTOS.
  • RTOS bao gồm các OS như Windows CE, QNX, INTEGRITY, iTRON, FreeRTOS.
  • Non-RTOS thì có Linux, Android (cho automotive, khác với Android trên smartphone).

RTOS thường có kích thước nhỏ và được dùng cho các thiết bị và ứng dụng yêu cầu khắt khe về thời gian đáp ứng.

Riêng với Linux thì có 2 platform khá nổi tiếng giúp đẩy nhanh quá trình phát triển ứng dụng trên ô tô dựa trên hệ điều hành Linux đó là AGL (Automotive Grade Linux) và GenIVI. Ở đây mình chỉ giới thiệu qua như vậy chứ không đề cập sâu, có thời gian sẽ viết bài chém riêng.

*** Framework

Có một số Framework khá nổi tiếng và thông dụng trong việc phát triển các ứng dụng HMI như Qt, Kanzi Studio, CGI Studio, MTA Studio, EB Guide. Trong đó ngoài Qt có bản free ra thì các frameworks còn lại đều phải mua commercial license mới có thể dùng được. Do đó bạn nào muốn theo ngành này thì mình khuyên các bạn học Qt trước cho dễ vì nó có bản free mà cộng đồng người dùng lớn, google search dễ.

*** Vi xử lý

Hiện nay theo mình biết thì có 3 hãng sản xuất vi xử lý (MCU – Micro Controller Unit) chuyên dùng cho Automotive đó là NXP, Renesas và xếp sau là Qualcomm. Trong khi NXP có các dòng MCU như i.MX6, i.MX7, i.MX8 thì Renesas có RH850, RCar và Qualcomm có S820 khá nổi tiếng và thông dụng dành cho xe hơi. Nếu có kinh nghiệm hoặc kiến thức về các dòng MCU này thì sẽ như hổ mọc thêm cánh khi làm Automotive Embedded Software.

*** Phần cứng và các chuẩn kết nối, giao tiếp

Với những lập trình viên làm về các software modules ở tầng thấp như BSP (Board Support Packages), HAL (Hardware Abstraction Layers), Device Drivers thì ngoài những kiến thức trên còn cần thêm các kiến thức chuyên sâu về phần cứng và các chuẩn kết nối, giao tiếp trong hệ thống nhúng. Cần phải hiểu về kiến trúc các MCU, giao tiếp GPIO – General Purpose Input Output (bao gồm Digital và Analog Input/Output), UART, SPI, I2C, CAN, LIN… ngoài ra còn phải hiểu cách làm việc với các bộ nhớ ROM, Internal / External RAM, Internal / External Flash,… nói chung là rất nhiều thứ mà mình không thể kể hết ở đây.

Lời kết

Trên đây là một số thông tin chia sẻ từ kinh nghiệm và kiến thức của chính bản thân mình. Hy vọng nó có ích cho các bạn. Nếu cần mình giúp đỡ hay muốn hỏi thêm về chuyên môn có thể contact mình qua Facebook cá nhân hoặc post câu hỏi vào Group https://www.facebook.com/groups/916177308573002/, hoặc post câu hỏi lên https://codingguru.vn.

Tham khảo

  • Automotive Embedded Systems Handbook

— Phạm Minh Tuấn (Shun) —