Difference between revisions of "Multi-purpose Embedded System"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
− | ==Architecture | + | ==Hardware Architecture== |
− | |||
− | |||
[[Image:Mpes hw archi.png]] | [[Image:Mpes hw archi.png]] | ||
*MCU | *MCU | ||
Line 25: | Line 23: | ||
**DAC for analog control signals | **DAC for analog control signals | ||
**GPIO for digital feedback and control signals | **GPIO for digital feedback and control signals | ||
+ | |||
+ | |||
+ | ==Software Architecture== | ||
+ | |||
+ | ===RTOS=== | ||
+ | +-----------+-----------+----------------------------------------------+ | ||
+ | Application | Task 1 | Task 2 | ... | | ||
+ | +-----------+-----------+------------+----------------------+----------+ | ||
+ | Standard API | POSIX System Call | POSIX Thread | C-Lib | | ||
+ | +------------------+-----------------+----------------------+----------+ | ||
+ | Kernel | Power Management | | Task Scheduler | | ||
+ | +------------------+ +----------+-----------+ | ||
+ | | Drivers | FreeRTOS | Coroutine | | ||
+ | +------+-----+-----+-----+-----+-----+----------+-----------+ | ||
+ | Hardware | UART | ADC | DAC | NVM | PWM | ... | TIMERS | | ||
+ | +------+-----+-----+-----+-----+-----+----------+ | ||
+ | *The task scheduler is based on [http://www.freertos.org/ FreeRTOS] V4.1.3 incorporating coroutine developed by [http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html Simon Tatham]. The scheduler API is wrapped by the [http://www.die.net/doc/linux/man/man2/ POSIX] Thread API. | ||
+ | **e.g. pthread_create(), usleep(), etc. | ||
+ | *Software drivers are developed to allow users at Application Level to use the hardware (e.g. ADC, DAC, UART, NVM etc) through the [http://www.die.net/doc/linux/man/man2/ POSIX] System call API. | ||
+ | **e.g. open(), write(), read(), ioctl(), lseek(), etc. | ||
+ | *The most up-to-date development can be found at repository [http://chungyan5.no-ip.org/vc/?root=freertos_posix freertos_posix] | ||
+ | |||
+ | |||
+ | ===GUI=== | ||
+ | |||
+ | |||
+ | ===TCP/IP Stack=== |
Revision as of 02:08, 26 November 2008
Hardware Architecture
- MCU
- MCU can be 8-bit/16-bit/32-bit
- MCU should have sufficient RAM (i.e. no external RAM required)
- MCU should have program Flash (i.e. no external program flash required)
- Data Memory
- Use serial bus (I2C/SPI) to expand data memory to save I/O pins
- Need a file system to access the data
- EEPROM for small block of re-writable data
- Flash for large block of re-writable data
- Communication
- RS232 for short distance one-to-one communication with PC
- RS485 for longer distance networked communication
- USB for USB communication with PC
- Ethernet for Internet connectivity
- GPIB for automated test equipment
- User Interface
- Graphical displays (LCD, VFD, etc.)
- Keypad for input
- Sensory Control
- ADC for analog feedback signals
- DAC for analog control signals
- GPIO for digital feedback and control signals
Software Architecture
RTOS
+-----------+-----------+----------------------------------------------+ Application | Task 1 | Task 2 | ... | +-----------+-----------+------------+----------------------+----------+ Standard API | POSIX System Call | POSIX Thread | C-Lib | +------------------+-----------------+----------------------+----------+ Kernel | Power Management | | Task Scheduler | +------------------+ +----------+-----------+ | Drivers | FreeRTOS | Coroutine | +------+-----+-----+-----+-----+-----+----------+-----------+ Hardware | UART | ADC | DAC | NVM | PWM | ... | TIMERS | +------+-----+-----+-----+-----+-----+----------+
- The task scheduler is based on FreeRTOS V4.1.3 incorporating coroutine developed by Simon Tatham. The scheduler API is wrapped by the POSIX Thread API.
- e.g. pthread_create(), usleep(), etc.
- Software drivers are developed to allow users at Application Level to use the hardware (e.g. ADC, DAC, UART, NVM etc) through the POSIX System call API.
- e.g. open(), write(), read(), ioctl(), lseek(), etc.
- The most up-to-date development can be found at repository freertos_posix