In our ongoing series of case studies focusing on how universities from across the world are teaching embedded systems, we took some time this month to speak to Morten Opprud Jakobsen, Associate Professor with the School of Engineering at Aarhus University.
We asked Morten about his experiences teaching the subject, as well as how he uses the materials from Arm Education to help develop his courses.
Arm Education: Please introduce yourself to our readers.
Morten Opprud Jakobsen: I am an Electronic Engineer (B.Sc.E.E), and graduated from Aarhus University, Denmark in 2005. Since then, I have worked on the development of embedded hardware and software for applications in motorsports and renewable energy. I’ve also been developing small prototypes and mechatronic systems for custom machines. My specialities are embedded systems architecture, efficient low-level software design, embedded hardware design (microcontroller and peripherals), and FPGA design using VHDL. Since 2009, I’ve been teaching embedded systems and digital hardware design on FPGAs at Aarhus University. I also work on collaborative projects between the university and companies in our region of Denmark.
Morten Opprud Jakobsen: I am an Electronic Engineer (B.Sc.E.E), and graduated from Aarhus University, Denmark in 2005.
Since then, I have worked on the development of embedded hardware and software for applications in motorsports and renewable energy. I’ve also been developing small prototypes and mechatronic systems for custom machines.
My specialities are embedded systems architecture, efficient low-level software design, embedded hardware design (microcontroller and peripherals), and FPGA design using VHDL.
Since 2009, I’ve been teaching embedded systems and digital hardware design on FPGAs at Aarhus University. I also work on collaborative projects between the university and companies in our region of Denmark.
Can you describe Aarhus University for us? What challenges and opportunities are you facing in teaching Embedded Systems there?
Aarhus University has a strong emphasis on teaching students how to collaborate effectively by working on real-life challenges and projects. During the seven semesters of our Embedded Systems course, the students work with, and are taught on, a combination of analog and digital hardware and software. In the sixth semester our students will also have internships at an engineering company. We’re currently using the NXP KL25 board to teach embedded systems, as per Arm Education Media’s Embedded Systems Fundamentals textbook. In the past we’ve used a range of platforms including: Microblaze Softcore on FPGA ARM7 using NXP’s LPC2478 board and Embedded Artists LPC2478 board Cortex-M4, using Embedded Artists LPC4088 board The development of new devices, debuggers, and toolchains is moving at a very fast rate. It’s hard to keep up, while still selecting a simple hardware platform that will give students a good introduction to microcontrollers. No one board can potentially satisfy all teaching needs. For example, we work mostly with simple protocols like SPI, UART, I2C, and then move on the CAN. Unfortunately, the KL25 doesn’t have CAN, so the students use Beagle Boards instead for this exercise. IoT is a rapidly emerging opportunity. I teach an elective course in the fifth semester of the course, and we use Particle.io since it comes with a lot of great features. We then go a bit deeper with MQTT in order to give students a basic overview of a popular IoT protocol. The field of embedded design is fun and a lot is happening right now. Personally, I am thrilled to see initiatives like Google Tensorflow and Arm NN trickle down to microcontrollers. I can’t wait until we can build efficient Machine Learning models and run lightweight versions on microcontrollers.
Aarhus University has a strong emphasis on teaching students how to collaborate effectively by working on real-life challenges and projects.
During the seven semesters of our Embedded Systems course, the students work with, and are taught on, a combination of analog and digital hardware and software. In the sixth semester our students will also have internships at an engineering company.
We’re currently using the NXP KL25 board to teach embedded systems, as per Arm Education Media’s Embedded Systems Fundamentals textbook. In the past we’ve used a range of platforms including:
The development of new devices, debuggers, and toolchains is moving at a very fast rate. It’s hard to keep up, while still selecting a simple hardware platform that will give students a good introduction to microcontrollers. No one board can potentially satisfy all teaching needs. For example, we work mostly with simple protocols like SPI, UART, I2C, and then move on the CAN. Unfortunately, the KL25 doesn’t have CAN, so the students use Beagle Boards instead for this exercise.
IoT is a rapidly emerging opportunity. I teach an elective course in the fifth semester of the course, and we use Particle.io since it comes with a lot of great features. We then go a bit deeper with MQTT in order to give students a basic overview of a popular IoT protocol.
The field of embedded design is fun and a lot is happening right now. Personally, I am thrilled to see initiatives like Google Tensorflow and Arm NN trickle down to microcontrollers. I can’t wait until we can build efficient Machine Learning models and run lightweight versions on microcontrollers.
How do you prepare for your Embedded Systems class? How have the Arm Education materials and the textbook helped you here?
Yes, the Efficient Embedded Systems Education Kit and the Embedded Systems Fundamentals textbook are very good. I’ve had access to the lecturer slides from the Education Kit for a couple of years now and have used some of them in my earlier courses. I do use MCUXpresso instead of the Keil tools, mostly because it’s free, and it uses GCC. The students can then keep the tools when the course ends. Also, we use GCC for Linux, so its familiar to the students. I often write my own labs. I start out simple, taking inspiration from figures and chapters from the Embedded Systems Fundamentals textbook, and then add complexity and features. One of the key elements in embedded systems is writing a device driver for a peripheral in the microprocessor. This means that the students need to have an understanding of how a microcontroller works, combined with an ability to read and understand content from the microprocessor user manual. For example, MCUXpresso’s Peripheral+ viewer displays register content, and allows real time modifications of bits, and register values. This is valuable when learning to write and debug device drivers, especially when you combine this with the ability to interpret the processor manual. Furthermore, in most of my labs, I try to incorporate an element that can or must be measured with an oscilloscope. I think this is still the most effective way to visualise what’s going on. However, most students prefer to use their analog discovery tool these days - it’s just me that prefers an oscilloscope!
Yes, the Efficient Embedded Systems Education Kit and the Embedded Systems Fundamentals textbook are very good. I’ve had access to the lecturer slides from the Education Kit for a couple of years now and have used some of them in my earlier courses.
I do use MCUXpresso instead of the Keil tools, mostly because it’s free, and it uses GCC. The students can then keep the tools when the course ends. Also, we use GCC for Linux, so its familiar to the students.
I often write my own labs. I start out simple, taking inspiration from figures and chapters from the Embedded Systems Fundamentals textbook, and then add complexity and features.
One of the key elements in embedded systems is writing a device driver for a peripheral in the microprocessor. This means that the students need to have an understanding of how a microcontroller works, combined with an ability to read and understand content from the microprocessor user manual. For example, MCUXpresso’s Peripheral+ viewer displays register content, and allows real time modifications of bits, and register values. This is valuable when learning to write and debug device drivers, especially when you combine this with the ability to interpret the processor manual.
Furthermore, in most of my labs, I try to incorporate an element that can or must be measured with an oscilloscope. I think this is still the most effective way to visualise what’s going on.
However, most students prefer to use their analog discovery tool these days - it’s just me that prefers an oscilloscope!
Embedded technologies are growing at a fast rate, especially with the rise of IoT. What opportunities and challenges do you see in embedded systems for your students as they move into the workplace?
Students need to learn the basics. How does a processor operate? What does it take to boot? How can you configure peripherals in an energy efficient manner? They also need to combine this with a top-down approach, so by taking an Embedded Linux class, for example. If students are exposed to both of these areas, I believe they can take on any embedded processor system when they graduate. Additionally, the rise of IoT will just add even more focus on understanding the full system architecture of whatever you are building. For example, when you are designing a battery powered device, you need to know exactly what’s going on, in every corner of your device, and make sure that you’re using no more energy that you absolutely have to. A lot of my students get a job where embedded development is a part of their daily life, at least in a part of their career, and it seems they are pretty good at picking up what is happening inside a system.
Students need to learn the basics. How does a processor operate? What does it take to boot? How can you configure peripherals in an energy efficient manner? They also need to combine this with a top-down approach, so by taking an Embedded Linux class, for example. If students are exposed to both of these areas, I believe they can take on any embedded processor system when they graduate.
Additionally, the rise of IoT will just add even more focus on understanding the full system architecture of whatever you are building. For example, when you are designing a battery powered device, you need to know exactly what’s going on, in every corner of your device, and make sure that you’re using no more energy that you absolutely have to.
A lot of my students get a job where embedded development is a part of their daily life, at least in a part of their career, and it seems they are pretty good at picking up what is happening inside a system.
Want to share your education story with us? We’re on the look-out for case studies from academics who are teaching Arm in the classroom. If you’d like us to highlight your own teaching experiences in an upcoming blog, please contact us below.
Email Arm Education
You can find previous case studies from Ghana and Jordan on the Education Hub.