Use virtual machines to ease firmware development
Virtual machines seem about as far from low level firmware development as one can get, yet they can play an important role in firmware development. A virtual machine can offer three unique advantages in the development process. The secret is to have the development environment be set up within the virtual machine.
The first advantage of using a virtual machine to host the firmware development environment is that a virtual machine easy to back up. Computer failures do occur and setting up a new computer with the right tool chain, settings, and support tools can be a time consuming process. However, recovering from a computer failure when using a virtual machine is simple. All you do is copy the backup to a new computer and development can resume in short order. The only requirement, of course, is that the developer has to have the discipline to routinely back up the virtual machine.
The second advantage of using a virtual machine as the environment for firmware development is it simplifies expansion of the development team by getting someone new up and running with the tools and project files. When a new developer is added to the team, simply copy the latest working version of the virtual machine to a new laptop and then update it to use the new developers’ credentials. Changes to the virtual machine would include updating user logins, revision control repositories, software licenses, and the like. This use of virtual machines can help decrease the amount of time it takes for a new developer to get up and running, which not only saves the company money but also has the added benefit shaving a few days off the project.
The third advantage of using a virtual machine to host the firmware development environment is that when it comes time to deliver the project the virtual machine can also be provided to the end client. This gives the end client a completely set up machine that they can use to easily test and confirm that they indeed do have what they paid for. Delivering the virtual machine can save days or even weeks of questioning as to how to set up the environment to be able to compile and run the firmware. Now this last advantage is more oriented for consultants, contractors, and companies that perform engineering services, but it is still a useful advantage to consider.
Using virtual machines does not come without a few potential disadvantages, however. The first and most important of these is that the development team needs to be disciplined in backing up their virtual machines to have available a fresh, ready-to-go image that is up to date. Secondly, care must be taken to make sure that each virtual machine is properly licensed to use the software that is on it. Because copying a virtual machine makes an exact copy that will run on any machine, there is the potential to accidentally violate copyright laws.
Virtual machines provide a unique capability to the firmware development process that wasn’t available until recently. The potential to save time and ease setup and delivery is intriguing and has the potential to decrease stress when machines go down at the wrong time.
Do any of you currently use virtual machine in their firmware development process? If not, have you considered it? Let me know in the comments below.
Jacob Beningo is a Certified Software Development Professional (CSDP) whose expertise is in embedded software. He works with companies to decrease costs and time to market while maintaining a quality and robust product. Feel free to contact him at email@example.com, at his website www.beningo.com, and sign-up for his monthly Embedded Bytes Newsletter here.