I did find a couple of hours to go to the ARM Techwhatsis Conference last week. A couple of hours was all it took, 'cause the show has gotten a lot smaller than it used to be.
Not a lot of exciting new stuff, though ST was pushing the new STM32 Value Line, to the extent of handing out free STM32VL Discovery boards - cute enough little gadgets, though in the month or so since the board first came out, they're rearranged the website and all the pages mentioned in early-adopter blog posts (and on the packaging) are now 404. I did eventually find the necessary software to talk to the thing, though.
Had a brief talk with the Code Sourcery guy, as usual. He pointed out that there's a free, ready-built, easy-to-install version of the command-line tools (GCC, binutils, and such), and (with some questioning) that it's a good fit for building AGROS applications. So, this time I downloaded it, and installed it on both Linux and Windows, and it seems to work fine, once I added a few lines to my ldscript template to deal with the fool .ARM.exidx segment. And! It supports Cortex M0, M1, M3, and M4, which is one reason I'd been looking at a GCC update (having a common toolchain so customers can compile my code is also good).
Anyway: shortly after the show, I encountered an application that's currently using an AVR part... and running out of space, so the next step is an ATmega2560. Which is, like, pricey.
And then I take another look at the STM32 and LPC1700 families, and I'm seeing parts that can compete with that AVR on peripherals, and have much more memory and zippy-fast 32-bit processors... for a bunch less money. And, though the running-flat-out power consumption is quite a bit higher, the power consumption at a given clock speed is just about comparable. Maybe even a bit lower.
Awww, but they don't have the on-chip EEPROM. And they positively require regulated 3.3V. Apart from that, though....
That particular gadget probably doesn't get converted over, because there's an existing code base, all tied up in this Aard-Wino thing. (So, if I get involved in the project, I'll have to get somewhat up to speed on Arduino, which I've never had occasion to play with.)
I think I need to look closely at the LPC1700 series, especially since, if I'm reading the signs aright, my LPC21xx/23xx device drivers should carry right over, though I'd probably want to toss in some conditionally-compiled sections to handle new features of the old devices.
And that means getting up to speed on the M3 architecture, which actually looks to be friendlier than ARM (or any of the other typical-RISC architectures). Code up a new init module, task switcher, semaphore functions, and exception-handler wrapper generator, and AGROS should be good to go. IMCFT, of course.
(Yes, wrappers around interrupt handlers are required, at least in some cases... because an interrupt might trigger rescheduling, and for that to happen, the handler needs to jump to the scheduler instead of returning.)
Recent Comments