Monday, February 26, 2007

Schematic Posted!

Just a quick note --

I've finally got the first revision schematic up on the schematics page. I've been hesitant to post it before it's reached this stage of completion. I know there's some errors with it (I've already ran into a few while checking my device footprints), but I figured it'd be a good start to get/keep people interested in the project.

Feel free to point out any design flaws. Anyone that does this will be listed permanently as a contributor to the project.

The best way to view the schematic is to download a free copy of Eagle PCB at http://www.cadsoftusa.com. This tool is great because if you'd like to work on your own layout for it, all of the footprints are embedded into the schematic, so all you have to do is place them, and run the traces.

As for the layout, stay tuned -- it'll be up shortly.

Wednesday, February 14, 2007

It has been too long

Wow. So much has happened with this project since December 10th. Many apologies for not posting an update sooner, but we've been quite busy.

The hardware design is nearing completion. We've made some changes that may or may not be temporary. I've highlighted those changes here, and I'll include a bit of further discussion as to the permanence of these changes at the bottom.

WiFi -

For now, we had to get rid of it. I'd mislabeled the module as being an Infineon module, when in actuality it was a module that incorporated the Marvell Libertas chipset. For those that might not be aware, Marvell requires people implementing their products to sign an NDA in order to access integration documents and driver source code. Their driver source is supposedly then provided under the GPL, but they apparently get a bit upset if you go and redistribute that code.

Hard Drive -

The HDD, despite its amazingly small form factor, had to go. I did some 3D modeling after the initial design phase to try and determine the best internal layout to keep the device as slim as possible. With the hard drive included, the device could not be kept slim. We're talking a device that literally looks like a brick here. Good news, though. I managed to locate some NAND flash chips, and have integrated a 4gig NAND chip into the design instead. In the near future (within a year or so) we will be able to integrate up to 16gigs per chip, and *I think* up to 4 chips per device. Using software RAID, this gives us an available 64gig SSD. Right now the cost per GB is a bit too prohibitive to do that, but it's coming down quickly. Without the hard drive, the device is getting pretty slim :-D


LCD -

If you haven't seen our datasheet page, or checked out our contributors list, don't feel bad - 'cause I only just updated them. However, if you go check them now, you'll notice that we've switched our LCD to one that was donated by Lyle Bainbridge. The screen he donated is the exact same screen as the one we were using before, with the addition of a rear FPC that contains a few DC-to-DC converters. In English, that means that to 'drive' the LCD we don't have to power it with a ton of different weird voltages like we would have for the other screen. Instead we'll just be able to supply it with 3.3V for its logic, and ~30V for its backlight. Since Lyle was also kind enough to supply us with a schematic he has tested, this donation has saved us *tons* of debugging time. We like not wasting time on things. Thanks Lyle!



I'm optimistic about all these changes, mainly because each change has had positive implications for our project (improved power consumption, lowered test/integration time, smaller form factor). It's possible that none of these changes will be permanent, though.

Missing the WiFi module means that in order to make use of a local broadband internet connection, the connection has to be 'funneled' through the Bluetooth stack, which has limited range. However, WiFi and Bluetooth coexistence is not something that is easy to produce in high-quality, and it requires a hardware-level cooperation between both RF controllers. I've considered switching to NXP. They've got a Wifi SiP in a leadless package that coexists with their Bluetooth SiP. Both chips are in stock at Digikey. However, I can't seem to locate a good specification for their WiFi SiP, meaning that I'll probably run into a similar situation as the one Gumstix is in with Marvell. As soon as I have time to make the consideration on this, I'll be getting someone from NXP on the phone to talk about it, though.

As for the HDD, From a size and power perspective, I say good riddance! However, from a cost/gig perspective, I'm mourning its demise. This will eventually change, though, and I'm optimistic. For those people who might wish to build a phone with the HDD integrated, I've still got an old design revision which includes it. If there's a want for it, it shouldn't be much trouble to bring it up to speed with the current schematic, and post it on the site as well. However, with everything that's going on right now I can't make any immediate promises about a layout for it -- good chance to get your name on the list of contributors, though!

As for the LCD, I have mixed feelings. On one hand, I love the new one. It's perfect in every way. On the other hand, this past summer I literally spent 2-3 evenings per week over a 6 month period trying to locate a supplier that sold it online to individuals in single quantities. I couldn't. Lyle was able to obtain a single unit through some professional contacts he had. That's great for him -- and us -- but I know that the average hobbyist doesn't have this kind of professional network set up. If this initial prototype goes well and I can drum up enough interest out on the interweb, I'm willing to go through another search for a distributor, and I believe Lyle is willing to help. If a single-quantity distributor can't be found, we can consider group buys, or just switch to a different screen at that time. Either way - this is the screen I'd originally spec'd for this project, and being that I have one in my hands, I can't pass up the opportunity to see the true potential of this device.


That's all for now folks. I have tons more to say, a schematic to publish, and tons of design notes to get up on the site. Keep watching the wiki and this blog for updates, as I'm sure it's going to be tons more busy here in the next few weeks.

Take care!

Sunday, December 10, 2006

Pre-Finals Update

It's been a while since I've written an update, so I figured now was a good time.

It's finals week here at FloridaTech, so the project is kind of on hold as we fine young students attempt to see how well we can really function on two hours of sleep per night. It's that one last surge of stress that makes the winter holiday seem all the more sweet.

If you've seen the front page, you'll notice that CadSoft USA has sent a generous donation our way. They have donated a student license of their Eagle product to us. The student license supports all of the capability of their full professional license, but the license stipulates that the product is only for nonprofit educational uses. Fine by me! Thanks (again) CadSoft USA!

If it were possible to jump up and down via blog post, I'd be doing that right now. Our GumStix and VGA touch screen came in. Unfortunately, due to the coming tests (read: torture), I haven't had much time to play around with any of it. I did break out the screen however, and I found out that the datasheet for its 'sister' screen will not be directly useful, but will provide us with hints for reverse engineering purposes. The first little gem I managed to get from it was the part number for the Hirose connector to interface to the screen with. The main interface is Hirose part number FH23-61S-0.3SHAW(05) -- which can be found on DigiKey as part number HFQ561CT-ND for $3.94 in single quantities. Awesome...

I'm going to be working on the screen interface over the winter break, as well as the first draft of the daughterboard. My goal is to have the screen working and GPE and/or Matchbox up and running before classes start again on Jan. 7. This will allow our team of budding computer scientists to actually do "computer scientisty" things with it rather than just stare at it in awe and wonder. I will be documenting my efforts here, and I'll be summing them up as a howto when everything is working solidly. Also, after I get something working, I'll be trying to publicize my efforts a bit in order to build our efforts into an OpenCell community rather than an OpenCell team. I almost can't contain my excitement...

Until next time, have a good holiday!

Ben

Wednesday, November 29, 2006

Pre-meeting update

I'll be repeating myself at today's meeting, but since it's been a while since our team has met (Thanksgiving break), and a while since I've posted any news, I thought I'd jabber a bit before class.

Bad news first to get it out of my system -- There's been some delay in the ordering process of our parts. I was told when I handed the forms in that the parts would be ordered that day or the next. I started dropping by a week or so later expecting the shipment to have arrived, and it hasn't for some time. I was told today that the parts were just ordered this week. This sets us back a bit (further) in progress, but overall I think that we'll be okay. There's still a lot of work that can be done in setting up our workstation as a test box for profiling.

I've been keeping my eye on the GumStix mailing list, and these delays have actually saved us some considerable grief. During the past three weeks, people have reported getting NanoX working (not the same as TinyX, but similar), and just today I received a message that someone is attempting to put Matchbox into buildroot. If they succeed, after the screen works, we may just have to check off the TinyX and Matchbox buildroot packages and drop the root filesystem on to the Gumstix as usual. If that's the case, after a normal build we'll have a working palmtop environment complete with GTK widgets to experiment with. God I love open source...

We may be having our first considerable donation soon. I don't want to spill the details of it online yet until I either hear back from the company that is doing the donating, or until I get a package in the mail. The donation is quite significant, and will save us a good deal of time. I've been in (slow) correspondence with this company for close to three weeks now, and while they were reluctant to donate at first, I think they may have already shipped it.

I'll say this at the meeting, but I want everyone to make a list of the top 3 to 5 applications/programs that they'd like to work on. After a semester full of delays, I'd like to hit the ground running next term and get a ton of stuff done. If we're aware of our individual goals now, we can have the research done to start putting them into action by the start of next term. My goal is to be ready to write applications by the first day of classes. If this means that we have to write and profile them on a PC that mirrors our device's software configuration, that's okay -- we just need to start publishing some code.

I'll see everyone later this afternoon.

Monday, November 13, 2006

Our Yak Has Razor Burn...

After a long day spent shaving several yaks [another] last friday, I have decided to switch our workstation distribution to something a bit more pre-prepared (Ubuntu).

Sherrell, Jim, and I met at something like 11am last Friday to set up our workstation. I made a last minute decision to switch from Gentoo Linux to Arch Linux due to the supposed similar customization ability of Arch, but with a much smaller setup time. Man oh man was I wrong.

First we had some problems burning the install CD that were caused by workstation restrictions in the CS lab applied by our lovely IT support staff. I tried downloading a command line tool that didn't require an installation (cdrecord for cygwin), but once again, too many restrictions to get that to work.

After an hour, someone had the bright idea to try a different lab. Low and behold, CS students aren't supposed to be able to burn CDs, but as for the general student population -- it's completely fine.

After getting the CD burnt and going through the seemingly simple installation, we rebooted to a nice bash shell. We spent a bit of time trying to discern the wonders of "pacman," Arch's package manager tool before finally calling a buddy of mine to get a quick 5 minute rundown. We attempted to "pacman -Syu" and then "pacman -S gnome" thinking that it'd be smart enough to handle this. Well - we were wrong. After updating the system (the first command), which updated the kernel, we rebooted to a kernel panic. After some searching I found out that initrd support had been replaced for some other ram disk tool, and that I just needed to edit the menu.lst file to use the different image. After getting this working, we tried the "pacman -S gnome."

This seemed to work flawlessly. It downloaded a bunch of packages from the FTP mirrors, and just installed them. So, anxious to give it a try, I decided to just run "startx." Well - apparently pacman isn't smart enough to discern that when installing a desktop environment, you need to have a window manager installed first. "pacman -s xorg" -- I've been spoiled by portage's wonderful dependency checks.

And here's where the real trouble began. Apparently the driver (i810) for the Intel 854G graphics chipset is a bit sketchy. First, it didn't work at all. Then after getting it to (sort of) work, it wouldn't let me switch between virtual terminals and the UI. Somewhere during this UI battle, both Jim and Sherrell had to go tend to other commitments, so I was left on my own to duel with the forces that be.

Long story short, I wasted about 6 hours of my free time trying without luck to enable us to switch between virtual terminals and the UI without crashing X and our HID interfaces. I spent some time on bugzilla, tried a bunch of patched drivers, and even the latest drivers from the xorg CVS, but I ultimately had no luck in squishing this bug. There is one patched driver that is said to have worked, but it has since been updated on its site (its md5sum doesn't match the one that's supposed to work); apparently this bug wasn't tested for during any regression tests (if the guy that managed the site even did/does regression testing).

Things seem to be going a bit smoother now, but I'm starting to think that maybe switching to a Ubuntu installation will save us time in the long run. Also, I have hopes that they've figured out how to squish the 854G bug. I've been told by several people that it's a very good distro, very easy to configure, and has an excellent UI and command-line package manager. I'm thinking something that supports more of a point-and-click type configuration might be better for the Linux 'newbs' on the team -- at the very least it'll help reduce the learning curve. I'd still love to have Gentoo installed, but I've got a team to consider, and I can't waste so much time battling yak sweat...

Tuesday, November 07, 2006

Meeting notes from 11/1/2006 with extra comments

This is a general overview of the 11/1/2006 meeting on tasks for current development

Highlights
  • Orders have been placed and start showing up sometime around 11/15/2006
  • We need to research some GumStix basics
  • We need to research some Embedded Linux basics
  • We need to finish our Gentoo workstation setup and start our profiling configuration
  • Schematics Update
Ordering
As of last meeting, I had the go-ahead to put through a couple orders. Today I handed off the paperwork to order the following:
  • GumStix Connex 400xm
  • AudioStix 2
  • USB Cable for AudioStix 2
  • 5.0V Power Adapter for GumStix
  • Sharp LS037V7DD05 VGA LCD + Touch screen
This order cost us a total of $399.16 -- that means we have 100.84 left over until we get more cash.

Because if we were to order all of our components at once, some would sit idle for a long time, I'd rather keep some cash in reserve for now because we don't know if there will be more money available in the future.

Along the lines of scraping by, I've decided also that for now, the role of 'Hard Drive' will be played by the 30gig 2.5" laptop drive that's in my Creative Labs Zen Xtra MP3 player. This device has the same interface as the 1.8" drive, so it should just be a matter of swapping out components in the future.

Also, I have access to an older Telit GM862 module. This module is pin-compatible with the one I've spec'd out, but it doesn't have a GPS, and it's only Tri-Band rather than Quad-Band. It will be good for testing GSM/GPRS functionality until we can get the Quad-Band GPS unit in.

That only leaves the 802.11b/g and Bluetooth module. I'm comfortable with holding off on that for now.

Research GumStix Basics
All teammates need to research the following areas:
  • GCC Cross Compilation for XScale PXA255 Architecture
  • Buildroot Usage
  • GumStix Bootloader Configuration
While conducting this research, keep in mind our general system configuration. We'd like to split the root file system between the 16mb StrataFlash and the HD. This means that we'll have to determine exactly which directories of the Root partition are necessary for the kernel to be able to mount the HD. Once the kernel can mount the drive, everything else can be stored on it.

Also, this is supposed to be a full 2.6 kernel. That means that we'll have access to swap space. I don't anticipate this being very tricky to set up, but it might be useful if someone checks to see whether or not this has been attempted before from a GumStix or other PXA255 Linux distribution.

Research Embedded Linux Basics
At first we'll probably be using a combination of buildroot and 'pencil and paper' to be managing our dependency tree for our system environment. Because we'd like this to be a deployable device, we'll need to have some sort of package manager running on the GumStix itself. This could be something simple like RPM, or it could be a more robust tool like a binary-only port of Portage. We need to start looking into this, and start mapping our system dependency tree. The better feel we have for the individual packages that are building our system, the easier it will be to debug problems in the future that are created by dependencies being improperly configured or specified.

Gentoo Workstation
As far as I know, no work has been done on setting up our Gentoo workstation in the lab. We have 1 week until the GumStix gets here. If we don't have a workstation set up, we're sitting ducks as far as progress goes. Also, we need this set up so that we can start working on a system profiling environment. If Jim and Sherrell can't get together to get this done, then I don't mind doing it, but Jim and Sherrell also need to get up to speed on working with Linux, so it's best that they are the ones to carry this out.

Schematics Update
I've been working on the schematics some, but I haven't been having much luck. My main frustration is CAD software. I don't have a copy of Eagle to use at home, so I'm stuck with finding one on campus to work with. I've been trying out a few other suites, like gEDA and Kicad. I'm not sure that I like these tools as much, as I'm already familiar with Eagle. Specifically, gEDA's autorouter is lacking. If anyone has any suggestions, feel free to send me an e-mail, or comment on this post.


Open tasks:
Install Gentoo on workspace's workstation -- Sherrell and James
Research Buildroot, GCC Cross Compilation, and GumStix Bootloader -- Everyone
Research GumStix Swap Space -- Everyone/Anyone
Schematics -- Ben

Monday, October 23, 2006

Meeting notes from 10/23/2006

This is a general overview of the 10/23/2006 meeting on the architecture presentation that we will give to Dr. Mitra.

Highlights
  • Eric is officially a team member
  • We have a workspace
  • We may have a logo designer
  • Still no word back on funding amounts
  • MatchBox Window Manager + TinyX
  • Presentation contents
Meeting Notes

Everything is fine for Eric to officially join our team! Looks like we're at our maximum... Cool stuff!

James found us a workspace last week in the ECE Senior Design Lab. We've got a computer, keycard access to the room and building, and soon we'll have locking cabinet space.

A friend of mine from back home is dating a design major who is in need of a project. He's also the artsy type, and I'd mentioned that I needed a logo. He apparently took my plea to her, and she's trying to get the project approved with one of her professors. With any luck, it'll be her class project.

There is still no word back on an exact funding amount. I'm probably going to go back to the school's Director of Laboratories soon if I can't find an answer within the department.

Eric's first contribution was hunting us down a window manager. MatchBox is a window manager designed specifically to run in embedded environments on devices such as PDAs and smart phones. It is designed to work well with TinyX and other embedded XFree86 implementations. The GPE Palmtop Environment (GPE; yeah, another recursive acronym) can then run on top of MatchBox and provide us with even more "out-of-the-box" capabilities -- specifically capabilities similar to what one would expect from Gnome or KDE, only scaled to a palmtop type environment. Needless to say, I'm very excited.

The presentation is up in the documents section. Everyone should be familiar enough with the document by Wednesday so that we can give our presentation without a hitch. It currently has only four slides (not counting the intro and questions page).

Content by Slide number:
  1. Introduction
  2. Hardware Communications Block Diagram
  3. Hardware Power Management Block Diagram
  4. Software Layered Dependency Diagram
  5. Software UML Deployment Diagram
  6. Questions
To the team: please go over the slides well before the presentation on Wednesday!

Open tasks:
Install Gentoo on workspace's workstation -- Sherrell and James

Architecture presentation -- Prepared by Ben and Sherrell, will be given by Ben and supported by everyone

Schematics -- Ben

Task Delegation -- Ben

Meeting notes from 10/18/2006

I'm a bit late on posting this, as our next meeting is scheduled for this afternoon. What follows is a general overview of the meeting from 10/18/2006.

Highlights
  • We most likely have a new teammate
  • We have funding
  • We don't know how much yet
  • We need to order parts
  • We need to present our architecture to Dr. Mitra on 10/25/2006
  • We need to solidify our group's communication
  • We need to research a good TinyX implementation and a good WM for it
  • We need to define tasks and start working
Meeting Notes

Our new teammate's name is Eric. He is another senior design student that was reassigned to our project due to his project sponsor canceling the project (unless I confused some detail?). I'm still awaiting approval from Dr. Mitra, our team's advisor, on him joining, but I believe everything is fine with him joining up. This means that our group has reached the maximum number of members at this time. Exciting stuff!

That leads to the next item on the table - funding. We do in fact have funding. We were awarded a sum of somewhere between $500 and $1000. Please let it be $1000!! I've been trying to track down the official number as well as the procedure for actually spending this money. It's getting pretty late in the semester and it's kind of worrisome that we haven't actually ordered anything yet.

Dr. Mitra has requested that we present our project's architecture to him on Wed. 10/25/2006. He requested a UML architecture drawing, and he wants every member of the team to be completely familiar with it. We spent some time going over the project architecture, and Sherrell took on the task of doing the UML Deployment diagram. I did a hardware diagram and one of those fun layered dependency diagrams for the software. Hopefully this will meet his approval. We will meet today to discuss the architecture as well as the presentation to Dr. Mitra.

Because things are starting to pick up speed, I made mention of solidifying group communication. Basically we need to set up a list server or a forum or something so that we can communicate asynchronously throughout the week as we're doing work. We've all got AIM and e-mail, but AIM is unreliable, and both are tedious to convert to a public format if we decide to open up our project communication as a development document. I'll probably be adding a phpBB shortly to remedy this. I'll most likely add a public read-only board to it that will serve as our internal bulletin board.

Now that we're getting a start on things and solidifying the architecture descriptions, I decided it was time to start researching how exactly we're going to accomplish the issue of cramming a UI into this thing. Hoping to avoid licensing fees for Qtopia, Eric is going to do some research on TinyX and window managers that will run on it. Hopefully we can bend an existing system to meet our needs.

Last but not least, now that we've got funding we need to make decisions on what exactly the funding will go towards, and make decisions on task assignment for the tasks that our funding will allow us to complete. I'm hoping this doesn't mean Gantt charts via MS Projects, but chances are that's what will end up happening. If someone has a better way of managing this, by all means speak up!

Tasks that were opened (discussed):
Find us a workspace -- taken by James -- completed 10/27/06 (ECE Senior design lab)
Install Gentoo on workspace's workstation -- taken by Sherrell and James
UML Diagram -- taken by Sherrell and Ben
Architecture presentation -- still open to assignment, but will probably be taken by Ben
TinyX and WM research -- taken by Eric
Schematics -- taken by Ben