Learning Notes

These are the study notes we organized during our project. We hope they will be helpful to you in the relevant topics.

Quality Assurance of Embedded System

Quality assurance (QA) is any systematic process of determining whether a product or service meets specified requirements. QA establishes and maintains set requirements for developing or manufacturing reliable products. A quality assurance system is meant to increase customer confidence and a company’s credibility, while also improving work processes and efficiency, enabling a group or a company to better compete with others. In terms of software development, QA practices seek to prevent malfunctioning code or products.


Software quality assurance (SQA) systematically finds patterns and the actions needed to improve development cycles. Finding and fixing coding errors can have unintended consequences; it is possible to fix one thing yet break other features and functionality at the same time. SQA has become important for developers as a means of avoiding errors before they occur, saving development time and expenses. Even with SQA processes in place, an update to software can break other features and cause defects—commonly known as bugs.


There have been numerous SQA strategies. For example, Capability Maturity Model Integration (CMMI) is a performance improvement-focused SQA model. CMMI works by ranking maturity levels of areas within an organization and identifying optimizations that can be used for improvement. Rank levels range from being disorganized to being fully optimal. Software development methodologies have developed over time that rely on SQA, such as Waterfall, Agile, and Scrum. Each development process seeks to optimize work efficiency.


- Waterfall: The traditional linear approach to software development involves gathering requirements, formalizing design, implementing code, testing code, and release. It is often seen as slow compared to alternative development methods.

- Agile: A team-oriented software development methodology where each step is approached as a sprint. Agile development is highly adaptive but less predictive.

- Scrum: Combines elements of both processes with developers split into teams to handle specific tasks, each broken down into multiple sprints.


In order to implement a QA system, goals for the standard should be set. Management must consider the advantages and trade-offs of each approach to maximize efficacy, reduce costs, or minimize errors. Management should be willing to implement process changes, work together to support the QA system, and establish standards for quality.


Careers in SQA include job options like SQA engineers, SQA analysts, and SQA test automation. SQA engineers monitor and test software through development, while SQA analysts monitor the implications and practices of SQA over software development cycles. SQA test automation involves creating programs to automate the SQA process, comparing predicted outcomes with actual outcomes for constant testing.


The goals of SQA in various stages of software development include:

1. Requirement analysis

2. Software specifications

3. Design

4. Coding

5. Test

6. Maintenance


Requirement Analysis:

- Ensure the system requested by the customer is feasible.

- Avoid misunderstandings between developers and customers.

- Provide users with appropriate software systems actually built to meet their stated needs.

- Ensure system requirements are clear, complete, and consistent.


Software Specifications:

- Establish requirement tracking document to ensure consistency with system requirements.

- Improve the flexibility, maintainability, and performance of the system.

- Establish a testing strategy and development schedule.

- Design a formal change procedure for the system.


Design:

- Establish standards to describe the design and ensure they are followed.

- Document changes made to the design.

- Ensure coding begins only after system design components are approved.


Coding:

- Ensure code follows established standards.

- Properly test and integrate code.

- Check if code writing follows the established schedule.


Test:

- Establish and adhere to testing plans.

- Ensure the created test plan meets all system specifications.

- Confirm software remains consistent with specifications after testing.


Maintenance:

- Maintain consistency between code and documentation.

- Monitor change control processes.

- Review code modifications without damaging the entire code structure.


Software testing is an integral part of software quality assurance. Testing saves time, effort, and cost, facilitating the production of a quality end product. Various software tools and platforms available for developers to automate and orchestrate testing include Selenium, Jenkins, and Postman.


Advantages of QA include ensuring products are free of defects, meeting customer needs, loyalty, cost reduction, preventing serious issues, etc. Disadvantages of QA require substantial investment in people and processes, impacting delivery dates, but are necessary steps to ship a quality product and avoid more serious consequences.


Quality Assurance of EV Embedded System

Ensuring the quality of an Electric Vehicle (EV) embedded system is crucial to deliver a safe and reliable product. Here's a step-by-step guide on how to perform quality assurance for an EV embedded system:

Quality Assurance Plan:

  • Develop a quality assurance plan outlining your objectives, strategies, and testing procedures specific to the EV embedded system.

Requirements Verification:

  • Ensure that the system requirements are clear, complete, and consistent, including functional, performance, and safety requirements.

Static Analysis:

  • Perform code reviews and static analysis to detect potential programming errors and defects.

  • Ensure compliance with coding standards and best practices.

Dynamic Testing:

  • Conduct unit testing to verify the functionality of each module or component.

  • Perform integration testing to validate interactions between different modules.

  • Execute system testing to validate overall functionality, performance, and stability.

  • Simulate or perform emulated testing to mimic various driving scenarios and abnormal conditions.

Safety Testing:

  • Carry out safety assessments, including vulnerability analysis and threat modeling.

  • Perform attack and penetration testing to evaluate system security and resilience.

Health Monitoring:

  • Implement a health monitoring system to track and manage the system's state.

  • Use sensors and diagnostic tools to detect faults and take preventive measures.

Regulatory Compliance:

  • Ensure compliance with industry regulations and standards, such as ISO 26262, specific to the automotive industry, and other relevant EV regulations.

Performance Testing:

  • Evaluate the performance of the EV embedded system, including battery life, motor efficiency, and driving range.

  • Conduct environmental testing to verify system performance under various weather conditions.

Data Logging and Analysis:

  • Implement data logging systems to monitor and analyze system operations and performance data.

  • Use data analysis tools to identify issues, trends, and improvement opportunities.

Verification and Validation:

  • Perform verification and validation activities to ensure that the system meets requirements and quality standards.

  • Execute validation testing to ensure the system performs as expected in real-world scenarios.

Documentation and Reporting:

  • Document all testing activities, results, and findings for future reference.

  • Generate a final quality assurance report summarizing the testing outcomes.

Continuous Improvement:

  • Continuously improve the quality assurance process to adapt to new requirements and technologies.

  • Learn from testing and failures, and make improvements to the system and processes.

Quality assurance is vital for EV embedded systems as they directly impact vehicle performance, safety, and reliability. Regular testing and assessments help ensure that EV systems function under various conditions and meet regulatory requirements and user expectations.

EV_ECU

Introduction:

The Electric Control Unit (ECU) is a device that manages the engine and controls the operation of the electric vehicle. This critical piece of electronic equipment controls sensors, actuators, and other components of the vehicle’s electrical system. The ECU is in charge of monitoring the electric vehicle’s electrical systems and ensuring that they are operating at peak efficiency. It accomplishes this by controlling various components such as the battery and motors, as well as managing communication between the various systems within the vehicle.


How does the ECU work?

The ECU receives input from various sensors located throughout the vehicle, including the accelerator pedal position sensor, battery temperature sensor, and motor temperature sensor. The ECU adjusts various settings based on this input, such as the motor’s power output, the amount of energy sent to the battery during regenerative braking, and the amount of energy used for auxiliary systems such as air conditioning and heating. To ensure that the battery is charged safely and efficiently, the ECU communicates with the onboard charging system. It can adjust the charging rate based on factors include the state of charge and temperature of the battery, as well as the amount of current available from the charging station.


ECU Components Breakdown:

- Core Components:

  - Microcontroller: The ECU’s brain, managing tasks.

  - Memory Types: SRAM (Fast, volatile memory), EEPROM (Non-volatile, editable memory), Flash (Stores firmware and data).

- Inputs:

  - Supply Voltage and Ground: Power sources for the ECU.

  - Digital Inputs: Receive binary signals.

  - Analog Inputs: Process variable signal inputs.

- Outputs:

  - Actuator Drivers: Manage components like injectors, relays, and valves.

  - H-Bridge Drivers: Control servomotors for precise movement.

  - Logic Outputs: Send signals based on processed data.

- Communication Elements:

  - Housing: Protective casing for ECU components.

  - Bus Transceivers: Facilitate communication, examples being K-Line, CAN, and Ethernet.

- Embedded Software:

  - Boot Loader: Initiates the ECU’s operating system.

  - ECU and Software Identifiers: Handle metadata, versions, and checksums.

  - Functional Software Routines: Execute specific ECU tasks.

  - Configuration Data: Store settings and preferences.


Common Types of Electronic Control Unit:

- Engine Control Unit

- Body Control Module (BCM)

- Transmission Control Unit (TCU)

- Powertrain Control Module (PCM)

- Telematics Control Module

- Battery Management System


Advantages of ECU:

- Performance optimization

- Improved efficiency

- Improved safety

- Lower maintenance costs


Conclusion:

The performance of electric vehicles is greatly influenced by the ECU. It makes sure the car runs smoothly and efficiently by managing components including the battery, motor, and charging system. Understanding the importance of the ECU in EV will be critical for the future of transportation as the demand for electric vehicles increases rapidly.

Embedded System

FreeRTOS_Notebook

ESP32