UBCAgroBot/AppliedAI

Jerome's RTOS Work

Ishaan-Datta opened this issue · 0 comments

Hard real-time systems have strict, non-negotiable timing constraints where tasks must complete within a guaranteed timeframe.

  • Use real-time operating systems (RTOS) to ensure deterministic scheduling and response times.
  • Prioritize critical tasks and allocate fixed time slots for their execution.

Soft real-time systems have timing constraints that are important but not as strict as hard real-time systems. Missing a deadline is undesirable but not catastrophic.

  • Implement priority scheduling to ensure critical tasks are given preference.
  • Set priorities based on the criticality of the task.

Task Scheduling: Use appropriate task scheduling algorithms to ensure timely execution.

  • Employ priority-based scheduling algorithms to give precedence to high-priority tasks.
  • Consider rate monotonic scheduling for periodic tasks.

Real-Time Clocks and Timers:

  • Utilize hardware-based real-time clocks for accurate timekeeping.
  • Set timers to trigger periodic or one-shot tasks at precise intervals.

Deadline Monitoring:

  • Monitor task execution to ensure that deadlines are not missed.
  • Implement mechanisms to handle tasks that exceed their allotted time.

Deterministic Execution Paths: Minimize variations in execution times to achieve deterministic behavior.

  • Profile and optimize code to reduce execution time variability.
  • Minimize the use of non-deterministic constructs in the code.

Real-Time Guarantees: Provide guarantees for response times and completion times.

  • Analyze worst-case execution times (WCET) to determine task execution bounds.
  • Use scheduling and resource allocation techniques to meet guarantees.

Input and Output Constraints: Minimize the latency associated with input and output operations.

  • Use asynchronous I/O operations to overlap computation and communication.
  • Optimize data serialization and deserialization for efficient communication.

Task Offloading: Offload non-critical tasks to secondary processors or devices.

  • Identify tasks that can be offloaded without affecting critical functions.
  • Distribute computational load to improve overall system performance.

Interrupt Handling:

  • Prioritize interrupts based on criticality.
  • Minimize interrupt service routine (ISR) execution time.

Resource Reservation: Reserve resources such as CPU time, memory, and bandwidth for critical tasks.

  • Use resource reservation mechanisms to guarantee availability for critical tasks.
  • Monitor and enforce resource usage limits.

Real-Time Networking: Minimize communication latency in real-time networks.

  • Use Real-Time Publish-Subscribe (RTPS) middleware for efficient and low-latency communication.
  • Optimize network configurations for minimal jitter and latency.

Testing and Validation:

  • Use stress testing and worst-case scenario testing to ensure the system meets real-time constraints.
  • Simulate different operating conditions to verify performance under varying workloads.

Continuous Monitoring:

  • Use real-time monitoring tools to track task execution times, resource usage, and system health.
  • Implement alarms or notifications for deviations from expected performance.