آموزش برنامه‌نویسی اسمبلی GNU ARM از صفر تا صد™ - آخرین آپدیت

دانلود ARM GNU Assembly Programming From Ground Up™

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره:

یادگیری برنامه‌نویسی اسمبلی ARM از صفر تا صد با GNU Assembler

به دوره جامع برنامه‌نویسی اسمبلی ARM GNU از پایه خوش آمدید.

این دوره نسخه GNU از دوره‌های محبوب برنامه‌نویسی اسمبلی ARM از پایه 1 و 2 است. در این نسخه از دوره‌ها از قواعد نحوی GNU که توسط اسمبلر GNU (as) پشتیبانی می‌شود استفاده می‌کنیم که مستقل از پلتفرم است.

تفاوت کلیدی با دوره‌های قبلی

بر خلاف دوره‌های برنامه‌نویسی اسمبلی ARM از پایه 1 و 2 که از Keil uVision استفاده می‌کردند و فقط روی سیستم‌عامل ویندوز در دسترس بود، دوره برنامه‌نویسی اسمبلی ARM GNU از پایه به شما یاد می‌دهد که چگونه برنامه‌های اسمبلی برای اسمبلر GNU بنویسید که روی سیستم‌عامل‌های ویندوز، OSX و لینوکس در دسترس است.

محتوای جامع دوره

این دوره با پوشش دادن طراحی سیستم‌های ARM، معماری و برنامه‌نویسی عملی اسمبلی، جامع‌ترین دوره اسمبلی ARM آنلاین محسوب می‌شود.

مسیر یادگیری گام به گام

ما شما را گام به گام از طریق آموزش‌های ویدئویی جذاب و سرگرم‌کننده همراهی می‌کنیم و تمام آنچه را برای موفقیت به‌عنوان یک توسعه‌دهنده امبدد ARM نیاز دارید، به شما آموزش می‌دهیم.

آنچه خواهید آموخت

  • تسلط بر مجموعه دستورالعمل‌های ARM
  • تسلط بر مجموعه دستورالعمل‌های Thumb
  • تسلط بر مجموعه دستورالعمل‌های Thumb-2
  • ساخت ساختارهای داده مانند FIFOs در اسمبلی
  • پیاده‌سازی ماشین‌های حالت متناهی مانند ماشین مور فقط با کد اسمبلی

درایورنویسی حرفه‌ای در اسمبلی

علاوه بر این، این دوره به شما یاد می‌دهد که چگونه دفترچه راهنمای مرجع میکروکنترلر و دیتاشیت را پیمایش کنید تا اطلاعات لازم را برای ساخت حرفه‌ای درایورهای پریفرال و فریم‌ور به‌دست آورید. برای رسیدن به این هدف، هیچ کتابخانه‌ای در این دوره استفاده نمی‌شود، بلکه به‌طور انحصاری از زبان اسمبلی ARM بهره می‌بریم.

شما قادر خواهید بود درایورهای پریفرال را در اسمبلی بنویسید، از جمله:

  • درایور ADC
  • درایور UART
  • درایور SYSTICK
  • درایور GPIO
  • درایور GPTM

موضوعات پوشش داده شده

  • زبان اسمبلی: ADC، UART، GPTM، SYSTICK، FIFOs، ماشین‌های حالت، توسعه درایور پریفرال، الگوریتم‌ها و غیره.
  • نوشتن برنامه‌های پیچیده در زبان اسمبلی
  • پیاده‌سازی ماشین‌های حالت در زبان اسمبلی
  • پیاده‌سازی ساختارهای داده در زبان اسمبلی
  • نوشتن درایورهای ADC در زبان اسمبلی
  • نوشتن درایورهای UART در زبان اسمبلی
  • نوشتن درایورهای GPTM در زبان اسمبلی
  • نوشتن درایورهای GPIO در زبان اسمبلی

طراحی شده برای کسانی که از Copy/Paste متنفرند

اگر از «Copy/Paste» متنفر هستید، تنها نیستید. ما نیز از آن بیزاریم. ترجیح می‌دهیم کدی را از ابتدا بنویسیم که ممکن است کار نکند، تا کد کارآمدی که از شخص دیگری کپی کرده‌ایم.

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

پیش‌نیازها

  • بدون نیاز به تجربه برنامه‌نویسی قبلی - همه چیز را از صفر به شما آموزش می‌دهیم.
  • بدون نیاز به نرم‌افزار پولی - تمام برنامه‌های اسمبلی در STM32CubeIDE (رایگان و مبتنی بر Eclipse) ساخته می‌شوند.
  • راهنمای گام به گام برای دانلود و نصب STM32CubeIDE.
  • برای برخی از دروس عملی به برد NUCLEO-F411 نیاز خواهید داشت.

تضمین رضایت

به یاد داشته باشید: ما اطمینان داریم که از این دوره لذت خواهید برد. همچنین این دوره با تضمین بازگشت کامل وجه تا 30 روز همراه است! بنابراین به زبان ساده، شما چیزی برای از دست دادن ندارید و همه چیز برای به دست آوردن دارید.

ثبت‌نام کنید و بیایید شروع به نوشتن کد سطح پایین کنیم.


سرفصل ها و درس ها

شروع کار Getting Started

  • دانلود محیط توسعه یکپارچه (IDE) ما Downloading our Integrated Development Environment (IDE)

  • نصب محیط توسعه یکپارچه (IDE) ما Installing our Integrated Development Environment (IDE)

  • برنامه نویسی: نوشتن یک برنامه اسمبلی ساده Programming : Writing a simple assembly program

  • برنامه نویسی: نوشتن یک برنامه اسمبلی ساده بدون فایل راه‌انداز Programming : Writing a simple assembly program without a startup file

مقدمه ای بر معماری Arm Introduction to Arm Architecture

  • دستگاه محاسباتی The Computing Device

  • سیستم‌های عددی Number Systems

  • تبدیل بیت‌ها به دستورالعمل‌ها Translating Bits to Commands

  • فلسفه طراحی RISC The RISC Design Philosophy

  • فلسفه طراحی ARM The ARM Design Philosophy

  • معماری ون نیومن و هاروارد Von Nuemann and Harvard architecture

  • رجیسترهای ARM Cortex-M ARM Cortex-M Registers

  • جدول برداری ARM Cortex-M ARM Cortex-M Vector Table

قوانین و دستورالعمل‌های اسمبلر Assembler Rules and Directives

  • مجموعه دستورالعمل‌های ARM، Thumb و Thumb-2 The ARM,Thumb and Thumb-2 Instruction Sets

  • نام‌های از پیش تعریف شده رجیسترها Predefined Register Names

  • دستورالعمل‌های پرکاربرد Frequently used Directives

  • مروری بر عملگرهای باینری Overview of Binary Operators

  • برنامه نویسی: تغییر نام رجیسترها Programming : Renaming Registers

  • برنامه نویسی: تخصیص فضا در حافظه با دستورالعمل SPACE Programming : Allocating space in memory with the SPACE Directive

  • برنامه نویسی: جابجایی محتوای رجیسترها Programming : Swapping Register Content

  • دانلود کد منبع Source Code Download

دستورالعمل‌های بارگذاری و ذخیره Load-Store Instructions

  • مرزهای حافظه Memory Demarcations

  • دستورالعمل‌های پرکاربرد بارگذاری/ذخیره (قسمت اول) Frequently used Load/Store Instructions (Part I)

  • دستورالعمل‌های پرکاربرد بارگذاری/ذخیره (قسمت دوم) Frequently used Load/Store Instructions (Part II)

  • اطلاعیه در مورد درس بعدی Notice about the next lesson

  • دستورالعمل‌های پرکاربرد بارگذاری/ذخیره (قسمت سوم) Frequently used Load/Store Instructions (Part III)

  • آدرس‌دهی پیش‌شاخص Pre-Indexed Addressing

  • آدرس‌دهی پس‌شاخص Post-Indexed Addressing

  • اندین‌نس (Endianness) Endianness

  • تعریف نواحی حافظه Defining Memory Areas

کار با ثابت‌ها و مقادیر عددی Dealing with Constants and Literals

  • کدگذاری دستورالعمل MOV The Encoding of the MOV Instruction

  • بارگذاری ثابت‌ها با دستورالعمل LDR Loading Constants with the LDR Instruction

  • بارگذاری ثابت‌ها با دستورالعمل‌های MOVW و MOVT Loading Constants with the MOVW and MOVT Instructions

  • بارگذاری برچسب‌ها با دستورالعمل‌های ADR، ADRL و LDR Loading Labels with ADR, ADRL and LDR Instructions

  • برنامه نویسی: حل یک معادله ساده Programming : Solving a Simple Equation

  • برنامه نویسی: وارد کردن از C به اسمبلی Programming : Importing from C to Assembly

  • برنامه نویسی: خروجی از اسمبلی به C Programming : Exporting from Assembly to C

دستورالعمل‌های حسابی و منطقی Arithmetic and Logic Instructions

  • پرچم‌ها (Flags) Flags

  • پرچم‌های N و V The N and V Flags

  • پرچم‌های Z و C The Z and C Flags

  • دستورالعمل‌های مقایسه/آزمایش Compare/Test Instructions

  • مروری بر عملیات بولی Overview of Boolean Operations

  • مقدمه ای بر شیفت‌ها و چرخش‌ها Introduction to Shifts and Rotations

  • درک شیفت‌های منطقی Understanding Logical Shifts

  • درک چرخش‌ها Understanding Rotations

  • نمونه‌هایی از شیفت و چرخش Some Shift and Rotate Examples

  • مروری بر دستورالعمل‌های جمع و تفریق Overview Addition and Subtraction Instructions

  • مروری بر دستورالعمل‌های ضرب Overview of Multiplication Instructions

  • ضرب در ثابت‌ها Multiplying by Constants

  • مروری بر دستورالعمل تقسیم Overview of the Division Instruction

  • دستورالعمل‌های دستکاری بیت Bit Manipulation Instructions

  • برنامه نویسی: یافتن حداکثر مقدار در یک آرایه Programming : Finding the Maximum Value in an Array

  • برنامه نویسی: آزمایش با دستورالعمل LSL Programming : Experimenting with the LSL Instruction

  • برنامه نویسی: جمع اعداد علامت‌دار Programming : Adding Signed Numbers

  • برنامه نویسی: یافتن حداقل مقدار در یک آرایه Programming : Finding the Minimum Value in an Array

  • برنامه نویسی: حل یک معادله پیچیده‌تر Programming : Solving a More Complex Equation

  • برنامه نویسی: انجام تقسیم با تفریق Programming : Performing Division by Subtraction

دستورالعمل‌های پرش و حلقه Branch and Loop Instructions

  • مقدمه ای بر پرش‌ها و حلقه‌ها Introduction to Branches and Loops

  • پرش Branching

  • مقایسه و پرش Compare and Branch

  • حلقه‌ها در اسمبلی Loops in Assembly

  • اجرای شرطی Conditional Execution

  • بلوک IF-THEN The IF-THEN Block

  • برنامه نویسی: محاسبه فاکتوریل یک عدد با استفاده از بلوک IF-THEN Programming : Computing the Factorial of a Number using the IF-THEN Block

دستورالعمل‌های پشته Stack Instructions

  • مقدمه ای بر پشته Introduction to the Stack

  • دستورالعمل‌های LDM و STM The LDM and STM Instructions

  • نحو دستورالعمل‌های PUSH و POP Syntax of the PUSH and POP Instructions

  • برنامه نویسی: پوش کردن و پاپ کردن پشته Programming : Pushing and Popping a Stack

توسعه درایور ورودی/خروجی عمومی (GPIO) Developing the General Purpose Input/Output(GPIO) Driver

  • مروری بر ماژول ورودی/خروجی عمومی ARM Cortex-M Overview of ARM Cortex-M General Purpose Input/Output Module

  • دریافت مستندات مناسب Getting the right Documentation

  • برنامه نویسی: تحلیل نقشه حافظه تراشه Programming : Analyzing the Chip's Memory Map

  • برنامه نویسی: تعریف آدرس‌ها برای رجیسترها Programming : Defining Addresses for Registers

  • برنامه نویسی: تنظیم پین به عنوان پین خروجی Programming : Setting the Pin as an Output Pin

  • برنامه نویسی: تلنگر زدن به یک پین با استفاده از رجیستر داده خروجی (ODR) Programming : Toggling a Pin using the Output Data Register (ODR)

  • برنامه نویسی: تلنگر زدن به یک پین با استفاده از رجیستر بیت Set/Reset (BSRR) Programming : Toggling a Pin using the Bit Set /Reset Register (BSRR)

  • برنامه نویسی: تعریف رجیسترها برای درایور ورودی Programming : Defining Registers for Input Driver

  • برنامه نویسی: پیاده‌سازی درایور ورودی Programming : Implementing the Input Driver

توسعه درایور تبدیل آنالوگ به دیجیتال (ADC) Developing the Analog to Digital Conversion (ADC) Driver

  • مقدمه ای بر تبدیل آنالوگ به دیجیتال Introduction to Analog to Digital Conversion

  • درک حالت‌های مستقل ADC Understanding ADC Independents Modes

  • برنامه نویسی: برنامه‌ریزی پروژه Programming : Planning the Project

  • برنامه نویسی: پیاده‌سازی تابع راه‌اندازی Programming : Implementing the Initialization Function

  • برنامه نویسی: پیاده‌سازی تابع خواندن ADC Programming: Implementing the ADC Read Function

  • برنامه نویسی: تست درایور ADC Programming : Testing the ADC Driver

توسعه درایور گیرنده/فرستنده جهانی ناهمزمان (UART) Developing Universal Asynchronous Receiver-Transmitter(UART) Driver

  • مروری بر پروتکل UART Overview of the UART Protocol

  • برنامه نویسی: برنامه‌ریزی پروژه Programming : Planning the Project

  • برنامه نویسی: پیکربندی پین‌های GPIO برای UART Programming : Configuring the GPIO Pins for the UART

  • برنامه نویسی: پیکربندی پارامترهای UART Programming : Configuring the UART Parameters

  • برنامه نویسی: ارسال کاراکترها Programming : Sending Characters

  • برنامه نویسی: بازنویسی آدرس دهی Printf Programming : Retargeting Printf

  • برنامه نویسی: توسعه درایور UART RX Programming : Developing the UART RX Driver

توسعه درایور تایمر System Tick (SysTick) Developing the System Tick (SysTick) Timer Driver

  • مروری بر تایمر System Tick Overview of the System Tick Timer

  • برنامه نویسی: پیاده‌سازی تابع راه‌اندازی Programming : Implementing the Initialization Function

  • برنامه نویسی: پیاده‌سازی تابع تاخیر Programming : Implementing the Delay Function

  • برنامه نویسی: پیاده‌سازی تاخیر میلی‌ثانیه‌ای Programming : Implementing Milliseconds Delay

توسعه درایور تایمر عمومی Developing the General Purpose Timer Driver

  • مروری بر تایمرهای عمومی Overview of General Purpose Timers

  • برنامه نویسی: برنامه‌ریزی پروژه Programming : Planning the Project

  • برنامه نویسی: پیاده‌سازی تابع راه‌اندازی Programming : Implementing the Initialization Function

  • برنامه نویسی: تست درایور Programming : Testing the Driver

کار با ساختارهای داده Working with Data Structures

  • مقدمه ای بر FIFO ها Introduction to FIFOs

  • اطلاعیه Notice

  • [اختیاری] پیاده‌سازی FIFO در C (قسمت اول) [OPTIONAL] Implementing the FIFO in C (Part I)

  • [اختیاری] پیاده‌سازی FIFO در C (قسمت دوم) [OPTIONAL] Implementing the FIFO in C (Part II)

  • برنامه نویسی: پیاده‌سازی تابع راه‌اندازی Programming : Implementing the Initialization Function

  • برنامه نویسی: پیاده‌سازی تابع FIO Put Programming : Implementing the FIO Put Function

  • برنامه نویسی: پیاده‌سازی تابع FIO Get Programming : Implementing the FIO Get Function

  • برنامه نویسی: پیاده‌سازی تابع FIO Size Programming : Implementing the FIO Size Function

  • برنامه نویسی: تست FIFO Programming : Testing the FIFO

کار با ماشین‌های حالت Working with State Machines

  • مقدمه ای بر ماشین حالت مور و میلی Introduction to Moore and Mealy FSM

  • طراحی سیستم چراغ راهنمایی با استفاده از ماشین حالت مور Designing Traffic Light System using Moore FSM

  • اطلاعیه Notice

  • [اختیاری] پیاده‌سازی سیستم چراغ راهنمایی با استفاده از ماشین حالت مور (قسمت اول) [OPTIONAL] Implementing a Traffic Light System using Moore FSM (Part I)

  • [اختیاری] پیاده‌سازی سیستم چراغ راهنمایی با ماشین حالت مور در C (قسمت دوم) [OPTIONAL] Implementing a Traffic Light System using Moore FSM in C (Part II)

  • [اختیاری] پیاده‌سازی ماشین حالت مور با استفاده از اشاره‌گرها [OPTIONAL] Implementing Moore FSM using Pointers

  • برنامه نویسی: پیکربندی پین‌های مورد نیاز Programming : Configuring the Required Pins

  • برنامه نویسی: پیاده‌سازی ماشین حالت Programming : Implementing the State Machine

  • برنامه نویسی: تست ماشین حالت Programming : Testing the State Machine

پایان Closing

  • سخنان پایانی Closing Remarks

نمایش نظرات

آموزش برنامه‌نویسی اسمبلی GNU ARM از صفر تا صد™
جزییات دوره
15.5 hours
116
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
1,223
4.6 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Israel Gbati Israel Gbati

Embedded Firmware Engineer نام من اسرائیل است ، من بیش از 7 سال است که در فضای سیستم جاسازی شده تحقیق و کار می کنم. در Udemy ده ها هزار دانش آموز در سیستم های جاسازی شده با تمرکز بر موضوعاتی مانند برنامه نویسی Assembly ، طراحی سیستم عامل های زمان واقعی ، توسعه سیستم عامل و پردازش سیگنال دیجیتال آموزش داده ام. من قادر به آموزش این مباحث هستم زیرا در کارهای روزمره مفاهیمی را از این مباحث استفاده می کنم. به یکی از دوره های من بپیوندید و ببینید چطور پیش می رود. همیشه می توانید درخواست بازپرداخت کنید.

BHM Engineering Academy BHM Engineering Academy

آکادمی مهندسی قرن بیست و یکم

BHM Engineering Academy BHM Engineering Academy

آکادمی مهندسی قرن بیست و یکم