TrustZone Explained: Architectural Features and Use Cases