chipKIT conference call: Yes, it’s all open source

Microchip, makers of PIC mircocontrollers, must feel left out of the hobby buzz surrounding the Arduino. Unable to buy Atmel outright, they did the next most sensible thing and released a duo of open source Arduino-compatible boards. Microchip got the guys at Fair Use Building and Research to add PIC support to the Arduino IDE. Existing Arduino sketches will compile, without changes, and play on cheaper, more powerful hardware. On Friday we talked to a bunch of people involved in the project and asked your questions from the forum.

chipKIT source code was released over several days after a huge launch at Maker Faire. There was a lot of internet speculation that Microchip wasn’t being entirely open. Some components, like the bootloader, weren’t released until the end of last week. Other stuff, like the hardware files, are distributed by Digilent instead of the project github.

Everyone on the chipKIT team seems genuinely dedicated to making this project fully open source, that’s great news from traditionally-closed source Microchip. The software, including bootloader, IDE, and compiler, are licensed GPL with source hosted at github. Multiplatform hacks to the Arduino IDE will be merged back into the official client. Both PCBs are done in Eagle and licensed CC BY-SA, but note that they are multi-page and require the non-free version of Eagle to edit.

Microchip still has some work to do. Some of the features advertised on the Max32 box, such as USB and Ethernet, can only be supported with free-as-in-beer-but-not-as-in-speech closed source drivers. This means you can’t share a cool project using the Max32’s ethernet if it includes Microchip’s driver. The community is also barred from porting Microchip’s ‘free’ drivers to Microchip’s own open source development platform. Digilent will release an ethernet/USB shield soon, it will be interesting to see what drivers they provide.

We’re hopeful that the new platform and Arduino IDE integration helps fill the void in open source support for Microchip’s stuff. We’ve been testing Honken and JTR’s open source USB stack on the MAX32, we encourage Microchip to donate a driver to the community as well.

Markus and LisandroP both get a chipKIT board for their excellent questions, and teedeeus and  jamodio get free PCB coupons.

Audio of the call is embedded above (mp3? see the forum), a brief list of questions and answers follow the break. Get a copy of the power point.

Thanks for your questions, and thanks to everyone at Microchip and FUBAR Labs for talking with us.

You put a lot of work into adding multiplatform support to the Arduino IDE. Is Microchip working with the Arduino crew to unify efforts?

Yes, post v1. Arduino team is super busy right now.

When the Arduino team releases a new version of the IDE what will be the lag for an updated chipKIT MP(multiplatform)IDE?

Development version is kept at parity with the main trunk.

The PIC on the Max32 boasts USB 2.0, CAN, and 10/100 Ethernet MAC. Are these already supported by open source libraries with MPIDE?

Not yet. Want it to be open source. Just core library support for now.

Microchip already supplies excellent drivers for this hardware, but the licenses don’t allow sharing, which is a big part of the Arduino community. Do you have any suggestions for users who want to make projects that support the USB, CAN, or Ethernet and share their code?

A shield with USB and ethernet are coming. Community can come up with it, how long will it take? Port LUFA. Corporate guys see source changes as bug not a feature. [ed: the shield is from Digilent, it will be very interesting to see what the driver situation is at launch]

How do you take advantage of the speed and the extra capabilities of a PIC32 in existing Arduino projects?

Computational things are faster, maker faire Mandelbrot LCD graphic demo

Any suggestions to port libraries with strict timing requirements?

Some potential to use a separate clock on peripherals.

What’s the difference between the ChipKIT compiler, and the C32 compiler? Both based on GCC, but C32 has optimization restrictions after a 60 day demo, chipkit supports C++?

No restrictions, all optimizations, no debug. Different compiler than C32, called chipkit compiler instead.

Microchip is known for keeping parts of the compiler closed. We could only find a license file in your github repository that forbids modification. What gives?

Is open source, in different repository. Putting everything out under the same license. Giving to community. If you see other licenses tell us, we’ll fix it.

Can we talk a little about shield compatibility. chipKIT is a 3.3volt system, and most shields are designed with 5volt IO in mind. The PIC pins are 5volt tolerant, but what about CMOS 5volt inputs that need 3.7volts or more?

? [ed: we were looking for a discussion of TTL vs CMOS inputs, Microchip’s appnotes usually recommend open collector outputs with a 5volt pullup resistor in these situations]

Why not PIC 24 with PPS (ability to move hardware to different pins)?

Possibility, 32bits to start.

Any plans for PPS on PIC 32?

See us in 6 months.

Do you plan to track shield incompatibilities? notes a few issues with the pinout: there’s no PWM on D11 so it doesn’t work with their rugged motor driver, and the PIC doesn’t have interrupts on every pin.

Start a thread in the chipKIT forum.

Join the Conversation


  1. Good questions, now, I can get back to porting eLua onto my UBW32 board. Just waiting to see the boot loader. Plus use .codesourcery MIPS32 compiler, instead of a one off. Using a standard compiler is better then using a one off. Yes, the fuse bits are a little harder to use, but, just use a simple .c file for that.

    Also, one of my biggest issues is getting a better open source debugger. I use a JTAG Key to the UBW32, (PIC32 460) but I would like to PICkit3 merged into OpenOCD. This way, now I don’t have to connect all of the JTAG pins. Simple ICSP. Is there any way to get a hold of someone at MicroChip to make this possible? I would be more then happy to do it..

  2. I’ve been using microchip parts for a very long time, starting around 97 when I made my first parallel-port programmer. So far, the ONLY reason I’m remaining loyal is because Microchips parts cost less, and they have an excellent selection of chips in each family, making it easy to optimize. (As compared to Atmel’s lacking selection of dip/pdip parts, especially when it comes to features such as USB.)

    But Atmel’s toolchain more than makes up for it. What I would give to just have a decent, open, compiler that could optimize, without paying out of the nose for it. I don’t think that Microchip truely appreciates how much this kind of thing alienates would-be developers and the DIY community. If I can’t share what I wrote, why should I use your part over someone who does? If their toolchain is free, why should I pay $$$$ for your compiler? ESPECIALLY when you make money from volume chip sales?

    What’s really funny, is that if Microchip *really* wanted to compete, all they have to do is unchain their dev tools and create a bigger community around it. Yes, the revenue would be lost, but they could easily sell support to those that require it. Personally, I think Atmel will sooner improve their selection, and continue to grow. Their eco-system is in place, and Microchip is just making a token effort. (And it’s not like I’m not partial towards microchip, I like their tools!)

    32bit is tempting, but that isn’t enough. I could just as easily move to a Cortex-M3 and get what I want without all of these legal head games. GET WITH THE PROGRAM ALREADY, MICROCHIP!

  3. +1 to what Anthony said.

    The chipKIT stuff does look interesting, but I don’t really want any of my $$$ going to microchip and their closed ways.

    While not as easy as the arduino environment there are some pretty nice, cheap ARM boards available these days and GCC based cross compilers are pretty easy to find.

  4. If you want to port the Honken-JTR USB stack to the PIC32 (and who doesn’t want that) You have to keep in mind that the PIC32 has the ping-pong mode always enabled. You cannot turn it off.

    The USB stack as it is, is far from supporting the ping-pong mode of operation therefore you are going to have to change it extensively to work with the PIC32. So much so in fact that I think that it will take a real effort as large as the effort to get it to go on the PIC24 or even larger.

Leave a comment

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.