آئیو ٹی ڈیوائسز کے لیے پورٹبل سی کوڈ تحریر کرنا ایک بنیادی مہارت ہے جو مختلف ہارڈ ویئر پلیٹوں میں استعمال ہونے والے ایپلیکیشنز کے لیے استعمال کرنا ضروری ہے. آئیو ٹی پرو سیریز کے لیے sM Cortex-M, RISC-V, and Prederic archites کے ساتھ

ترقی میں بندرگاہ کو سمجھنا

Portity کا مطلب ہے کہ آپ کو مختلف ہارڈ ویئر آرکائیوز پر جمع کرکے چلنے اور چلانے کے لئے مختلف ہارڈ ویئر آرکیٹیکچرز پر کام کرنے کے قابل بنایا جا سکتا ہے. آئیو ٹی دنیا میں، یہ کاروباری تقاضا نہیں ہے.

ایک پر Portbility on a on a struction. ایک اختتام پر، کوڈ جو مکمل طور پر پلیٹ فارم sindependent ہے (مثلاً جنریکی طرزِ ایجاد) Gmails. دوسرے دور میں، کوڈ جو براہ راست ہارڈ ویئر رجسٹرز کو غیر مجاز طور پر غیر مجازی طور پر ناقابل استعمال کرتا ہے.

کسی حد تک کمزوری کا شکار ہونے کیلئے عام مشکلات

کئی ذیلی سطح کے اختلافات کی وجہ سے انفلیشن سی پوریٹ (Cortbility):

  • Endianness. [ARM Cortex ⁇ M اور AVR] چھوٹے پیمانے پر settlecties; کچھ قدیم آرکیٹیکچرز (مثلاً Freeclvation HC12) بڑے ہیں. سیدھے طور پر پھینکنے والے یا اتحادات کو خاموش ڈیٹا کے ذریعے سے حاصل کرتے ہیں۔
  • [Word حجم اور ٹائپ کی وضاحتیں]. ایک پر 16 بٹے ہوئے ہو سکتے ہیں ایک کروٹک پر 32 بٹے ہوئے ہوں گے، اور 64 بٹے ہوئے ایک RISC ⁇ V 64 ⁇ bit.
  • رجسٹرڈ میپ اختلافات. ایک ہی کرہ سے دو ایم سی یو اکثر مختلف پریفیکچرس، بٹ میدان اور کوائلی ترتیب دیتے ہیں۔
  • ] کومپلر توسیع اور پراگیماس۔ GCC، آئی آر، آر ایم کمپر 6 اور کیل ہر کے پاس سیزن اور لائن اسمبلی کے ارکان ہیں۔
  • ] ایموری کو آؤٹ اور پرایڈ کیا جاتا ہے. بعض پلیٹ فارمز 32 ⁇ bit رسائی کے لیے سخت ضرورت ہوتی ہے؛ دیگر غلطی کے ساتھ غلط رسائی حاصل کرنے کے لیے.
  • Interrupt handling and Stock used. انٹر نیٹ کے ری ایکٹر، ترجیحی ماڈلز اور گلوکاری میں مختلف فرق ہے۔

Portabble C کوڈ کے لیے کلیدی سٹرنگز

ہارڈویئر ابیض‌الذکر ( ہال )

بندرگاہی کوڈ میں سب سے طاقتور ذریعہ ایک [[FLT] ہارڈ ویئر ڈرافٹ اسکیپ. ایک اچھی صورت والی ایچ ایل نے عام پری ایپیس (انگریزی: UUC, IC) کے لیے رائج کیا گیا ہے.

ایک مخصوص طریقہ ھLAL Actioning اس طرح نظر آتا ہے:

// hal_gpio.h (common)
typedef uint8_t gpio_pin_t;
typedef uint8_t gpio_port_t;
void hal_gpio_set_output(gpio_port_t port, gpio_pin_t pin);
void hal_gpio_set_high(gpio_port_t port, gpio_pin_t pin);
void hal_gpio_set_low(gpio_port_t port, gpio_pin_t pin);

پلیٹ فارم settlement lists list (مثلاً ) میں اصل رجسٹرڈ لکھا گیا ہے. جب ایک نیا ایم سی یو میں منتقل ہوتا ہے تو صرف ذیلی سطح کے ذریعے HAL source کی ضرورت ہوتی ہے، جبکہ تمام بالائی سطحیں غیر محدود رہتی ہیں۔

معیاری لائبریریوں کو ترتیب دینا

سی معیاری لائبریری بہت سے عام آپریشنز کے لیے ایک بندرگاہی بنیاد فراہم کرتی ہے. ، ، اور حسابی سرگرمیاں ہر مطابقت پر دستیاب ہیں. لائبریریوں کے اندرونی منصوبوں کے بارے میں غلط خیالات سے گریز کرنا

آئیو ٹی کے نظاموں کے لیے محدود یادداشت کے ساتھ، معیاری لائبریری کے ایک ذیلی استعمال (جیسے ] GCTCT میں موجود نیولیب زنو [1:1]]، اپنے آپ کے تاروں کو گھمانے کی بجائے، میکرو اور [FL]:LGGB2] کے لیے ایک قابل ذکر پورٹ ہے

فیکسڈ ⁇ ویدتھ ڈاٹا قسم استعمال کرتے ہیں۔

[ فٹ‌نوٹ :13 ] اور [ فٹ‌نوٹ :14 ] سے انواع کا استعمال کریں [1 ] اور [ فٹ‌نوٹ ] کو صاف‌وصاف سے بیان کرنے کے لئے : [1 ] ، [ فٹ‌نوٹ ] ، [ فٹ‌نوٹ ] ، [ فٹ‌نوٹ ] ، [ فٹ‌نوٹ ] ، ] ، [ فٹ‌نوٹ ] ، [ فٹ‌نوٹ ] ، [ فٹ‌نوٹ ] ، [ فٹ‌نوٹ ] ، ] : [ فٹ‌نوٹ ] ، [ فٹ‌نوٹ ] ، ] :

جب آپ کو ڈیٹا کو سیرئی ضرورت ہوتی ہے تو مقررہ وقت پر آپ کو ترتیب واریڈی اقسام کو واضح طور پر تبدیل کرنے کے عمل (یعنی ، ، .

تقسیم

پریفیکچرنگ ہدایات پلیٹ فارم کے لیے ایک قانونی ذریعہ ہیں، لیکن انہیں استعمال کرنا ضروری ہے. واحد مرکزی ہیڈ کوارٹر میں وضع کردہ ایک چھوٹا سا سیٹ (مثلاً، ) کو تقسیم کرنے کی بجائے،

// platform_config.h
#if defined(STM32L4)
 #define PLATFORM_STM32L4
#elif defined(EFM32GG)
 #define PLATFORM_EFM32GG
#else
 #error "Unsupported platform"
#endif

پھر کوڈ میں جینریک کا استعمال کریں بالکل ضرورت پڑنے پر ہی. یاد رکھیں کہ حد سے تجاوز کرنا مشکل بناتا ہے

اندرونی طور پر زیادہ‌تر لوگ اِس بات سے واقف ہیں کہ اُن کے بچے اُن کے ساتھ دوستی کرنے کے لئے تیار ہیں ۔

ہر تیسرے حصے کی لائبریری میں آپ کو شامل کرنا ممکنہ طور پر ایک باضابطہ تجربہ ہے. اس سے پہلے کہ آپ کے تمام نشانے دارانہ تصورات کو شامل کر لیں اور یہ آپ کے تمام تر نشانے کو غیر مجازانہ تصورات میں شامل نہ کر سکیں.

لنک: [Embeded.com on on hire ⁇ world Portab C code [1]، منتظمین پر مزید نقطہ نظر پیش کرتا ہے۔

ترقی‌پذیر ہونے کیلئے عملی مشورت

موڈلر کوڈ لکھیں

اپنے مضبوط ڈرم کو کو آزادانہ اُمور میں تبدیل کریں نہایت موزوں طور پر قابل قبول مُتَو سے۔ ہر اُسے اپنے کامی اُمور کو سر فائل کے ذریعے ظاہر کرنا چاہئے اور اُس کی اندرونی تفصیلات کو چھپانی چاہئیں. یہ علیحدگی اس لیے نئے پلیٹ فارم تک رسائی حاصل کرنے کے لیے کسی بھی ذریعے سے آسانی سے تبدیل کر سکتی ہے. مثال کے طور پر، موٹروے پر کنٹرول کو PWMuturation کے لیے براہ راست طور پر،

دستاویزات کی بنیاد

واضح طور پر کوئی بھی کوڈ جو مخصوص ہارڈ ویئر کے طرز عمل کو فرض کر دے، اس بات کا یقین کر لیں کہ کوئی مخصوص غیر مجاز رسائی کیوں منتخب کی گئی تھی، یہ پلیٹ فارم کس پر کام کرتا ہے، اور یہ مختلف ہدف کے لیے تبدیل کرنے کی ضرورت ہے. یہ دستاویزات اس وقت بیش قیمت ہیں جب اصل ترقی یافتہ شخص کو کنٹرول کرنے والا ہو اور نیا انجینئر کو پورٹ کرنا ہوگا۔

کراس‌کنٹری فارم تیار کرنے کے آلات استعمال کریں

CUC setting یا میمن ایک ہی ترکیب سے کئی ہدف کو منظم کر سکتا ہے۔

پورٹبل Bit ⁇ Manipulation Techniques استعمال کرتے ہیں۔

رجسٹر میں بٹے یا صاف کرنے کے بعد ایسے ایسے ایسے ایسے خفیہ ٹکٹ مت لکھیں جو سمجھ جاتے ہیں کہ جیسے ہیل میں علامتی مستقل استعمال ہوتا ہے اور محفوظ کارکردگی کے لیے مکروس یا ان لائن استعمال کرتا ہے:

#define BIT_SET(reg, bit) ((reg) |= (1u << (bit)))
#define BIT_CLEAR(reg, bit) ((reg) &= ~(1u << (bit)))

ڈی ڈی وی بطور actress پیرامیٹر 1، لفظی انگر کی بجائے. اس طرح اگر کسی مختلف ایم سی یو پر بٹہ مقام تبدیل کریں تو صرف مستقل شرح تبدیل کرنا ضروری ہے، کوڈ بیس کے پورے استعمال میں نہیں۔

آزمائشوں اور کمزوریوں کا مقابلہ کرنا

Coverty[FLT2] [CUT] کو حل کرنے کے لیے استعمال کریں.

امتحانات کو تمام HALPS پر ورزش کرنی چاہئے تاکہ جلدی سے انساب کو پکڑنے کے لئے ہر پلیٹ فارم پر. ایک امتحان جیسے "Ucret to te to a te to a use, a reserback میں واپس پڑھا جائے". وقت یا وقتی طور پر settlection کے درمیان فرق کو ظاہر کرے گا۔

کُنَّا

آئیو ٹی ڈیوائسز کے لیے پورٹبل سی کوڈ لکھیں ايک دن سے آرکائیو شدہ ايک ہی وقت ميں رکھنا ضروری نہیں ۔