Now that the Hackaday badge project compiles successfully on my computer, it’s time to look around and get oriented with the structure of this code project. Part of the orientation is actually getting re-oriented with Microchip’s own MPLAB X IDE for developing software running on their chips, like the PIC32MX chip that’s at the center of the badge.
I only use MPLAB X when dealing with PIC code. While it’s not exactly my favorite, I would agree it is sufficient to be a productive tool. The features most relevant to me right now are for code navigation. MPLAB parses the project files enough to knows how pieces of code are linked and lets me traverse those links easily.
For exploration, the following two key combinations are super useful:
Control + B: Go to declaration/definition
Alt + Left: Go back
While it is possible to use a text search to do both of these things, having an IDE that understands the project and makes navigation simple is a real time saver. With these keystrokes I could take a deeper look inside a particular function to see what it does, repeating to trace calls further if necessary. And when I’ve had enough with a particular area of code, go back to where I was before I started digging.
But of course, these tools are only useful once I have a starting point. Looking over the project files, I thought
main.c sounded like a great place to start and indeed it was. There was just a short snippet of code in the
main() function but it is the root of all functionality.
if (KEY_BRK==0) post();
if ((SHOW_SPLASH)&(K_SHIFTR==1)) boot_animation();
hw_init()initialize all the PIC settings upon startup. What the pins do, which peripherals are activated, set things to default values, etc.
badge_init()seemed redundant but
Control+Blets me see its comment saying this is work done whenever badge wakes up from sleep. So
hw_init()is for a cold boot, and
badge_init()is for resuming from sleep.
- If a specific key is pressed upon power-up, there’s
post(). The code looks like some sort of self-test, which implies POST = Power-On Self-Test.
- The badge does have a little startup animation, which is apparently launched by
boot_animation()if a compile-time flag and a runtime key both agree it should be run.
badge_menu()which is a loop for the badge main menu. This call never returns.
main.c actually consist of comments which invites hackers to look around, find certain items discussed in the comment by using
Control + Shift + F to search on strings in comments.
I will absolutely accept that invitation.