ARM Project: Planning and Sourcing
“So, I found a display that I like, but it has to be hot-bar soldered, and I don’t think I’m set up to do that,” I said to Workplace Mentor. “You’re looking at this the wrong way,” he replied. “Choose the main processor first, then pick something that matches the right interface, and then concern yourself with how to attach it. When you’re prototyping, it’s usually easy to roll around issues like how you’ll connect something.” I hadn’t thought of that, and it sent me back to my desk.
I have been spending some of my free time trying to source parts for a new project. I want to learn how to, from the ground up, build a platform and write a BSP from it. This is something very much apart from what I do at work. Generally speaking, I enter the process after we’ve already retained a vendor and our electrical engineers have had their turn, demanding the necessary hardware to support our features and so forth. At that point, the evaluation boards have been cranked out and a sample BSP for a number of features exist. Often, when I get involved in very low level work, it’s because the sample BSP presumed the existence of a chip that our hardware designers replaced in secret.
So, yeah…I could go out and buy an evaluation board for some ARM processor, complete with a rich boot loader and even a BSP and some sample apps. I could. Sparkfun has tons of them. If I did, though, I wouldn’t really learn anything new. Sure, I’d have some shiny pictures to put up here, but I’m still just following in someone else’s footsteps, and I do that at my job.
What Workplace Mentor said, though, sent me back to the drawing board a bit. It wasn’t so much specifically a concern over interface versus hot bar soldering as much as it was a realization that I wasn’t thinking about all the various gating concerns. I probably still am not, but it’s at least led me to settle in on some decisions.
First off, I flat out need to settle on a processor. At this point, I think I’m going to go with an LPC2148. I’ve come to this decision looking at a number of factors. First off, it’s an ARM processor so I can leverage an existing stack of tools and have some expectation of how they’re going to work. One of my frustrations with the SX and with the SX-Key tools was their poor reliability, and in the early phases of design here, I will very much be flying with one propellor (that one being a mix of wits and low-level tools) and I’d like to know that that one will serve me.
The next reason to choose an LPC2148 is that it’s used heavily in a number of SparkFun kits. This means there’s a community of experimenters and hobbyists built around it. It means that I can find sample schematics. It means that I can ask questions and get input. It means that I can look at sample code for boot loaders. I may not want to follow in someone else’s footsteps, but it helps to have some signposts on the road. I can get that with this particular model. Yes, I could have gotten this with a number of different products. I could have chosen an Atmel. Well, I have an Atmel. It’s on my Arduino. I can hack at that if I want. In fact, an Atmel might have been easier since I could get a DIP package for it. But, I’d have had fewer pins and thus less flexibility. So, I am choosing something that will challenge me where putting together hardware is concerned but which also has a community and which is a bit more, in my estimation, robust.
I could have chosen something with an embedded LCD controller if I wanted to head that way. An LPC2478 would have been a good choice. It has a similar architecture so I’d have gotten many of the similar benefits of familiar tools and similar code and maybe even a common community. I’ve passed on this idea because I suspect it will be more complex to find parts necessary for prototyping. At this point, I lack the requisite experience to prototype things without getting a solderless breadboard or at least a wire wrap board involved, and that means I need to be able to break out the leads of the processor readily. The LPC2148 has an LQFP64 package, and I’ve not had much trouble finding breakout boards for it (such as this one). The pickings for an LQFP208 package, however, have been much more slim.
What does all this mean for my overall project? Specifically, what does it mean for driving a display? Well, right now, I haven’t finished sourcing an appropriate display. I do have some interesting leads, though. One of them is this TFT QVGA LCD from Embedded Artists. I like it because it largely because it’s already on a breakout board I can use for prototyping. It otherwise comes with the usual features from a number of displays with an embedded controller– parallel and serial interface and a few other small bells and whistles. Another interesting choice I’ve found is a funny little display controller called a PICASO. This controller will handle the minutae of display, has an 8-frame buffer in QVGA mode, can take commands (including drawing commands) over standard serial connections, and even can interface a memory card via SPI. It does a lot on only a few lines, and I like that, especially since the alternative is tying up several lines from the LPC2148 to handle display control. On the other hand, it seems more geared to VGA display and I am not, at the present time, quite sure how it handles a small LCD TFT display. The maker of the PICASO has an evaluation board with an LCD on it, but they have not responded to my questions regarding how they’ve hooked it up.
I’ve come to realize, though, that I have a ways to go before I MUST be concerned with this. First, it’d be good to just get a prototype that can be programmed has a reset button, and can give me some debugging output via serial. That alone is a huge leap in the right direction.
So, I guess that’s it for now. Looks like I have some parts and new tools to buy.
Comments off
