Embedded and Real Time Systems for Hardware Engineers

מק"ט: #4140 | משך קורס: 40 שעות אק'

בשנים האחרונות, הקו בין חומרה לתוכנה התטשטש. מהנדסי חומרה יוצרים את החלק המרכזי של מעגלים דיגיטליים חדשים בשפות תכנות כמו VHDL ו- Verilog, ולרוב מייעדים אותם ל- CPLDs ו-FPGAs . מערכת Real Time היא כל מערכת לעיבוד מידע שצריכה להגיב לקלט חיצוני תוך זמן מסוים וסופי. המחשב הוא רכיב במערכת הנדסית גדולה – מערכת משובצת מחשב.
הקורס למערכות Real Time ומערכות משובצות מחשב למהנדסי חומרה מציג את תהליכי הפיתוח של מערכות מסוג זה, ואת כלי החומרה והתוכנה למהנדסי חומרה, שרוצים להכיר את "צד התוכנה" של המערכת. נושאים מרכזיים שילמדו בקורס: תכנות בשפת C, עקרונות בסיסיים ב-Embedded/Real Time Systems, עיצוב ופיתוח של חומרה ותוכנה, RTOS API.


In recent years, the line between hardware and software has blurred. Hardware engineers create the bulk of their new digital circuitry in programming languages such as VHDL and Verilog and often target it to CPLDs and FPGAs. Using soft processors the design and development of embedded system hardware and software is now closer.
A Real Time system is any information processing system which has to respond to externally generated input stimuli within a finite and specified period. The computer is a component in a larger engineering system – Embedded Computer System.
This course introduces the development process for such systems, the hardware and software tools and best practices for hardware engineers who wants to become familiar with the "software side" of such systems.
Key topics:

  •  C programming
  •  Basic Principles in Real Time/Embedded systems
  •  Hardware and software design and development


הקורס פעיל לקבוצות מטעם ארגונים בלבד, ניתן לשלוח פנייה רק אם מדובר בקבוצה
*שדות חובה
PDF version


 Understand and write c code , understand the process of RTE system development and key features in hardware and RTOS

קהל יעד

 HW, FPGA and DSP Eng. That interface SW designers and programmers

תנאי קדם

 Academic background is an advantage


C programming

  • Main function (and start-up / shutdown)
  • Types – structures, unions, enumerators, casting
  • Constants, Marcos
  • Arrays
  • Operators
  • Endianess – big endian, little endian
  • Scope qualifier (local, import, export)
  • Bit Manipulation
  • Expressions
  • Pointers
  • Flow Control
  • Functions, prototypes, ellipsis
  • Memory allocation / de-allocation
  • Data Structures - Linked lists, Trees
  • Pre-processing and conditional code
  • Runtime C Library (String manipulation, others)

Program configuration

  • Hard coded values
  • Command line arguments
  • Config File
  • Remotely set values

Assembly code

  • Compilers has conventions (registers usage)
  • Assembly vs. C programming
  •  Integrate Assembly code in C code

Program typical sections: TEXT, DATA, BSS, HEAP, STACK


SW development tool: Compiler, Linker, Debugger, Librarian


Embedded Programming versus Desktop programming

  • Infrastructure (BSP vs. BIOS)
  • Configuration / Command line (config file usage)
  • Program loading
  • Reliability
  • Remote upgrade
  • Self recovery
  • Debugging / Profiling

Typical project

  • C code file structure
  • Header file structure
  • Core definitions
  • Code documentation
  • Multiple header file inclusion prevention
  • Support C++ compilers

Code testing methodology (unit level)

Object Based design attitude

Embedded SW

  • Characteristics
  • Embedded SW layers
  • Development Env/Tools



  • General
  • Timing
  • Tasks (TCB, priorities, context switch, stack)
  • Priority inheritance
  • Reentrancy
  • Semaphores
  • Mail-Box
  • Interrupts and the scheduler
  • ISR <=> Tasks synchronization
  • Address space
  • Buffers pools (Memory allocation)
  • IDLE task
  • Starvation
  • Scheduler, Jobber
  • Selecting an RTOS kernel
  • Safely starting multi-task application
  • Multi-process, Multi-Task
  • Kernel types (executive, monolithic, mKernel)
  • Using tools that are RTOS kernel aware



  • Requirements
  • HW/SW partitioning
  • SW Design
  • Implementation consideration (Coding, Unit testing)
  • Version management
  • QA
  • Application-independent infrastructure
  • Debugging & Testing

Embedded Firmware

  • BOOT
  • BSP
  • SSP
  • Device Drivers
  • Debugging & Testing


  • UART
  • USB
  • Ethernet
  • IP basics


  • GPIOs
  • Cache
  • MMU ,Memories
  • DMA
  • Interrupt Controller


  • PPC
  • ARM
  • MIPS



  • SOP & POS structure
  • CPLD architecture
  • CPLD’s advantages& disadvantages



  • FPGA basic cell
  • Altera, Xilinx Devices
  • SOPC
  • FPGA as DSP
  • FPGA Hard Copysolution



  • Full Custom ASIC
  • Cell Based ASIC
  • ASIC vs.FPGA



  • Hardware test foundations
  • Boundary Scan Methodology
  • JTAG & JTAG chain
  • FPGA recourses  for JTAG support & basic JTAG cell