We may earn an affiliate commission when you visit our partners.
Austin Kim

Comprehensive and practical guide of key features of  Armv8-A architecture

Smartphones, AI System-on-Chip (SoC), Electric Vehicle Automotive system are in Armv8-A based Arm processors. Currently, in the system software industry, knowledge of the Armv8-A architecture is considered essential as it is in high demand. But for system software engineers, there is no lecture covering Armv8-A architecture so far.

Read more

Comprehensive and practical guide of key features of  Armv8-A architecture

Smartphones, AI System-on-Chip (SoC), Electric Vehicle Automotive system are in Armv8-A based Arm processors. Currently, in the system software industry, knowledge of the Armv8-A architecture is considered essential as it is in high demand. But for system software engineers, there is no lecture covering Armv8-A architecture so far.

This course is for software engineers and students who want to quickly learn how to develop quality software for Armv8-A architecture without reading long technical reference document. The contents of this course covers practical skills or tips which can be applied your real project once you complete this course.

Key features;

The following are the key features of this course: 

  • Overview of the primary concepts of Armv8-A

  • Practical TRACE32 debugging exercises

  • In-depth practical case studies  

Why we need to learn about Arm architecture?

There are several reasons why we need to learn about Arm architecture. 

  • Understanding ARM architecture helps in diagnosing and resolving software issues more effectively.

  • It strengthens core skills needed to become better embedded systems engineer.

  • Arm knowledge provides a solid foundation to analyze and comprehend complex software architectures

  • Learning Arm architecture offers deeper insight into startup code and low-level kernel operations

  • Arm expertise improves reverse engineering abilities, allowing you to dissect and understand compiled software more easily  

If you would like to upgrade engineering ability, this course is right for you.

Enroll now

What's inside

Learning objectives

  • The use of register
  • Assembly instruction
  • Exception level and privilege level
  • Exception handling
  • Aapcs: procedure call standard for the arm architecture
  • Trustzone
  • Virtualization
  • Memory architecture

Syllabus

Introduction
Why we need to learn about Arm architecture - Part.1
Why we need to learn about Arm architecture - Part.2
Registers
Read more
Armv7-A: Introducing registers
Armv7: Debugging register using TRACE32 (with course material)
Armv7: CPSR reigster debugging via TRACE32
Armv8-A: Introducing registers
Armv8: Debugging general-purpose registers (TRACE32) - Part1
Armv8: Debugging general-purpose registers (TRACE32) - Part2
Armv8: Debugging general-purpose registers (TRACE32) - Part3
Armv8: Debugging PSTATE using TRACE32
Armv8: SP_ELx register using TRACE32
Introducing Assembly instruction
What is it challenging to learn about assembly instruction?
What can we do using assembly instruction: 1. Bringup
What can we do using assembly instruction: 2. Develop device driver
What can we do using assembly instruction: 3. Improve debugging ability
Basic form of assembly instruction
Assembly Instruction (Part1): Arithmetic operation
ADD instruction
ADD instruction (Debugging TRACE32)
SUB instruction
SUB instruction (Debugging TRACE32)
Assembly Instruction (Part.2): Logical operation
AND instruction
AND instruction (TRACE32 debugging)
ORR instruction
ORR instruction (TRACE32 debugging)
ORN instruction
BIC instruction
EOR instruction
Assembly Instruction (Part.3): Branch operation
B instruction
BL instruction
BR instruction - Armv8
BLR instruction - Armv8
BR, BLR instruction (TRACE32 Debugging Practice) - Part.1
BR, BLR instruction (TRACE32 Debugging Practice) - Part.2
Assembly Instruction (Part.4): Memory Access operation
LDR instruction - Part.1
LDR instruction - Part.2
STR instruction - part.1
STR instruction - part.2
Assembly Instruction (Part.5): Conditional branch operation
Introduction to conditional operation
CBZ instruction
CBNZ instruction
TBZ instruction
TBZ instruction (TRACE32 debugging)
TBNZ instruction
TBNZ instruction (TRACE32 debugging)
Assembly Instruction (Part.6): Exception-generating instruction
SVC instruction
HVC instruction
SMC instruction
Exception Level (Part1): Introduction to Exception level in Armv8
Introduction to Exception level in Armv8 architecture (with course material)
Exception level-Arm specification review
Why BSP software engineer should learn Exception Levels?
Exception Level (Part2): How EL0 and EL1 is used in Linux system
Details of EL0(User application) in Linux system
Example code at EL0 in Linux system
Component of Virtualization and TrustZone to understand EL0 change
Exception level change at EL0 in virtualization (Big picture)
Highlight: Exception handling at EL1
Details of EL1(Linux kernel) in Linux system
Memory system in case of Memory abort
Memory abort Exception handling at EL1
IRQ(Interrupt) Exception handling at EL1
IRQ(Interrupt) handling - Software point of view
Exception Level (Part3):Exception level switching during boot sequence
Background: Boot sequence (with course material)
Exception level with boot sequence: EL3
Exception level with boot sequence: EL2
Exception level with boot sequence: EL1
Exception level switching with Boot sequence in Hypervisor
ELn switch: EL3 to EL2
ELn switch: EL2 to EL1
Summary
Exception Level (Part4): How to read exception level - PSTATE.EL and CurrentEL
About PSTATE.EL
How to access PSTATE.EL
Reference code to access CurrentEL
Understand how exception levels are switched by practical practices
Identify exception level and PSTATE

The learners will understand the bit encoding which represents the exception levels

Enter EL1 from EL0 via SVC instruction
Enter EL2 from EL1 via HVC instruction
Processor mode (Part1): Introducing processor mode in Armv7-A
Introducing Aarch32 state in Armv8-A
Key features of the Aarch32 state
Why need to learn about Operating mode (Processor mode)
Processor mode (Part2): Each Processor mode in Armv7-A
User mode (with course material)
Supervisor mode
IRQ mode and FIQ mode
Abort mode
Undefined mode
Exception (Part1) : Introducing Exception

Save this course

Save Fundamentals of Arm architecture - Armv8-A to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Fundamentals of Arm architecture - Armv8-A with these activities:
Review Assembly Language Fundamentals
Solidify your understanding of assembly language concepts, which are crucial for understanding Armv8-A assembly instructions.
Show steps
  • Review basic assembly syntax and addressing modes.
  • Practice writing simple assembly programs.
  • Understand the relationship between assembly and machine code.
Study 'Operating Systems: Design and Implementation'
Gain a deeper understanding of OS concepts relevant to Arm architecture.
View Melania on Amazon
Show steps
  • Read the chapters on memory management and exception handling.
  • Relate the concepts to the Armv8-A architecture and its exception levels.
  • Consider how these concepts are implemented in Linux on ARM.
Read 'ARM Assembly Language: Fundamentals and Techniques'
Deepen your understanding of ARM assembly language with a dedicated textbook.
View Melania on Amazon
Show steps
  • Read the chapters covering instruction sets and addressing modes.
  • Work through the examples and exercises in the book.
  • Relate the book's content to the course's assembly instruction sections.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Assembly Code Debugging Exercises
Sharpen your debugging skills by practicing with assembly code snippets and identifying errors.
Show steps
  • Find online resources with ARM assembly debugging exercises.
  • Use a debugger (like TRACE32) to step through the code and identify issues.
  • Focus on common errors like incorrect register usage or memory access violations.
Create a Cheat Sheet for Armv8-A Instructions
Consolidate your knowledge of Armv8-A assembly instructions by creating a concise cheat sheet for quick reference.
Show steps
  • List the most common Armv8-A instructions covered in the course.
  • Include a brief description of each instruction's purpose and syntax.
  • Organize the cheat sheet for easy lookup during debugging or coding.
Implement a Simple Program in Arm Assembly
Apply your knowledge by implementing a small program (e.g., string manipulation, simple calculator) using Arm assembly.
Show steps
  • Choose a simple programming task suitable for assembly implementation.
  • Write the assembly code, paying attention to register usage and memory management.
  • Test and debug the program using TRACE32 or a similar debugger.
Presentation on Arm TrustZone
Create a presentation explaining Arm TrustZone technology and its security implications.
Show steps
  • Research Arm TrustZone architecture and its security features.
  • Prepare slides explaining the key concepts and benefits of TrustZone.
  • Present the material to a peer or record a video presentation.

Career center

Learners who complete Fundamentals of Arm architecture - Armv8-A will develop knowledge and skills that may be useful to these careers:
System Software Engineer
A System Software Engineer develops and maintains the low-level software that supports the execution of applications and manages hardware resources. Given that Armv8-A is considered essential knowledge in the system software industry, this course directly prepares you for this role. The course's comprehensive coverage of Arm architecture, including registers, assembly instructions, and exception handling, provides a solid foundation for system-level programming. As a System Software Engineer, you will find the practical debugging exercises and in-depth case studies invaluable for developing high-quality software for Arm-based systems.
Embedded Systems Engineer
An Embedded Systems Engineer designs, develops, and tests software and hardware for embedded systems, which are specialized computer systems within larger devices. This course on Armv8-A architecture provides a solid foundation for understanding the core principles behind these systems. You'll gain insights into assembly instructions, memory architecture, and exception handling, all of which are critical for optimizing performance and resolving issues in embedded environments. As an Embedded Systems Engineer, knowledge of Arm architecture strengthens your core skills, provides deeper insight into startup code and low-level kernel operations, and improves your ability to diagnose and resolve software issues more effectively. You may find the debugging exercises to be particularly useful.
Device Driver Developer
A Device Driver Developer creates software that enables the operating system to communicate with hardware devices. This course's in-depth coverage of Arm architecture, particularly assembly instructions and memory access operations, is highly beneficial for writing efficient and reliable device drivers. You will gain insights into how to directly control hardware components and manage memory resources, which are essential skills for this role. The practical debugging exercises included in the course allows you to test and refine your device driver code. The contents of this course cover practical skills or tips which can be applied your real project once you complete this course.
Operating Systems Developer
An Operating Systems Developer creates and maintains the core software that manages computer hardware and provides services for applications. Understanding Arm architecture is essential for optimizing operating system performance on Arm-based devices. This course helps build a foundation in the exception levels, privilege levels, and memory architecture, all of which are critical for operating system development. The course's coverage of exception handling and virtualization is particularly relevant, as these are key aspects of operating system design. The in-depth practical case studies covered in class provide valuable experience for an Operating Systems Developer.
Kernel Developer
A Kernel Developer specializes in the development and maintenance of the operating system kernel, the core of an operating system. A deep understanding of processor architecture such as Armv8-A is crucial. The focus on exception levels, memory architecture, and assembly instructions allows you to delve into the intricacies of kernel operations. Specifically, understanding exception handling, privilege levels, and memory management, as covered, are vital for writing stable and efficient kernel code. The provided debugging exercises help build your skills in diagnosing and resolving kernel-level issues. For anyone who seeks a career as a Kernel Developer, this course would be a good fit.
AI System Architect
An AI System Architect designs and implements the hardware and software infrastructure for artificial intelligence and machine learning systems. This course helps provide a solid foundation for optimizing AI workloads on Arm-based System on Chips. You'll gain insights into memory architecture, assembly instructions, and virtualization, which are critical for maximizing the performance and efficiency of AI applications. The course's coverage of exception handling and TrustZone can also helps ensure the security and reliability of these systems. The practical case studies included in this course provide valuable experience for an AI Systems Architect.
Automotive Software Engineer
An Automotive Software Engineer develops software for embedded systems in electric vehicles and other automotive applications. A strong understanding of Arm architecture, as taught in this course, is essential because modern automotive systems rely heavily on Arm-based processors. The course's coverage of memory architecture, exception handling, and assembly instructions is particularly relevant. In a new job as Automotive Software Engineer, you will gain insights into how to develop and debug software that interacts directly with automotive hardware, ensuring safety and reliability. The in-depth case studies studied in this course will be valuable.
Firmware Engineer
A Firmware Engineer develops low-level software that controls hardware devices. Understanding ARM architecture is crucial for optimizing firmware performance and ensuring compatibility. This course on Armv8-A architecture is highly relevant because it covers topics such as assembly instructions, memory architecture, and exception handling, all of which are essential for firmware development. The practical TRACE32 debugging exercises included really help hone debugging skills, which are used often by Firmware Engineers. You'll gain insights into how to write efficient and reliable firmware for ARM-based systems. Knowledge of ARM architecture strengthens your core skills, provides deeper insight into startup code and low-level kernel operations, and improves your ability to diagnose and resolve software issues more effectively.
Reverse Engineer
A Reverse Engineer analyzes compiled software to understand its functionality, often without access to the source code. This course helps improve reverse engineering abilities by providing a strong foundation in Arm architecture and assembly language. You can use your knowledge of registers, assembly instructions, and memory architecture to dissect and understand compiled Arm software more easily. The course's in-depth practical case studies and debugging exercises are particularly helpful for someone in this role. Reverse engineers will find that the information presented in this course is highly valuable and allows them to more easily analyze compiled software.
Security Researcher
A Security Researcher investigates software and hardware systems for vulnerabilities. This course on Armv8-A architecture may be useful for security researchers who focus on Arm-based systems. The course's coverage of exception handling, TrustZone, and virtualization helps in identifying potential security flaws in these areas. Understanding assembly instructions and memory architecture also provides the foundation needed to analyze malware and other security threats targeting Arm platforms. You'll gain skills that improve reverse engineering abilities, allowing you to dissect and understand compiled software more easily.
Computer Architect
A Computer Architect researches, designs, and develops computer hardware. This course, while focused on the software side of Arm architecture, provides valuable insights into how software interacts with the underlying Arm hardware. Understanding memory architecture, exception handling, and assembly instructions can help you design more efficient and software-friendly computer systems. Computer architects often need to understand the software implications of their hardware designs, making this course relevant. The knowledge you gain can help you make informed decisions about hardware-software trade-offs and optimize system performance.
Application Developer
An Application Developer creates software applications for various platforms, including mobile and embedded devices. This course may be useful in understanding how applications interact with the underlying hardware on Arm-based systems. You'll gain knowledge of assembly instructions and memory architecture, which can help optimize application performance and debug issues. The section on exception levels and privilege levels may be helpful for understanding application security and system-level interactions. Application Developers who want to know more about the systems that their applications run on would benefit.
Software Architect
A Software Architect designs the overall structure of software systems. This course may be useful for Software Architects who need to understand the implications of Arm architecture on system design. The course provides knowledge of virtualization, memory architecture, and exception handling, all of which are relevant to designing efficient and secure systems. Awareness of these concepts is crucial for making informed decisions about hardware and software trade-offs. Furthermore, understanding the impact of ARM on your software systems is critical for the long-term success of a Software Architect.
Hardware Engineer
A Hardware Engineer designs and develops physical computer components and systems. While this course primarily focuses on the software aspects of Arm architecture, it may provide a Hardware Engineer with a better understanding of how software interacts with Arm-based hardware. Gaining knowledge of memory architecture, exception handling, and assembly instructions may help in designing hardware that is optimized for software performance. Often, hardware engineers work closely with software engineers to build complete systems, so knowing the information from this course is very useful. The knowledge from this course will allow hardware engineers to make better decisions.
Technical Support Engineer
A Technical Support Engineer provides assistance to customers experiencing technical issues with software or hardware. This course can help Technical Support Engineers who work with Arm-based systems to better understand the underlying architecture and troubleshoot problems more effectively. You may find your knowledge of assembly instructions, memory architecture, and exception handling to be useful for diagnosing and resolving issues. This course is useful for becoming a better Technical Support Engineer for Arm-based products.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Fundamentals of Arm architecture - Armv8-A.
Provides a comprehensive guide to ARM assembly language programming. It covers the fundamentals of ARM architecture and assembly language, including instruction sets, addressing modes, and memory management. It valuable resource for understanding the low-level details of ARM programming and complements the course material by providing practical examples and exercises. This book is commonly used as a textbook at academic institutions.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser