It’s still subject to change, but if you’re looking for our hardware/software co-dev demo at Agile2014 2 weeks from today you’re probably going to be looking for something like this…
Provided I can find the space, we’ll have the hardware + monitor where the demo runs (you program the hardware and see it run on the monitor), there will be a laptop to tinker, a few prepared stories to get people started (1 for each of the software/driver/hardware layers) and some pictures and diagrams to explain the the thing. Then there’s me to help and you to drive!
And yes… it looks super fun because it is super fun 🙂 .
It was a few months ago when Soheil and I posted our commitment to agile hardware development for our agile hardware/software co-development platform. The plan was to build a platform that would bring hardware and software developers together by showcasing TDD as a valuable technique in both domains. Neither of us really knew what we were doing at the time. But figuring the worst case scenario would be limited to complete failure and public ridicule, we went for it anyway ;). Now it’s just 18 days until our Agile hardware/software co-development demo makes an appearance at Agile2014 in Orlando. We’re cautiously optimistic we’ve avoided failure and are hoping any public ridicule will be minimal. Fingers crossed.
With the arrival of our board last week, I figured now would be a good time for a quick update on how our Agile2014 software/hardware co-development demo is coming along…
Our starting point was a reference design that is similar to what we’re trying to do in that it sends video frames to an HDMI port. We’ve relied pretty heavily on that reference design to build our hardware abstraction layer that connects our application to the device drivers. We threw away the application from the reference design – which is basically just a loop that sends coloured bars to the HDMI.
So far, Soheil and I have focused all our time on the software side. We’ve written our software application code and we’re almost finished the hardware abstraction layer. When the software is DONE, our Conway’s Game-of-Life application will send a grid of characters to the hardware abstraction layer; the hardware abstraction layer will convert the grid into pixels; and the pixels will be sent as frames to the hardware.
Because the reference design includes everything on the hardware side necessary to fetch frames and push them out to pins on an HDMI connector, we’ve been able to ignore the hardware for now. Our board was on back-order through april and may led us to do a lot of mocking. That let us model the interaction with the hardware without the hardware.
All our software code is C++ and we unit tested it using GoogleTest and GoogleMock. As I said, some of our code comes directly from the reference design (i.e. we imported and unit tested existing features) while other parts are newly written for the demo (i.e. TDD of new features).
That takes us to about 2am last Wednesday… which is when I got home for the university. It was cold and rainy.
With the postman delivering our Zedboard, we’ve changed focus to take a few unknowns off the table, the primary unknown being the quality and reliability of the reference design as a starting point. So from late last week to last night, Soheil has been installing tools on an old laptop I borrowed from work so we can build and run the reference design; it’s not the goal but we’re calling it a proof of concept that helps us learn about the board and validates our starting point.
The good news, as of about an hour ago, is that Soheil has the reference design building and running. That’s the picture with the board and the multi-coloured bars on the monitor. It doesn’t look like much, but we’re pumped to get over this hurdle!
Now we’re off to polish and deploy the real demo!
Here’s a guest post from Soheil Salehian, the fellow at University of Calgary who is helping me out with the Agile2014 co-development demo. It’s been fun working with Soheil thus far so I asked him to jot down a few thoughts on why he’s interested in agile hardware and what he’s hoping to get out of our demo development. Here’s what he had to say…
I have always been a ﬁrm believer that once you start learning a concept at some level, it is often incredibly rewarding (or at least humorous!) to step back and ask yourself: ”why am I learning this? Does learning this concept get me any further in anything?” The interesting thing is not the actual answer but the rewarding process of asking those type of questions. For anyone familiar with Agile concepts, such questions may resemble asking for feedback which is the most valuable part of using the Agile methodologies and processes in the ﬁrst place. Continue reading
This week, our Agile2014 SW/HW co-development demo took a step closer to the hardware. But considering the real hardware isn’t going to be here for another month or so, we had to get creative to test the code that interacts with the device drivers.
Mocking is a technique I’m starting to get comfortable with to isolate and test specific functions. I’m also getting more comfortable with GoogleMock. It’s only taken 3 weeks, not that I’m an expert or anything, but the basics are pretty straightforward. However, while the basics apply very well to C++ code, they don’t apply as well to C code. Here’s a “warning” on the GoogleMock FAQ to explain… Continue reading
Now is probably the right time to start talking about the board we’re using for our agile SW/HW co-development demo… or I should say hope to be using considering it’s currently on backorder (we’re expecting a mid-June delivery).
It’s called a Zedboard (we borrowed the picture from zedboard.org). Like most development kits, it’s got a lot of stuff on it, much of which we won’t be touching at all. What we definitely will be using is the Xilinx Zynq programmable SoC in the middle. It’s the small’ish Z-7020 device with an ARM dual-core Cortex-A9. The other important part for us is the HDMI connector. The plan of record is to run our Conway’s Game of Life application on the A9 while the visuals are sent to a monitor via the HDMI.
Today will be 3 weeks of development on our Agile SW/HW Co-development demo. This is a recap of week 1. Week 2 to follow and then we’re all caught up!
We’ve decided on an application. We wanted something simple, visual, fun and familiar so that people at the Agile2014 conference would feel comfortable sitting down and giving it a try. To that end, we figured Conway’s Game of Life would fit the bill. If you’re not familiar with Conway’s Game of Life, here’s a screenshot from the opening of its wikipedia page… Continue reading