این سند، تشریحکننده کامل معماری، منطق مهندسی و روند اجرای فرآیند «بازنویسی و بهینهسازی هوشمند کد» در سیستم GebraAI جهت ارائه به مدیران ارشد و ذینفعان فنی پروژه است.
سند توجیه فنی و عملیاتی فرآیند بازنویسی و بهینهسازی کد در GebraAI
هدف اصلی این فرآیند، ارتقای کدهای موجود (Legacy یا Draft) به استانداردهای امبدد صنعتی، دستیابی به رفتار قطعی (Deterministic)، کاهش Latency و بهرهبرداری کامل از سختافزار بدون ایجاد مخاطره در پایداری پروژه است.
۱. متدولوژی پایه: تحلیل شکاف (Gap Analysis)
توسعه و اصلاح کد در سیستم GebraAI بر پایهی «تحلیل شکاف» انجام میشود. برای سنجش دقیق کیفیت کد موجود، ابتدا «وضعیت مطلوب» بهصورت شفاف تعریف شده و سپس انحرافات «وضعیت موجود» نسبت به آن استخراج میگردد.
[وضعیت مطلوب (Target State)] ─── (تطابق و سنجش) ───► [وضعیت موجود (Current State)]
│
▼
[تحلیل شکاف (Gap Analysis)]
│
▼
[ارائه نقشه راه و اصلاح گامبهگام]
- وضعیت مطلوب (Target State):معماری ایدهآل لایهای (تفکیک دقیق Driver، Middleware و Application) که بر سه اصل استوار است:
- حداکثر بهرهبرداری از امکانات سختافزاری سیستم: آزادکنندگی پردازنده اصلی (CPU Offloading) با واگذاری بار محاسباتی و ارتباطی به سختافزار.
- پاسخدهی قطعی (Deterministic): حذف کامل کدهای Blocking (مانند
HAL_Delayیا حلقههای منتظر پرچم) و مدیریت دقیق اولویتهای وقایع (NVIC). - ایمنی و پایداری: رعایت الزامات استاندارد صنعتی MISRA C:2012 و مدیریت صحیح حافظه.
- درک وضعیت موجود و تطبیق (Current State Assessment):ایجنت کدنویس/بهبوددهنده، تمام سورسکدهای فعلی (
.c،.hوmain.c) را دریافت کرده، گراف وابستگی ماژولها، نحوه مدیریت ISRها و ساختار توابع موجود را استخراج میکند. - استخراج انحرافات (Gap Identification):با مقایسه وضعیت موجود و مطلوب، تمامی باگها، تداخل لایهها، عدم استفاده از قابلیتهای سختافزاری و نقاط ضعف کیفی شناسایی میشوند.
۲. ماتریس بهرهبرداری از امکانات سختافزاری سیستم
در GebraAI، بهینهسازی سختافزاری تنها به DMA محدود نمیشود، بلکه شامل بهرهبرداری حداکثری از دو لایه سختافزاری زیر است:
| لایه سختافزار | امکانات قابل بهرهبرداری | هدف مهندسی در GebraAI |
| امکانات داخلی پردازنده (MCU) | شتابدهندههای ریاضی (CORDIC, FPU)، کانالهای DMA/MDMA، تایمرهای پیشرفته (HRTIM)، و واحدهای سنجش سختافزاری | واگذاری پردازشهای سنگین ریاضی و انتقال داده به سختافزار داخلی جهت کاهش بار پردازنده (CPU Offloading). |
| آیسیهای حساس و جانبی (External ICs) | بافرهای FIFO داخلی، پایه وقفه آمادهبودن داده (DRDY)، فیلترهای دیجیتال داخلی سنسورها، و آستانههای هشدار سختافزاری | انجام پردازشهای اولیه و انباشت داده در خود آیسی جانبی و درگیر کردن میکروکنترلر صرفاً در زمان آماده بودن کامل دادهها. |
۳. فازهای سهگانه اجرای اصلاح کد (Refactoring Workflow)
برای تضمین پایداری، فرآیند اصلاح کد در ۳ فاز ساختاریافته و متوالی اجرا میشود:
| شماره فاز | نام فاز عملیاتی | شرح اقدامات و خروجی |
| فاز ۱ | اسکن و گزارش انحرافات (Audit & Gap Identification) | اسکن کامل کد و استخراج لیست باگها، خطاهای همزمانی (Race Conditions)، کدهای Blocking، تداخل لایهها و عدم رعایت MISRA C. |
| فاز ۲ | اولویتبندی و ارائه نقشه راه (Dependency-Based Planning) | تعیین ترتیب اصلاحات بر اساس گراف وابستگی از پایینترین لایه به بالاترین لایه جهت پیشگیری از شکست آبشاری (Cascade Failure). |
| فاز ۳ | اصلاح گامبهگام با Gate تأیید (Incremental Execution) | بازنویسی ماژول به ماژول (تولید فایلهای .c و .h) و اخذ تأیید صریح مهندس پروژه قبل از ورود به ماژول بعدی. |
۴. علل مهندسی اولویتبندی Bottom-Up و پیشگیری از Cascade Failure
پیشگیری از «شکست آبشاری» (Cascade Failure):
اگر بازنویسی کد از لایههای بالا (مانند منطق برنامه یا main.c) شروع شود، تغییرات جدید روی درایورهای ناپایدار یا غیراستاندارد پاییندست فشار آورده و باعث بروز رفتارهای غیرقابل پیشبینی در سختافزار میشود. به این گسستگی ساختاری Cascade Failure میگویند.
روند اصلاح مبتنی بر وابستگی (Bottom-Up Progression):
ایجنت نقطه شروع اصلاحات را بر اساس اولویت لایهها تنظیم میکند:
لایه ۰ (سختافزار و درایورهای پایه پردازنده):
اصلاح پیکربندی واحدهای پایه شامل RCC، NVIC، DMA/MDMA، ثبتهای اختصاصی پریفیرالها، شتابدهندههای ریاضی (CORDIC/FPU)، پیکربندی MPU/Cache و سایر امکانات سختافزاری داخلی پردازنده.
لایه ۱ (درایور آیسیهای جانبی و حسگرها):
اصلاح راهانداز سنسورها، درایورها و آیسیهای کلیدی با بکارگیری بافرهای FIFO داخلی، خطوط وقفه (DRDY/INT)، فیلترهای داخلی و سایر امکانات سختافزاری اختصاصی آیسی جانبی.
لایه ۲ (میانی و پردازشی):
اصلاح بافرهای حلقوی، مدیریت پروتکلهای ارتباطی، الگوریتمهای پردازش داده و فیلترهای نرمافزاری.
لایه ۳ (منطق برنامه و مدیریت توان):
اصلاح ماشین حالتها (State Machines)، الگوریتمهای اجرایی و بکارگیری سناریوهای مدیریت توان (Low-Power Modes).
لایه ۴ (یکپارچهسازی و نقطه اتصال – main.c):
اتصال نهایی ماژولهای بهینهشده، بازنویسی حلقه اصلی برنامه و زمانبندی اجرای پروژه.
۵. ارزش افزوده و دستاوردهای مدیریتی
- کنترل کامل انسانی (Human-in-the-Loop): هیچ کدی بدون عبور از Approval Gate و تأیید ناظر فنی وارد فاز بعد نمیشود.
- حذف ریسک عملیاتی: اصلاح لایهای Bottom-Up احتمال بروز باگهای ناشناخته سختافزاری را به صفر نزدیک میکند.
- تضمین کارایی و استاندارد صنعتی: کد خروجی علاوه بر صحت عملکرد، از نظر Latency، مدیریت حافظه RAM/Flash و استانداردهای صنعتی (MISRA C) کاملاً بهینهسازی شده است.