Difference between revisions of "Multi-purpose Embedded System"
Jump to navigation
Jump to search
(23 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
+ | 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== | ==Hardware Architecture== | ||
[[Image:Mpes hw archi.png]] | [[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 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 | |
− | + | ||
− | + | ||
− | **GPIB for automated test equipment | + | ===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. [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 | ||
Line 39: | Line 61: | ||
Hardware | UART | ADC | DAC | NVM | PWM | ... | TIMERS | | Hardware | UART | ADC | DAC | NVM | PWM | ... | TIMERS | | ||
+------+-----+-----+-----+-----+-----+----------+ | +------+-----+-----+-----+-----+-----+----------+ | ||
− | * | + | *See [[Freertos_posix_Development | here]] for description |
− | |||
− | |||
− | |||
− | |||
===GUI=== | ===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=== | ===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
Contents
Hardware Architecture[edit]
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
- 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
- Requires anti-aliasing analog filters and op-amp circuits
- DAC for analog control signals
- Refer to here if modulation is needed.
- GPIO for digital feedback and control signals
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 | +------+-----+-----+-----+-----+-----+----------+
- See here for description
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 | +----------+
- See here for description
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 | +--------+-----+-----+-----------------+--------------------------------------+
- See here for description