Editing Multi-purpose Embedded System

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
This project intends to provide ideas and technical information to create a multi-purpose embedded system.
+
==Architecture==
*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==
+
===Hardware===
 
[[Image:Mpes hw archi.png]]
 
[[Image:Mpes hw archi.png]]
 
+
*MCU
===MCU===
+
**MCU can be 8-bit/16-bit/32-bit
*MCU can be 8-bit/16-bit/32-bit
+
**MCU should have sufficient RAM (i.e. no external RAM required)
*MCU should have sufficient RAM (i.e. no external RAM required)
+
**MCU should have program Flash (i.e. no external program flash 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
===Data Memory===
+
**EEPROM has a higher endurance (typically 10,000 cycles) for saving frequently write data
*Use serial bus (I2C/SPI) to expand data memory to save I/O pins
+
**Flash has a lower endurance (typically < 10,000 cycles) for saving less frequently write data (may not be true, to be confirmed)
*Need a file system to access the data
+
*Communication
*EEPROM for small block of re-writable data
+
**RS232 for short distance one-to-one communication with PC
*Flash for large block of re-writable data
+
**RS485 for longer distance networked communication
 
+
**USB for USB communication with PC
 
+
**Ethernet for Internet connectivity
===Communication===
+
**GPIB for automated test equipment
*RS232 for short distance communication with PC
+
*User Interface
*RS485 for longer distance communication (upto 1200m) over a set of devices
+
**Graphical displays (LCD, VFD, etc.)
*USB for USB communication with PC
+
**Keypad for input
*Ethernet for Internet connectivity
+
*Sensory Control
**Use of Ethernet controller (e.g. [http://www.davicom.com.tw/userfile/24247/DM9000A-DS-F01-101906.pdf DM9000A] (requiring software TCP/IP stack)
+
**ADC for analog feedback signals
**User of TCP/IP chip (e.g. [http://www.wiznet.co.kr/ W5300])
+
**DAC for analog control signals
*GPIB for automated test equipment
+
**GPIO for digital feedback and control signals
 
 
 
 
===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]]
 

Please note that all contributions to OpenCircuits may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see OpenCircuits:Copyrights for details). Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)