Table of Contents
আইওটি এর জন্য পোর্টেবল C কোড লেখা একটি মৌলিক দক্ষতা যা নির্মাতার জন্য লেখা দরকার বিভিন্ন হার্ডওয়্যার প্লাটফর্মে অ্যাপ্লিকেশনগুলো বসানো। আইওটিআর-এম, আরআইএন-ভি, আরভি আর স্থাপত্য, প্রতিটি অনন্য স্মৃতি, প্রতিটি নির্দিষ্ট মানচিত্র, বিভিন্ন উপায়ে নিবন্ধন করা, এবং বাস্তবের জন্য একটি নির্দিষ্ট লক্ষ্যের উপর ভিত্তি করে প্রতিবেদন তৈরি করা।
IOT ডেভেলপমেন্টের মধ্যে পোর্টের গতি উপলব্ধি করা
এর মানে হচ্ছে সোর্স কোডকে একত্রিত করা এবং বিভিন্ন হার্ডওয়্যার স্থাপত্যের সাথে সামান্য পরিবর্তন ছাড়াই চালানো যেতে পারে। আইওটি ওয়ার্ল্ডে, পোর্টের আগ্রহ কেবল সুযোগ নয়- এটি একটি ব্যবসার চাহিদা। উৎপাদনশীল জীবনকেন্দ্রে পরিচ্ছেদ, সংরক্ষণ, সংরক্ষণ, সংরক্ষণশীলতা এবং নতুন নিয়ম যা সবসময় দেখা যায়, যাতে আপনি নতুন করে নতুন উপাদানের পরিমাণ কমিয়ে আনতে পারেন, এবং সময় ও সময়ের সাথে সাথে সাথে সাথে সাথে নতুন উপাদানের পরিমাণ কমিয়ে আনতে পারেন।
একটি স্পেকট্রাম ব্যবহার করে একটি মঞ্চীয় প্ল্যাটফর্মের স্থায়ীত্ব রয়েছে । কোড সম্পূর্ণভাবে স্বতস্ফূর্ততা (যেমন, সাধারণ অ্যালগরিদম) যে কোন স্থানে, সাধারণ অনুক্রমমূলক অ্যালগরিদমের সংগ্রহ করা হয় । কোডটি হলো সরাসরি হার্ডওয়্যার নিবন্ধনকৃত নিবন্ধনকৃত একটি সুনির্দিষ্ট উপায় । আইটিটিই এর লক্ষ্য হচ্ছে tetectureর মূল লক্ষ্য যাতে নির্দিষ্ট করে বাণিজ্যিক কোডকে আলাদা করা যায়।
কোড পোর্ট স্থায়ী হতে সাধারণ চ্যালেঞ্জ
বেশ কিছু নিম্ন মাত্রার মতভেদের ফলে তা পোর্টিং এ আঘাত হানে:
- [[[[F] <[F][F][F][F][Fexex] CL] এবং AR সামান্য dR; কিছু পুরোনো স্থাপত্য (যেমন, ফ্রি- শীর্ষচরণসি.
- [[[F] শব্দ] ও ধরন সংজ্ঞা][[F] [F] [FLT] একটি n:L] ৮ বিট ARR, 3 বিট বিট প্রতি বিট বিট বিট বিট বিট প্রতি বিট বিট বিট বিট বিট প্রতি ৩২ বিট প্রতি বিট বিট বিট প্রতি বিট বিট প্রতিটক্স ৪০ বিট প্রতি বিট বিট প্রতি ভুল করে বিবেচনা করুন: [Ctrl+L]: 37[1]]] [L]]]] [L]] [L]]] [L]]]]] [F[R]]]]]]]] [L]]]] [L]]]]] শব্দ ও ধরন ১, সঠিক মাপ ও ধরন ১.R[LUS[L]]]] [F]] [FR]]] [F]] [F]]] [T]]] [FDR]]] [FDR]]] [T]] [FDR] সঠিকভাবে বিভাজন ও 1.R]] সঠিকভাবে বিভাজন ও 1.R] সঠিকভাবে প্রদর্শনের জন্য একটি বিট যোগ রকাশD [DR]
- [[[F]R] ম্যাপের পার্থক্যগুলো][FLT] একই ভ্রম দুটি lacess একই মানের al base64, বিট-র মৌলিক ঠিকানা, এবং কনফিগারেশনের ক্রম একই সাথে একাধিক মান রয়েছে।
- [[[F] CLAYOP propers and GL এক্সটেনশন ও GL [FO][FO] জিসিসি, AARARIB, ArsC 6 এবং KIL [FOP] তাদের নিজস্ব নিজস্ব মান রয়েছে [FR] এবং ইনলাইন সম্মেলনগুলো [FO বলা]: ২.
- [[[F] মেমরিREL [F] বিন্যাস ও দিশা পরিবর্তন করা হচ্ছে ।[FLT] কিছু প্ল্যাটফর্মের জন্য অতিরিক্ত অনুক্রম প্রয়োজন; অন্য কোনো মান দ্বারা ব্যবহৃত হয়।
- [[F] অ্যাক্টিভ- সিন্থিক ব্যবহার করে লগ- ইন ব্যবস্থা ও স্ট্যাক ব্যবহার করো ।[FO] নিষ্ক্রিয় করো ভেক্টর: [1]) ভেক্টর, অগ্রাধিকার মডেল এবং হৃৎপিণ্ড ।
পোর্টেবল C কোড লেখার জন্য ব্যবহারযোগ্য কি-সার্ভার
হার্ডওয়্যার অ্যাবস্ট্রেকশন স্তর (HAL)
পোর্টেবল সেরেন্টকোড ডি. এস. এ একটি [FLT] একটি নিয়মিত স্তর [FLTR] WEFR [FLT] । একটি সাধারণ অনুক্রমের জন্য একটি ইউনিফর্মের জন্য একটি ইউনিফর্মের HAL প্রয়োজন বোধ করো । সাধারণ প্রতিস (GOP, stP, CLAYOP, FO::::::) /F2, LOG (FO), prov.FONT [FOD] - এ.FPL]:: [FOD [F]]]] / WED [FIBRIPT উল্লেখকৃত WECT উল্লেখকৃত WEDOPL [FPL [F] এর জন্য একটি অভ্যন্তরীণ সরঞ্জামের মধ্যে উপলব্ধ মান নির্ধারণের জন্য একটি অংশ]
সাধারণ HAL বাস্তবায়নের ধরণ এভাবে:
// 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);
প্ল্যাটফর্মের নির্দিষ্ট ফাইল (যেমন,[FLT:] প্রকৃত নিবন্ধনের মধ্যে রয়েছে । নতুন এমসিইউ- এর দিকে যাওয়ার সময় শুধু নিম্ন স্তরের HAL উৎসের প্রয়োজন হয়, যদিও উঁচু স্তরগুলো অক্ষুণ্ণ থাকে না ।
আদর্শ লাইব্রেরি
C প্রমিত লাইব্রেরি অনেক সাধারণ অপারেশনের জন্য একটি পোর্ট ফাউন্ডেশন সরবরাহ করে । ফাংশন [FLT], যেমন [FLT:], [FOR:]], l[FR], prop:] procrationererers(FO), এবং গণিত ফাংশনগুলি প্রতিটি properererer of agersper - Now.netration. পরীক্ষা করা হলে আপনার কাজের জন্য একটি স্থায়ী ভিত্তি জোগায়
নিম্নস্থ মেমরি সহ IGT সিস্টেম, প্রমিত লাইব্রেরি ব্যবহারের একটি ক্ষুদ্র অংশ (যেমন [[[F], নতুন CLIENT :[FO][FONEL][FO] /FONECT [FL] দ্বারা চিহ্নিত মান:L [FOD [F], [F]] একই সাথে উপলব্ধ করা হয় । [F]:L] [FOD] [F]:::L] [FOD [F]]]: [F[O]]]]]: সাধারণ এনকোডিং বিন্যাস নির্ধারণের জন্য একটি সাধারণ মনে রাখা হয়েছে
সুনির্দিষ্ট প্রত্নতত্ত্বের ধরন ব্যবহার করা হচ্ছে
& সব সময় [[F][F] [F] [FLT] এবং] [FLT] - এর জন্য একটি সাধারণ প্রস্থ:L] [FOPL] [FLT [F], [FO[F],] [F],] [FOD [F], যেকোনো নোটের মধ্যে পার্থক্য উল্লেখ করা হবে যে যে কোনো একটি মান চিহ্নিত করা হবে না [F], তা উল্লেখ করে [F] [FON [F]:L] [FO [F], এবং যদি [F]]] এর জন্য একটি ছোট অংশ নির্দেশ প্রদর্শন করা হয়, তাহলে এর জন্য [FOL [FL] [FL]:L [FL [F], [F] এর পরিবর্তে, [FL [F]:L], অনুসন্ধানের জন্য একটি ছোট/boutp [F]:L [F] এর জন্য একটি মান নির্ধারণ করুন [F]: [F]
অতিরিক্ত বৈশিষ্ট্যের মান bind/ থনাকারী সকল পরিবহণ ব্যবস্থা সহ তথ্য ধারাবাহিক ভাবে ধারণ করার প্রয়োজন হলে, সংশ্লিষ্টGPRELY অবাধSPLY [[FFLT], [FFLT] অথবা তাদের পোর্ট সমতুল্য । কখনোই একটি প্রোগ্রাম প্রেরণ করা হবে না [F] [F] [F]: [F] [F] [F] এর সাথে যোগাযোগ করুন ও একটি নেটওয়ার্কের মাধ্যমে সংযোগ স্থাপন করা হবে।
কন্ডিশনাল bilpication
প্রি- কমান্ডের পাথ হল প্ল্যাটফর্মের সুনির্দিষ্ট কোডের জন্য বৈধ টুল কিন্তু এগুলোকে অবশ্যই ব্যবহার করতে হবে । উদাহরণস্বরূপ, প্রতিটি উদাহরণের জন্য [FR] [FO:]
// platform_config.h
#if defined(STM32L4)
#define PLATFORM_STM32L4
#elif defined(EFM32GG)
#define PLATFORM_EFM32GG
#else
#error "Unsupported platform"
#endif
তাই কোডের মধ্যে সাধারণ [FLT] ব্যবহার করো [F3] যখন প্রয়োজন হয় তখন সম্পূর্ণভাবে প্রয়োজন হয় । মনে রাখবেন [[FLT] অতিরিক্ত মনে রাখবেন যে [FLT] পড়া ও বজায় রাখা কঠিন ।
বহিস্থিত নির্ভরতার মাত্রা
প্রতিটি তৃতীয় ভাগ লাইব্রেরি আপনার রয়েছে সম্ভাবনার একটি বন্দরের বাঁধা । নির্ভরতা যোগ করার আগে নিশ্চিত করুন যে এটি আপনার লক্ষ্যের সমস্ত স্থাপত্যকে সমর্থন করে এবং এটি একটি স্থায়ী অনুমানে পরিণত হয় না । যদি আপনি সম্পূর্ণ পোর্ট C (eFOF) দ্বারা একটি সাধারন ধারণাগুলি পুরোপুরি লেখা থাকে, তাহলে সেটি সম্পূর্ণভাবে লিখতে হবে । [F]: [F], এর ফলে আপনার নিজের পরিচয় গোপন থাকবে না, এবং এর জন্য একটি সাধারণ নিয়ম বজায় রাখা যাবে । [F]: [F] এর পরিবর্তে, এটি করতে হবে ।
লিঙ্ক: [[[F] আপনার ফার্মওয়্যারকে ভাল করে উপস্থাপন করুন যাতে দৃষ্টান্তের সাহায্যে নিজস্ব ইন্টারফেস সঙ্গে একটি হেডার এবং অভ্যন্তরীণ বিবরণ লুকিয়ে রাখতে পারে । এই পৃথক অবস্থায় একটি পোর্টের সঙ্গে একটি পোর্টের সংস্করণ ব্যবহার করে মডিউলের পরিবর্তে সহজে মডিউলটি পরিবর্তন করা উচিত। উদাহরণস্বরূপ, একটি মোটর নিয়ন্ত্রণ মডিউলের ব্যবহার করে নতুন প্ল্যাটফর্মে, HALustty TETH, প্রতি থেকে সরাসরি নিবন্ধন করা উচিত নয় এমন একটি standippeglations of as স্পষ্ট যে কোন নীতিমালা, যা বিশেষ হার্ডওয়্যার ব্যবহারের অভ্যাস অনুমান করে। মন্তব্য করুন কেন একটি নির্দিষ্ট ধরনের পদক্ষেপ বেছে নেওয়া হয়েছে, এবং এটি কি ধরনের একটি প্লাটফর্ম, এবং অন্য লক্ষ্যবস্তুর ক্ষেত্রে পরিবর্তন করা প্রয়োজন। এই নথিপত্রটি অমূল্য। মূল ডেভেলপার যখন অনুপস্থিত এবং নতুন প্রকৌশলী কোড প্রয়োজন তখন এই কোডটি অবশ্যই অবশ্যই করতে হবে। [[[F][F][F][F][F][F][F][F][F][F]][F]][EF3]]]]][ একটি প্রকল্প থেকে একাধিক কনফিগারেশন নির্ধারণের জন্য নির্মাণ করা যাবে: যেমন, এই প্ল্যাটফর্মটি প্রতিটি প্ল্যাটফর্মের জন্য সুনির্দিষ্ট টুল সমূহ নির্ধারণ করা যাবে ও সেগুলির সাহায্যে নির্ধারণ করা যাবে: estand tos:LUSREDOPL [FIL]:LUSRED [F[F] CRIP[L]::LUSRIPTILUSRIP [FPL] এর সাথে সুসংগত করার উদ্দেশ্যে নির্মিত হয়েছে নিবন্ধিত পংক্তিতে সেট অথবা পরিষ্কার করার সময়, সুনিশ্চিত মাস্কগুলি হালকাভাবে লেখা এড়িয়ে চলুন। এর পরিবর্তে HAL নির্ধারণের ক্ষেত্রে প্রতীকী কনস্ট্যান্ট ব্যবহার করুন এবং নিরাপদ অপারেশনের জন্য ম্যাক্রো বা ভি- কার্ড ব্যবহার করুন: [[[[F]] একটি সীমাসূচক সংখ্যার পরিবর্তে একটি বিকেন্দ্রা পরামিতি হিসেবে সংজ্ঞায়িত করো । এভাবে, যদি পৃথক মান পরিবর্তন করা হয়, শুধুমাত্র নিয়মানুসারে নির্ধারিত হলে, নতুন সংজ্ঞা পরিবর্তন করা হবে না । পোর্ট স্থায়ী দাবির পরিমাণ কার্যকর করা আবশ্যক। সকল সমর্থিত প্ল্যাটফর্মের জন্য আপনার প্রকল্প প্রস্তুত করা আবশ্যক। CI, quireleting ব্যাখ্যা টুলগুলোর মধ্যে Z.0.0 [F], নিষ্ক্রিয় & quotift[FV][F][F], pREV] অথবা[F] পরীক্ষা করতে সাধারণ পরীক্ষা করুন। সাধারণ ত্রুটি: [F], এবং usec provid:: [F] এর জন্য একটি সাধারণ এক্স অসংশোধনযোগ্যতা ব্যবহার । রিগ্রেশন পরীক্ষা প্রত্যেক প্ল্যাটফর্মে HAL API ব্যবহার করা উচিত যাতে প্রাথমিক পর্যায়ে HAL ভাগাভাগি করা যায়। যেমন "ইউআরটিএ" পরীক্ষা, একটি লুপব্যাকে পড়া, সময় বা কনফিগারেশনের মধ্যে বিভেদ সৃষ্টি করবে। আইওটি এর পোর্টেবল C কোড লেখার পর কোন নিয়ম নয়- যা প্রতিদিনের থেকে স্থাপত্যের উপর তৈরি করা হবে। হার্ডওয়্যারের একটি ধারাবাহিক স্তর বিনিয়োগ করে, সাধারণ ধরন এবং লাইব্রেরীর সাথে খাপ খাওয়ানোর মাধ্যমে, ধারাবাহিক ভাবে যাচাই করে, এবং পরীক্ষা করে দেখতে হবে যে, এই সকল বৈশিষ্ট্যের ক্ষেত্রে ভারসাম্য বজায় রাখা সম্ভব। নতুন ইঞ্জিনের গতি বৃদ্ধি করা, প্রতিরোধ ব্যবস্থাটি টিকে থাকা এবং বর্তমান সময়ের সাথে ভবিষ্যতে তা আরো দ্রুত প্রতিরোধ করতে হবে। উন্নত পোর্টের জন্য ব্যবহারিক পরামর্শ
মডুলার কোড লিখুন
ডকুমেন্ট হার্ডওয়্যার হার্ডওয়্যার নির্ভরতা
ক্রস Blotformance নির্মাণ টুল ব্যবহার করুন
পোর্টেবল বিটক্রেসিভ টেকনিক ব্যবহার করুন
#define BIT_SET(reg, bit) ((reg) |= (1u << (bit)))
#define BIT_CLEAR(reg, bit) ((reg) &= ~(1u << (bit))) রুটিং এবং অতিক্রম করা, পরীক্ষণ
অন্তর্ভুক্ত