This week, I worked on embedded programming, which involves competencies in various aspects such as programming languages, debugging and testing, as well as an understanding of hardware and operating systems.
As part of the group assignment, Dr. Sujit and I conducted a study that included the following tasks:
Comparison of Toolchains – To analyze and compare different embedded system toolchains based on their functionality, compatibility, and efficiency in various development environments.
Evaluation of Development Workflows –To examine the development workflows for different embedded architectures, assessing factors such as ease of use, debugging capabilities, and optimization techniques.
Identification of Best Practices –To identify best practices for selecting and utilizing toolchains and workflows, ensuring optimal performance, reduced development time, and enhanced reliability in embedded system projects.
1. Von Neumann Architecture:
Definition: A computing architecture in which program instructions and data share the same memory space.
Characteristics: This architecture follows a sequential processing model, utilizing a single shared bus for both instructions and data. The CPU retrieves instructions from memory, decodes them, and executes them in sequence.
Bugs/Limitations: A key limitation is the Von Neumann bottleneck, where the shared bus for data and instructions can create a performance constraint, potentially slowing down the CPU and limiting overall system throughput.
2. Harvard Architecture:
Definition: Unlike the Von Neumann architecture, this design features separate memory storage for data and instructions, enabling simultaneous access to both.
Advantages: Enhances performance by eliminating the Von Neumann bottleneck, allowing data and instructions to be fetched concurrently.
Usage: Commonly implemented in embedded systems and specialized processors for improved efficiency and speed.
Von-Neumann Architecture Vs Harvard Architecture