Printf function in ISR is not supported because printf function is not reentrant, thread safe and uses dynamic memory allocation which takes a lot of time and can affect the speed of an ISR up to a great extent.
With embedded system, it is possible to replace dozens or even more of hardware logic gates, input buffers, timing circuits, output drivers, etc. with a relatively cheap microprocessor.
ISR does not return anything. An ISR returns nothing because there is no caller in the code to read the returned values.
Interrupt latency is the time required for an ISR responds to an interrupt.
DMA address deals with physical addresses. It is a device which directly drives the data and address bus during data transfer. So, it is purely physical address.
Volatile- it is about instructing the compiler that a variable will change
Constant- it is about instructing the compiler that a variable will not change.
Real-time embedded systems are computer systems that monitor, respond or control an external environment. This environment is connected to the computer system through actuators, sensors, and other input-output interfaces.
We can use function inside ISR as long as that function is not invoked from other portion of the code.
Different types of IPC mechanism are -
☛ Named pipes or FIFO
☛ Shared memory
☛ Message queue
Yes, we can have constant volatile variables