Scroll to the bottom to see a summary of this post.
I've just finished reading chapter one of Jan Axelson's USB Complete. I can already tell that it is going to be an excellent book. Her software examples are Windows-centric but the principles she presents apply to any USB-compliant OS. She specifically mentions Linux and Mac OS X as being in the latter category.
After just one chapter I feel like the USB spec is much less of a mystery. I still don't know just how I'm going to create my magic gizmo yet, but at least I have some great information on what technical challenges lay before me. Jan does a good job of defining all of the "who does what" in the USB specs: the USB devices, the USB controller, USB hubs, and where the software fits in - both firmware within the device and the device drivers within the OS. And it's only chapter one!
The first potential red flag for me was reading about the truly serial nature of USB. Only one device gets to communicate at a time on the bus. However, with bus speeds of 12Mbps and 480Mbps I think USB is up to the challenge. (There is also the slower 1.5Mbps speed.) Also, a device can request of the controller a maximum delay between communication exchanges. I'm hoping to find a happy medium in this regard so that my device will function properly and still coexist with other devices on the same bus.
I also got a good pointer from someone with experience in this area. (Anonymity preserved, just in case he wishes it so.) He mentioned that the USB bus can handle these kinds of speeds, in terms of number of interrupts per second, that is, but it can be tricky. He also mentioned that the Linux USB stacks in kernels 2.6.8 and 2.6.9 are sub-par, and that's putting it nicely. I plan to do much of my initial development in Windows since I seem to have more resources in that arena. However, I have no intention of neglecting Linux. In fact, I have no intention of neglecting Max OS X, except that I know zero about Macs and I don't have access to one. Any volunteers who'd like to help are more than welcome to contact me.
Now I'm off to dig up more about the T1/DS1 specs and my DS2155 chip...
-MC
Summary:
- USB Complete, 3e, is a great book, even after just one chapter
- The ability of the USB bus to handle the speed needs of a T1 is a big question
- The Linux USB stack is still maturing and is not the best place for initial development
I've decided to add a summary at the end of each postcard. Scroll to the bottom to see the gEDA, etc. summary.
Last night I downloaded gEDA. I just burned it onto a CD today while babysitting my two kids. Mommy needed a break so she went to Wal-Mart. I tried loading it on my old Dell Inspiron 9100 laptop but I kept getting an error. After some digging, I found out that the Ubuntu guys have whipped up a package for an older version of gEDA. No thanks.
I've decided that I'm not ready for Ubuntu and it's not ready for me, at least not yet. I've done Centos and Red Hat installs scores of times, so I'm sticking with those for now. I'll re-install Linux on my laptop (which I'm dual-booting with WinXP) and I'll use the new CentOS 5.0 DVD that I'm downloading with BitTorrent.
I'll document my progress on that one later on. My next postcard will be about some more specific research that I've been doing.
-MC
Summary:
- Ubuntu Linux not ready for latest gEDA
- I am not ready for Ubuntu
- I am moving on to more specific research
Now that I've started pursuing this crazy idea, what next?
Well, I've got several books handy from when I started working with Asterisk, most of which I got used off of eBay:
I have since found out that there is a new edition of the VHDL book, but I'm holding off for now.
I even went and bought a cool little breadboard training kit from Radio Shack. Glamorous? No. Helpful with getting to know electronics after a 15+ year hiatus? Yes. Not a bad $70 to spend to play with all sorts of transistors and IC's.
I spent a fair amount of time poring over the source code and schematics of my quad T1 cards. They are a clone of the Digium Tormenta2 PCI Quad T1 board. They even use the same drivers, except that the designer of my board has made some modifications. Anyway, that project lead me to some interesting information:
This was almost too much information! However, I digested it as best I could. It turns out that I was able to learn quite a lot about embedded software, including the relationship between hardware, firmware, and software. I also was introduced to FPGA's and VHDL, both of which I had never heard of. Very cool topics.
Recently I purchased a few more books, as well as downloading O'Reilly's Linux Device Drivers 3rd edition. Of course, where possible I bought used on eBay or half.com:
I got the Linux books because kernel programming and embedded systems are closely related to getting down and dirty with writing software, drivers, firmware, etc. that get seriously intimate with the hardware. I needed to start somewhere, so there I did. If anyone has other suggested reading then I'd be willing to check it out. I'm a book addict.
One other place I looked that opened up a whole new can of worms, in a good way, is David Rowe's website. I've only just scratched the surface on his offerings, but the Free Telephony Project looks totally cool.
At this point I've just started reading about USB's capabilities. It has three different bus speeds, and I think the two higher speeds will be adequate but I won't know until I really get into this hip-deep.
My next postcard will be from my journey through OSS for creating, designing, and testing digital circuits and creating PCB's. (Printed Circuit Boards.)
-MC
I had an idea.I'm a telecom/datacom/computer geek. I like tinkering. I like OSS. I even like Windows, at least Windows 2K/XP. Not a fan of Elmer F.U.D. - er, Steve Ballmer - or of Vista, but that's another discussion...I like OSS telephony apps, specifically Asterisk and FreeSWITCH. I like playing with T1's. I work at a call center and I have T1's, PRI's, PBX cards, etc. to tinker with. It's fun, at least for us geeks. I have a few quad-T1 PCI cards, and they work very well, but they're limited to Asterisk right now. (Long story having to do with GPL...)I wondered to myself if someone had created a USB T1 interface device. The answer is yes, but it's WAY too expensive for a tinkerer. I posted my question on the Asterisk user mailing list. To my surprise, a lot of people offered cool ideas for the use of a USB T1 interface device, but no one knew of any that existed. That's when it hit me:I'll see if I can build one myself! Hence the title of this post.This blog is dedicated to the relating of the details of my journeys through OSS software and hardware. I welcome any insights, anecdotes, offers of help, donations to help pay for my therapy, etc.You are welcome to tag along. But please, don't let me hear, "Are we there yet?"-MC