آموزش کامل برنامهنویسی Bare-Metal برای ARM Cortex-M (TM4C123)
✅ سرفصل و جزئیات آموزش
آنچه یاد خواهید گرفت:
- توانایی نوشتن سفتافزار با استفاده از embedded-C بدون نیاز به سیستم عامل
- نوشتن برنامههای تعبیه شده صرفاً با استفاده از اشارهگرها و آدرسهای حافظه
- نوشتن برنامههای تعبیه شده حرفهایتر و بهینهتر
- درک معماری Cortex-M
- درک معماری بارگذاری-ذخیره (Load-Store)
- درک اشکالزدایی ARM Cortex-M
- نوشتن درایورهای UART با کد اسمبلی
- درک کامل هسته CMSIS
- نوشتن سفتافزار صرفاً با embedded-C بدون نیاز به سیستم عامل
- نوشتن درایورهای تایمر با کد اسمبلی
- نوشتن درایورهای وقفه با embedded-C بدون سیستم عامل
- نوشتن درایورهای تبدیل آنالوگ به دیجیتال (ADC) به صورت bare-metal با embedded-C
پیشنیازهای دوره
- از محیط توسعه و ابزارهای Keil uVision 5 استفاده خواهیم کرد که رایگان است.
- این دوره نیازی به دانش قبلی درباره توسعه Cortex-M ندارد.
- به برد TIVA C Launchpad - TM4C123 نیاز خواهید داشت.
توضیحات دوره
به دوره برنامهنویسی کامل Bare-Metal برای ARM Cortex-M (TM4C123) خوش آمدید.
این دوره نیازمند هیچ دانش قبلی در زمینه cortex-m یا برنامهنویسی embedded-c نیست.
تنها چیزی که از دانشجویان انتظار میرود، کنجکاوی است. این دوره رویکردی عملی دارد و مباحث کلیدی مانند اشارهگرها، ساختارها، ناوبری حافظه و استاندارد رابط نرمافزاری Cortex-M را پوشش میدهد. هدف اصلی دوره فراهم کردن مهارتهای عملی و پایهای قوی برای یادگیرندگان است تا بتوانند کدهای حرفهای بنویسند که به صورت بهینه اجرا شوند و از ویژگیهای مهم اکوسیستم ARM Cortex-M بهره برند. این دوره شامل بخشهای متعددی است.
هدف بخش اسمبلی مربوط به بخشهای جانبی آموزش نحوه ناوبری دفترچه راهنمای مرجع میکروکنترلر و دیتاشیت به منظور استخراج اطلاعات صحیح برای ساخت حرفهای درایورها و سفتافزار برای بخشهای جانبی است. برای رسیدن به این هدف، هیچ کتابخانهای در این دوره استفاده نمیشود و صرفاً از زبان اسمبلی ARM و bare-metal embedded C بهره میبریم.
در پایان این بخش، شما قادر خواهید بود بخشهای جانبی میکروکنترلر مانند ADC ،UART ،GPIO، تایمر و غیره را با اسمبلی پیکربندی کنید. همچنین معماری ARM، معماری مجموعه دستورالعمل ARM و نحوه ساخت سفتافزار حرفهای تعبیه شده برای پردازندههای ARM را کاملاً خواهید آموخت.
در دوره شرکت کرده و بیایید شروع به تاگل کردن بیتهای رجیستر کنیم.
این دوره برای چه کسانی مناسب است؟
- اگر در سیستمهای تعبیه شده کاملاً مبتدی هستید، این دوره مناسب شماست.
- اگر توسعهدهنده باتجربه سیستمهای تعبیه شده هستید و میخواهید اپلیکیشنهای حرفهای برای پردازندههای ARM توسعه دهید، این دوره مناسب شماست.
- اگر میخواهید یاد بگیرید چگونه درایورهای بخشهای جانبی را با زبان اسمبلی و bare-metal C بنویسید، این دوره را انتخاب کنید.
آموزش کامل برنامهنویسی Bare-Metal برای ARM Cortex-M (TM4C123)
-
خوشآمدگویی 00:46
-
فلسفه طراحی RISC 03:43
-
فلسفه طراحی ARM 03:06
-
سیستمهای تعبیه شده با پردازندههای ARM 03:11
-
فناوری گذرگاه ARM و پروتکل گذرگاه AMBA 02:14
-
حافظه 07:57
-
بخشهای جانبی 02:23
-
معماری فون نویمان و هاروارد 03:46
-
کش و حافظه با اتصال تنگاتنگ (TCM) 03:40
-
افزونههای مدیریت حافظه 02:29
-
افزونههای همپردازنده 01:18
-
تایپهای داده 02:51
-
حالتهای پردازنده 05:22
-
جدول بردار ARM7TDMI 02:22
-
رجیسترهای ARM7TDMI 07:52
-
رجیسترهای ARM Cortex-M 04:35
-
جدول بردار ARM Cortex-M 01:10
-
مدل جریان داده ARM 03:44
-
پایپلاین 04:08
-
خانواده پردازنده ARM 01:55
-
معرفی ARM Cortex-A و Cortex-R 01:42
-
ARM Cortex-M 01:31
-
ARM Cortex-M چیست؟ 01:00
-
پردازندههای 32 بیتی چه هستند؟ 01:59
-
خانواده پردازندههای 32 بیتی Cortex-M 02:53
-
مقایسه میکروپروسسور و میکروکنترلر 01:40
-
آشنایی با ARM Cortex-M None
-
معماری بارگذاری-ذخیره 04:02
-
بانک رجیسترها (دوباره) 02:52
-
رجیستر وضعیت برنامه (PSR) 03:13
-
معماری Cortex-M None
-
شمارش 06:12
-
نگاهی اولیه به View اشکالزدایی 02:36
-
Views حافظه 02:50
-
تغییرات در View 06:16
-
نسخه دوم شمارش 03:00
-
شرطیها چگونه رفتار میکنند؟ 07:35
-
شرطیها چگونه رفتار میکنند؟ (ادامه) 01:55
-
نقشه حافظه Cortex-M 01:47
-
نقشه حافظه Cortex-M (ادامه) 02:04
-
مقایسه Big Endian و Little Endian 04:46
-
متغیرهای گلوبال و ذخیرهسازی RAM 06:32
-
اجزای داخلی ARM Cortex-M و اشکالزدایی None
-
معماری مجموعه دستورالعمل 02:42
-
سازگاری رو به بالا 02:57
-
سینتکس زبان اسمبلی 03:37
-
دایرکتیوهای اسمبلی 03:27
-
بررسی TM4C123 Tiva C LaunchPad 02:36
-
بررسی پروژه 1 05:04
-
Opcodes پروژه 1 09:33
-
بازبینی کد منبع پروژه 1 00:46
-
کدنویسی - راهاندازی پروژه 1 06:36
-
کدنویسی - پروژه 1 - بخش 1 04:25
-
کدنویسی - پروژه 1 - بخش 2 06:31
-
کدنویسی - پروژه 1 - بخش 3 06:33
-
عملیاتهای منطقی 11:44
-
کدنویسی - پروژه 1 - بخش 4 05:34
-
کدنویسی - پروژه 1 - بخش نهایی 11:11
-
Opcodes پروژه 2 07:27
-
کدنویسی - پروژه 2 - بخش 1 20:44
-
کدنویسی - پروژه 2 - بخش 2 19:03
-
کدنویسی - پروژه 3 - بخش 1 04:13
-
کدنویسی - پروژه 3 - بخش 2 02:30
-
کدنویسی - پروژه 3 - بخش 3 04:54
-
کدنویسی - پروژه 3 - بخش نهایی 01:16
-
اکسپورت تابع اسمبلی به زبان C 14:01
-
ایمپورت تابع C به اسمبلی 11:37
-
ساخت متغیرها در اسمبلی 14:00
-
لیست کامل دستورالعملهای اسمبلی Cortex-M 01:33
-
اشارهگرها 04:13
-
اشارهگرها - دراپ کردن BEEF در حافظه 05:05
-
برنامه Blinky با اشارهگرها و آدرس خام - بخش 1 09:18
-
برنامه Blinky با اشارهگرها و آدرس خام - بخش 2 14:18
-
برنامه Blinky با اشارهگرها و آدرس خام - بخش 3 06:44
-
استفاده از پیشپردازندهها 04:22
-
استفاده از پیشپردازندهها از دیتاشیت 01:55
-
افزودن فایلهای هدر تأمینکنندگان سیلیکون 08:37
-
اهمیت کلیدواژه volatile 03:54
-
اهمیت کلیدواژه volatile (ادامه) 01:07
-
آشنایی با عملیاتهای بیتی 06:23
-
اعمال عملیاتهای بیتی 04:22
-
اعمال عملیاتهای بیتی (ادامه) 09:54
-
نوشتن توابع 05:18
-
پارامترهای تابع 02:59
-
ایمپورت توابع از فایل دیگر 06:04
-
استفاده از IFNDEF برای جلوگیری از اعلان چندباره 03:28
-
اعلان متغیرهای با عرض ثابت 14:34
-
آشنایی با ساختارها 07:13
-
سادسازی ساختارها با typedef 09:14
-
دسترسی به اعضای ساختار با عملگر نقطه 03:23
-
دسترسی به اعضای ساختار با عملگر نقطه (ادامه) 09:27
-
آشنایی با CMSIS 04:17
-
بررسی مستندات CMSIS 06:06
-
نوشتن اولین برنامه CMSIS ما 04:50
-
درک نحوه عملکرد CMSIS 05:43
-
درک نحوه عملکرد CMSIS (ادامه) 04:16
-
درک نحوه عملکرد CMSIS (بخش نهایی) 02:38
-
انطباق برنامه قدیمی Blinky ما با CMSIS 05:58
-
نوشتن برنامهای منطبق با CMSIS از ابتدا - بخش 1 09:52
-
نوشتن برنامهای منطبق بر CMSIS از ابتدا - بخش 2 12:55
-
نوشتن برنامهای منطبق بر CMSIS از ابتدا - بخش 3 10:11
-
بررسی ماژول ورودی و خروجی عمومی ARM Cortex-M 12:34
-
کدنویسی - درایور GPIO 34:54
-
کدنویسی - درایور ورودی GPIO 10:56
-
کدنویسی - آنلاک کردن پینهای GPIO 11:43
-
آشنایی با برنامهنویسی LCD 04:38
-
LCD Pinout و رابط آن با MCU 03:14
-
کنترل LCD 03:47
-
فلوچارت برنامه اولیه LCD 02:14
-
تابع مقداردهی اولیه LCD 02:26
-
توابع فرمان و داده LCD 02:41
-
شبه توابع تأخیر 01:29
-
کدنویسی - برنامه LCD - بخش 1 15:07
-
کدنویسی - برنامه LCD - بخش 2 17:43
-
کدنویسی - برنامه LCD - بخش 3 09:07
-
کدنویسی - برنامه LCD - بخش 4 03:09
-
کدنویسی - برنامهنویسی LCD با 4 بیت - بخش 1 04:48
-
تابع نوشتن 4 بیتی LCD 10:44
-
کدنویسی - برنامهنویسی LCD با 4 بیت - بخش 1 15:07
-
کدنویسی - برنامهنویسی LCD با 4 بیت - بخش 2 13:10
-
کدنویسی - برنامهنویسی LCD با 4 بیت - بخش 3 03:31
-
کدنویسی - برنامهنویسی LCD با 4 بیت - بخش 4 02:22
-
رابط کاربری با صفحهکلیدها 03:24
-
کدنویسی - برنامهنویسی صفحهکلید - بخش 1 06:59
-
کدنویسی - برنامهنویسی صفحهکلید - بخش 2 16:50
-
کدنویسی - برنامهنویسی صفحهکلید - بخش 3 14:17
-
کدنویسی - برنامه تایمر SysTick - بخش 1 08:15
-
تایمر SysTick 05:43
-
کدنویسی - برنامه تایمر SysTick 1 - بخش 2 05:09
-
تایمرهای عمومی 04:58
-
اندازه تایمر بر حسب ثانیه 04:58
-
رجیسترهای GPTM 03:27
-
کدنویسی - برنامهنویسی تایمرها در حالت 16 بیتی یکبار اجرا - بخش 1 08:28
-
کدنویسی - برنامهنویسی تایمرها در حالت 16 بیتی یکبار اجرا - بخش 2 13:27
-
کدنویسی - برنامهنویسی تایمرها در حالت دورهای 16 بیتی - بخش 1 15:56
-
کدنویسی - برنامهنویسی تایمرها در حالت دورهای 16 بیتی - بخش 2 02:11
-
کدنویسی - شمارش لبههای صعودی با تایمرها - بخش 1 07:22
-
کدنویسی - شمارش لبههای صعودی با تایمرها - بخش 2 07:10
-
کدنویسی - شمارش لبههای صعودی با تایمرها - بخش 3 13:53
-
اندازهگیری زمان بین رویدادها با تایمرها - بخش 1 03:53
-
اندازهگیری زمان بین رویدادها با تایمرها - بخش 2 15:24
-
اندازهگیری زمان بین رویدادها با تایمرها - بخش 3 14:10
-
اندازهگیری زمان بین رویدادها با تایمرها - بخش 4 13:44
-
اندازهگیری زمان بین رویدادها با تایمرها - بخش 5 07:10
-
کدنویسی - برنامهنویسی تایمرهای 32 و 64 بیتی 08:57
-
آشنایی با وقفهها 05:55
-
کدنویسی - وقفه Systick 06:47
-
کدنویسی - وقفه GPIO 16:34
-
کدنویسی - وقفههای متعدد GPIO 07:43
-
کدنویسی - برنامهنویسی وقفه تایمر - بخش 1 03:51
-
کدنویسی - برنامهنویسی وقفه تایمر - بخش 2 21:16
-
آشنایی با تبدیل آنالوگ به دیجیتال 04:02
-
کدنویسی - درایور ADC 19:42
-
کدنویسی - سنسور دمای ADC 10:47
-
آشنایی با رابط جانبی سریال SPI 06:32
-
رجیسترهای کلیدی SPI 04:30
-
کدنویسی - توسعه درایور ساده SPI 20:38
-
کدنویسی - توسعه درایور رابط SPI برای LCD - بخش 1 24:03
-
کدنویسی - توسعه درایور رابط SPI برای LCD - بخش 2 08:48
-
کدنویسی - توسعه درایور رابط SPI برای LCD - بخش 3 15:59
-
بررسی ماژول ورودی و خروجی عمومی ARM Cortex-M 12:34
-
کدنویسی - تخصیص نامهای نمادین به رجیسترهای خروجی GPIO مربوطه 43:12
-
کدنویسی - نوشتن درایور خروجی GPIO 17:04
-
کدنویسی - تاگل کردن خروجیهای GPIO 08:46
-
کدنویسی - تخصیص نامهای نمادین به رجیسترهای ورودی مربوط به GPIO 10:41
-
کدنویسی - نوشتن درایور ورودی GPIO 14:27
-
بررسی تایمر System Tick 04:05
-
کدنویسی - تخصیص نامهای نمادین به رجیسترهای مربوط به SysTick 14:46
-
کدنویسی - نوشتن درایور تایمر SysTick 08:06
-
کدنویسی - ساخت ساب روتینهای تأخیر با تایمر SysTick 19:41
-
بررسی پروتکل UART 05:29
-
کدنویسی - تخصیص نامهای نمادین به رجیسترهای UART مرتبط 37:09
-
کدنویسی - نوشتن درایور UART 21:40
-
کدنویسی - تست درایور UART 11:26
-
دانلود و نصب Keil uVision5 06:32
-
دانلود و نصب درایورهای USB برای میکروکنترلر Tiva C 03:51
-
بررسی Keil uVision 5 03:10
-
پایان 00:17
مشخصات آموزش
آموزش کامل برنامهنویسی Bare-Metal برای ARM Cortex-M (TM4C123)
- تاریخ به روز رسانی: 1404/06/21
- سطح دوره:همه سطوح
- تعداد درس:178
- مدت زمان :22:19:41
- حجم :9.02GB
- زبان:دوبله زبان فارسی
- دوره آموزشی:AI Academy