Title Image

Blog Logo

🌱 AUTOSAR 01. Autosar là gì?

🌱 AUTOSAR 01. Autosar là gì?

AUTOSAR

    Bài này là bài viết mở đầu cho chuỗi bài giới thiệu về kiến trúc Autosar, một kiến trúc quen thuộc trong các lĩnh vực Automotive. Để hiểu và học tập chuỗi bài này, các bạn cần có kiến thức chung về Embedded, lập trình C, kiến trúc phân lớp, một số kiến thức chung về vi điều khiển như UART, CAN, I2C, ... Với chuỗi bài viết này, mình sẽ thống nhất sử dụng các thuật ngữ chung bằng tiếng anh, một vài thuật ngữ được giới thiệu ở bài viết AUTOSAR Notes

    👉 AUTOSAR là gì?

    AUTOSAR - viết tắt của AUTomotive Open System ARchitecture, là một kiến trúc phân lớp, với các thông số kỹ thuật tiêu chuẩn được quy định bởi một nhóm các công ty: BMW Group, BOSCH, Continental, Daimler, Ford, General Motors, PSA Group, Toyota, VOLKSWAGEN. 

    Trên đây là những thành viên chính (Core Members) của mối quan hệ đối tác AUTOSAR, những công ty/tập đoàn đã sáng lập ra chuẩn AUTOSAR. Trên thực tế có nhiều thể loại thành viên khác nhau đóng góp cho sự phát triển của AUTOSAR: Core Members, Premium Members, Development Members.

    Ngoài các Core Members, có nhiều Premium Members cũng đang tham gia phát triển các công cụ phát triển (tool development), service providers, ... nhằm tiêu chuẩn hóa việc phát triển phần mềm cho ECU sử dụng trong các ứng dụng Automotive.

    ⏩ AUTOSAR được triển khai theo mô hình phân lớp, giống như mô hình OSI. Các lớp trong mô hình này dùng để xử lý và trừu tượng hóa các hoạt động khác nhau của code. AUTOSAR được sử dụng cho các vi điều khiển với mục đích sử dụng cho các ứng dụng automotive - CAN, FlexRay, Ethernet, ... 

Autosar

    Hình trên là một kiến trúc phân lớp đơn giản nhất theo Autosar,

  • Application Layer: Tầng này chứa code ứng dụng ở tầng cao nhất. Nó có thể bao gồm các khối ứng dụng khác nhau gọi là SWCs - Software Components cho từng tính năng mà ECU cần hỗ trợ tùy theo từng ứng dụng. 
    Ví dụ, các chức năng như power window hay temperature measurement chính là các SWC riêng biệt.
  • AUTOSAR RTE: Đây là một trong những layer quan trọng nhất của AUTOSAR, nó cung cấp khả năng giao tiếp giữa các SWC khác nhau và cả giữa các ECU khác nhau. Application layer sử dụng layer này trong khi giao tiếp với các layer bên dưới bằng các ports.
  • Services Layer: Tầng nay cung cấp các dịch vụ khác nhau cho các application sử dụng. Các dịch vụ như: System Services, Memory Services, Crypto Services, Off board communication Services, Communication Services.
  • ECU Abstraction Layer: Tầng này cung cấp các tính năng liên quan đến abstraction (Trừu tượng hóa). Nó bao gồm các tầng abstraction như: I/O Hardware Abstraction layer, On board device abstraction, Memory hardware Abstraction, Crypto hardware abstraction, ... Mục đích của tầng này nhằm độc lập phần mềm ứng dụng với phần cứng - Tức là code của tầng ứng dụng sẽ không cần thay đổi khi thay đổi phần cứng.
  • MCAL: viết tắt của Micro Controller Abstraction Layer, bao gồm các drivers giúp cho các lớp trên có thể giao tiếp với phần cứng (Các ngoại vi của Vi điều khiển).

    👉 Lí do cần có AUTOSAR?

    Thực tế thì làm gì cũng cần có tiêu chuẩn rõ ràng. Đối với việc viết phần mềm cho ECU, các developer có thể đối mặt với nhiều vấn đề khác nhau:

  • Hệ thống nhúng là một lĩnh vực rất lớn và có rất nhiều nhà sản xuất chất bản dẫn khác nhau. Nền tảng phần cứng và phần mềm có thể được lựa chọn tùy thuộc vào từng yêu cầu ứng dụng khác nhau. Chính việc này có thể dẫn đến khó khăn trong việc phát triển cũng như tính di động của phần mềm.
    Chẳng hạn như việc phần cứng thay đổi, gần như toàn bộ phần mềm sẽ phải thay đổi theo, làm tăng chi phí và thời gian phát triển phần mềm.
  • Automotive là một hệ thống phức tạp bao gồm nhiều hệ thống nhỏ hơn gọi là ECUs - Electronic Control Unit, nên việc bảo trì và phát triển phần mềm cho từng ECU là việc không dễ. Độ phức tạp càng tăng thêm khi các ECU khác nhau sử dụng các MCU khác nhau để đáp ứng các yêu cầu về mặt ứng dụng và chi phí.
    Vì vậy, có thể chúng ta sẽ cần phát triển rất nhiều phần mềm khác nhau cho các MCU này.
  • Với cách viết phần mềm thông thường, để giao tiếp giữa nhiều ECU khác nhau, nhà phát triển sẽ cần tạo ra các giao thức, tiêu chuẩn giao tiếp, gọi là Custom standard. Việc này rất tốt, nhưng lần sau làm việc với chiếc xe khác, các ECU khác thì lại rất khó để maintain và tốn nhiều chi phí hơn.
  • Một chiếc ô tô có nhiều bộ phận được sản xuất bởi các công ty khác nhau được gọi là công ty tier 1, cung cấp phụ tùng cho các OEM như BMW, Volkswagen, ... Ngày nay, hầu hết các bộ phận cơ khí đều trở nên thông minh hơn bằng cách thêm các ECU vào. Vì vậy cũng cần có các tiêu chuẩn để giao tiếp với cả những ECU của OEM khác nhau này.

    ⏩ Với những lý do nêu trên, cần có một số tiêu chuẩn thiết kế phần mềm để có thể thống nhất việc phát triển và giao tiếp giữa các ECU khác nhau, của các OEM khác nhau. Và AUTOSAR sinh ra từ đây để giải quyết những vấn đề trên.

    AUTOSAR được thiết kế theo kiến trúc phân lớp, và tầng ứng dụng sẽ được viết độc lập với phần cứng, để cùng một code ứng dụng có thể chạy trên các nền tảng phần cứng khác nhau. AUTOSAR cung cấp một layer riêng để giao tiếp với phần cứng gọi là MCAL (Micro Controller Abstraction Layer). AUTOSAR còn cung cấp tiêu chuẩn để giao tiếp giữa các ECU của các nhà phát triển khác nhau (Cả OEM và Tier 1), từ đó giảm chi phí khi maintain custom standard. 

    Các ECU sử dụng AUTOSAR có thể giao tiếp với nhau bất kể sự khác biệt về phần cứng. Hầu hết các nhà sản xuất chip đều cung cấp tầng MCAL của AUTOSAR, nhưng nếu họ không cung cấp thì developer cần phải viết tầng MCAL này hoặc thuê các công ty dịch vụ viết.

     Đây có phải là một hạn chế của AUTOSAR

    Trên thực tế đây không phải là một hạn chế, trong thế giới thay đổi nhanh chóng hiện nay, việc đáp ứng hoàn thành các dự án đúng deadline ngày càng nghiêm ngặt. Nên khi có AUTOSAR, việc đáp ứng nhu cầu phát triển phần mềm sẽ dễ dàng hơn. Mặc dùng AUTOSAR triển khai theo kiến trúc phân lớp và mọi thứ trông có vẻ có sẵn, nhưng chúng ta vẫn cần phải triển khai viết code cho các chức năng của SWC trong một Runnable của SWC.

    ❓ Nếu muốn sử dụng các thiết bị ngoài không hỗ AUTOSAR thì sao?

    Nếu sử dụng các thiết bị không được AUTOSAR hỗ trợ, chúng ta có thể sử dụng tầng CDD - Complex Device Drivers. Tầng này cho phép truy cập trực tiếp vào lớp MCAL từ tầng Application và chúng ta có thể giao tiếp trực tiếp giữa thiết bị ngoài với ECU. Chúng ta có thể tự phát triển phần mềm cho các thiết bị này, tuy nhiên nó phụ thuộc vào phần cứng, nên không có khả năng tái sử dụng như SWC.

    👉 Các phiên bản AUTOSAR

    Có 2 loại kiến trúc AUTOSAR là: ClassicAdaptive. Bản Classic có tất cả các module cơ bản cần có cho các ứng dụng, trong khi bản Adaptive có thể config được và điều chỉnh theo các ứng dụng bằng cách loại bỏ các module không cần thiết.

    Bản Classic hiện tại đang là 4.7.0, còn bản Adaptive hiện tại là 21.11 Phiên bản này chỉ đúng tại thời điểm viết bài và có thể không còn đúng vào thời điểm hiện tại.

Autosar

    Tham khảo: Autosar.org

>>>= Follow ngay =<<<

Để nhận được những bài học miễn phí mới nhất nhé 😊

Chúc các bạn học tập tốt 😊

                                        

Đăng nhận xét

2 Nhận xét

  1. Hay quá Nghĩa ơi, đúng cái anh đang tìm, mong em ra nhiều bài hơn

    Trả lờiXóa
    Trả lời
    1. Vâng, có thời gian em sẽ hoàn thành series này sớm ạ

      Xóa