This is a guest blog post from Christopher Nguyen, a member of the embedded systems group of
CalSol, the UC Berkeley Solar Vehicle Team.
CalSol uses Travis CI to test their embedded software that powers their solar vehicle
to explore the future of engineering.
(Photos reproduced with permission)
Embedded systems are hard.
You're often on bare metal, fighting against memory constraints and a lack of specific documentation.
And the bugs. The bugs are terrible.
As the systems you build on the bare metal become serious, complicated, use-specific, there will be bugs, and
they will require more than a printf, and at minimum a logic analyzer to squash.
You may find that the bug isn't code at all, but a burnt out port causing funky noise in the io.
Often you'll find hours wasted chasing bugs through the system.
BUT sometimes there is a bright spot in the workflow.
Here at CalSol we've started down the long path of test-oriented code in building our solar racecars,
and this has meant that it is now possible to start using great tools like Travis CI and start putting in practice continuous integration.
Before Travis CI, the only sanity checks on pushes to the code base were watchful eyes.
In practice this often meant overlooked 3am pushes that sometimes wouldn't even build, let alone run on the boards on the Zephyr (the current solar racecar we're building).
Overburdened university students software and electrical engineers should not be doing the job of computers.
That's what computers are for!
In order to get GCC ARM embedded toolchain working on Travis CI's container-based infrastructure we first make sure that
certain 32-bit libraries are setup so that we can run the GCC ARM embedded toolchain.
(The GCC ARM embedded toolchain is 32-bit while the Travis CI environment is 64-bit.)
So in our .travis.yml file we put
Now we have all the dependencies we need for the linux environment to identify and run the 32-bit executables in the GCC ARM embedded toolchain!
For the piece de resistance, (getting GCC ARM embedded toolchain onto our environment), we simply wget the appropriate file and unzip.
So in our .travis.yml file we add:
- wget https://launchpad.net/gcc-arm-embedded/4.9/4.9-2014-q4-major/+download/gcc-arm-none-eabi-4_9-2014q4-20141203-linux.tar.bz2
- tar -xf gcc-arm-none-eabi-4_9-2014q4-20141203-linux.tar.bz2
We can now compile embedded code on Travis CI!
(Remember that if you want to call arm-none-eabi, you will either need to add the location of where you unzipped the toolchain to the PATH variable or reference directly its location.)
Long story short, we're now using Travis CI to build our code using the GCC ARM embedded toolchain, and working towards fully running and testing it using our virtualizations of our boards.
We are very grateful to the crew at Travis CI for helping make our lives a little easier, and the job of making a winning solar racecar even more enjoyable.
We're super excited to announce that Aly has joined the Travis team!
Aly joins us as the second member of the "Pittsburgh office". She resisted the
pull of the tech world for years, choosing the path of the language nerd which
led to her graduate work in Speech Pathology.
Years of MMO guild management and many more of tinkering (aka breaking) websites
left her little choice but to dive into the depths of software development, but
she still manages to flex her language skills in our team chat.
Additional fun Aly numbers include:
1 spoiled cat
2 spoiled guinea pigs
1 amazing Oracle DBA (who doubles as a spouse)
7 years old at start of photography career
8000 is less than her desire for multi-glot status
Important travel tip: Do not occupy the full width of an airport escalator or
conveyer with your luggage when Aly is behind you, unless you want to experience
some Twitter wrath.
Please join us in helping them support 20 sponsored students have an amazing
summer, working on great
Open Source projects.
For those who may not know, Rails Girls Summer of Code
is a program that funds and supports women around the world to work full-time
for three months on Open Source projects. Participants speak at conferences, attend
developer events, and get in touch with the wider Open Source community.
From Chicago to Cruj, Bangalore to Berlin, in the last two years 65 students
from 15 countries, 72 coaches, 27 open source projects, 52 sponsoring
companies, and 451 individual donors have come together to make the Rails Girls
Summer of Code happen. Some of the participating projects include Rails,
Sinatra, Rubinius, Bundler, Ruby Documentation, RailsAdmin, Lotus, and Ruby
Also, Rails Girls Summer of Code works: over 90% of their alumni are now working
in a technology-related position, most of them as developers.
We think this is amazing work from an amazing community!
Travis Foundation, along with
GitHub, are partnering up to help make Rails Girls Summer
of Code happen again this year.
Everyone who knows us well knows it's a project close to our hearts - not
just for the significant contributions being made to software used by millions
of people, or the life-transforming experiences had by the women who take part,
but also for the role models these participants become. This way Rails Girls
Summer of Code also functions as a long term learning goal for Rails Girls
While we're extremely proud to support RGSoC, we know the program would not
be possible without the generous support of other sponsors and private donors
from this amazing community.
Please consider taking a few minutes to make a
towards the campaign, and convince your company to chip in with a sponsorship!
"I have a selfish reason for supporting Rails Girls Summer of Code: my
2-year-old daughter Erika. She loves lightsaber fights and sparkly shoes, and I
want the software industry to be a great place for her to work by the time
she’s old enough, if that’s what she chooses." -- Mark Madsen, Founder,
Please find the RGSoC fundraising campaign
and more information about sponsor's packages