This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Note: The Copyrights of the referenced materials and photos go to its original authors. As a result, this slide is for internal reference only.
Note: The Copyrights of the referenced materials and photos go to their original authors. As a result, this slide is for non-commercial reference only.
Application Development: Usually implemented as threads which share the same space with the kernel; MMU is usually not used; Real-time considerations (priority, timing constrains)
Supports a wide range of ARM Cortex-M based hardware platforms from major MCU vendorsProvide a C++ Application Framework and component architectureAutomation of power managementConnectivity protocol stack support for BLE®, Cellular, Ethernet, Thread, Wi-fi®, Zigbee IP, Zigbee NAN, 6LoWPAN, TLS & DTLS end-to-end IP secure communication channels, OMA LWM2M protocol for device managementSoftware asset protection and secure firmware updates for device security & management
Device drivers are usually treated as black boxes for the application developers.They resemble as a software layer lying between the applications and the actual devices.
Open source and freeMaintained by numerous volunteer experts and hackersRobust, efficient, and reliableModular, configurable, and scalableTons of applications availableLower hardware requirement and BOM cost for mid-range to low-end products.Also suitable for general purpose computers, especially for high performance servers
UNIX/Linux systems implement device files to enable users to employ familiar commands and functions such as open, read, write, and close when working with some peripherals.
11 OS vs. Hardware Components
Example file operations int open( char *pathname, int flags, … ); int read( int fd, void *buf, size_t count ); int write( int fd, void *buf, size_t count ); int close( int fd );
Consistent user experience and good UI designEasy to be commercializedComplete software frameworkLower App development costAlready supported by millions AppsApplicable for m high-end to mid-range devicesHigh portability for Apps and the OS itselfSuitable for resource-limited handheld devices
A hardware abstraction layer (HAL) is an abstraction layer, implemented in software, between the physical hardware of a computer and the software that runs on that computer. Typically seen in portable operating system design, such as Linux.Realized in user-space of the Android operating system, with the concept of user-space device driver.