Difference between revisions of "Multi-purpose Embedded System"

From OpenCircuits
Jump to navigation Jump to search
(update file system and internal links)
(link to related articles)
 
(4 intermediate revisions by one other user not shown)
Line 43: Line 43:
 
*GPIO for digital feedback and control signals
 
*GPIO for digital feedback and control signals
 
**Option 1: directly controlled by MCU
 
**Option 1: directly controlled by MCU
**Option 2: indirectly through D-type flip-flops (e.g. [http://www.datasheetcatalog.org/datasheet/philips/74lv574.pdf 74LV154]) for low pin counts 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.datasheetcatalog.com/datasheets_pdf/M/7/4/H/M74HC165.shtml 74HC165] for input, [http://www.datasheetcatalog.org/datasheet/texasinstruments/tpic6595.pdf TPIC6595] or [http://www.datasheetcatalog.org/datasheet/philips/74HC_HCT595_CNV_3.pdf 74HC595] for output ) for extremely low pin count 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
  
  
Line 50: Line 50:
  
 
===RTOS===
 
===RTOS===
 +
 +
''(main article: [[RTOS]])''
 +
 
                 +-----------+-----------+----------------------------------------------+
 
                 +-----------+-----------+----------------------------------------------+
 
   Application  |  Task 1  |  Task 2  |    ...                                      |
 
   Application  |  Task 1  |  Task 2  |    ...                                      |
Line 61: Line 64:
 
     Hardware    | UART | ADC | DAC | NVM | PWM | ... |  TIMERS  |  
 
     Hardware    | UART | ADC | DAC | NVM | PWM | ... |  TIMERS  |  
 
                 +------+-----+-----+-----+-----+-----+----------+
 
                 +------+-----+-----+-----+-----+-----+----------+
*The task scheduler is based on [http://www.freertos.org/ FreeRTOS] 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.
+
*See [[Freertos posix Development]] for description
**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===
 
===GUI===
Line 111: Line 109:
 
                   +------------+------+-----+------------+------------+------------+------------+
 
                   +------------+------+-----+------------+------------+------------+------------+
 
  POSIX API        |          POSIX System Calls          |            POSIX Threads            |
 
  POSIX API        |          POSIX System Calls          |            POSIX Threads            |
 +
                  +--------------------+                |                                      |
 +
                  |  FatFs Wrapper    |                |                                      |
 
                   +--------------------+                |                                      |
 
                   +--------------------+                |                                      |
 
  File System      |      FatFs        |                |                                      |
 
  File System      |      FatFs        |                |                                      |
Line 117: Line 117:
 
                   +--------+-----+-----+-----------------+--------------------------------------+
 
                   +--------+-----+-----+-----------------+--------------------------------------+
 
*See [[MMC_Card_Reader | here]] for description
 
*See [[MMC_Card_Reader | here]] for description
 
  
 
[[category:projects]]
 
[[category:projects]]

Latest revision as of 15:59, 25 February 2025

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

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

  • 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. 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

RTOS

(main article: 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  | 
               +------+-----+-----+-----+-----+-----+----------+

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


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