يعد modm (يُلفظ مثل "مودم" الطلب الهاتفي) عبارة عن صندوق أدوات لإنشاء مكتبات C++23 مخصصة مصممة خصيصًا لجهازك المدمج. يقوم modm بإنشاء رمز بدء التشغيل، وشبكات HALs وتطبيقاتها، وبروتوكولات الاتصال، وبرامج تشغيل الأجهزة الخارجية، وBSPs في عملية معيارية وقابلة للتخصيص يمكنك ضبطها حسب احتياجاتك.
يحتوي هذا المشروع أيضًا على منتدى للمناقشات ومدونة تقنية لتوثيق مفاهيم التصميم الأكبر.
تم تحسين modm لتلبية المتطلبات القاسية لمنافسة Eurobot، حيث تحتاج الروبوتات لدينا إلى العمل بشكل موثوق ومستقل تمامًا لمدة 100 ثانية من اللعبة. تحتوي الروبوتات الخاصة بنا على الكثير من وحدات التحكم الدقيقة المختلفة، وبعضها لا يحتوي على الكثير من الموارد، لذلك يحتاج modm إلى تحقيق مجموعة متنوعة من الأهداف، مثل حجم الكود الصغير مع استهلاك صغير للذاكرة، وتدفق البرنامج الذي يمكن التنبؤ به، وقابلية النقل القصوى.
تم ترخيص كود مصدر المكتبة كـ MPLv2 مع أي كود مصدر خارجي بموجب تراخيص متوافقة (BSD، Apache2، MIT). لذا لا تتردد في تقسيم هذا المشروع وتكييفه مع احتياجاتك. الشيء الوحيد الذي نطلبه منك هو المساهمة بالتغييرات التي أجريتها حتى يتمكن الجميع من الاستفادة.
يرجى استنساخ modm بشكل متكرر، فأنت بحاجة إلى جميع الوحدات الفرعية:
git clone --recurse-submodules --jobs 8 https://github.com/modm-io/modm.git
يمكن لـ modm إنشاء HAL لـ 3839 جهازًا من هؤلاء الموردين:
فيما يلي جدول يضم جميع عائلات الأجهزة وبرامج التشغيل الطرفية التي تدعمها:
لاحظ أن هذه نظرة عامة موجزة وأن جهازك المحدد قد لا يحتوي على جميع الأجهزة الطرفية المذكورة في هذا الجدول. يرجى اكتشاف برامج التشغيل الطرفية لجهاز المودم لجهازك المحدد.
STM32 | سام | ر.ب | في | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
محيطية | ج0 | F0 | F1 | F2 | F3 | F4 | F7 | جي0 | G4 | ح7 | L0 | L1 | L4 | L5 | U5 | D1x D2x داكس | D5x E5x | E7x S7x V7x | G5x | 20 | 90 | ميجا | صغير الحجم |
أدك | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ○ | ✅ | ✅ | ✅ | ○ | ○ | ○ | ✅ | ✅ | ✅ | ○ | ✅ | ✅ |
يستطيع | ✕ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | ✕ | ✅ | ✅ | ✅ | ✕ | ○ | ✅ | ✕ | ✕ | ○ | ○ | ✕ |
المقارنة | ✕ | ○ | ✕ | ✕ | ✅ | ✕ | ✕ | ✅ | ✅ | ○ | ○ | ○ | ✅ | ○ | ○ | ○ | ○ | ○ | ✕ | ✕ | ○ | ○ | ○ |
لجنة المساعدة الإنمائية | ✕ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ○ | ○ | ✅ | ✕ | ✕ | ✕ | ○ | ✕ |
الوصول المباشر المباشر (DMA). | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ○ | ○ | ○ | ✅ | ✕ | ✅ | ✕ | ✕ | ✕ |
إيثرنت | ✕ | ✕ | ○ | ○ | ✕ | ✅ | ✅ | ✕ | ✕ | ○ | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ○ | ○ | ✕ | ✕ | ✕ | ✕ | ✕ |
المقاطعة الخارجية | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ○ | ○ | ○ | ✅ | ✅ | ✅ | ✅ |
الذاكرة الخارجية | ✕ | ✕ | ✅ | ✅ | ✕ | ✅ | ○ | ✕ | ○ | ○ | ✕ | ✕ | ○ | ○ | ○ | ✕ | ✕ | ○ | ✕ | ✕ | ✕ | ✕ | ✕ |
جيبيو | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
أنا 2 ج | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ○ | ○ | ✅ | ○ | ✅ | ✅ | ✅ | ✅ |
فلاش داخلي | ○ | ○ | ✅ | ○ | ○ | ✅ | ○ | ✅ | ✅ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ✕ | ✕ | ✕ | ✕ |
IWDG | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ |
مولد عشوائي | ✕ | ✕ | ✕ | ✅ | ✕ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | ✅ | ✅ | ✅ | ✕ | ○ | ○ | ✕ | ✕ | ✕ | ✕ | ✕ |
SPI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ○ | ○ | ○ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ساعة النظام | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | ✕ | ✕ |
الموقت | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ○ | ○ | ✅ | ✅ | ○ | ○ | ○ | ○ |
UART | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ○ |
معرف فريد | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ |
USB | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ○ | ✅ | ✅ | ✕ | ✕ | ✕ |
نحن مجرد فريق صغير من المطورين ولدينا عدد محدود من الأجهزة التي يمكننا دعمها واختبارها في الأجهزة. افتح مناقشة للسؤال عما إذا كان جهازك المحدد مدعومًا بشكل جاهز وكيف يمكنك إضافته بطريقة أخرى.
لدينا دعم جاهز للعديد من لوحات التطوير بما في ذلك الوثائق.
آل-أفريب-كان | اردوينو نانو | اردوينو أونو | الحبة السوداء F103 |
الحبة السوداء F401 | الحبة السوداء F411 | الحبة الزرقاء F103 | ديف بوكس-STM32F4XX |
ديف بوكس-STM32H750VB | ديسكو-F051R8 | ديسكو-F072RB | ديسكو-F100RB |
ديسكو-F303VC | ديسكو-F401VC | ديسكو-F407VG | ديسكو-F411VE |
ديسكو-F429ZI | ديسكو-F469NI | ديسكو-F746NG | ديسكو-F769NI |
ديسكو-L152RC | ديسكو-L476VG | ريشة-M0 | ريشة-M4 |
ريشة-RP2040 | ميجا-2560-برو | نيوكليو-C031C6 | نيوكليو-F031K6 |
نيوكليو-F042K6 | نيوكليو-F072RB | نيوكليو-F091RC | نيوكليو-F103RB |
نيوكليو-F303K8 | نيوكليو-F303RE | نيوكليو-F334R8 | نيوكليو-F401RE |
نيوكليو-F411RE | نيوكليو-F429ZI | نيوكليو-F439ZI | نيوكليو-F446RE |
نيوكليو-F446ZE | نيوكليو-F746ZG | نيوكليو-F767ZI | نيوكليو-G070RB |
نيوكليو-G071RB | نيوكليو-G431KB | نيوكليو-G431RB | نيوكليو-G474RE |
نيوكليو-H723ZG | نيوكليو-H743ZI | نيوكليو-L031K6 | نيوكليو-L053R8 |
نيوكليو-L152RE | نيوكليو-L432KC | نيوكليو-L452RE | نيوكليو-L476RG |
نيوكليو-L496ZG-P | نيوكليو-L552ZE-Q | نيوكليو-U575ZI-Q | أوليمكسينو-STM32 |
راسبيري بي بيكو | سامد21-ميني | SAMD21-XPLAINED-PRO | SAME54-XPLAINED-PRO |
SAME70-XPLAINED | SAMG55-XPLAINED-PRO | SAMV71-XPLAINED-ULTRA | الاستجابة الذكية XE |
STM32-F4VE | STM32F030-ديمو | ثينج بلس-RP2040 |
لدينا أيضًا عدد من برامج التشغيل المستقلة تمامًا عن الهدف للأجهزة الخارجية المتصلة عبر I 2 C، وSPI، وUART، وBitBang، وما إلى ذلك. وتمنحك معظم هذه البرامج أيضًا إمكانية الوصول إلى الجهاز بأكمله حتى تتمكن من تهيئتها بسهولة لتلبية احتياجاتك الخاصة.
AD7280A | م7928 | أديس16470 | ADNS9800 | ADS101X | أدس7828 |
أدس7843 | ADS816x | AMS5915 | أبا102 | AS5047 | AS5600 |
AT24MAC402 | فلاش سبي | بي إم إي 280 | مؤشر كتلة الجسم088 | BMP085 | بنو055 |
كات24AA | عداد الدورة | DRV832X | DS1302 | DS1631 | DS18B20 |
DW3110 | إي-دوج | إدخال التشفير | إدخال التشفير BitBang | التشفير الناتج BitBang | FT245 |
FT6x06 | أخذ العينات من Gpio | حمض الهيدروكلوريككلاكس | HD44780 | HMC58x | HMC6343 |
HX711 | I2C-إيبروم | ILI9341 | IS31FL3733 | ITG3200 | IXM42XXX |
L3GD20 | LAN8720A | لاوسيل | LIS302DL | LIS3DSH | LIS3MDL |
إل إم 75 | LP503x | LSM303A | LSM6DS33 | LSM6DSO | LTC2984 |
ماكس31855 | ماكس31865 | ماكس6966 | ماكس7219 | MCP23x17 | MCP2515 |
MCP3008 | MCP7941x | MCP990X | MMC5603 | MS5611 | MS5837 |
نوكيا5110 | NRF24 | شاشة TFT | بات9125EL | PCA8574 | PCA9535 |
PCA9548A | PCA9685 | QMC5883L | SH1106 | سيمنز-S65 | سيمنز-S75 |
SK6812 | SK9822 | SSD1306 | ST7586S | ST7789 | STTS22H |
ستوسب4500 | SX1276 | SX128X | TCS3414 | TCS3472 | TLC594x |
TMP102 | TMP12x | تمب175 | تاتش2046 | VL53L0 | VL6180 |
WS2812 |
يرجى الاطلاع على الأمثلة الخاصة بنا للحصول على قائمة كاملة بالأهداف والسائقين الذين تم اختبارهم.
الطريقة الأسهل بالنسبة لك وأفضل طريقة بالنسبة لنا لمعرفة ما إذا كان هناك شيء ما غير واضح أو مفقود، هي استخدام المكتبة وتزويدنا ببعض الملاحظات عن طريق تقديم تقرير بالأخطاء أو إذا كان لديك إصلاح بالفعل وفتح طلب سحب.
راجع CONTRIBUTING.md للاطلاع على إرشادات المساهمة الخاصة بنا.
تتم صيانة مشروع modm بواسطة نيكلاس هاوزر (@salkinium)، ورافائيل ليمان (@rleh)، وكريستوفر دوراند (@chris-durand) مع مساهمات كبيرة من ساشا شادي (@strongly-typed)، وفابيان جريف (@dergraaf)، وكيفن لاوفر (@ekiwi)، مارتن روزكيت (@thundernail)، دانييل كريبس (@daniel-k)، جورجي جرينشبون (@georgi-g)، وDavid Hebbeker (@dhebbeker)، وThorsten Lajewski (@TheTh0r)، وMike Wolfram (@mikewolfram)، والعديد من المساهمين الآخرين.