গাড়ি শিল্প অনেকগুলো বিকেন্দ্রীভূত কম্পিউট ইউনিটের আর্কিটেকচার থেকে এমন একটি আর্কিটেকচারের দিকে এগিয়ে যাচ্ছে, যা একাধিক কার্যকারিতাকে অল্প কয়েকটি কেন্দ্রীভূত কম্পিউট ইউনিটে একত্রিত করে এবং ওভার দ্য এয়ার আপডেটের মতো নতুন ফিচারগুলো সক্ষম করে।
AAOS SDV একটি সমাধান প্রদানের জন্য বিদ্যমান অ্যান্ড্রয়েড সিস্টেম এবং পরিকাঠামো ব্যবহার করে। এছাড়াও, OEM-রা এমন সমাধান খুঁজছেন যা ক্লাউডেও চলতে পারে, কারণ এটি প্রাথমিক উন্নয়নকে সহজ করে এবং পরীক্ষার নতুন সুযোগ তৈরি করে।
ডিজাইন

চিত্র ১. এসডিভি কোর স্থাপত্য।
AAOS for SDV Core (SDV Core) হলো অ্যান্ড্রয়েড-ভিত্তিক একটি অপারেটিং সিস্টেম। এর এমবেডেড প্রকৃতির কারণে, এটি অ্যান্ড্রয়েডের JVM স্ট্যাক প্রয়োগ করে না, বরং এর সমস্ত সিস্টেম কার্যকারিতা নেটিভভাবে তৈরি করা হয়।
এসডিভি কোর মূলত একটি ভার্চুয়ালাইজড পরিবেশের জন্য তৈরি করা হয়েছে এবং এর কিছু ডিজাইনগত সিদ্ধান্ত এই ইন্টিগ্রেশনকে মাথায় রেখেই নেওয়া হয়েছে। তা সত্ত্বেও, এসডিভি কোর নেটিভভাবে চালানো সম্ভব, কিন্তু এর জন্য অন্যান্য অ্যান্ড্রয়েড রিলিজের তুলনায় অনেক বেশি ইন্টিগ্রেশনের কাজ করতে হয়।
এসডিভি কোর একটি লোকাল ডিস্ট্রিবিউটেড সিস্টেমের জন্য ডিজাইন করা হয়েছে। উদাহরণস্বরূপ, এটি ধরে নেয় যে এসডিভি কোরের (বা এর ডেরিভেটিভগুলোর) একাধিক ইনস্ট্যান্স একই চিপে অথবা একাধিক সিস্টেম জুড়ে পাশাপাশি চলে এবং তারা একটি নেটওয়ার্ক সংযোগের মাধ্যমে যোগাযোগ করতে পারে। সুতরাং, সিস্টেম আর্কিটেকচারের একটি মূল দিক হলো কার্যকারিতাগুলোকে সার্ভিস হিসেবে বাস্তবায়ন করা, যা যেকোনো ইনস্ট্যান্সে হোস্ট করা যেতে পারে।
এসডিভি কোর হলো গাড়ির অভ্যন্তরীণ কার্যকারিতা বিকাশের জন্য প্রয়োজনীয় ন্যূনতম কার্যকারিতার একটি সেট। একটি সাধারণ সার্ভিস কয়েকটি সিগন্যাল গ্রহণ করে, সেগুলোকে প্রসেস করে এবং ফলাফলটি অন্যান্য সার্ভিসের সাথে শেয়ার করে। এই পরিধিগত সীমাবদ্ধতা ইচ্ছাকৃতভাবেই রাখা হয়েছে, কারণ এটি এসডিভি কোরকে এমন বিভিন্ন ধরনের এসওসি (সিস্টেম-অন-এ-চিপ) চালানোর সুযোগ দেয়, যেগুলোতে হয়তো উন্নত ইঞ্জিন নেই এবং এর ফলে খরচও সাশ্রয় হয়।
বিস্তারিত নকশা

চিত্র ২. এসডিভি কোরের বিস্তারিত স্থাপত্য।
এসডিভি কোর অ্যান্ড্রয়েড থেকে উদ্ভূত, এবং তাই এর আর্কিটেকচার অ্যান্ড্রয়েডের সাথে যথাসম্ভব সামঞ্জস্যপূর্ণ হওয়ার চেষ্টা করে। মূলত, এর অর্থ হলো এসডিভি কোর অ্যান্ড্রয়েড থেকে জিকেআই, ড্রাইভার, এইচএএল এবং কোর লাইব্রেরি ব্যবহার করে এবং সার্ভিস আর্কিটেকচারের জন্য প্রয়োজনীয় কম্পোনেন্টগুলো যুক্ত করে।
পরবর্তী অধ্যায়গুলোতে সিস্টেমের উপাদানগুলো বিস্তারিতভাবে আলোচনা করা হবে।
হোস্ট পরিবেশ এবং ভার্চুয়ালাইজেশন
SDV Core এই ধারণার উপর ভিত্তি করে তৈরি করা হয়েছে যে এটি একটি ভার্চুয়াল পরিবেশে চলবে, এবং সেই কারণে, আমরা হোস্ট পরিবেশ সম্পর্কে কিছু অনুমান করে নিই:
হোস্ট এনভায়রনমেন্টে একটি হাইপারভাইজর চলে যা Virtio ডিভাইস সমর্থন করে। এছাড়াও, হাইপারভাইজরটিকে অবশ্যই ইথারনেট বা vsock, পাওয়ার স্টেট এবং ব্লক ডিভাইস বাস্তবায়ন করতে হবে। অধিকন্তু, হাইপারভাইজরটিকে অবশ্যই অ্যান্ড্রয়েড/লিনাক্স চালানো সমর্থন করতে হবে।
হার্ডওয়্যারের ক্ষেত্রে, SDV Core ধরে নেয় যে সিস্টেমে হার্ডওয়্যার ভার্চুয়ালাইজেশন সাপোর্টসহ একটি CPU এবং একটি MMU থাকবে এবং সিস্টেমটি ইথারনেটের মাধ্যমে সংযুক্ত থাকবে। সিস্টেমটিতে GPU, IPU, CSI, মিডিয়া ইঞ্জিন, ডিসপ্লে বা অন্যান্য অটোমোটিভ কমিউনিকেশন বাস (যেমন CAN, LIN) থাকার প্রয়োজন নেই।
অ্যান্ড্রয়েড ভিত্তিক
এসডিভি কোর অ্যান্ড্রয়েডের উপর ভিত্তি করে তৈরি, তবে এটি সিস্টেমকে শুধুমাত্র অত্যাবশ্যকীয় কার্যকারিতায় সীমাবদ্ধ রাখে এবং এসডিভি রানটাইম এনভায়রনমেন্ট যুক্ত করে। এর মানে হলো, এসডিভি-ও জিকেআই, নেটিভ সিস্টেম সার্ভিস (যেমন, adbd এবং logd ) এবং সিস্টেমের কার্যকারিতা ব্যবহার করে, কিন্তু এতে জেভিএম, জেভিএম-ভিত্তিক সার্ভিস বা সিস্টেম অ্যাপ্লিকেশন, কিংবা জেভিএম-এর জন্য বাস্তবায়িত ফিচারগুলো অন্তর্ভুক্ত নেই।
এর মানে হলো, SDV অ্যান্ড্রয়েডের আপডেট কৌশল এবং পার্টিশন লেআউট গ্রহণ করবে। এর নিরাপত্তা সংক্রান্ত প্রয়োজনীয়তাগুলোও একই রকম, কিন্তু এতে কোনো গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) নেই।
জিকেআই, ড্রাইভার এবং এইচএএল
এসডিভি কোর অ্যান্ড্রয়েড ৬.১ কার্নেলের সাথে অ্যান্ড্রয়েডের জিকেআই কার্নেল ব্যবহার করে। জিকেআই ব্যবহারের সুবিধা হলো, আপস্ট্রিমে আসা পরিবর্তনগুলো অবশেষে অ্যান্ড্রয়েডেও যুক্ত হয়। এছাড়াও, অ্যান্ড্রয়েড তার পুরো নেটওয়ার্ক জুড়ে একটিই কার্নেল ব্যবহার করে। উদাহরণস্বরূপ, প্যাচগুলো একাধিক ভেন্ডর কার্নেলে প্রয়োগ না করে কেন্দ্রীয়ভাবে প্রয়োগ করা হয়।
এর ফলে SDV একটি স্থিতিশীল কার্নেল ইন্টারফেসও পেতে পারে। উদাহরণস্বরূপ, নিরাপত্তা ত্রুটি সংশোধনসহ একটি নতুন কার্নেল চালু করা হলেও আপনি ড্রাইভারগুলোকে মডিউল হিসেবে কম্পাইল করতে পারেন, যা GKI-এর সাথে কাজ করবে।
GKI কার্নেলের একটি নির্দিষ্ট সময়সীমা রয়েছে, পরবর্তী GKI কার্নেলের অংশ হওয়া উচিত এমন ভেন্ডর পরিবর্তনগুলো বছরের শেষ নাগাদ লিনাক্স কার্নেলে আপস্ট্রিম করা উচিত।
GKI-এর মাধ্যমে, ডিভাইস ড্রাইভার এবং বুট-এর জন্য অপ্রয়োজনীয় মডিউলগুলো কার্নেল মডিউল হিসেবে কম্পাইল করা হবে এবং একটি র্যামডিস্কে থাকবে যা আর্লি বুটের সময় লোড হয়। খুব প্রাথমিক ডিভাইস কনফিগারেশন, যা কার্নেল মডিউল ইন্টারফেসের জন্য অপেক্ষা করতে পারে না (যেমন র্যান্ডম ইনিশিয়ালাইজেশন), তা অবশ্যই ডিভাইস ট্রি-তে সম্পন্ন করতে হবে। কার্নেল মডিউলগুলোকে আপস্ট্রিম করার প্রয়োজন নেই, তবে সেগুলোকে অবশ্যই GKI ইন্টারফেসের সাপেক্ষে কম্পাইল করতে হবে।
যেহেতু SDV Core ধরে নেয় যে এটি একটি Virtio-সামঞ্জস্যপূর্ণ হাইপারভাইজরের উপর নির্মিত, তাই ফিচারটি সমর্থিত হলে ড্রাইভারগুলো Virtio কার্নেল মডিউল হিসেবে, অথবা অন্য কোনো ওপেন স্ট্যান্ডার্ড হিসেবে (উদাহরণস্বরূপ, Open Profile for DICE এবং ট্রাস্টের জন্য open-dice কার্নেল ড্রাইভার) সরবরাহ করা হয়।
Virtio (এবং ওপেন স্ট্যান্ডার্ড) ও একটি হাইপারভাইজরের এই সংমিশ্রণ হার্ডওয়্যার অ্যাবস্ট্রাকশনের দিকে পরিচালিত করে। তাই, SDV-তে HAL- এর প্রয়োজনীয়তা ন্যূনতম, কিন্তু Virtio সাপোর্টের অভাবে কয়েকটির এখনও প্রয়োজন হয়। উদাহরণস্বরূপ, হার্ডওয়্যার-সমর্থিত ক্রিপ্টোগ্রাফির জন্য KeyMint HAL এবং SDV VM-গুলোর মধ্যে অ্যাটেস্টেশনের জন্য এর সাথে ঘনিষ্ঠভাবে সম্পর্কিত IRemotelyPrivisionedComponent HAL।
নেটওয়ার্কিং এবং কমিউনিকেশন স্ট্যাক

চিত্র ৩. এসডিভি কোর নেটওয়ার্কিং ও কমিউনিকেশন স্ট্যাক।
নেটওয়ার্কিংয়ের জন্য, SDV Core ধরে নেয় যে VM-গুলোর মধ্যে যোগাযোগের জন্য vsock অথবা Ethernet উপলব্ধ আছে, VM-এর অভ্যন্তরীণ যোগাযোগের জন্য binder-এর মতো IPC মেকানিজমও ব্যবহার করা যেতে পারে।
SDV শুধুমাত্র ডিবাগিংয়ের উদ্দেশ্যে সিরিয়াল কমিউনিকেশন সমর্থন করে।

চিত্র ৪. ডিবাগিংয়ের জন্য এসডিভি কোর সিরিয়াল সাপোর্ট।
একজন অতিথির ক্ষেত্রেই, SDV একাধিক বিকল্প প্রদান করে যা যোগাযোগ মডেল এবং কর্মক্ষমতার প্রয়োজনীয়তার উপর নির্ভর করে।
ভি-সক
একাধিক ভিএম অথবা হোস্ট ও ভিএম-এর মধ্যে স্থানীয় যোগাযোগের জন্য ভি-সক (Vsock) হলো পছন্দের চ্যানেল। ভিএমগুলোর নিজেদের মধ্যে সরাসরি ভি-সক যোগাযোগ ব্যবহার করা উচিত, যাতে কপির সংখ্যা অপ্টিমাইজ করা যায়।
ভাগ করা স্মৃতি
শেয়ার্ড মেমরি শুধুমাত্র আইপিসি (ইন্টার প্রসেস কমিউনিকেশন)-এর জন্য একটি ভিএম-এর সাথে যোগাযোগের কাজে ব্যবহৃত হয়, কিন্তু একাধিক ভিএম-এর মধ্যে যোগাযোগের জন্য এটিকে একটি নিয়মিত চ্যানেল হিসেবে প্রদান করা হয় না। হোস্ট গেস্ট-এর সাথে তথ্য আদান-প্রদানের জন্য শেয়ার্ড মেমরি ব্যবহার করতে পারে, কিন্তু এটি উচ্চ ফ্রিকোয়েন্সির নেটওয়ার্কিং ট্র্যাফিকের জন্য পরিকল্পিত নয়।
ইথারনেট
একাধিক SoC-এর মধ্যে যোগাযোগের জন্য, অর্থাৎ গাড়ির অভ্যন্তরীণ যোগাযোগের জন্য ইথারনেট ব্যবহার করা হবে। এটি ভার্চুয়ালাইজড সিস্টেম, নেটিভ সিস্টেম বা লিগ্যাসি ECU-ও হতে পারে।
যানবাহন নেটওয়ার্কটি এতটাই ছোট যে, সমস্ত উপলব্ধ সিস্টেম শনাক্ত করার জন্য IPv4 অ্যাড্রেস স্পেসই যথেষ্ট। তথাপি, সিস্টেমটি যেন সম্ভাব্য আপলিঙ্ক এবং ভবিষ্যৎ উন্নয়নের সাথে সামঞ্জস্যপূর্ণ থাকে, তা নিশ্চিত করার জন্য IPv4 এবং IPv6 উভয়কেই সমর্থন করতে হবে।
ভিএলএএন
VLAN হলো ভার্চুয়াল নেটওয়ার্ক আর্কিটেকচার তৈরির একটি পদ্ধতি, যা বিভিন্ন সাবনেটওয়ার্ককে আলাদা করতে এবং লোকাল নেটওয়ার্ক গঠন করতে সাহায্য করে। এটি বিভিন্ন নিরাপত্তা জোন তৈরি করতে ব্যবহার করা যায় এবং গাড়ির ভেতরে এই উদ্দেশ্যেই এটি ব্যবহৃত হয়। এর জন্য VLAN সাপোর্ট থাকা আবশ্যক।
প্রোটোকল
টিসিপি এবং ইউডিপি
ব্যবহারের ধরনের ওপর নির্ভর করে, সিস্টেমের জন্য একটি নির্ভরযোগ্য অথবা একটি অনির্ভরযোগ্য, কিন্তু দ্রুত যোগাযোগ প্রোটোকলের প্রয়োজন হয়। এজন্য TCP এবং UDP সমর্থন করা হবে।
ডেটা টানেল
ডেটা টানেল হলো এসডিভি-এর জন্য নতুনভাবে তৈরি একটি যোগাযোগ ব্যবস্থা, যা পাবসাব মডেল অনুসরণ করে একটি দ্রুত যোগাযোগ চ্যানেল প্রদান করে। উদাহরণস্বরূপ, একটি অ্যাপ্লিকেশন একটি টপিক প্রকাশ করলে এক বা একাধিক অ্যাপ্লিকেশন তা শুনতে পারে। অভ্যন্তরীণভাবে, এটি ভিএম-এর মধ্যে শেয়ার্ড মেমরি ও এফএমকিউ (ফাস্ট মেসেজ কিউ) অথবা ভিএমগুলোর মধ্যে যোগাযোগের জন্য ভি-সক বা ইথারনেট ব্যবহার করে।
(এসডিভি) আরপিসি
SDV RPC, বাইন্ডার ব্যবহার করে SDV-এর জন্য রিমোট প্রসিডিউর কল বাস্তবায়ন করে। এটি একটি রিমোট প্রসিডিউর কল করার জন্য একটি পূর্বনির্ধারিত API ব্যবহার করে। ডেটা টানেলের মতোই, এটি VM-এর মধ্যে যোগাযোগের জন্য শেয়ার্ড মেমরি, অথবা বিভিন্ন VM-এর মধ্যে যোগাযোগের জন্য vsock বা ইথারনেট ব্যবহার করে।
ফ্রেমওয়ার্ক
SOMEIP
SOMEIP নন-SDV সিস্টেমের সাথে যোগাযোগের জন্য ব্যবহৃত হয়। এটি TCP এবং UDP-এর উপর ভিত্তি করে নির্মিত এবং এর জন্য কোনো বিশেষ হার্ডওয়্যার বা ড্রাইভারের প্রয়োজন হয় না। গুগল একটি রেফারেন্স বাস্তবায়ন করবে।
সার্ভিস ডিসকভারি এজেন্ট (এসডি এজেন্ট)
এটি এসডিভি-কে সার্ভিস ডিসকভারি, অথেন্টিকেশন এবং অথরাইজেশন প্রদান করে। যোগাযোগের জন্য, এটি পূর্বে উল্লিখিত যেকোনো পদ্ধতি ব্যবহার করতে পারে। অথেন্টিকেশন এবং অথরাইজেশনের জন্য, এসডি এজেন্টের সিকিউরিটি হার্ডওয়্যারে অ্যাক্সেস এবং একটি কার্যকর চেইন অফ ট্রাস্ট প্রয়োজন হবে।
মিডলওয়্যার
এসডিভি মিডলওয়্যার নামক একটি কাঠামো তৈরি করে, যা এই সমস্ত বিভিন্ন প্রোটোকলের ব্যবহারকে সহজ করে তোলে। এটি ভিএসআইডিএল নামক একটি নতুন ভাষার মাধ্যমে সমস্ত যানবাহন সংকেতের জন্য একটি নির্ভরযোগ্য উৎসও বাস্তবায়ন করে।
নিরপেক্ষ অঞ্চল
সিস্টেমের কম বিশ্বস্ত কোনো অংশ থেকে (যেমন, কাস্টম ইনস্টল করা অ্যাপসহ IVI) আক্রমণ প্রতিরোধ করার জন্য সিস্টেমের বিভিন্ন অংশকে বিচ্ছিন্ন করতে, নেটওয়ার্কটি ডিমিলিটারাইজড জোনসহ বিভিন্ন জোন চালু করতে পারে। বাস্তবে, এর অর্থ হলো সাবনেটওয়ার্কগুলো ভৌতভাবে বা যৌক্তিকভাবে পৃথক থাকে এবং শুধুমাত্র অনুমোদিত ট্র্যাফিকই সেই সীমানা অতিক্রম করতে পারে।
সংযোগ ব্যবস্থাপক
অ্যান্ড্রয়েডে, যেসব অ্যাপ্লিকেশন এবং সার্ভিস নিজেরা সকেট সংযোগ খুলতে পারে, তাদের সংখ্যা সীমিত রাখা একটি প্রচলিত রীতি। এর পরিবর্তে, একটি কেন্দ্রীয় ইনস্ট্যান্স সংযোগ খোলা এবং পরিচালনার দায়িত্বে থাকে। যেহেতু অ্যান্ড্রয়েড এই কার্যকারিতাটি একটি জাভা সার্ভিসে প্রয়োগ করে, তাই SDV তার নিজস্ব কানেক্টিভিটি ম্যানেজার তৈরি করবে।
আপডেটযোগ্যতা
এসডিভি-র একটি প্রধান বৈশিষ্ট্য হলো এর হালনাগাদযোগ্যতা। অ্যান্ড্রয়েড সিস্টেম আপডেট এবং এপেক্স প্যাকেজের মাধ্যমে এসডিভি-র জীবনকাল জুড়ে নতুন ফিচার ইনস্টল করা যায়।
অ্যান্ড্রয়েড সিস্টেম আপডেট
অ্যান্ড্রয়েডে ইতিমধ্যেই আপডেট ইনস্টল করার একটি ব্যবস্থা রয়েছে। সাম্প্রতিক সংস্করণগুলিতে এটি A/B এবং ভার্চুয়াল A/B আপডেট ব্যবহার করে, এবং SDV Core এই ব্যবস্থাটিকেই কাজে লাগাবে। A/B আপডেটে প্রতিটি পার্টিশন দুইবার তৈরি হয়, যার দুটি সুবিধা রয়েছে: সিস্টেমটি ব্যাকগ্রাউন্ডে আপডেট হতে পারে, এবং আপডেট ব্যর্থ হলে, সিস্টেমটি কাজ করার জন্য সর্বশেষ পরিচিত সংস্করণে ফিরে যেতে পারে।
এপেক্স প্যাকেজ
সিস্টেমকে একাধিক পার্টিশনে বিভক্ত করে সেগুলোকে আপডেটযোগ্য করার পাশাপাশি, অ্যান্ড্রয়েড অ্যাপেক্স প্যাকেজও প্রদান করে। এটি এমন একটি ব্যবস্থা যার মাধ্যমে অ্যাপ্লিকেশন এবং লাইব্রেরিগুলোকে ছোট ছোট প্যাকেজে রাখা যায়, যা সিস্টেম আপডেট থেকে স্বাধীনভাবে ইনস্টল ও আপডেট করা সম্ভব।
SDV Core একটি SDV ইনস্ট্যান্সে সার্ভিসগুলো ডাইনামিকভাবে ইনস্টল করার জন্য APEX কন্টেইনার ব্যবহার করবে, এবং সেই সাথে একাধিক সার্ভিসের ডেপ্লয়মেন্ট একটিমাত্র প্রসেসে পরিচালনা করতেও এটি ব্যবহৃত হবে: নিরাপত্তা ঝুঁকি কমাতে, শুধুমাত্র সেই সার্ভিসগুলোই একই বাইনারিতে ডেপ্লয় করা যাবে যেগুলো একই APEX-এর অন্তর্ভুক্ত এবং একই সার্টিফিকেট ব্যবহার করে।
প্যাকেজ যাচাই করার জন্য, অ্যান্ড্রয়েডের APEX প্যাকেজ ইনস্টল করার প্রক্রিয়াটি APK ব্যবস্থাপনার কাজে কিছু জাভা কোড ব্যবহার করে। ডায়নামিকভাবে APEX প্যাকেজ ইনস্টল করার সুযোগ দিতে SDV Core-কে একটি নেটিভ বিকল্প বাস্তবায়ন করতে হবে।
ব্যবস্থাপনা আপডেট করুন
গাড়িতে থাকা SDV ইনস্ট্যান্সগুলো সম্পূর্ণ স্বাধীন ইউনিট নয়, এবং অন্যান্য SDV ইনস্ট্যান্স ও গাড়ির পরিষেবাগুলোর সাথে এদের সমন্বয়ের প্রয়োজন হয়। উদাহরণস্বরূপ, পরিষেবার নির্ভরতা ইনস্টল করতে বা আপডেটগুলো যেন কেবল একটি নিরাপদ সিস্টেম অবস্থায় ইনস্টল হয় তা নিশ্চিত করতে।
SDV একাধিক VM জুড়ে পার্টিশন ব্যবহার করার বিষয়টি বিবেচনা করে। এর জন্য ঐ VM-গুলোর মধ্যে সমন্বয় প্রয়োজন, কারণ তাদের একে অপরের উপর ডেটা নির্ভরতা রয়েছে: ঐ পার্টিশনগুলো আপডেট করার জন্য একটি প্রাইমারি VM থাকতে হবে, এবং আপডেট হওয়া পার্টিশন সম্পর্কে অন্যান্য VM-গুলোকে অবহিত করার জন্য একটি ব্যবস্থা ও একই সময়ে সমস্ত VM আপডেট করার জন্য সিনক্রোনাইজেশন প্রয়োজন, যাতে পূর্ববর্তী পরিচিত কার্যকরী অবস্থাটি বিঘ্নিত না হয়।
শুরু করা
আমাদের ‘শুরু করার নির্দেশিকা’-তে কাটলফিশ দিয়ে সোর্স কোড, বিল্ড এবং লঞ্চ করার বিষয়ে বিস্তারিত তথ্য দেওয়া আছে।