source code
- programs in c
- hardware and development environment
- universal asynchronous receiver/transmission (uart)
- sensor reading with tfmini lidar
- servo motor control programming
- timer interrupt handling
- intro into embedded linux
- real time dnn inferencing
- board to board communication
- implement an RC car’s components: milestone01
- python on pi to communicate with hifive: milestone02
material
the purpose of this repository is to illustrate material pertaining to the course embedded systems. An embedded system is an intelligent system with special-purpose computation capabilities, (e.g. smart appliance, cars, medical devices, etc.) The material will cover the hardware and software architecture of embedded systems, as how to program a microprocessor to interact with the physical world through sensors and actuators.
- introduction to embedded systems, defining embedded systems, differentiating embedded systems from general-purpose computers.
- embedded software echopsystem, introduction to tools and enviroments for developing embedded software (build toolchain, gnu make, ide, git)
- c programming refresher
- RV32 ISA, a brief introduction to RISC-V assembly language
- microprocessor's memory address space
- i/o how to interact with the physical world using sensors and actuators
- interrupt, difference between interrupt and polling, how to use them, and the implications of using them
- concurrency and threads, how to utilize the available parallelism in the hardware and develop concurrent embedded software
- scheduling and real-time scheduling concepts in linux
- cpu and memory architecture, how instructions get executed in the hardware and the micro-architecture of a basic RISC-V, single-cycle processor.
- introduction to c programming
- introduction to the embedded software development enviroment - sensor reading
- servo moto control - timers
- introduction to embedded linux - linux scheduler
- real time dnn inference
- self driving car
- microcontrollers and embedded processors for interacting with the physical enviroment using i/o devices