آیا استراتژی راننده شما زمان به بازار شتاب میده؟

برای بیشتر تیم ها، جواب "نه" است. اين بيکاري خودش رو آشکار ميکنه

هست

برای بیشتر تیم ها، جواب "نه" است. اين بيکاري خودش رو از طريق چندين علائم آشکار ميکنه:

  • تيم ها با فروشنده ي ضربه زده کشتي ميکنن
  • کد کاربرد بستگی به سخت افزار خاص بستگی دارد.
  • پروسه ي توسعه در حالي که تيم منتظر راننده ها هستند

این تاخیر عواقب تجاری شدیدی دارد که مستقیم به درآمد و موقعیت بازار تاثیر می گذارد

متریتاثیر برای تاخیر شش ماه
اشعه اشتراک بازاریحدود 10 درصد در چهارم اول
از دست دادن درآمدبيشتر از 500 ميليون دلار.
هزینه های اضافی۲۵ درصد افزایش برای دوباره مصرف کننده

این مقاله یک استراتژی واضح برای شتاب کردن زمان به بازار با تغییر راننده ها از یک مشکل به شتاب دهنده پروژه ارائه می دهد.

حذف کلید

  • استراتژی های آهسته راننده رانندگی خط زمانی پروژه و موفقیت بازار را صدمه می زند.
  • فروشنده ی عمومی مانند زمان های طولانی و اشکال زدایی سخت ایجاد می کنند.
  • کد به سخت پیوند نرم افزار را تغییر دهدسخت افزار جدید.
  • یک برنامه سه گام کمک می کند: ساخت یک SDK کمک، استفاده از HAL قوی و استاندارد کار راننده.
  • این نقشه به تیم ها کمک میکنه سریعتر کار کنهمحصولات بهتر.

. . .

ديگن

شناسایی علت ریشهٔ تأخیر پروژه اولین گام به سمت یک راه حل است. براي تيم هايي که باهاش کار ميکننسلام سیلیکون، ضربه ها اغلب در نقطه ي توسعه مخفي ميشن اين نشونه ها به عنوان بدهي فني و غير کارهايي که وقتتون رو به بازار خراب ميکنن

شيمپتوم

هی سیلیکان برای حمایت سخت افزار خود را فراهم می کند. در حالی که کاملاً، این بسته ها برای یک گستره از محصولات ساخته شده اند، نه مخصوص شما. اين مسئله ي مسئوليت قابل توليد ميکنه

تيم شما به ارث يک اندازه ي لباس ها ارث ميبره حاوی هزاران خط کد و راننده های فروشنده های زیادی است که پروژه شما هیچوقت ازشون استفاده نمیکنه

اين کد زيادي بي ضرر نيست سرعت پروژه را مستقیماً تاثیر می گذارد:

  • زمان ساختن طولانی تر:ترکیب کد غیر ضروری و پیوند کتابخانه های استفاده شده زمان با ارزش توسعه دهنده را با هر ساخته هدر می دهد.
  • اشکال زدایی پیچیده:یک پایگاه کد بزرگتر منطقه جستجو برای حشرات افزایش می دهد. توسعه دهندگان باید غیر مربوط به هدایت شوندراننده های فروشندهو وابستگي براي پيدا کردن منبع يک مشکل.
  • به تأخیر ویژگی:اضافه کردن ویژگی های جدیدی نیاز دارد که توسعه دهندگان را درک کنند که چگونه با پایه عظیم راننده های فروشنده های موجود را سرعت می کند.

اين اداره ي عمومي تيم شما رو مجبور ميکنه که پيچيدگي رو مديريت کنه که هيچ ارزشي براي محصول پاياني شما رو بهم نميده

سیمپتوم

یک ضد الگوی مشترک نوشتن منطق برنامه است که مستقیماً ثبت های سخت افزارهای سطح پایین را می نامد. این تمرین نرم افزار را به یک سوسیکون مشخص جدول می سازد، که کد پایگاه را به سختی نگه دارد. هر تغيير سخت افزاري يا تغيير به يه چيپ جديد نياز به يه دردناکه بررسي و بازنوشت خط به خط.

این پیوند محکم اغلب از:

  • پسوندهای ترکیب کننده غیر استاندارد:کد ممکن است از نحوی مانند استفاده کنهنخست ۸_ t REG @ 0x1234 ;به دسترسیحافظه. این قابل حمله در زنجیره ابزارهای مختلف نیست.
  • نقشه های ثبت مشخص ترکیب کننده:نقشه های ثبت از پیش تعریف شده از یک فروشنده سیلیکون اغلب به ویژگی های غیر استاندارد زبان C تکیه می کنند قفل کردن کد رو به يه کامپايلر

برای مثال، پروژه grbl کد وابسته به سخت افزارش را تمرکز می کنداستپر.، این ماژول مشخص را بسیار سخت می سازد.راه حل این است که یک جدایی سخت از نگرانی با استفاده از لایه های انتخاب کردن سخت افزار (HAL) است.A HAL یک رابط استاندارد شده برای برنامه برای تعامل با سخت افزار فراهم می کند. جزئيات پيچيده و چيپ مشخص راننده هاي فروشنده رو مخفي ميکنه

یک HAL به خوبی طراحی شده یک رابط عامی را تعریف می کند که اغلب با استفاده از اشاره های تابع استفاده می کند. این کاربرد اجازه می دهد که عمل های شبیه انجام شود.آزمایش_ نوشتن I2()بدون اطلاع ثبت مشخص راننده های فروشنده های زیر

/ * مثال از واسط I2C HAL * /
تایپ دیف
..."
بله
بلول (*Write)(uint16_t const Target Adress, uint8_t const * داده Const, uint32_t :
Bool (*Read)(uint16_t const TargetAddress, uint8_t * داده ، uint32_t :
} I2C_t;

این رویکرد با همکاری بالا و پیوند پایین ایجاد می کند. این راننده های فروشنده های سخت افزار رو از منطقه برنامه جدا میکنه و سیستم رو میسازه و ساده سازگاري ميشه کد برنامه برای راننده ها قابل استفاده از پروژه های چندگانه است.

سایت 3:

بسیاری از پروژه ها دنبال یک جریان کاری سخت و تکراری هستند. تیم درخواست ها نمی توانند کارهای معنی را شروع کنند تا زمانی که تیم سخت افزار راننده های کاملا فعالیت را تحویل دهد. اين يه ضربه وابستگي کلاسيک رو ايجاد ميکنه

جریان کاری معمولی:

توسعه گروه رانندهName➡تيم کاربرد منتظره➡ثبات سازی تاخیر شروع میشه 🚶‍♂.....💻

این فرایند زمان بیکار قابل توجهی را معرفی می کند و تمام خط زمانی پروژه را گسترش می دهد. استراتژی مدرن این وابستگی را از طریق توسعه موازی حذف می کند. با تعریف رابط های واضح ( مانند HAL توصیف شده در بالا) در پروژه، تیم ها می توانند همزمان کار کنند.

توسعه دهندگان درخواست نیازی نیست که برای سخت افزار فیزیکی یا گرداننده های کامل منتظر باشند.آنها می توانند کد آنها را در برابر اشیای مسخره و شبیه سازی بنویسند و آزمایش کنند که رفتار راننده های آینده را تقلید می کنند.این روش مزایای کلیدی را پیشنهاد می دهد:

گزینه کردن سخت افزار و جریان کارهای نرم افزار روند توسعه را از یک مسابقه به یک تلاش هماهنگ و موازی تغییر می دهد.

يک استراتژي براي رسيدن زمان براي رسيدن

ها

شناسايي نقاشي ها تنها قدم اوله بعدی استراتژی عمدای سه درجه است. این روش تغییر میده که چگونه یک تیمگرداننده های HiSilicon را مدیریت می کندتبدیل منبع تاخیر به ابزاری برای شتاب کردن زمان به بازار. هر مرحله بر روی آخرین چیزی میسازد تا یک جریان کاری متمایز و موثر را ایجاد کند.

تیر 1

تيم ها بايد کشتي رو با اس ديک هاي فروشنده ي عمومي تموم کنن راه حل ساختن یک SDK لاغر و پروژه است. این کار شامل حذف تمام کدها، کتابخانه ها و منابعی که برای محصول نهایی ضروری نیستند.این تمرین نیز امنیت را نیز افزایش می دهد زیرا حذف کتابخانه های غیر ضروری پتانسیل به سوء استفاده را کاهش می دهد.

ایجاد و نگه داشتن یک SDK لازم است یک روش انضباطی دارد.بهترین تمرین ها عبارتند از:

  • معماری پیاده:SDK را در ماژولها طراحی کنید. این کار اجازه می دهد که تیم های توسعه تنها قسمت های لازم را برای ویژگی های خاص خود را شامل شود.
  • نسخۀ Semantic:استفاده از یک سیستم نسخه MAJOR.MINOR.PATCH این مسئله به روشنی ارتباط برقرار می کند، تفاوت بین تغییرات شکستن، ویژگی های جدید و اصلاحات اشکال.
  • پاک کردن مستندات:برای هر نسخه ای مستندات کامل فراهم کنید. این کار شامل راهنمای های مهاجرین و تغییراتی برای کمک به توسعه دهندگان تا با انتشار جدید سازگار باشد.
  • آزمون خودکار:یک سویسی از آزمایش های خودکار را برای هر نسخه ای اجرا کنید. این سازگاری عقب اطمینان می دهد و مانع بازگشتان می شود، نگه داشتن اعتبار sdks سفارشی می شود.

این مرحله اولیه ی رمز بلوک را حذف می کند، زمان ساخت و اشکال زدایی را ساده می سازد. به تیم یک بنیادی تمیز و بهینه سازی میده تا روش بسازه

تیر 2: ، یک گونه ی رو

با یک SDK لاغر در جایگاه، مرحله بعدی معماری یک لایه ابتدایی سخت افزار است. A HAL یک لایه نرم افزار است که یک بافر بین منطق برنامه و گرداننده های سخت افزاری ایجاد می کند. این کاربردها را از زیر پایه های هیسیکون سوسیسی قرار می دهد که کد را قابل حمل و راحت تر و نگه دارد.

یک HAL به خوبی طراحی شده یک مجموعه استاندارد از توابع برای تعامل با پوریفرال تعریف می کند. برای یک مؤلفه مانند GPIO، عملکردهای اساسی شامل:

  • مقداردهی اولیه
  • عملیات نوشتن و خواندن
  • تنظیم چند ضلعی سند) SetMux (

این انتخاب جلوگیری کد کاربرد را از ساختن تماس های سخت افزاری سطح پایینی جلوگیری می کند. برنامه به جای اینکه به ثبات های خاص متصل شود، از رابط HAL استاندارد استفاده می کند.

مزایده اصلی HAL فعال سازی جریان کار موازی است. توسعه کنندگان کاربرد می توانند کد خود را در برابر یک نسخه "موک" از HAL بنویسند و آزمایش کنند. این مسخره ی HAL رفتار های سخت افزار واقعی را بدون نیاز به سخت افزار فیزیکی شبیه سازی می کند.

این روش مزیت های قابل توجهی را ارائه می دهد:

تیر: استانداردز

مرحله نهایی با برقراری استانداردهای واضح برای توسعه راننده ، تمام فرایند را متحد می کند. استاندارد سازی اطمینان می دهد که همه راننده ها قابل اعتماد، قابل نگهداری و ثابت باشند. این کار با پذیرش یک استاندارد کدگذاری شدید شروع می شود.

برای سیستم های قابل اعتماد بالا، استانداردهای مانند MISRA C ضروری هستند. MISRA راهنمایی ها را برای C و C ارائه می دهدکه کمک کنندگان توسعه دهند:

  • افزایش امنیت:این ساختار زبان ناامن رو اجازه می دهد، مانند حسابرسی اشاره نشده، که در سیستم هایی که شکست گزینه ای نیست
  • بهبود حفظ قابلیت:این کد رو روشن و قابلیت قابلیت را ترویج می دهد، که نرم افزار را به روز رسانی و مدیریت در چرخه زندگی خود را آسان تر می سازد.
  • اطمینان داشته باشید:این چارچوب برای رسیدگی به استانداردهای محکم صنایع مانند ISO 26262 برای سیستم های خودکار را فراهم می کند.

فراتر از قوانین کد رمز، تیم ها باید کل جریان کار رو استاندارد کنن.یک فرایند بررسی کد رسمی بخش مهمی از این است. بررسی کنندگان باید بر روی یک مجموعه معیار مشخص شده از کد بررسی کنند.

ناحیرچه چیزی بررسی شود
تابعیآيا اين کد همونطور که قصد داره کار ميکنه و پرونده هاي لبه ها رو کنترل ميکنه؟
قابل دسترسیآیا این کد راحت است که با اسم های واضح و توضیحات ؟
امنیتآیا کد هر چیزی آسیب پذیری رو معرفی میکنه یا داده ها رو به طور نادرست کنترل میکنه؟
امتحان پذیریآيا رمز مدوله و آزمايش کافي با آزمايش هاي واحد هست؟
دست خطاآيا اين کد تمام اشتباهات پتانسيل رو با مهربوني کنترل ميکنه؟

برای اجرای این استانداردها به طور خودکار، تیم ها باید یک خط لوله سازی ثابت (CI) را پیاده سازی کنند.یک سرور CI می تواند پیکربندی شود تا یک توالی از شغل ها هر بار که کد قرار می گیرد، زمان شتاب در بازار با ارائه دادن سریعیک لوله ی عادی CI برای راننده های نهفته شامل این مرحله است:

  1. ساخت:لوله پلیس فور افزار را ترکیب می کند و بازی دودویی را ایجاد می کند.
  2. تحلیل: ابزارهاي تحليل اساسي مثل PVS-Studio یا پلی اسپال به طور خودکار کدها را برای اشکال و پایین به استانداردهای MISRA بررسی کنید.
  3. آزمون:خط لوله تمام واحد، یکپارچه و آزمایش سیستم را اجرا می کند.
  4. گزارش:این نتایج از تمام مرحله قبلی جمع آوری می کند تا در مورد موفقیت ساختار، کیفیت کد و پوشش آزمایش گزارش شود.
  5. ادغام:ویژگی جدید تنها در صورتی که تمام کارهای قبلی موفق شدند به شاخه اصلی ادغام می شود.

این فرایند خودکار و استاندارد شده اطمینان میده که هر قطعه ی کد ساخته شده، آزمایش شده و تایید میشه نتیجه ی راننده های بیشتر کیفیت و یک خط زمانی قابل پیش بینی تر پروژه


استراتژی عمدی برای راننده ها یک ابزار تجاری مهمی است. اين فقط يه جزئيات فني نيست این روش کلید برای شتاب کردن زمان به بازار است. تیم ها می توانند با پذیرش راه حل سه درجه تغییر دهند. این راه حل شامل ایجاد SDKs لاغر، پیاده سازی یک HAL قوی و استاندارد توسعه راننده است.

این سرمایه گذاری در فرآیند و مهارت ها ، بازگشت های قابل توجهی رو میده:

  • این نتایج پروژه را بهبود می دهد و بازیگری را کاهش می دهد.
  • این اطلاعات برای شناسایی و تعمیر ناکارآلود را فراهم می کند.
  • اين فرهنگ پيشرفت پيوسته رو ترغيب ميکنه

دست از اجازه ي راننده هاي غير کاراي تاخير ايجاد کنن. این تغییرات را برای محصولات بهتر و برای شتاب کردن زمان به بازار اجرا کنید.

FAQ

یک لایه ضرب افزار (HAL) چیست؟

A Hardware Abstraction Layer (HAL) یک لایه نرم افزار است که کد کاربرد را از گرداننده های مشخصی سخت افزار جدا می کند. این لایه را قابل توسعه موازی می سازد و نرم افزار را در تراشه های مختلف حمل می کند. این ابزار کلیدی برای شتاب کردن زمان به بازار است.

ساختن يه اس دي کي کم سخته؟

ساختن يک SDK لازمه نظم باشه تیم ها باید کدها رو از بسته فروشنده شناسایی و حذف کنن این تلاش اولیه با کاهش زمان ساختن ، ساده کردن اشکال ، و بهبود امنیت بهره می برد .

ميسرا سي چيه؟

MISRA C مجموعه ای از دستورالعمل های توسعه نرم افزار برای زبان برنامه نویسی C است. اين به تيم ها کمک ميکنه که کد حمل تر بنويسن نگهداری برای سیستم های قابل اعتماد خیلی حیاتی است. مزایای کلیدی شامل:

  • ایمنی افزایش یافته🛡شش
  • نگه داری بهبود
  • مورد اطمینان قرار گرفته

این استراتژی چگونه به تراشه های جدید هیسیلیکان کمک میکنه؟

یک اچل قدرتمند راه بندازهسطح جدیدخيلي سريعتر. کد درخواست عوض نشده است. توسعه دهندگان فقط نیاز دارند که پیاده سازی های اساسی را برای چیپ جدید به روز رسانند.

Related Articles