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: | ||
− | |||
− | |||
− | |||
− | |||
==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 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 | |
− | + | **EEPROM for small block of re-writable data | |
− | *Use serial bus (I2C/SPI) to expand data memory to save I/O pins | + | **Flash for large block of re-writable data |
− | *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 | |
− | + | **GPIB for automated test equipment | |
− | *RS232 for short distance communication with PC | + | *User Interface |
− | *RS485 for longer distance communication | + | **Graphical displays (LCD, VFD, etc.) |
− | *USB for USB communication with PC | + | **Keypad for input |
− | *Ethernet for Internet connectivity | + | *Sensory Control |
− | * | + | **ADC for analog feedback signals |
− | + | **DAC for analog control signals | |
− | *GPIB for automated test equipment | + | **GPIO for digital feedback and control signals |
− | |||
− | |||
− | |||
− | *Graphical displays (LCD, VFD, etc.) | ||
− | *Keypad for input | ||
− | |||
− | |||
− | |||
− | *ADC for analog feedback signals | ||
− | * | ||
− | |||
− | |||
− | *DAC for analog control signals | ||
− | * | ||
− | *GPIO for digital feedback and control signals | ||
− | |||
− | |||
− | |||
Line 61: | Line 39: | ||
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] V4.1.3 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] | ||
===GUI=== | ===GUI=== | ||
+ | |||
+---------------+----------------+ | +---------------+----------------+ | ||
User Applications | Application 1 | Application 2 | | User Applications | Application 1 | Application 2 | | ||
Line 76: | Line 59: | ||
Drivers & Scheduler | Display | Pointer | Keypad | Task Scheduler | | Drivers & Scheduler | Display | Pointer | Keypad | Task Scheduler | | ||
+-----------+-----------+----------+----------------+ | +-----------+-----------+----------+----------------+ | ||
+ | *See [http://chungyan5.no-ip.org/wiki/index.php/UI here] for description | ||
Line 85: | Line 69: | ||
| Server | | | Resolver | | | | | | | Server | | | Resolver | | | | | | ||
+--------+------+------+----------+------+----+ | | | +--------+------+------+----------+------+----+ | | | ||
− | Socket API | | + | Socket API | Linux-like Socket | | | |
− | + | +---------------------------------------------+ | | | |
− | TCP/IP Stack | | + | TCP/IP Stack | uip | | | |
− | + | +---------------------------------------------+ | | | |
− | | | + | | Ethernet Controller | | | |
− | + | +--------------------------------------+------+--------------------+-------+ | |
− | POSIX API | | + | POSIX API | POSIX System Calls | POSIX Threads | |
− | +---------- | + | +--------------------------------------+-----------------------------------+ |
| Drivers | Task Scheduler | | | Drivers | Task Scheduler | | ||
− | +---------- | + | +--------------------------------------+-----------------------------------+ |
− | + | *See [http://www.opencircuits.com/Ethernet_Module here] for description | |
− | |||
− | |||
− | |||
− | *See [ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |