ungureanuvladvictor

Untitled

Mar 16th, 2014
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. Describe your project in 10-20 sentences. What are you making? For whom are you making it, and why do they need it? What technologies (programming languages, etc.) will you be using?
  2.  
  3. I have looked over the last years implementation of the Linux flashing system and will keep the same structure of operations. When the AM335 SoC does USB Booting it exposes an RNDIS network interface to the host machine. At this point using user-space USB libraries I will send the second stage boot-loader, mainly SPL to the board. The protocols used at this step are BOOTP for IP assignation and TFTP for file transfer. Vlad told me that he has a small patch to u-boot source code that tricks the board to think the network interface is already up without any communication with the host *we already own the USB interface so data can flow freely over there*. After SPL is up and running it will receive using the same protocols and flow of events the u-boot binary. U-Boot at this point automatically goes into the USB booting procedure. As I have seen from last years project here a kernel and a small memory footprint ramdisk are sent to the board. After the kernel has been loaded it starts a small daemon tool that receives the final image which is to be flashed onto the eMMC or uSD card. The kernel has enabled by default the g_serial module to emulate a serial port over USB for communication between the host and the board.
  4.  
  5. As a summary the protocols used will be RNDIS, BOOTP, TFTP. As USB user-space I will stick to Libusb because their windows port is strong. On top of this I will be needed to implement the IP/Ethernet/ARP headers for the RNDIS communication, so my networks knowledge will come in handy here.
  6.  
  7. All programming will be done in C with some minor things in Bash for the daemon script in the kernel. For Windows there are .NET bindings for WinUSB so I can develop easily the application using the .NET framework.
  8.  
  9. Regarding the use of Libusb on Linux the libusbx build is stable and has been tested already. WinUSB on the other hand has it's status set to Experimental->Stable but issues have been reported with bulk transfer which will be the method used in this project. Also Windows should have a RNDIS driver built in such that I will not be needed to code the interface for it.
Advertisement
Add Comment
Please, Sign In to add comment