196 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			196 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <html>
 | |
| <head>
 | |
| <title>Ether Dream - Developer Manual</title>
 | |
| <link rel="stylesheet" type="text/css" href="main.css" />
 | |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
 | |
| </head>
 | |
| <body>
 | |
|  <img src="etherdream.png" width="298" height="75" alt="ether dream">
 | |
|  <div id="header"><a href="protocol.html">Ether Dream</a></div>
 | |
|  <div id="content">
 | |
|   <h1>Ether Dream - Developer Manual</h1>
 | |
|   <h2 style="color:red"><em>NOTE</em> - This page is for the previous Ether Dream 1. Check the <a href="/">current website</a>.</h2>
 | |
|   <h2>Contents</h2>
 | |
| 
 | |
|   <ul>
 | |
|   <li><a href="#intro">Introduction</a></li>
 | |
|   <li><a href="#hw">Hardware</a></li>
 | |
|   <li><a href="#config">Configuration</a></li>
 | |
|   <li><a href="#protocol">Protocol</a></li>
 | |
|   <li><a href="#dev">Development</a></li>
 | |
|   <li><a href="#fw">Firmware Updates</a></li>
 | |
|   </ul>
 | |
| 
 | |
| 
 | |
|   <h2 id="intro">Introduction</h2>
 | |
|    <p>
 | |
|    This is a work-in-progress developer-oriented guide to the hardware features and software architecture
 | |
|    of the Ether Dream DAC. For setup and usage tips, see the <a href="/userguide.html">User
 | |
|    Guide</a>. 
 | |
|    </p>
 | |
| 
 | |
|   <h2 id="hw">Hardware</h2>
 | |
|    <img src="etherdreamboard.png" alt="Ether Dream board diagram" width="700" height="357">
 | |
|    <p>
 | |
|    Starting at the Ethernet connector on the board and moving counterclockwise, the
 | |
|    hardware features and connectors on the board are:
 | |
|    </p>
 | |
|    <ul>
 | |
|     <li>Ethernet connector - includes link and activity LEDs</li>
 | |
|     <li>USB connector. This is currently used only for firmware upgrades.</li>
 | |
|     <li>Status LED. This LED blinks when the board is in bootloader mode, and
 | |
|         is on normally.</li>
 | |
|     <li>MicroSD slot. This will be used, in future software updates, for settings
 | |
|         and playback of stored shows.</li>
 | |
|     <li>External power jack. This is a 2.1mm/5.5mm barrel connector, center-positive,
 | |
|         accepting 8V-25V DC.</li>
 | |
|     <li>Power supply screw terminals. Ground is on the left (towards the outside of
 | |
|         the board), positive is on the right (towards the inside of the board).
 | |
|         The two power inputs are isolated from one another with diodes; if both
 | |
|         are connected, power will be drawn only from the one with the higher voltage.</li>
 | |
|     <li>GPIO header. This connects extra pins from the microcontroller. Pin 1 is closest 
 | |
|         to the power jack. The pinout is:
 | |
|         <table class="grid">
 | |
|          <tr><td>1 - P1[8] / PWM1[1] / CAP1[0]</td><td>2 - +5.5v supply</td></tr>
 | |
|          <tr><td>3 - P1[19] / MCOA0 / CAP1[1]</td><td>4 - P1[22] / MCOB0 / MAT1[0]</td></tr>
 | |
|          <tr><td>5 - P1[26] / MCOB1 / PWM1[6] / CAP0[0]</td><td>6 - P1[29] / MCOB[2] / PCAP1[1] / MAT0[1]</td></tr>
 | |
|          <tr><td>7 - +3.3v supply</td><td>8 - P0[15] / TXD1 / SCK0 / SCK</td></tr>
 | |
|          <tr><td>9 - ground</td><td>10 - P0[17] / CTS1 / MISO0 / MISO</td></tr>
 | |
|          <tr><td>11 - P0[18] / DCD1 / MOSI0 / MOSI</td><td>12 - P0[16] / RXD1 / SSEL0 / SSEL</td></tr>
 | |
|         </table>
 | |
|      </li>
 | |
|     <li>Serial header #2. Pinout:
 | |
|         <table class="grid">
 | |
|          <tr><td>1 - P0[10] / TXD2 / SDA2 / MAT3[0]</td><td>2 - +5.5v supply</td></tr>
 | |
|          <tr><td>3 - P0[11] / RXD2 / SCL2 / MAT3[1]</td><td>4 - +3.3v supply</td></tr>
 | |
|          <tr><td>5 - P1[28] / MCOA2 / PCAP1[0] / MAT0[0]</td><td>6 - ground</td></tr>
 | |
|         </table>
 | |
|      </li>
 | |
|     <li>Interlock LED (yellow). This LED is on whenever the interlock relay is closed.</li>
 | |
|     <li>ILDA DB-25 connector.</li>
 | |
|     <li>Behind the DB-25 connector: 2x13 pin header wired identically to the DB-25.</li>
 | |
|     <li>Emission LED (green). Whenever the DAC is producing output, this LED is on.</li>
 | |
|     <li>20-pin ARM JTAG header. Pin 1 is towards the power connectors.</li>
 | |
|     <li>1x6 pin serial debug header. This is intended to be used for debug purposes with a
 | |
|         TTL serial adapter, such as <a href="http://www.sparkfun.com/products/9717">this unit</a>
 | |
|         available from sparkfun. Pin 1 is closest to the Ethernet connector. The pinout is:
 | |
|         <table class="grid">
 | |
|         <tr><td>1 - P2[10]/EINT0/NMI</td></tr>
 | |
|         <tr><td>2 - P0[2] / TXD0 / AD0[7]</td></tr>
 | |
|         <tr><td>3 - P0[3] / RXD0 / AD0[6]</td></tr>
 | |
|         <tr><td>4 - unconnected</td></tr>
 | |
|         <tr><td>5 - unconnected</td></tr>
 | |
|         <tr><td>6 - ground</td></tr>
 | |
|         </table>
 | |
|      </li>
 | |
|     <li>Serial header #1. Pinout:
 | |
|         <table class="grid">
 | |
|          <tr><td>1 - P2[0] / PWM1[1] / TXD1</td><td>2 - +5.5v supply</td></tr>
 | |
|          <tr><td>3 - P2[1] / PWM1[2] / RXD1</td><td>4 - +3.3v supply</td></tr>
 | |
|          <tr><td>5 - P2[2] / PWM1[3] / CTS1</td><td>6 - ground</td></tr>
 | |
|         </table>
 | |
|      </li>
 | |
|     <li>Serial header #3. Pinout:
 | |
|         <table class="grid">
 | |
|          <tr><td>1 - P0[25] / AD0[2] / I2SRX_SDA / TXD3</td><td>2 - +5.5v supply</td></tr>
 | |
|          <tr><td>3 - P0[26] / AD0[3] / AOUT / RXD3</td><td>4 - +3.3v supply</td></tr>
 | |
|          <tr><td>5 - P2[3] / PWM1[4] / DCD1</td><td>6 - ground</td></tr>
 | |
|         </table>
 | |
|     </li>
 | |
|    </ul>
 | |
|   <h2 id="config">Configuration</h2>
 | |
|   <p>
 | |
|    The Ether Dream requires no network configuration. By default, it will attempt to acquire
 | |
|    an IP address with DHCP; if no DHCP server is found, it will instead choose a link-local
 | |
|    169.254.x.x address. Once it has an address, it will begin advertising its presence with
 | |
|    UDP broadcast packets on port 7654. The playback DLL looks for these broadcasts to find
 | |
|    DACs on the network.
 | |
|    </p>
 | |
|   <h2 id="protocol">Protocol</h2>
 | |
|    <p>
 | |
|    Protocol documentation is <a href="protocol.html">here</a>.
 | |
|    </p>
 | |
|    <p>
 | |
|    Drivers are available for <a href="https://github.com/j4cbo/j4cDAC/tree/master/driver/">Windows</a>
 | |
|    and <a href="https://github.com/j4cbo/j4cDAC/tree/master/driver/libetherdream/">Mac/Linux</a>.
 | |
|    </p>
 | |
|   <h2 id="dev">Development</h2>
 | |
|   The Ether Dream firmware, available <a href="https://github.com/j4cbo/j4cDAC">on github</a>,
 | |
|   builds on a standard Linux system with the free CodeSourcery ARM toolchain. The README in the
 | |
|   repository describes the needed tools.
 | |
|   <h2 id="fw">Firmware Updates</h2>
 | |
|   There are three ways of updating the Ether Dream's firmware:
 | |
|   <ol>
 | |
|    <li><b>USB</b>
 | |
|    <p>
 | |
|     The Ether Dream board comes with a USB bootloader in the first 16kB of Flash. (Source
 | |
|     for the bootloader is in the boot/ directory of the source tree.) This bootloader
 | |
|     implements the standard DFU protocol; the <a href="http://wiki.openmoko.org/wiki/Dfu-util"
 | |
|     >dfu-util</a> project provides a PC-side tool.
 | |
|    </p>
 | |
|    <p>
 | |
|     The bootloader runs on every power-up, but normally immediately jumps to the main firmware.
 | |
|     If the firmware is corrupt or the DAC has been forced into bootloader mode, it will
 | |
|     instead run and appear as a USB DFU device. This mode is indicated by the LED
 | |
|     next to the USB connector flashing rapidly. There are
 | |
|     two ways to force the DAC to run in bootloader mode:
 | |
|    </p>
 | |
|     <ul><li>Hold P0[18] low during power-on.</li>
 | |
|         <li>Send a special USB control request while the normal firmware is running.
 | |
|          There is <a href="https://github.com/j4cbo/j4cDAC/tree/master/tools/f0ad">a tool to
 | |
|          do this</a> in the source repository.</li></ul>
 | |
|    <p>The pin to force bootloader mode, P0[18], is located next to a ground pin on the 2x6
 | |
|       expansion header. Connect a jumper across these pins and then apply power to run 
 | |
|       the bootloader.
 | |
|    </p><p>
 | |
|       <img src="bootloader-jumper.jpg" width="366" height="186" alt="bootloader jumper">
 | |
|    </p><p>
 | |
|     On the host PC, if dfu-util is installed, running "make bl" in the firmware directory
 | |
|     will automatically update the firmware of an attached DAC. Either force the DAC into
 | |
|     bootloader mode and run "make bl", or "make bl" while the DAC is running its usual
 | |
|     firmware; in the latter case, the DAC will be rebooted into bootloader mode and then
 | |
|     updated.
 | |
|    </p>
 | |
|    </li>
 | |
|    <li><b>Serial</b>
 | |
|     <p>There is a built-in ROM bootloader on the LPC1758 which runs over UART0, 
 | |
|     connected to the 1x6 header on the board. It enters if P2[10] is held low when
 | |
|     power is applied. When the ROM bootloader is running, both LEDs on the board will
 | |
|     be very dimly lit. The <a href="http://sourceforge.net/projects/lpc21isp/">lpc21isp</a>
 | |
|     tool talks to the DAC in this mode.
 | |
|     </p>
 | |
|     <p>
 | |
|     P2[10] on the LPC1758 is connected to RTS on the 6-pin serial header. Running "make
 | |
|     flash" in the firmware directory and then applying power to the DAC will 
 | |
|     update the firmware and USB bootloader over serial.
 | |
|     </p>
 | |
|     <p>This method is somewhat slower than the USB bootloader and so is not generally
 | |
|     recommended - it is useful primarily for installing the firmware into a
 | |
|     previously-unprogrammed DAC. Also, note that the 6-pin serial header is <i>logic-level</i>;
 | |
|     it is 5-volt-tolerant but must not be connected directly to an RS-232 port.
 | |
|     </p>
 | |
|     </li> 
 | |
|    <li><b>JTAG</b>
 | |
|     <p>The LPC1758 Flash can be reprogrammed over JTAG with openocd. See the
 | |
|        user's manual for the microcontroller and the openocd documentation for details.</p>
 | |
|    </li>
 | |
|    </ol> 
 | |
| 
 | |
| 
 | |
|  </div>
 | |
|  <div id="footer">
 | |
|   © 2010-2021 Jacob Potter.
 | |
|  </div>
 | |
|  <div id="menu">
 | |
|   <ul>
 | |
|     <li><a href="../index.html">LJ doc</a></li>
 | |
|     <li><a href="protocol.html">Protocol</a></li>
 | |
|    <li><a href="userguide.html">V1 User Guide</a></li>
 | |
|    <li><a href="manual.html">V1 Developer Manual</a></li>
 | |
|    <li><a href="dmx.html">V1 DMX Board</a></li>
 | |
|   </ul>
 | |
|  </div>
 | |
| </body>
 | |
| </html>
 |