<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://xinu.cs.mu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Justin</id>
	<title>Embedded Xinu - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://xinu.cs.mu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Justin"/>
	<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php/Special:Contributions/Justin"/>
	<updated>2026-06-15T16:02:49Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1449</id>
		<title>Wiring</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1449"/>
		<updated>2006-09-08T20:39:12Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[Image:Embedsysdiag.png]]&amp;lt;/center&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
{| align=right&lt;br /&gt;
 | [[media:Embedsys2.ps|The postscript file of the diagram.]]&lt;br /&gt;
 |}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* The diagram on the left represents the UART head on the main board of the router.  The left pins (2,6,4,8,10) represent the data that is sent and received from the first serial port, the right pins (1,5,3,7,9) the second serial port.&lt;br /&gt;
&lt;br /&gt;
* The diagram in the middle represents the [[Chips|MAX233A transceiver]] needed to convert the voltage used to transmit signals in the router (3.3V) to the RS-232 standard signals to send over the serial port.&lt;br /&gt;
&lt;br /&gt;
* The diagrams on the rights represent two standard DB9F serial ports wired to be DCEs.&lt;br /&gt;
&lt;br /&gt;
Please note that the diagrams do NOT represent actual placement of the pins on the hardware, which may have been moved to simplify the diagram.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=File:Embedsys2.ps&amp;diff=1444</id>
		<title>File:Embedsys2.ps</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=File:Embedsys2.ps&amp;diff=1444"/>
		<updated>2006-09-08T20:28:28Z</updated>

		<summary type="html">&lt;p&gt;Justin: The .ps version of the wiring diagram.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The .ps version of the wiring diagram.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=CFE_Command_Line_Interface&amp;diff=1442</id>
		<title>CFE Command Line Interface</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=CFE_Command_Line_Interface&amp;diff=1442"/>
		<updated>2006-09-08T20:17:36Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;CFE&amp;gt; help&lt;br /&gt;
Available commands:&lt;br /&gt;
&lt;br /&gt;
rndis               Broadcom USB RNDIS utility.&lt;br /&gt;
et                  Broadcom Ethernet utility.&lt;br /&gt;
modify              Modify flash data.&lt;br /&gt;
nvram               NVRAM utility.&lt;br /&gt;
reboot              Reboot.&lt;br /&gt;
flash               Update a flash memory device&lt;br /&gt;
memtest             Test memory.&lt;br /&gt;
f                   Fill contents of memory.&lt;br /&gt;
e                   Modify contents of memory.&lt;br /&gt;
d                   Dump memory.&lt;br /&gt;
u                   Disassemble instructions.&lt;br /&gt;
autoboot            Automatic system bootstrap.&lt;br /&gt;
batch               Load a batch file into memory and execute it&lt;br /&gt;
go                  Verify and boot OS image.&lt;br /&gt;
boot                Load an executable file into memory and execute it&lt;br /&gt;
load                Load an executable file into memory without executing it&lt;br /&gt;
save                Save a region of memory to a remote file via TFTP&lt;br /&gt;
ping                Ping a remote IP host.&lt;br /&gt;
arp                 Display or modify the ARP Table&lt;br /&gt;
ifconfig            Configure the Ethernet interface&lt;br /&gt;
show devices        Display information about the installed devices.&lt;br /&gt;
unsetenv            Delete an environment variable.&lt;br /&gt;
printenv            Display the environment variables&lt;br /&gt;
setenv              Set an environment variable.&lt;br /&gt;
help                Obtain help for CFE commands&lt;br /&gt;
&lt;br /&gt;
For more information about a command, enter 'help command-name'&lt;br /&gt;
*** command status = 0&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Common_Firmware_Environment&amp;diff=1439</id>
		<title>Common Firmware Environment</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Common_Firmware_Environment&amp;diff=1439"/>
		<updated>2006-09-08T18:20:03Z</updated>

		<summary type="html">&lt;p&gt;Justin: /* Getting into CFE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== About ===&lt;br /&gt;
&lt;br /&gt;
The Common Firmware Environment (CFE) is the firmware developed by Broadcom for the BCM947xx SoC platform (among others).  It is the first code that runs when the router boots and performs functions similar to Apple's Open Firmware:&lt;br /&gt;
&lt;br /&gt;
* Initializes the system&lt;br /&gt;
* Sets up a basic environment in which code can run&lt;br /&gt;
* Optionally provides a command line interface non-standard usage&lt;br /&gt;
* Loads and executes a kernel image (expecting to be jettisoned shortly thereafter)&lt;br /&gt;
&lt;br /&gt;
So, in normal operation, a user will not see CFE working at all; it will load the LinkSys kernel and send it on its merry way without hesitation.  For us, however, CFE is crucial, because it provides us with the ability to load an image over the network using TFTP.&lt;br /&gt;
&lt;br /&gt;
We have access to two major documents covering CFE, the reference manual, and the functional specification.  Much of the content in these two documents overlaps.&lt;br /&gt;
&lt;br /&gt;
=== Getting into CFE ===&lt;br /&gt;
&lt;br /&gt;
To get into CFE, it will be very helpful to enable &amp;quot;boot wait&amp;quot; from the Administration Tab under the router's Web GUI.  This will cause the router to wait on startup for a signal to stop booting into the firmware and enter CFE.&lt;br /&gt;
&lt;br /&gt;
Once you have that set up and you've [[How_to_connect|connected]] to the router, just type &amp;quot;reboot&amp;quot; (assuming [[OpenWRT]] is installed, it may be different for other firmwares) to reboot the router.  This can also be done by power-cycling the router.  As it's booting up, send a continuous stream of Ctrl+C characters to cancel booting and you'll be entered right into CFE.&lt;br /&gt;
&lt;br /&gt;
From there, you can prod around CFE's features or load your own kernel using the [[CFE_Command_Line_Interface|command line interface]].&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Common_Firmware_Environment&amp;diff=1438</id>
		<title>Common Firmware Environment</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Common_Firmware_Environment&amp;diff=1438"/>
		<updated>2006-09-08T18:17:59Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== About ===&lt;br /&gt;
&lt;br /&gt;
The Common Firmware Environment (CFE) is the firmware developed by Broadcom for the BCM947xx SoC platform (among others).  It is the first code that runs when the router boots and performs functions similar to Apple's Open Firmware:&lt;br /&gt;
&lt;br /&gt;
* Initializes the system&lt;br /&gt;
* Sets up a basic environment in which code can run&lt;br /&gt;
* Optionally provides a command line interface non-standard usage&lt;br /&gt;
* Loads and executes a kernel image (expecting to be jettisoned shortly thereafter)&lt;br /&gt;
&lt;br /&gt;
So, in normal operation, a user will not see CFE working at all; it will load the LinkSys kernel and send it on its merry way without hesitation.  For us, however, CFE is crucial, because it provides us with the ability to load an image over the network using TFTP.&lt;br /&gt;
&lt;br /&gt;
We have access to two major documents covering CFE, the reference manual, and the functional specification.  Much of the content in these two documents overlaps.&lt;br /&gt;
&lt;br /&gt;
=== Getting into CFE ===&lt;br /&gt;
&lt;br /&gt;
To get into CFE, it will be very helpful to enable &amp;quot;boot wait&amp;quot; from the Administration Tab under the router's Web GUI.  This will cause the router to wait on startup for a signal to stop booting the loaded kernel and enter CFE.&lt;br /&gt;
&lt;br /&gt;
Once you have that set up and you've [[How_to_connect|connected]] to the router, just type &amp;quot;reboot&amp;quot; (assuming [[OpenWRT]] is installed, it may be different for other firmwares) to reboot the router.  This can also be done by power-cycling the router.  As it's booting up, send a continuous stream of Ctrl+C characters to cancel booting and you'll be entered right into CFE.&lt;br /&gt;
&lt;br /&gt;
From there, you can prod around CFE's features or load your own kernel using the [[CFE_Command_Line_Interface|command line interface]].&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Connect_to_a_modified_router&amp;diff=1437</id>
		<title>Connect to a modified router</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Connect_to_a_modified_router&amp;diff=1437"/>
		<updated>2006-09-06T18:58:34Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Once we have the router powered up, connecting is as simple as plugging the [[Pictures|serial ports]] into a machine with the proper software to communicate over it (such as [http://www.columbia.edu/kermit/ Kermit]).&lt;br /&gt;
&lt;br /&gt;
In our setup, once running Kermit on the external machine, we connected by typing in:&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| &amp;lt;code&amp;gt;set line /dev/tty000&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
| to connect to the device talking to the router.&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;set serial 8n1&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
| which is not really necessary since this is default.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;set speed 115200&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
| as given to us in the router specifications.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once connected, you may need to press &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; to get a console from [[OpenWRT]].&lt;br /&gt;
&lt;br /&gt;
Also, because the goal is to upload custom kernels to the router, it would be a good idea to connect the router to your network by wiring it up via one of the numbered LAN ports on the back of the router (NOT the Internet/WAN port).&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Connect_to_a_modified_router&amp;diff=1436</id>
		<title>Connect to a modified router</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Connect_to_a_modified_router&amp;diff=1436"/>
		<updated>2006-09-06T18:41:46Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Once we have the router powered up, connecting is as simple as plugging the [[Pictures|serial ports]] into a machine with the proper software to communicate over it (such as [http://www.columbia.edu/kermit/ Kermit]).&lt;br /&gt;
&lt;br /&gt;
In our setup, once running Kermit on the external machine, we connected by typing in:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;set line /dev/tty000&amp;lt;/code&amp;gt; to connect to the device talking to the router.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;set serial 8n1&amp;lt;/code&amp;gt; which is not really necessary since this is default.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;set speed 115200&amp;lt;/code&amp;gt; as given to us in the router specifications.&lt;br /&gt;
&lt;br /&gt;
Once connected, you may need to press &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; to get a console from [[OpenWRT]].&lt;br /&gt;
&lt;br /&gt;
Also, because the goal is to upload custom kernels to the router, it would be a good idea to connect the router to your network by wiring it up via one of the numbered LAN ports on the back of the router (NOT the Internet/WAN port).&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Connect_to_a_modified_router&amp;diff=1435</id>
		<title>Connect to a modified router</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Connect_to_a_modified_router&amp;diff=1435"/>
		<updated>2006-09-06T18:40:10Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Once we have the router powered up, connecting is as simple as plugging the [[Pictures|serial ports]] into a machine with the proper software to communicate over it (such as [http://www.columbia.edu/kermit/ Kermit]).&lt;br /&gt;
&lt;br /&gt;
In our setup, once running Kermit on the external machine, we connected by typing in:&lt;br /&gt;
&amp;lt;code&amp;gt;set line /dev/tty000&amp;lt;/code&amp;gt; to connect to the device talking to the router.&lt;br /&gt;
&amp;lt;code&amp;gt;set serial 8n1&amp;lt;/code&amp;gt; which is not really necessary since this is default.&lt;br /&gt;
&amp;lt;code&amp;gt;set speed 115200&amp;lt;/code&amp;gt; as given to us in the router specifications.&lt;br /&gt;
&lt;br /&gt;
Once connected, you may need to press &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; to get a console from [[OpenWRT]].&lt;br /&gt;
&lt;br /&gt;
Also, because the goal is to upload custom kernels to the router, it would be a good idea to connect the router to your network by wiring it up via one of the numbered LAN ports on the back of the router (NOT the Internet/WAN port).&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1434</id>
		<title>Wiring</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1434"/>
		<updated>2006-09-06T18:09:22Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Embedsysdiag.png]]&lt;br /&gt;
&lt;br /&gt;
* The diagram on the left represents the UART head on the main board of the router.  The left pins (2,6,4,8,10) represent the data that is sent and received from the first serial port, the right pins (1,5,3,7,9) the second serial port.&lt;br /&gt;
&lt;br /&gt;
* The diagram in the middle represents the [[Chips|MAX233A transceiver]] needed to convert the voltage used to transmit signals in the router (3.3V) to the RS-232 standard signals to send over the serial port.&lt;br /&gt;
&lt;br /&gt;
* The diagrams on the rights represent two standard DB9F serial ports wired to be DCEs.&lt;br /&gt;
&lt;br /&gt;
Please note that the diagrams do NOT represent actual placement of the pins on the hardware, which may have been moved to simplify the diagram.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1433</id>
		<title>Wiring</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1433"/>
		<updated>2006-09-06T18:04:26Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Embedsysdiag.png]]&lt;br /&gt;
&lt;br /&gt;
The diagram on the left represents the UART head on the main board of the router.  The left pins (2,6,4,8,10) represent the data that is sent and received from the first serial port, the right pins (1,5,3,7,9) the second serial port.&lt;br /&gt;
&lt;br /&gt;
The diagram in the middle represents the MAX233A transceiver needed to convert the voltage used to transmit signals in the router (3.3V) to the RS-232 standard signals to send over the serial port.&lt;br /&gt;
&lt;br /&gt;
The diagrams on the rights represent two standard DB9F serial ports wired to be DCEs.&lt;br /&gt;
&lt;br /&gt;
Please note that the diagrams do NOT represent actual placement of the pins on the hardware, which may have been moved to simplify the diagram.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1414</id>
		<title>Wiring</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1414"/>
		<updated>2006-08-28T06:06:56Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Embedsysdiag.png]]&lt;br /&gt;
&lt;br /&gt;
The diagram on the left represents the UART head on the main board of the router.  The left pins (2,6,4,8,10) represent the data that is sent and received from the first serial port, the right pins (1,5,3,7,9) the second serial port.&lt;br /&gt;
&lt;br /&gt;
The diagram in the middle represents the MAX233A transceiver needed to convert the voltage used to transmit signals in the router (3.3V) to the standed 5V signals to send over the serial port.&lt;br /&gt;
&lt;br /&gt;
The diagrams on the rights represent two standard DB9F serial ports wired to be DCEs.&lt;br /&gt;
&lt;br /&gt;
Please note that the diagrams do NOT represent actual placement of the pins on the hardware, which may have been moved to simplify the diagram.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1413</id>
		<title>Wiring</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1413"/>
		<updated>2006-08-28T06:06:08Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Embedsysdiag.png]]&lt;br /&gt;
&lt;br /&gt;
The diagram on the left represents the UART head on the main board of the router.  The left pins (2,6,4,8,10) represent the data that is sent and received from the first serial port, the right pins (1,5,3,7,9) the second serial port.&lt;br /&gt;
&lt;br /&gt;
The diagram in the middle represents the MAX233A transceiver needed to convert the voltage used to transmit signals in the router to the standed 5V signals to send over the serial port.&lt;br /&gt;
&lt;br /&gt;
The diagrams on the rights represent two standard DB9F serial ports wired to be DCEs.&lt;br /&gt;
&lt;br /&gt;
Please note that the diagrams do NOT represent actual placement of the pins on the hardware, which may have been moved to simplify the diagram.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1412</id>
		<title>Wiring</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1412"/>
		<updated>2006-08-28T06:03:51Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Embedsysdiag.png]]&lt;br /&gt;
&lt;br /&gt;
The diagram on the left represents the UART head on the main board of the router.  The left pins (2,4,6,8,10) represent the data that is sent and received from the first serial port, the right pins (1,3,5,7,9) the second serial port.&lt;br /&gt;
&lt;br /&gt;
The diagram in the middle represents the MAX233A transceiver needed to convert the voltage used to transmit signals in the router to the standed 5V signals to send over the serial port.&lt;br /&gt;
&lt;br /&gt;
The diagram on the left represents standard DB9F serial ports wired to be DCEs.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1411</id>
		<title>Wiring</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Wiring&amp;diff=1411"/>
		<updated>2006-08-28T05:54:21Z</updated>

		<summary type="html">&lt;p&gt;Justin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Embedsysdiag.png]]&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=File:Embedsysdiag.png&amp;diff=1410</id>
		<title>File:Embedsysdiag.png</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=File:Embedsysdiag.png&amp;diff=1410"/>
		<updated>2006-08-28T05:53:08Z</updated>

		<summary type="html">&lt;p&gt;Justin: The wiring diagram of the serial ports we added.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wiring diagram of the serial ports we added.&lt;/div&gt;</summary>
		<author><name>Justin</name></author>
		
	</entry>
</feed>