آموزش PIC قسمت اول: تفاوت بین زبان C و امبدد C

آموزش PIC قسمت اول: تفاوت بین زبان C و امبدد C

آموزش PIC قسمت اول: تفاوت بین زبان C و امبدد C
آموزش PIC قسمت اول: تفاوت بین زبان C و امبدد C

تفاوت بین زبان C و امبدد C. اول از همه، معرفی مختصری درباره تاریخچه زبان C و امبدد C خواهیم داشت.

ما همیشه از زبان C، در پردازنده‌هایی که روی آن سیستم‌عامل نصب شده، استفاده می‌کنیم. این بدان معنی است که زبان C برای اجرای بر روی سیستم‌هایی که حافظه بالایی دارند طراحی شده است. اما امبدد C منحصراً برای اجرای برنامه‌های مبتنی بر میکروکنترلر طراحی شده است. بنابراین می‌توانیم تصور کنیم که زبان C بر روی سیستمی اجرا می‌شود که دارای منابع بالایی است. اما برخلاف آن، امبدد C در میکروکنترلرها که دارای منابع محدودی مانند RAM،ROM و حافظه برنامه است، اجرا می‌شود. هنگامی که ما برنامه C را کامپایل می‌کنیم، کامپایلر یک فایل وابسته به سیستم عامل تولید می‌کند، اما کد امبدد C فقط روی میکروکنترلرها اجرا می‌شود. برای مثال، PIC16F877A میکروکنترلر اصلی شرکت میکروچیپ است که با امبدد C برنامه ریزی می‌شود.

 

معرفی زبان C و تاریخچه آن

C اساساً یک زبان برنامه‌نویسی همه‌منظوره سطح بالا و مهم است، که هم برای توسعه فریمور استفاده می‌شود و هم برای نوشتن برنامه کاربردی قابل حمل. این زبان به بهبود کیفیت برنامه‌نویسی و حل مشکلات رایانه‌ای در زمان کوتاه، کمک بسیار زیادی می‌کند. این یک زبان فرآیند محور است و با استفاده از یک کامپایلر قدرتمند، می‌تواند برای حافظه‌های سطح پایین نیز مفید باشد. زبان C با استفاده از کامپایلر به زبان سطح ماشین تبدیل می‌شود. این موضوع برای بسیاری از برنامه‌ها مفید است، از جمله برنامه‌هایی که نوشتن کد آن بسیار دشوار است، با استفاده از C به راحتی قابل توسعه است. زبان C از کلمات کلیدی مانند for, if/else, while, switch and do/while و تعداد زیادی از عملگرهای حساب و منطق مانند +، + = و ++ استفاده می‌شود. توسط دنیس ریچی در سال‌های 1969 تا 1973 در آزمایشگاه‌های بِل برای سیستم عامل یونیکس ساخته شد.

 

معرفی امبدد C و تاریخچه آن

امبدد C در واقع افزونه‌ای از زبان C است. این افزونه شامل مجموعه‌های زبان C است که می‌تواند برای اهداف مختلف مورد استفاده قرار گیرد. این افزونه در سال 2008 توسط کمیته استاندارد C برای حل مسائل مختلف زبان C توسعه یافت و بیشتر از سینتکس و استاندارد زبان C در آن استفاده شده است. این زبان دارای ویژگی‌های بسیاری در مقایسه با زبان C است مانند استفاده از محاسبات fixed point، فاصله بین آدرس ورودی و خروجی سخت‌افزار و… همان‌طور که به اطراف خود نگاه می‌کنیم، تعداد زیادی سیستم امبدد مانند ماشین لباسشویی، دوربین دیجیتال و تلفن‌های همراه داریم که همه این‌ها نمونه‌هایی از سیستم امبدد هستند، در همه این موارد از زبان امبدد C استفاده می‌شود. ویژگی‌های بسیاری مانند ثبات‌های عملکرد یا mapping register، تعداد فضای حافظه و نمایش fixed point به امبدد C اضافه شده است.

 

Difference between C language and Embedded C

 

تفاوت‌های عمده بین زبان C و امبدد C

 

ویژگی‌های زبان C

  1. C زبان بسیار سطح بالایی است.
  2. دارای فرمت رایگان برای برنامه نویسی است.
  3. برای عملکرد سیستم عامل لازم است.
  4. برای کاربردهای رایانه رومیزی استفاده می شود.
  5. به منابع حافظه اهمیتی نمی‌دهد، زیرا کل حافظه در CPU موجود است.
  6. برنامه زبان C در کنسول اجرا می‌شود اما خروجی این برنامه از طریق دسکتاپ LCD و غیره قابل مشاهده است.
  7. در حین اجرای برنامه همچنین از انواع مختلف زبان‌های برنامه‌نویسی به طور غیر مستقیم یا مستقیم پشتیبانی می‌کند.
  8. هنگامی که برنامه در حال اجرا است ورودی می‌تواند به برنامه داده شود.
  9. برنامه‌های سیستم نرم‌افزاری و برنامه‌های منطقی، چند نمونه از زبان C هستند.

 

مزایای C

  1. زبان C در واقع یک عنصر حیاتی و سازنده در انواع مختلف زبان‌های فعلی است و دارای عملگر قدرمتد و پشتیبانی از انواع داده است.
  2. خروجی این زبان، برنامه قابل حمل است، به این معنی که اگر برنامه در هر کامپیوتری نوشته شود، می‌تواند به راحتی بدون هیچ تغییری روی سیستم های دیگر اجرا شود.
  3. این زبان توابع مختلفی دارد که می‌تواند برای توسعه برنامه‌ها مورد استفاده قرار گیرد.
  4. دارای انعطاف‌پذیری است، به این معنی که برنامه‌های آن می‌توانند به راحتی توسعه یابند.
  5. در این زبان، ساخت، اشکال زدایی و تست برنامه ‌ها بسیار آسان است.

 

معایب C

  1. زبان C برنامه نویسی خاصیت شی‌گرایی ندارد، بنابراین ++C توسعه یافته است.
  2. زمان اجرا را در زبان C نمی‌توانیم بررسی کنیم.
  3. زبان C نوع داده را دقیق چک نمیکند، به عنوان مثال ممکنم است ما بتوانیم مقدار صحیح (integer) را به یک متغیر نوع دیگر واریز کنیم.
  4. در زبان C هیچ مفهومی به نام namespace  وجود ندارد.
  5. مفهوم تخریب کننده یا destructor وجود ندارد.

 

ویژگی‌های امبدد C

  1. فقط افزونه‌ای از زبان C است، و قابلیت های بیشتری نیز به آن اضافه شده است.
  2. بسته به نوع میکروکنترلر یا ریزپردازنده، فرمت برنامه نویسی دارد.
  3. از طریق امبدد C بهینه‌سازی سطح بالا انجام می‌شود.
  4. در کاربردهای ریزپردازنده یا میکروکنترلر استفاده می‌شود.
  5. منابع محدودی استفاده می کند.
  6. در امبدد C محدودیت‌ها در اجرای واقعی پیدا میشوند و خروجی در سیستم عامل قابل دسترسی نیست.
  7. فقط از پردازنده یا کنترلر مناسب پشتیبانی می‌کند.
  8. در امبدد C فقط برنامه از پیش تعریف‌شده می‌تواند اجرا شود.
  9. نیاز به یک کامپایلر از امبدد C، که با تمام منابع امبدد C سازگاری داشته باشد، دارد.
  10. برخی از نمونه‌های برنامه امبدد سیستم C دوربین دیجیتال، DVD، تلویزیون دیجیتال و غیره است.
  11. مزیت عمده امبدد C، سرعت اجرای زیاد، اندازه کم کد آن و ساده و قابل فهم بودن آن است.

 

مزایای امبدد C

  1. درک آن آسان‌تر است.
  2. همیشه یک کار به خصوص را انجام می‌دهد، بنابراین نیازی به تغییر سخت‌افزار مانند حافظه اضافی یا فضای ذخیره‌سازی نیست.
  3. دریک زمان، فقط یک کار را انجام میدهد، بنابراین می توان کار های اختصاصی را به آن سپرد.
  4. هزینه سخت‌افزار سیستم‌های امبدد C معمولاً بسیار پایین است.
  5. برنامه‌های امبدد برای اهداف صنعتی بسیار مناسب هستند.

 

معایب امبدد C

  1. فقط یک کار را همزمان انجام می‌دهد بنابراین نمی‌توانند همزمان چند کار را انجام دهند.
  2. اگر برنامه را تغییر دهیم، نیاز به تغییر سخت‌افزار است.
  3. فقط از سیستم سخت‌افزاری پشتیبانی می‌کند.
  4. دارای مشکل مقیاس پذیری است، به این معنی که با تغییر یک ویژگی سخت افزاری، نمیتواند خود را سریع تغییر دهد.
  5. یک محدودیت مانند حافظه محدود یا سازگاری رایانه‌ای دارد.

بنابراین اگر فقط در مورد برنامه‌نویسی صحبت کنیم، برنامه‌نویسی زبان C و امبدد C تقریباً یکسان است و تنها تفاوت این دو منبع در استفاده از آن و نوعی کد به طور موثر است.

 

منبع

برچسب ها

حمایت از Sisoog Os

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

Sisoog Os
Sisoog Os

کارآفرین, تولید کننده, طراح الکترونیک و ....

دیدگاه ها

10 دیدگاه

  • ...
    ۱۲ دی ۱۳۹۹

    سلام
    وقتی این پست رو دیدم یاد روزایی افتادم که با pic کار می کردم و حالا به خاطر کنکور دیگه نمی تونم 🙁
    خیلی دلم تنگ شده!

    • کامین جلیلی
      ۱۳ دی ۱۳۹۹

      سلام. زندگی چیزی نیست به جز جبر در تصمیم‌گیری و انتخاب یک یا چند گزینه از بین گزینه‌های موجود.

      با آرزوی موفقیت در کنکور پیش رو. ☺️

  • امیر محمد
    ۱۲ دی ۱۳۹۹

    سلام یه سوال داشتم. الان با این اوصاف، برنامه هایی که ما در کدویژن یا اتمل استودیو یا حتی برای stm32 می‌نویسیم، زبان C حساب میشن یا امبدد C ؟؟

    • کامین جلیلی
      ۱۳ دی ۱۳۹۹

      سلام امیر محمد جان مشخص دیگه امبدد C محسوب می‌شه. C و امبدد C اگرچه یه سری تفاوت بسیار مهم و اساسی با هم دارن اما اینا دو زبان جدا از هم نیستن، یعنی اگه گفتی از زبان C برای برنامه‌نویسی میکروکنترلر استفاده می‌کنم اشتباه نگفتید، اگرچه بهتر است که بگویید امبدد C. اگر هم توجه کنید غالبا اکثریت ما در جواب این سوال که از چه زبانی برای برنامه‌نویسی میکروکنترلر استفاده می‌کنید، می‌گوییم زبان C.

      • امير محمد خيرانديش
        ۱۴ دی ۱۳۹۹

        ممنون اقای جلیلی متوجه شدم

  • َAmir
    ۲۹ آذر ۱۳۹۹

    تا اونجا که توی کتاب ها خوندیم C یک زبان سطح میانه هست نه سطح بالا …
    ممنون از آموزش.

    • کامین جلیلی
      ۳۰ آذر ۱۳۹۹

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

      ببینید حرف شما کاملا درست و زبان C در همه منابع به عنوان یک زبان سطح میانی معرفی شده است. اما چرا نویسنده این مقاله، این زبان رو سطح بالا و حتی در یه پاراگراف زبان C رو “خیلی سطح بالا” معرفی کرده؟
      خب همونطور که خودتون ذکر کردید زبان C یک زبان سطح میانی است که هم دارای ویژگی‌های سطح پایین و هم دارای ویژگی‌های سطح بالا است. نویسنده اومده و ویژگی‌های سطح پایین رو جدا کرده و به امبدد C نسبت داده، و ویژگی‌های سطح بالا رو به خود زبان C نسبت داده. اگر مقاله رو با دقت بخونید، متوجه خواهید شد که نویسنده تلویحا با جدا کردن ویژگی‌های زبان C به سطح پایین و سطح بالا می‌خواهد به همین سطح میانی بودن زبان اشاره کند.

      امیدوارم که توضیحاتم کافی و مناسب بوده باشد.

  • reza
    ۲۹ آذر ۱۳۹۹

    سلام
    ممنون بابت مقاله مفیدتون.

    • کامین جلیلی
      ۲۹ آذر ۱۳۹۹

      سلام رضا عزیز. سپاس از نظر مثبت‌تان.

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

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

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 9 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

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

Zeus ‌ Zeus ‌
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش

درآمد زایی به سبک پینوکیو

ما مهندسین, بخصوص مهندسین برق و الکترونیک … علاقه خاصی به طراحی و ساختن داریم علاقه زیادی به تکنولوژی , بخصوص از...

Sisoog Os Sisoog Os
  • 3 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک