Difference between revisions of "Multi-purpose Embedded System"

From OpenCircuits
Jump to navigation Jump to search
(New page: ==Architecture== ===Hardware=== Image: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 progra...)
 
 
(25 intermediate revisions by 3 users not shown)
Line 1: Line 1:
==Architecture==
+
This project intends to provide ideas and technical information to create a multi-purpose embedded system.
 +
*Information contained in this wiki should be as generic as possible (unless otherwise stated) so that the ideas and information can be portable to different hardware (e.g. 8-bit/16-bit/32-bit MCU).
 +
*The peripheral devices should be expandable
  
===Hardware===
+
==Hardware Architecture==
 
[[Image:Mpes hw archi.png]]
 
[[Image:Mpes hw archi.png]]
*MCU
+
 
**MCU can be 8-bit/16-bit/32-bit
+
===MCU===
**MCU should have sufficient RAM (i.e. no external RAM required)
+
*MCU can be 8-bit/16-bit/32-bit
**MCU should have program Flash (i.e. no external program flash required)
+
*MCU should have sufficient RAM (i.e. no external RAM required)
*Data Memory
+
*MCU should have program Flash (i.e. no external program flash required)
**Use serial bus (I2C/SPI) to expand data memory to save I/O pins
+
 
**Need a file system to access the data
+
 
**EEPROM has a higher endurance (typically 10,000 cycles) for saving frequently write data
+
===Data Memory===
**Flash has a lower endurance (typically < 10,000 cycles) for saving less frequently write data (may not be true, to be confirmed)
+
*Use serial bus (I2C/SPI) to expand data memory to save I/O pins
*Communication
+
*Need a file system to access the data
**RS232 for short distance one-to-one communication with PC
+
*EEPROM for small block of re-writable data
**RS485 for longer distance networked communication
+
*Flash for large block of re-writable data
**USB for USB communication with PC
+
 
**Ethernet for Internet connectivity
+
 
**GPIB for automated test equipment
+
===Communication===
*User Interface
+
*RS232 for short distance communication with PC
**Graphical displays (LCD, VFD, etc.)
+
*RS485 for longer distance communication (upto 1200m) over a set of devices
**Keypad for input
+
*USB for USB communication with PC
*Sensory Control
+
*Ethernet for Internet connectivity
**ADC for analog feedback signals
+
**Use of Ethernet controller (e.g. [http://www.davicom.com.tw/userfile/24247/DM9000A-DS-F01-101906.pdf DM9000A] (requiring software TCP/IP stack)
**DAC for analog control signals
+
**User of TCP/IP chip (e.g. [http://www.wiznet.co.kr/ W5300])
**GPIO for digital feedback and control signals
+
*GPIB for automated test equipment
 +
 
 +
 
 +
===User Interface===
 +
*Graphical displays (LCD, VFD, etc.)
 +
*Keypad for input
 +
 
 +
 
 +
===Sensory Control===
 +
*ADC for analog feedback signals
 +
**Requires anti-aliasing analog filters and op-amp circuits
 +
***Use desktop software (e.g. [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010007 FilterLab]) to design circuits
 +
**May incorporate [http://www-users.cs.york.ac.uk/~fisher/mkfilter/ digital filter] to improve reduce noise
 +
*DAC for analog control signals
 +
**Refer to [[Modulation_Plugin | here]] if modulation is needed.
 +
*GPIO for digital feedback and control signals
 +
**Option 1: directly controlled by MCU
 +
**Option 2: indirectly through D-type flip-flops (e.g. [http://www.datasheetcatalog.org/datasheet/philips/74lv574.pdf 74LV574]) for low pin counts MCU
 +
**Option 3: indirectly through shift register flip-flops (e.g. [http://www.standardics.nxp.com/products/lv/datasheet/74lv165.pdf 74LV165] for input, [http://www.datasheetcatalog.org/datasheet/texasinstruments/tpic6595.pdf TPIC6595] or [http://www.nxp.com/acrobat_download/datasheets/74LV595_3.pdf 74LV595] for output ) for extremely low pin count MCU
 +
 
 +
 
 +
==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  |
 +
                +------+-----+-----+-----+-----+-----+----------+
 +
*See [[Freertos_posix_Development | here]] for description
 +
 
 +
 
 +
===GUI===
 +
                      +---------------+----------------+
 +
  User Applications    | Application 1 | Application 2  |
 +
                      |              +----------------+------------------+
 +
    Middlewares        |              |    Toolkits    |  Window Manager  |
 +
                      +---------------+----------------+------------------+
 +
    GUI Library        |            Graphics Engine (inc Font)            |
 +
                      +-----------+----------------------+----------------+
 +
    POSIX API          |          |  POSIX System Calls  | POSIX Threads  |
 +
                      |          +-----------+----------+----------------+
 +
  Drivers & Scheduler  |  Display  |  Pointer  |  Keypad  | Task Scheduler |
 +
                      +-----------+-----------+----------+----------------+
 +
 
 +
 
 +
===TCP/IP Stack===
 +
                  +---------------------------------------------+--------------------+-------+
 +
  Applications    |            Ethernet Application            |  GUI Application  |  ...  |
 +
                  +--------+------+------+----------+------+----+                    |      |
 +
  Web Libraries    |  Web  | DHCP | SNMP |  DNS    | SMTP |... |                    |      |
 +
                  | Server |      |      | Resolver |      |    |                    |      |
 +
                  +--------+------+------+----------+------+----+                    |      |
 +
  Socket API      |            Linux Socket Wrapper            |                    |      |
 +
                  |          +----------------------------------+                    |      |
 +
  TCP/IP Stack    |          |              uip                |                    |      |
 +
                  |          +----------------------------------+                    |      |
 +
                  |          |      Ethernet Thread            |                    |      |
 +
                  |          +---------------------------+------+--------------------+-------+
 +
  POSIX API        |          |    POSIX System Calls    |            POSIX Threads          |
 +
                  +----------+---------------------------+-----------------------------------+
 +
                  |              Drivers                |            Task Scheduler        |
 +
                  +----------+---------------------------+-----------------------------------+
 +
                  |  H/W    |
 +
                  |  TCP/IP  |
 +
                  |  Stack  |
 +
                  +----------+
 +
*See [[Ethernet_Module | here]] for description
 +
 
 +
 
 +
===File System===
 +
                  +------------+------------+------------+------------+------------+------------+
 +
Application      |  App 1    |  App 2    |  App 3    |  App 4    |  App 5    |  App 6    |
 +
                  +------------+------+-----+------------+------------+------------+------------+
 +
POSIX API        |          POSIX System Calls          |            POSIX Threads            |
 +
                  +--------------------+                |                                      |
 +
                  |  FatFs Wrapper    |                |                                      |
 +
                  +--------------------+                |                                      |
 +
File System      |      FatFs        |                |                                      |
 +
                  +--------+-----+-----+-----------------+--------------------------------------+
 +
                  | EEPROM | MMC | USB |    Drivers      |            Task Scheduler            |
 +
                  +--------+-----+-----+-----------------+--------------------------------------+
 +
*See [[MMC_Card_Reader | here]] for description
 +
 
 +
[[category:projects]]

Latest revision as of 23:47, 30 August 2009

This project intends to provide ideas and technical information to create a multi-purpose embedded system.

  • Information contained in this wiki should be as generic as possible (unless otherwise stated) so that the ideas and information can be portable to different hardware (e.g. 8-bit/16-bit/32-bit MCU).
  • The peripheral devices should be expandable

Hardware Architecture[edit]

Mpes hw archi.png

MCU[edit]

  • 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[edit]

  • 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[edit]

  • RS232 for short distance communication with PC
  • RS485 for longer distance communication (upto 1200m) over a set of devices
  • USB for USB communication with PC
  • Ethernet for Internet connectivity
    • Use of Ethernet controller (e.g. DM9000A (requiring software TCP/IP stack)
    • User of TCP/IP chip (e.g. W5300)
  • GPIB for automated test equipment


User Interface[edit]

  • Graphical displays (LCD, VFD, etc.)
  • Keypad for input


Sensory Control[edit]

  • ADC for analog feedback signals
    • Requires anti-aliasing analog filters and op-amp circuits
      • Use desktop software (e.g. FilterLab) to design circuits
    • May incorporate digital filter to improve reduce noise
  • DAC for analog control signals
    • Refer to here if modulation is needed.
  • GPIO for digital feedback and control signals
    • Option 1: directly controlled by MCU
    • Option 2: indirectly through D-type flip-flops (e.g. 74LV574) for low pin counts MCU
    • Option 3: indirectly through shift register flip-flops (e.g. 74LV165 for input, TPIC6595 or 74LV595 for output ) for extremely low pin count MCU


Software Architecture[edit]

RTOS[edit]

               +-----------+-----------+----------------------------------------------+
 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  | 
               +------+-----+-----+-----+-----+-----+----------+


GUI[edit]

                      +---------------+----------------+
 User Applications    | Application 1 | Application 2  |
                      |               +----------------+------------------+
   Middlewares        |               |    Toolkits    |  Window Manager  |
                      +---------------+----------------+------------------+
   GUI Library        |            Graphics Engine (inc Font)             |
                      +-----------+----------------------+----------------+
   POSIX API          |           |  POSIX System Calls  | POSIX Threads  |
                      |           +-----------+----------+----------------+
 Drivers & Scheduler  |  Display  |  Pointer  |  Keypad  | Task Scheduler |
                      +-----------+-----------+----------+----------------+


TCP/IP Stack[edit]

                  +---------------------------------------------+--------------------+-------+
 Applications     |            Ethernet Application             |  GUI Application   |  ...  |
                  +--------+------+------+----------+------+----+                    |       |
 Web Libraries    |  Web   | DHCP | SNMP |   DNS    | SMTP |... |                    |       |
                  | Server |      |      | Resolver |      |    |                    |       |
                  +--------+------+------+----------+------+----+                    |       |
 Socket API       |            Linux Socket Wrapper             |                    |       |
                  |          +----------------------------------+                    |       |
 TCP/IP Stack     |          |               uip                |                    |       |
                  |          +----------------------------------+                    |       |
                  |          |       Ethernet Thread            |                    |       |
                  |          +---------------------------+------+--------------------+-------+
 POSIX API        |          |    POSIX System Calls     |            POSIX Threads          |
                  +----------+---------------------------+-----------------------------------+
                  |               Drivers                |            Task Scheduler         |
                  +----------+---------------------------+-----------------------------------+
                  |   H/W    |
                  |  TCP/IP  |
                  |  Stack   |
                  +----------+


File System[edit]

                 +------------+------------+------------+------------+------------+------------+
Application      |   App 1    |   App 2    |   App 3    |   App 4    |   App 5    |   App 6    |
                 +------------+------+-----+------------+------------+------------+------------+
POSIX API        |          POSIX System Calls          |            POSIX Threads             |
                 +--------------------+                 |                                      |
                 |   FatFs Wrapper    |                 |                                      |
                 +--------------------+                 |                                      |
File System      |       FatFs        |                 |                                      |
                 +--------+-----+-----+-----------------+--------------------------------------+
                 | EEPROM | MMC | USB |    Drivers      |            Task Scheduler            |
                 +--------+-----+-----+-----------------+--------------------------------------+