In the last years, Tier ones and OEMs are prototyping and testing self-driving capabilities on top of embedded MPSoCs (Multiprocessor System on Chip), these architectures are commonly composed of more than general purpose processors, a complex memory hierarchy and high-performance accelerators. Consequently, many car and tech makers are implementing multiple applications with different functionalities and criticality levels in the same Electronic Control Unit (ECU). Nonetheless, by doing so, the scheduling and the management of shared resources become a very convoluted problem, especially on architectures with complex memory hierarchies. Unfortunately, a non-proper software integration can lead to a situation in which high critical tasks may be affected by less critical tasks. In this sense, many open-source projects rely on ROS (the most used framework in robotics) and consequently Linux for implementing self-driving cars, for instance Apollo or Autoware. However, ROS and general-purpose Linux distributions are far from being safe enough for the development and integration of safety critical applications. Thanks to the HERCULES framework, we developed and integrate a real autonomous driving system that partitions safety critical tasks from the non-critical ones as required in the ISO 26262. Our solution does not require a dedicated Real-Time platform, reducing in this way design and production costs because everything is integrated on a small low power embedded board i.e. NVIDIA Jetson TX2.