میکروکنترلرها امروزه در همه جای دنیا وجود دارند و به میلیاردها سیستم الکتریکی که مردم هر روز با آنها تعامل دارند – یا ندارند – اطلاعات ارائه میدهند. میکروکنترلرها با میانافزار (Firmware) برنامهریزی میشوند و برای انجام کار خود در مدارها ترکیب میشوند. این دستگاهها همان چیزی هستند که ما “سیستمهای امبدد” مینامیم. احتمالاً هر دستگاه الکترونیکی که امروزه استفاده میشود حداقل یک میکروکنترلر دارد و سیستمهای پیچیده ممکن است دهها میکرو در آنها تعبیه شده باشد تا وظایف مختلف را انجام دهند.
هزاران میکروکنترلر مختلف برای انتخاب وجود دارد. این انتخابها را میتوان به سرعت بر اساس آنچه که به دنبال طراحی آن هستید، مرتب کرد. با طراحی محصولات بیشتر، بدون شک در نهایت میکروکنترلرهای مورد علاقهای خواهید داشت که در استفاده از آنها متخصص میشوید. همچنین احتمالاً محصولاتی را برای کاربردهای مشابه یا با قابلیتهای مشابه طراحی خواهید کرد و بنابراین در یک زمینه یا کاربرد خاص میکروکنترلرها تخصص پیدا خواهید کرد.
آنچه باید از این نکته برداشت کنید این است که تجربه شخصی شما منحصر به فرد است و آنچه شما میدانید و نحوه یادگیری شما همیشه با افرادی که با آنها کار میکنید متفاوت خواهد بود. چهار سال اول تجربه شخصی من در زمینه برنامهنویسی میکروکنترلرهای PIC به زبان اسمبلی آغاز شد، که در آن به معنای واقعی کلمه هر بایت فلش و رم باید تا حد امکان به طور مؤثر استفاده میشد. این امر مرا به فردی بسیار عملگرا و «سطح پایین» در طراحیها و تفکراتم تبدیل کرد.
حتی با اینکه به نوشتن در زبان C برای پردازندههای 32 بیتی روی آوردم، اصول اولیهام همچنان پابرجا ماند. من هنوز هم حتی هنگام کدنویسی در زبان C، زیاد به زبان اسمبلی فکر میکنم و قویاً معتقدم که یک برنامهنویس باید درک کاملی از مجموعه دستورالعملهای پردازنده مورد استفاده داشته باشد. اگرچه میتوانم هم در ++C و هم در جاوا کدنویسی کنم، اما هیچ طراحی تجاری با استفاده از این زبانها انجام ندادهام. با این حال، همانطور که خواهید دید، من بسیاری از مفاهیم برنامهنویسی شیگرای سطح بالا را در کد C خود گنجاندهام، البته گاهی اوقات فقط با یک قانون یا فرآیند کتبی که خودم دنبال میکنم. من توسعهدهندگان بیشتری را میبینم که این کار را انجام میدهند.
تشخیص تنوع در تجربیات افراد بسیار مهم است زیرا به این معنی است که همیشه فرصتهایی برای یادگیری و به اشتراک گذاشتن دانستههایتان با دیگران وجود دارد. همکاری یکی از بزرگترین مزایای زنده بودن است، بنابراین ذهن خود را باز کنید و ایدهها را گرد هم آورید. همچنین، به یاد داشته باشید که در نگاه به گذشته، انتخاب عناصری از یک طراحی که میتوانند بهبود یابند بسیار آسان است – شما همیشه باید این کار را با طرحهای خودتان انجام دهید. اگر چیزی پیدا نکردید که اگر دوباره آن را انجام میدادید، متفاوت انجام میدادید، احتمالاً به اندازه کافی جستجو نکردهاید.
کتاب Embedded in Embedded سعی میکند مفاهیم اساسی و بنیادی توسعه سیستمهای تعبیهشده را تا حد امکان به صورت کلی آموزش دهد. در واقع بسیاری از مفاهیم و فرآیندهایی که در اینجا یاد خواهید گرفت، میتوانند برای پردازندههای مختلف برای کاربردهای متنوع اعمال شوند. برای ارائه منبعی مفید و با بحث در مورد جزئیات پیچیده تصمیمات طراحی، از یک پردازنده خاص روی یک برد توسعه خاص با یک محیط توسعه خاص استفاده میشود. نمیتوانم به اندازه کافی تأکید کنم که کاملاً درک میکنم که EiE فقط یک راه است، نه تنها راه، برای نوشتن درایورها و برنامههایی که به شما نشان خواهم داد.
همانند تمام تصمیمات مهندسی، هنگام تصمیمگیری در مورد نحوه تکمیل یک طرح، تعداد زیادی بدهبستان وجود دارد که بسیاری از آنها در این کتاب، همانطور که با آنها مواجه میشویم، مورد بحث قرار خواهند گرفت. در دنیای میانافزار، یک قاعده کلی این است که هرچه استفاده از یک قطعه کد یا رابط برنامه آسانتر و قویتر یا غنیتر از ویژگیها باشد، سورس کد پشت آن پیچیدهتر خواهد بود. یک مثال عالی که دوست دارم استفاده کنم، مقایسه RS-232 با USB به عنوان رابطهای سریال استاندارد است. عملکرد ساده RS-232 را میتوان تنها در چند خط کد نوشت، اما اگر تا به حال لذت تلاش برای راهاندازی صحیح دستگاههای سریال RS-232 را روی کامپیوتر داشته باشید، میدانید که این کار چقدر میتواند ناامیدکننده باشد. در سوی دیگر طیف، USB وجود دارد که در آن یک درایور معمولی ساده در سیستم تعبیهشده حداقل 2 کیلوبایت کد خواهد بود. اما USB شاید مظهر plug-and-play باشد و کاربران کامپیوتر امروزه چیزی کمتر از این انتظار ندارند که هر دستگاه USB را به هر سوکت USB وصل کنند و بلافاصله یک عملیات بینقص داشته باشند.
با در نظر گرفتن این موضوع، ما به بررسی یکی از راههای نوشتن یک سیستم امبدد نسبتاً قوی، نسبتاً کوچک، نسبتاً قابل توسعه و نسبتاً چندوظیفهای میپردازیم. همه اینها بر اساس نیازها، منابع و دانش در زمان نوشتن این مطلب است. خانواده پردازندههای ARM Cortex در حال حاضر مورد علاقه من هستند و به دلایل مختلف، من بردهای توسعه EiE را با استفاده از میکروکنترلر Atmel SAM3U2 Cortex-M3 طراحی کردم. من از IAR Systems IDE استفاده میکنم زیرا مدتهاست که از آن در پردازندههای مختلف استفاده کردهام. برای اطلاع شما، من هرگز برای ARM، Atmel/Microchip، IAR یا هیچ یک از فروشندگان دیگری که نام آنها را روی سختافزار EiE خواهید دید، کار نکردهام – هر تصمیم طراحی که گرفتهام بر اساس تجربه خودم با تحقیقاتمان در مورد قطعه یا بستهای است که به بهترین وجه نیاز طراحی را برآورده میکند. با گذشت زمان، من این شرکتها را برای سود متقابل به شبکه EiE دعوت کردهام. برای کسانی که من را میشناسند، میدانید که من واقعاً اهل برد-برد هستم.

نام کتاب: Embedded in Embedded ARM Cortex-M Embedded Design from 0 to 1


دیدگاهتان را بنویسید