Information Technology-related undergraduate programs, such as Computer Science and Computer Engineering, offer courses that cover a broad spectrum of embedded systems’ topics. An embedded system is composed of hardware and an embedded software. The software that composes these systems has become noticeable and its presence increases the number of features offered by the embedded systems. However, it is not always clear to undergraduate students the division and the cooperation that must exist between hardware and software in such systems. In this paper we report on our experience teaching students about the structure of embedded systems and how relevant software is in this context. More specifically, we have used a tool named Hellfire Framework to decrease this knowledge gap. Hellfire is a platform for developing embedded applications with real-time constraints. The framework consists of a set of tools that suggests a design flow to guide the development of a complete hardware/software solution. In our course, we provide a simplified version of one of the framework components, the HellfireOS. This component is used for analysis and modification of the system source code. By using the HellfireOS, students can better understand the impact of code changes on the overall system operation. We have been using the Hellfire framework for over two years. Over these years we have noticed that students have increased their comprehension of the hardware-software interaction in embedded systems.