Ever since I received my PSOC 4 Pioneer kit from Cypress I have wanted to play with this little mixed-signal Programmable System-on-Chip (PSOC) developer board. I love developer boards, providing that they are priced in a way to entice me to not only open my wallet but also make time in a busy schedule. I think my kit was free after winning a swag bag from Adafruit that they themselves obtained at the Open Hardware Summit and gave away on their weekly streamcast. Ultimately it was the invitation to beta test datasheet.net which also was included in that pile of swag that led to my getting involved with Hackaday.
What is Programmable System On Chip?
So what is a PSOC 4? A quick summary is that it’s based on an ARM Cortex reduced instruction set processor (RISC) and is somewhat capable of supporting shields based on the Arduino footprint, and it also uses a bright red PCB that I have come to associate with a Sparkfun PCB. What doesn’t show is the fact that this programmable system on chip has programmable analog function blocks in addition to programmable digital logic blocks. There is also some supporting input/output circuitry such as a multicolored LED and a capacitive touch sensor directly on the PCB.
This is an intriguing amount of programmability, so much so that Newark/Element 14 highlighted a “100 projects in 100 days” event on it.
Enter the IDE
Over the years I have had to create or install many Integrated Development Environments (IDE) that linked hardware to software. Knowing that you had to, and how to, implement an IDE was part of being an engineer. Nowadays with the Arduino type environment the user has an IDE pretty much as soon as they click on the executable which I find to be one of the best aspects of the genre. It was so quick in fact that I was able to get my teenaged son into writing his first program even before he remembered to do massive eye-rolls and make sounds of utter disdain. He did give up however, just shy of learning how to have the Arduino make sounds of disdain on his behalf.
If you’ve played with an Arduino, you’ve probably been frustrated by the IDE. It works, but it’s not the best editor. It’s especially painful for bigger files and larger projects. The Stino plugin for Sublime Text aims to solve this issue by bringing the full functionality of the Arduino IDE to the Sublime Text editor.
Sublime Text is a powerful text editor with support for most programming languages. What it’s missing is support for compiling and uploading code to an Arduino. Stino bridges that gap. Sublime is a commercial product, and retails for $70 USD. However Sublime does have an indefinite trial period, so Stino can be evaluated for free. Stino itself is an open source plugin written in Python, and you can contribute to the project on Github.
After installing Sublime and Stino, you point the plugin at an Arduino install folder. It then allows you to build and flash directly from the editor. For anyone who’s been frustrated with the Arduino IDE, this looks like a slick solution.
We’re partial to using gedit and a makefile for our AVR projects. But for the most part we don’t a debugger with those smaller chips. Now that we’re getting going with ARM processors we use debugging all the time and Eclipse is a great way to combine code writing, compiling, and debugging in one place. Sure, we could use one of TI’s provided IDEs (some of them are based on Eclipse), but we’d rather build our tools up ourselves. [Doragasu] is making this a snap with his Eclipse for Stellaris Launchpad tutorial.
He illustrates every step with a screenshot like the one seen above. Here he is including the driverlib from StellarisWare in the linking step. After all of the compiler and linker settings are just right all you need to do is make a copy of the template to start a new project. The final part of the setup configures lm4flash to write binaries to the chip, and configures OpenOCD for use when debugging.
[Alex] has been working with Arduino for some time now, but always thought it lacked some features which advanced users would really find useful. He decided to devote some free time to fixing the problem and ended up coding an Arduino IDE for more advanced users. A screenshot of his work — called MariaMole — can be seen above. It is obviously different from the standard IDE, bot not so much as to scare off new users.
This is meant to complement the original IDE, so it actually uses those configuration settings as dependencies. Once running, the program allows you to have multiple projects open at once. These are managed with the tree in the left hand column and a series of tabs along the top of the code window. When it comes time to compile and load the sketch you can click one button like normal, or use the program to fine tune your compiler flags, libraries includes, and the like. It also allows for interaction through one or more serial terminal windows. We haven’t tried it ourselves, so please leave a comment with your thoughts after having given it a go.
The Raspberry Pi WebIDE is a web server that runs on the Raspi. By connecting to your raspi in a web browser, you’re able to create your own Python programs that are able to interact with the GPIO pins. All the code is stored in the cloud with the help of bitbucket.
The WebIDE is in its early Alpha stage right now; there are a few bugs and minor issues, but in the video after the break, [Limor] shows us it’s possible to push code to a Raspi through the Internet and view the result in a web-based serial terminal.
For fear of editorializing, we have to point out that Adafruit’s web IDE – along with other Arduino web IDEs such as Codebender and the Wifino – work on the cloud. If you’re planning a long-term project that relies on a web-based IDE, you might be in for a world of hurt if only because you can’t host a cloud on a personal server. We’d love to see a package that allows us to have the same functionality as bitbucket on a personal server. If you can find a project that does something similar, or have written your own, send it in and we’ll spread the word.
We received a tip from [Fabien] that Texas Instruments had posted a set of IDEs for the Stellaris Launchpad on their download page. At first we skipped right over the link, but then decided to take a look and see if things had changed any since the MSP430 Launchpad had been released. As we expected, there’s really no help on this page if you’re looking to develop for the hardware without using one of these IDEs.
Why would we want to forego the preconfigured development environments TI supplies? For one thing, they offer only trial licenses. When you go to download one of the packages you have to wade through a eyebrow-raising non-export agreement. When we made it that far, the ~500 MB Sourcery package we downloaded was quite slow. And we don’t see any option for installing any of these on a Linux machine. No matter what OS you choose, we think you should be able to develop for any architecture using the same development environment — be it Eclipse, GNU Emacs, Notepad, or whatever . We don’t want to download a huge package just to try out a new chip.
We know you can develop for Stellaris ARM chips using a vanilla cross compiler like arm-none-eabi (we use Sourcery CodeBench Lite — formerly CodeSourcery G++ lite). We hope that TI is planning on adding a barebones package that supplies a simple Makefile, Linker Script, and base libraries for the hardware. But we won’t hold our breath. After all, it is an industry standard to leave out Linux support.
The Arduino IDE is an abstraction layer for the AVR chip which the board is based around. So it’s no surprise that it is now possible to use the Arduino IDE with the TI Launchpad board. This makes it dead simple for beginners to play around with the inexpensive and low-power MSP430 platform. This is all thanks to a lot of hard work on part of the Energia developers.
The project branches from Arduino so the look, feel, and function are all about the same. Most notably, the color scheme has migrated to red to match the board color of the Launchpad. You can configure the hardware the same way by selecting a COM port and target board. Almost everything is already working, but you should check the known issues page so that you don’t try to use a function that hasn’t been ported. Right now the list includes the random and random seed functions, as well as tone, notone, and micros. There is also an issue with analogWrite; it will only produce half the requested frequency and duty cycle can only be set from 0-50%. Still this is a great development if you’re most comfortable working from this IDE.