Difference between revisions of "Multi-purpose Embedded System"

From OpenCircuits
Jump to navigation Jump to search
Line 1: Line 1:
==Architecture==
+
==Hardware Architecture==
 
 
===Hardware===
 
 
[[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

Mpes hw archi.png

  • 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


GUI

TCP/IP Stack