- عنوان مجله: Embedded System Design with Arm Cortex-M Microcontrollers
- نویسنده: Cem Ünsalan
- حوزه: سیستمهای توکار
- سال انتشار: 2022
- تعداد صفحه: 576
- زبان اصلی: انگلیسی
- نوع فایل: pdf
- حجم فایل: 11.1 مگابایت
تعریف «سیستم تعبیه شده» طیف وسیعی از دستگاههایی را که تقریباً در تمام بخشهای زندگی ما استفاده میشوند، پوشش میدهد. بنابراین، آنها به ابزاری ضروری در دنیای امروز تبدیل شده اند. علاوه بر این، وقتی دستگاههایی که استفاده میکنیم هوشمندتر میشوند، از یک یا چند سیستم تعبیهشده در آنها تشکیل میشوند. از آنجایی که سیستمهای تعبیهشده مختلفی در کار استفاده میشوند، ممکن است ارائه یک توصیف دقیق و محدودکننده برای چنین طیف وسیعی از دستگاهها ناعادلانه باشد. با این حال، میتوانیم تعاریف کلی را به شرح زیر بیان کنیم. ما می توانیم یک سیستم تعبیه شده را به عنوان یک دستگاه محاسباتی که برای حل یک مشکل خاص توسعه یافته است در نظر بگیریم. برای انجام این کار، به عنوان اکتساب داده با محیط تعامل می کند، داده های به دست آمده را پردازش می کند و بر اساس آن خروجی مربوطه را تولید می کند. برای انجام تمامی این عملیات، استفاده مشترک از سخت افزار و نرم افزار اجباری می شود. از این رو، طراح که سیستم تعبیه شده را توسعه می دهد باید بداند که سخت افزار چگونه کار می کند و چگونه نرم افزار اختصاصی باید برای آن تشکیل شود. مهمتر از آن، طراح باید ایده استفاده مشترک از سخت افزار و نرم افزار را درک کند تا بهترین ها را از سیستم تعبیه شده به دست آورد. سیستم تعبیه شده بیشتر اوقات به صورت مستقل کار می کند. ممکن است مانند برنامه های اینترنت اشیا (IoT) با سایر دستگاه های مجاور ارتباط برقرار کند. با این حال، این بدان معنا نیست که یک سرور وجود دارد و همه سیستم های تعبیه شده برای انجام عملیات خود به آن متصل می شوند. برعکس، هر سیستم تعبیه شده می تواند به صورت مستقل کار کند و داده ها را برای انجام یک عملیات پیچیده به اشتراک بگذارد. از آنجایی که سیستم تعبیه شده بیشتر اوقات به صورت مستقل کار می کند، عملکرد آن به باتری یا ماژول جمع آوری انرژی بستگی دارد. بنابراین، اتلاف انرژی به یکی از دغدغه های اصلی در توسعه سیستم های تعبیه شده تبدیل می شود. لازم به ذکر است که برخی از سیستم های تعبیه شده ممکن است از طریق خط اصلی برق تامین شوند. با این حال، روند اخیر در حال شکل گیری سیستمی است که به طور مستقل کار می کند. این منجر به استقرار آن در مکان های دورافتاده می شود که در آن هیچ خط برق اصلی در دسترس نیست. از دیدگاه ما، می توانیم سیستم های تعبیه شده را بر اساس ویژگی های سخت افزاری آنها به صورت زیر گروه بندی کنیم. آرایه های دروازه قابل برنامه ریزی میدانی (FPGA) اولین گروه را تشکیل می دهند. آنها انعطاف پذیرترین اما سخت افزار سخت افزاری را ارائه می دهند. با توجه به خواص آنها، آنها به طور گسترده ای در شکل گیری سیستم های تعبیه شده سفارشی در سطح دروازه استفاده شده اند. بنابراین، ما یک FPGA را برنامه ریزی نمی کنیم. در عوض، سیستمی را که باید توسط یک زبان توصیف سخت افزاری مانند Verilog و VHDL ساخته شود، توصیف می کنیم. دومین گروه سخت افزاری در تشکیل سیستم های تعبیه شده، میکروکنترلرها هستند. یک میکروکنترلر حافظه و قدرت محاسباتی محدودی دارد. با این حال، می توان آن را به زبان اسمبلی یا سطح بالا برای انجام عملیات روی آن برنامه ریزی کرد. میکروکنترلر همچنین راه حلی ارزان و کارآمد برای تشکیل سیستم تعبیه شده ارائه می دهد. شناخته شده ترین سیستم های میکروکنترلر را می توان به عنوان سیستم های مبتنی بر Arduino و Arm® Cortex™-M برشمرد. ریزپردازنده ها سومین گروه سیستم تعبیه شده را تشکیل می دهند. در اینها، لینوکس تعبیه شده بیشتر اوقات برای کنترل و سازماندهی عملیات استفاده می شود. این همچنین منجر به استفاده از رابط کاربری گرافیکی (GUI) روی آنها می شود. ریزپردازنده ها همچنین حافظه و قدرت محاسباتی نسبتاً بالایی در مقایسه با میکروکنترلرها دارند. با این حال، اتلاف انرژی و استفاده مستقل از آنها گلوگاه اصلی آنها است. شناخته شده ترین سیستم های تعبیه شده مبتنی بر ریزپردازنده، خانواده Raspberry Pi و کلون های آن هستند. چهارمین گروه سخت افزاری برای سیستم های تعبیه شده از دستگاه های سیستم روی تراشه (SoC) تشکیل شده است. آنها دارای FPGA و ماژول های ریزپردازنده روی خود هستند. از این رو، هدف آنها بهره مندی از هر دو ویژگی دستگاه است. با این حال، برنامه نویسی و استفاده از SoC هنوز به آسانی یک میکروکنترلر (یا ریزپردازنده) نیست. چهار گروه سخت افزاری مذکور دارای بردهای توسعه اختصاصی خود هستند. از این رو، آنها را می توان به راحتی در توسعه یک سیستم تعبیه شده نمونه اولیه استفاده کرد. آنها از کامپایلرهای متقابل استفاده می کنند به طوری که کد روی کامپیوتر نوشته شده و اشکال زدایی می شود. سپس بر روی سیستم تعبیه می شود. لازم به ذکر است که در اینجا هیچ رابط کاربری گرافیکی در یک سیستم تعبیه شده به جز بردهای مبتنی بر لینوکس تعبیه شده وجود ندارد. اخیرا گزینه های سخت افزاری جدیدی برای سیستم های تعبیه شده ظاهر شده اند. یکی از گزینه ها استفاده مشترک از یک میکروکنترلر و ریزپردازنده روی یک رنگ است. STMicroelectronics اخیراً چنین دستگاه هایی را ارائه کرده است که دارای هر دو پردازنده Arm® Cortex™-A و Cortex™-M هستند. از این رو، هر کدام را می توان برای کاربردهای خاصی استفاده کرد. گزینه بعدی، بردهای توسعه متشکل از واحدهای پردازش گرافیکی (GPU) است. این دستگاه ها امکان پردازش موازی را از طریق زبان های برنامه نویسی سطح بالا فراهم می کنند. پیشرفتهای اخیر در یادگیری عمیق و شبکههای عصبی همچنین منجر به ایجاد دستگاههایی متشکل از واحدهای پردازش عصبی (NPU یا TPU) شده است که به پیادهسازی شبکه عصبی اختصاص داده شدهاند. چنین واحدهایی امروزه به بخشی از تقریباً تمام سیستم های تعبیه شده تبدیل شده اند.
The definition “embedded system” covers a broad range of devices used in almost all parts of our lives. Therefore, they have become indispensable tools in today’s world. Moreover, as the devices we use become more intelligent, they will consist of one or many embedded systems in them. Since there are various embedded systems used in operation, it may be unfair to give a strict and limiting description for such a broad range of devices. However, we can make some general definitions as follows. We can think of an embedded system as a computing device developed for solving a specific problem. To do so, it interacts with the environment as acquiring data, processes the acquired data, and produces the corresponding output accordingly. To perform all these operations, joint usage of hardware and software becomes mandatory. Hence, the designer developing the embedded system must know how the hardware works and how the dedicated software should be formed for it. More importantly, the designer should grasp the idea of jointly using hardware and software to get the best from the embedded system. The embedded system will be working in stand-alone form most of the times. It may communicate with other nearby devices as with Internet of Things (IoT) applications. However, this does not mean that there is a server and all embedded systems connect to it to perform their operations. On the contrary, each embedded system can work in stand-alone form and share data to perform a complex operation. Since the embedded system works in stand-alone form most of the times, it depends on battery or energy harvesting module to operate. Therefore, energy dissipation becomes one of the main concerns in embedded system development. To note here, some embedded systems may be supplied by the main power line. However, the recent trend is forming a system such that it works independently. This leads to its deployment to remote locations where no main power line is available. From our perspective, we can group embedded systems based on their hardware properties as follows. Field-programmable gate arrays (FPGA) form the first group. They provide the most flexible but hard to master hardware. Due to their properties, they have been extensively used in forming custom embedded systems at gate level. Therefore, we do not program an FPGA. Instead, we describe the system to be constructed by a hardware description language such as Verilog and VHDL. The second hardware group in forming embedded systems consists of microcontrollers. A microcontroller has limited memory and computation power. However, it can be programmed in assembly or high-level language to perform the operations on it. The microcontroller also offers a cheap and energy efficient solution for embedded system formation. The most well-known microcontroller systems can be counted as Arduino and Arm® Cortex™-M based ones. The microprocessors form the third embedded system group. In these, embedded Linux is used most of the times to control and organize operations. This also leads to graphical user interface (GUI) usage on them.Microprocessors also have fairly high memory and computation power compared to microcontrollers. However, energy dissipation and stand-alone usage are the main bottlenecks for them. The most wellknown microprocessor-based embedded systems are the Raspberry Pi family and its clones. The fourth hardware group for embedded systems consists of system on chip (SoC) devices. They have FPGA and microprocessor modules on them. Hence, they aim to benefit from both device properties. However, SoC programming and usage are still not as easy as a microcontroller (or microprocessor). The mentioned four hardware groups have their dedicated development boards. Hence, they can be used easily in developing a prototype embedded system. They use cross compilers such that the code is written and debugged on PC. Then, it is embedded on the system. To note here, there is no GUI on an embedded system by default except embedded Linux-based boards. Recently, new hardware options have emerged for embedded systems. One option is the joint usage of a microcontroller and microprocessor on the same dye. STMicroelectronics recently offered such devices containing both Arm® Cortex™- A and Cortex™-M CPUs. Hence, each can be used for specific applications. The next option is the development boards consisting of graphical processing units (GPU). These devices allow parallel processing via high-level programming languages. The recent advances in deep learning and neural networks also led to devices consisting of neural processing units (NPU or TPU) dedicated to neural network implementation. Such units are becoming part of almost all embedded systems nowadays.
این کتاب را میتوانید از لینک زیر بصورت رایگان دانلود کنید:
Download: Embedded System Design with Arm Cortex-M Microcontrollers
نظرات کاربران