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.
 
*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]]
Line 40: Line 36:
 
**May incorporate [http://www-users.cs.york.ac.uk/~fisher/mkfilter/ digital filter] to improve reduce noise
 
**May incorporate [http://www-users.cs.york.ac.uk/~fisher/mkfilter/ digital filter] to improve reduce noise
 
*DAC for analog control signals
 
*DAC for analog control signals
**Refer to [[Modulation_Plugin | here]] if modulation is needed.
+
**Refer to [http://www.opencircuits.com/Modulation_Plugin here] if modulation is needed.
 
*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 74LV574]) for low pin counts 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 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
+
**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
  
  
Line 61: Line 57:
 
     Hardware    | UART | ADC | DAC | NVM | PWM | ... |  TIMERS  |  
 
     Hardware    | UART | ADC | DAC | NVM | PWM | ... |  TIMERS  |  
 
                 +------+-----+-----+-----+-----+-----+----------+
 
                 +------+-----+-----+-----+-----+-----+----------+
*See [[Freertos_posix_Development | here]] for description
+
*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.
 +
**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]
  
  
Line 99: Line 99:
 
                   |  Stack  |
 
                   |  Stack  |
 
                   +----------+
 
                   +----------+
*See [[Ethernet_Module | here]] for description
+
*See [http://www.opencircuits.com/Ethernet_Module here] for description
  
  
Line 106: Line 106:
 
  Application      |  App 1    |  App 2    |  App 3    |  App 4    |  App 5    |  App 6    |
 
  Application      |  App 1    |  App 2    |  App 3    |  App 4    |  App 5    |  App 6    |
 
                   +------------+------+-----+------------+------------+------------+------------+
 
                   +------------+------+-----+------------+------------+------------+------------+
  POSIX API        |         POSIX System Calls          |           POSIX Threads            |
+
  Standard Lib    |  Stdio.h wrapper  |                 |                                     |
                   +--------------------+                 |                                      |
+
                   +-------------------+                 |                                      |
                  |   FatFs Wrapper    |                 |                                     |
+
File System      |     FatFs       |                 |           POSIX Threads            |
                   +--------------------+                 |                                      |
+
                   |          +--------+                 |                                      |
  File System      |       FatFs        |                 |                                      |
+
  POSIX API        |         |   POSIX System Calls    |                                      |
                   +--------+-----+-----+-----------------+--------------------------------------+
+
                   +----------+---------------------------+--------------------------------------+
                   | EEPROM | MMC | USB |    Drivers     |            Task Scheduler            |
+
                   |               Drivers               |            Task Scheduler            |
                   +--------+-----+-----+-----------------+--------------------------------------+
+
                   +--------------------------------------+--------------------------------------+
*See [[MMC_Card_Reader | here]] for description
+
 
 +
*[http://efsl.be/ Embedded Filesystem Library]
 +
*[http://elm-chan.org/fsw/ff/00index_e.html FatFs]
  
[[category:projects]]
+
===Remote Access===

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)