Purpose:
- This page is intended to cover subject, plans and status relating to the implementation of Isoc USB on the LPC21xx, and communications software to be run on the linux host.
Reference
Software on PSAS git web
git clone git://git.psas.pdx.edu/git/node-usb
LPCUSB Project
Wiki
Source code
svn co https://lpcusb.svn.sourceforge.net/svnroot/lpcusb/trunk lpcusb'
Alternately: git svn clone https://lpcusb.svn.sourceforge.net/svnroot/lpcusb/trunk lpcusb
Linux kernel notes
grab a copy of the kernel
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-2.6
cd linux-2.6
git pull
usb skeleton example
linux-2.6/drivers/usb/usb-skeleton.c
USB Documents
- /usr/src/linux/Documentation/DocBook/usb.tmpl
- Device Descriptors
Status
Tentative Plan of Action (2008-10-10)
Phase 1
- Download latest version of LPCUSB, compile, flash 2148 dev boards, get sample applications working
- Investigate structure and nuances of existing LPCUSB code to better understand what is necessary to get Isoc mode working
- Get eclipse/gdb/openocd all working for realtime debugging of MCU with LPCUSB.
- Get USBMON running, be able to watch/understand whats going across the USB bus such that during future development we have a useful tool for debugging what were working on.
Phase 1a
- Document (wiki) successful steps in Phase 1
Phase 2
- Implement a USBFS userland Linux application, utilizing ioctl() calls, to communicate with an existing sample provided by LPCUSB.
Investigate Gumstix(R) with 'on-the-go'(?) as secondary linux host platform for development. (...)
Best candidate combination? Need to call.
Verdex Pro XM4 combined with
- breakout-vx
Phase 3
- Modify the LPCUSB source code such that it can do small non-DMA Isoc transfers.
- Implement Linux application, similar to what was implemented in phase 2, that can communicate with the device via small Isoc messages.
Phase 4
- Modify LPCUSB source code such that the Isoc implementation can use DMA for larger transfers.
- Implement example application that demonstrates the use of LPCUSB Isoc communicating with a linux host, may need to include linux application as well.
Phase 4a
- Document (wiki) steps in Phase 4
Phase 5
- Work with original LPCUSB author and coordinate submission of patches to mainline LPCUSB development tree.
Implement method for LPCUSB Project scm (Subversion) and PSAS scm (git) to peacefully coexist.
Example git svn clone https://lpcusb.svn.sourceforge.net/svnroot/lpcusb/trunk lpcusb
Phase 6
- Figure out how to cleanly incorporate LPCUSB into the version of FreeRTOS that were using on the Nodes.
- Create example FreeRTOS tasks that utilize the integrated LPCUSB library in FreeRTOS.
Phase 7 (primary project goals satisfied at this point, these are potential but optional improvements we may pursue)
- Implement performance analysis tool to stress test the device and communications stack. See how fast we can go and where things break. Do this on both x86 dev boxes and flight computer.
Phase 8
- Discuss various Linux kernel/userland approaches for having the flight computer communicate with the USB nodes, in particular, what USB infrastructure (USBFS, USBFS2, kernel module). These are all options with pros can cons for which group feedback would be very beneficial.
Phase 9
- Implement based on the consensus determined in phase 8.