<?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=AGebhard</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=AGebhard"/>
	<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php/Special:Contributions/AGebhard"/>
	<updated>2026-06-15T14:32:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Main_Page&amp;diff=4419</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Main_Page&amp;diff=4419"/>
		<updated>2024-03-23T23:13:19Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome SIGCSE 2024! =&lt;br /&gt;
To find RISC-V assignments and writeups, see [https://github.com/a1g3/riscv-xinu-hw].  We have instructions for running Embedded Xinu on the Sipeed Nezha below.  Check out &amp;quot;Building an Embedded Xinu Laboratory&amp;quot;.  For solutions to homework assignments, please email dennis (dot) brylow (at) marquette.edu or alexander (dot) gebhard (at) marquette.edu.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
'''Embedded Xinu''' is an ongoing research and implementation project in the area of Operating Systems and Embedded Systems.  Its original goal was to re-implement and port the [[Xinu|Xinu Operating System]] to several embedded MIPS platforms, such as the Linksys [[WRT54GL]] router.  Since then, Embedded Xinu has been ported to other platforms, such as the [[mipsel-qemu|QEMU MIPSel virtual environment]] and the [[Raspberry Pi]]; see the [[list of supported platforms]].  Although Embedded Xinu is still being developed and ported to new platforms, a laboratory environment and curriculum materials are already in use for courses in Operating Systems, Hardware Systems, Embedded Systems, Networking, and Compilers at Marquette University and other colleges/universities.&lt;br /&gt;
&lt;br /&gt;
The Embedded Xinu project was conceived and is supervised by [https://www.cs.mu.edu/~brylow/ Dr. Dennis Brylow] and is being conducted by both graduate and undergraduate students in the [[Systems Laboratory]] in the [https://www.cs.mu.edu/ Computer Science] department of [https://www.mu.edu/ Marquette University] in Milwaukee, Wisconsin.  The first major phase of work on Embedded Xinu began in the Summer of 2006.&lt;br /&gt;
&lt;br /&gt;
Our project partners include [https://www.cse.buffalo.edu/~bina/ Dr. Bina Ramamurthy] at University of Buffalo (with whom we shared an [https://www.nsf.gov/pubs/2009/nsf09529/nsf09529.html NSF CCLI] grant), [https://cs.olemiss.edu/~ruth/wiki/doku.php Dr. Paul Ruth] at University of Mississippi, and [https://www.cs.purdue.edu/people/comer Dr. Doug Comer] (father of Xinu) at Purdue University.&lt;br /&gt;
&lt;br /&gt;
== Teaching With Embedded Xinu ==&lt;br /&gt;
&lt;br /&gt;
* For curriculum guidance on adopting or adapting Embedded Xinu for undergraduate coursework, see [[Teaching With Xinu]].&lt;br /&gt;
* Workshops have been held regarding teaching with Embedded Xinu.  For example, the [https://www.cs.olemiss.edu/acmse2010/pdf/xinu.pdf Teaching With Embedded Xinu Workshop] at [https://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010] in Oxford, Mississippi (Ole Miss campus) shared ready-made curriculum resources that have been used successfully to teach hardware systems, operating systems, realtime/embedded systems, networking, and compilers with the Embedded Xinu platform at several colleges/universities.&lt;br /&gt;
&lt;br /&gt;
== Building an Embedded Xinu Laboratory ==&lt;br /&gt;
&lt;br /&gt;
In this section we are developing instructions so that other groups can benefit from the work we are doing.  These guides can be followed more or less in order to create a relatively inexpensive platform for a custom operating system.  As our work develops further, there will be more Xinu-specific information.&lt;br /&gt;
&lt;br /&gt;
# Obtain a [[List of supported platforms|supported platform]].&lt;br /&gt;
# (Required if using a Linksys/Asus router) [[HOWTO:Modify the Linksys hardware|Modify the Linksys hardware]] or [[HOWTO:Modify the ASUS hardware|Modify the ASUS hardware]]&lt;br /&gt;
## [[HOWTO:Connect to a modified router|Connect to a modified router]]&lt;br /&gt;
# [[HOWTO:Build Xinu|Build Xinu]]&lt;br /&gt;
# [[HOWTO:Deploy Xinu|Deploy Xinu]]&lt;br /&gt;
# (Optional) [[HOWTO:Build Backend Pool|Build a pool of backends]]&lt;br /&gt;
# (Recommended) [[HOWTO:Backup your router|Backup your router's factory configuration]]&lt;br /&gt;
&lt;br /&gt;
== Other Embedded Xinu Information ==&lt;br /&gt;
&lt;br /&gt;
* MIPS [[processor]]&lt;br /&gt;
* Main [[memory]]&lt;br /&gt;
* [[Exception and Interrupt Handling]]&lt;br /&gt;
* [[UART driver]]&lt;br /&gt;
* [[TTY driver]]&lt;br /&gt;
* [[Switch driver]]&lt;br /&gt;
* [[Networking]]&lt;br /&gt;
* [[Flash memory]]&lt;br /&gt;
* [[Flashing firmware]]&lt;br /&gt;
* [[EJTAG|Enhanced Joint Test Action Group]] debugger&lt;br /&gt;
* [[Standard library]]&lt;br /&gt;
* [[XinuPhone]] Internet telephony&lt;br /&gt;
* [[Router Recovery]] aka &amp;quot;Debricking&amp;quot;&lt;br /&gt;
* [[Development]]&lt;br /&gt;
* [[Contributors]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;small&amp;gt;&amp;lt;small&amp;gt;The Xinu Lab is brought to you in part by [[XMMS|M&amp;amp;M's]].&amp;lt;/small&amp;gt;&amp;lt;/small&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
--&amp;gt;__NOTOC__&amp;lt;!-- Disable &amp;quot;Contents&amp;quot; box from showing --&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;__NOEDITSECTION__&amp;lt;!-- Disable [edit] from appearing --&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Main_Page&amp;diff=4418</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Main_Page&amp;diff=4418"/>
		<updated>2024-03-23T23:12:58Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome SIGCSE 2024! =&lt;br /&gt;
To find RISC-V assignments and writeups, see [https://github.com/a1g3/riscv-xinu-hw].  We have instructions for running Embedded Xinu on the Sipeed Nezha below.  Check out &amp;quot;Building an Embedded Xinu Laboratory&amp;quot;.  For solutions to homework assignments, please email dennis (dot) brylow (at) marquette.edu or alexander (dot) gebhard (at) marquette.edu.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
'''Embedded Xinu''' is an ongoing research and implementation project in the area of Operating Systems and Embedded Systems.  Its original goal was to re-implement and port the [[Xinu|Xinu Operating System]] to several embedded MIPS platforms, such as the Linksys [[WRT54GL]] router.  Since then, Embedded Xinu has been ported to other platforms, such as the [[mipsel-qemu|QEMU MIPSel virtual environment]] and the [[Raspberry Pi]]; see the [[list of supported platforms]].  Although Embedded Xinu is still being developed and ported to new platforms, a laboratory environment and curriculum materials are already in use for courses in Operating Systems, Hardware Systems, Embedded Systems, Networking, and Compilers at Marquette University and other colleges/universities.&lt;br /&gt;
&lt;br /&gt;
The Embedded Xinu project was conceived and is supervised by [https://www.cs.mu.edu/~brylow/ Dr. Dennis Brylow] and is being conducted by both graduate and undergraduate students in the [[Systems Laboratory]] in the [https://www.cs.mu.edu/Computer Science] department of [https://www.mu.edu/ Marquette University] in Milwaukee, Wisconsin.  The first major phase of work on Embedded Xinu began in the Summer of 2006.&lt;br /&gt;
&lt;br /&gt;
Our project partners include [https://www.cse.buffalo.edu/~bina/ Dr. Bina Ramamurthy] at University of Buffalo (with whom we shared an [https://www.nsf.gov/pubs/2009/nsf09529/nsf09529.html NSF CCLI] grant), [https://cs.olemiss.edu/~ruth/wiki/doku.php Dr. Paul Ruth] at University of Mississippi, and [https://www.cs.purdue.edu/people/comer Dr. Doug Comer] (father of Xinu) at Purdue University.&lt;br /&gt;
&lt;br /&gt;
== Teaching With Embedded Xinu ==&lt;br /&gt;
&lt;br /&gt;
* For curriculum guidance on adopting or adapting Embedded Xinu for undergraduate coursework, see [[Teaching With Xinu]].&lt;br /&gt;
* Workshops have been held regarding teaching with Embedded Xinu.  For example, the [https://www.cs.olemiss.edu/acmse2010/pdf/xinu.pdf Teaching With Embedded Xinu Workshop] at [https://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010] in Oxford, Mississippi (Ole Miss campus) shared ready-made curriculum resources that have been used successfully to teach hardware systems, operating systems, realtime/embedded systems, networking, and compilers with the Embedded Xinu platform at several colleges/universities.&lt;br /&gt;
&lt;br /&gt;
== Building an Embedded Xinu Laboratory ==&lt;br /&gt;
&lt;br /&gt;
In this section we are developing instructions so that other groups can benefit from the work we are doing.  These guides can be followed more or less in order to create a relatively inexpensive platform for a custom operating system.  As our work develops further, there will be more Xinu-specific information.&lt;br /&gt;
&lt;br /&gt;
# Obtain a [[List of supported platforms|supported platform]].&lt;br /&gt;
# (Required if using a Linksys/Asus router) [[HOWTO:Modify the Linksys hardware|Modify the Linksys hardware]] or [[HOWTO:Modify the ASUS hardware|Modify the ASUS hardware]]&lt;br /&gt;
## [[HOWTO:Connect to a modified router|Connect to a modified router]]&lt;br /&gt;
# [[HOWTO:Build Xinu|Build Xinu]]&lt;br /&gt;
# [[HOWTO:Deploy Xinu|Deploy Xinu]]&lt;br /&gt;
# (Optional) [[HOWTO:Build Backend Pool|Build a pool of backends]]&lt;br /&gt;
# (Recommended) [[HOWTO:Backup your router|Backup your router's factory configuration]]&lt;br /&gt;
&lt;br /&gt;
== Other Embedded Xinu Information ==&lt;br /&gt;
&lt;br /&gt;
* MIPS [[processor]]&lt;br /&gt;
* Main [[memory]]&lt;br /&gt;
* [[Exception and Interrupt Handling]]&lt;br /&gt;
* [[UART driver]]&lt;br /&gt;
* [[TTY driver]]&lt;br /&gt;
* [[Switch driver]]&lt;br /&gt;
* [[Networking]]&lt;br /&gt;
* [[Flash memory]]&lt;br /&gt;
* [[Flashing firmware]]&lt;br /&gt;
* [[EJTAG|Enhanced Joint Test Action Group]] debugger&lt;br /&gt;
* [[Standard library]]&lt;br /&gt;
* [[XinuPhone]] Internet telephony&lt;br /&gt;
* [[Router Recovery]] aka &amp;quot;Debricking&amp;quot;&lt;br /&gt;
* [[Development]]&lt;br /&gt;
* [[Contributors]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;small&amp;gt;&amp;lt;small&amp;gt;The Xinu Lab is brought to you in part by [[XMMS|M&amp;amp;M's]].&amp;lt;/small&amp;gt;&amp;lt;/small&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
--&amp;gt;__NOTOC__&amp;lt;!-- Disable &amp;quot;Contents&amp;quot; box from showing --&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;__NOEDITSECTION__&amp;lt;!-- Disable [edit] from appearing --&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=MediaWiki:Sidebar&amp;diff=4417</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=MediaWiki:Sidebar&amp;diff=4417"/>
		<updated>2024-03-23T02:27:43Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** Main Page | Main Page&lt;br /&gt;
** Special:Recentchanges | Recent Changes&lt;br /&gt;
** Downloads | Downloads&lt;br /&gt;
** https://xinu.cs.mu.edu/docs/| Documentation&lt;br /&gt;
** https://github.com/xinu-os/ | GitHub&lt;br /&gt;
* links&lt;br /&gt;
** https://www.cs.mu.edu/ | MU CS Department&lt;br /&gt;
** http://www.mu.edu/ | Marquette University&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Main_Page&amp;diff=4416</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Main_Page&amp;diff=4416"/>
		<updated>2024-03-22T16:34:07Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome SIGCSE 2024! =&lt;br /&gt;
To find RISC-V assignments and writeups, see [https://github.com/a1g3/riscv-xinu-hw].  We have instructions for running Embedded Xinu on the Sipeed Nezha below.  Check out &amp;quot;Building an Embedded Xinu Laboratory&amp;quot;.  For solutions to homework assignments, please email dennis (dot) brylow (at) marquette.edu or alexander (dot) gebhard (at) marquette.edu.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
'''Embedded Xinu''' is an ongoing research and implementation project in the area of Operating Systems and Embedded Systems.  Its original goal was to re-implement and port the [[Xinu|Xinu Operating System]] to several embedded MIPS platforms, such as the Linksys [[WRT54GL]] router.  Since then, Embedded Xinu has been ported to other platforms, such as the [[mipsel-qemu|QEMU MIPSel virtual environment]] and the [[Raspberry Pi]]; see the [[list of supported platforms]].  Although Embedded Xinu is still being developed and ported to new platforms, a laboratory environment and curriculum materials are already in use for courses in Operating Systems, Hardware Systems, Embedded Systems, Networking, and Compilers at Marquette University and other colleges/universities.&lt;br /&gt;
&lt;br /&gt;
The Embedded Xinu project was conceived and is supervised by [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] and is being conducted by both graduate and undergraduate students in the [[Systems Laboratory]] in the [http://www.mscs.mu.edu/ Math, Statistics, &amp;amp; Computer Science] department of [http://www.mu.edu/ Marquette University] in Milwaukee, Wisconsin.  The first major phase of work on Embedded Xinu began in the Summer of 2006.&lt;br /&gt;
&lt;br /&gt;
Our project partners include [http://www.cse.buffalo.edu/~bina/ Dr. Bina Ramamurthy] at University of Buffalo (with whom we shared an [http://www.nsf.gov/pubs/2009/nsf09529/nsf09529.html NSF CCLI] grant), [http://cs.olemiss.edu/~ruth/wiki/doku.php Dr. Paul Ruth] at University of Mississippi, and [http://www.cs.purdue.edu/people/comer Dr. Doug Comer] (father of Xinu) at Purdue University.&lt;br /&gt;
&lt;br /&gt;
== Teaching With Embedded Xinu ==&lt;br /&gt;
&lt;br /&gt;
* For curriculum guidance on adopting or adapting Embedded Xinu for undergraduate coursework, see [[Teaching With Xinu]].&lt;br /&gt;
* Workshops have been held regarding teaching with Embedded Xinu.  For example, the [http://www.cs.olemiss.edu/acmse2010/pdf/xinu.pdf Teaching With Embedded Xinu Workshop] at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010] in Oxford, Mississippi (Ole Miss campus) shared ready-made curriculum resources that have been used successfully to teach hardware systems, operating systems, realtime/embedded systems, networking, and compilers with the Embedded Xinu platform at several colleges/universities.&lt;br /&gt;
&lt;br /&gt;
== Building an Embedded Xinu Laboratory ==&lt;br /&gt;
&lt;br /&gt;
In this section we are developing instructions so that other groups can benefit from the work we are doing.  These guides can be followed more or less in order to create a relatively inexpensive platform for a custom operating system.  As our work develops further, there will be more Xinu-specific information.&lt;br /&gt;
&lt;br /&gt;
# Obtain a [[List of supported platforms|supported platform]].&lt;br /&gt;
# (Required if using a Linksys/Asus router) [[HOWTO:Modify the Linksys hardware|Modify the Linksys hardware]] or [[HOWTO:Modify the ASUS hardware|Modify the ASUS hardware]]&lt;br /&gt;
## [[HOWTO:Connect to a modified router|Connect to a modified router]]&lt;br /&gt;
# [[HOWTO:Build Xinu|Build Xinu]]&lt;br /&gt;
# [[HOWTO:Deploy Xinu|Deploy Xinu]]&lt;br /&gt;
# (Optional) [[HOWTO:Build Backend Pool|Build a pool of backends]]&lt;br /&gt;
# (Recommended) [[HOWTO:Backup your router|Backup your router's factory configuration]]&lt;br /&gt;
&lt;br /&gt;
== Other Embedded Xinu Information ==&lt;br /&gt;
&lt;br /&gt;
* MIPS [[processor]]&lt;br /&gt;
* Main [[memory]]&lt;br /&gt;
* [[Exception and Interrupt Handling]]&lt;br /&gt;
* [[UART driver]]&lt;br /&gt;
* [[TTY driver]]&lt;br /&gt;
* [[Switch driver]]&lt;br /&gt;
* [[Networking]]&lt;br /&gt;
* [[Flash memory]]&lt;br /&gt;
* [[Flashing firmware]]&lt;br /&gt;
* [[EJTAG|Enhanced Joint Test Action Group]] debugger&lt;br /&gt;
* [[Standard library]]&lt;br /&gt;
* [[XinuPhone]] Internet telephony&lt;br /&gt;
* [[Router Recovery]] aka &amp;quot;Debricking&amp;quot;&lt;br /&gt;
* [[Development]]&lt;br /&gt;
* [[Contributors]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;small&amp;gt;&amp;lt;small&amp;gt;The Xinu Lab is brought to you in part by [[XMMS|M&amp;amp;M's]].&amp;lt;/small&amp;gt;&amp;lt;/small&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
--&amp;gt;__NOTOC__&amp;lt;!-- Disable &amp;quot;Contents&amp;quot; box from showing --&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;__NOEDITSECTION__&amp;lt;!-- Disable [edit] from appearing --&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Main_Page&amp;diff=4415</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Main_Page&amp;diff=4415"/>
		<updated>2024-03-22T16:31:59Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome SIGCSE 2024! =&lt;br /&gt;
To find RISC-V assignments and writeups, see [https://github.com/a1g3/riscv-xinu-hw].  We have instructions for running Embedded Xinu on the Sipeed Nezha below.  Check out &amp;quot;Building an Embedded Xinu Laboratory&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
'''Embedded Xinu''' is an ongoing research and implementation project in the area of Operating Systems and Embedded Systems.  Its original goal was to re-implement and port the [[Xinu|Xinu Operating System]] to several embedded MIPS platforms, such as the Linksys [[WRT54GL]] router.  Since then, Embedded Xinu has been ported to other platforms, such as the [[mipsel-qemu|QEMU MIPSel virtual environment]] and the [[Raspberry Pi]]; see the [[list of supported platforms]].  Although Embedded Xinu is still being developed and ported to new platforms, a laboratory environment and curriculum materials are already in use for courses in Operating Systems, Hardware Systems, Embedded Systems, Networking, and Compilers at Marquette University and other colleges/universities.&lt;br /&gt;
&lt;br /&gt;
The Embedded Xinu project was conceived and is supervised by [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] and is being conducted by both graduate and undergraduate students in the [[Systems Laboratory]] in the [http://www.mscs.mu.edu/ Math, Statistics, &amp;amp; Computer Science] department of [http://www.mu.edu/ Marquette University] in Milwaukee, Wisconsin.  The first major phase of work on Embedded Xinu began in the Summer of 2006.&lt;br /&gt;
&lt;br /&gt;
Our project partners include [http://www.cse.buffalo.edu/~bina/ Dr. Bina Ramamurthy] at University of Buffalo (with whom we shared an [http://www.nsf.gov/pubs/2009/nsf09529/nsf09529.html NSF CCLI] grant), [http://cs.olemiss.edu/~ruth/wiki/doku.php Dr. Paul Ruth] at University of Mississippi, and [http://www.cs.purdue.edu/people/comer Dr. Doug Comer] (father of Xinu) at Purdue University.&lt;br /&gt;
&lt;br /&gt;
== Teaching With Embedded Xinu ==&lt;br /&gt;
&lt;br /&gt;
* For curriculum guidance on adopting or adapting Embedded Xinu for undergraduate coursework, see [[Teaching With Xinu]].&lt;br /&gt;
* Workshops have been held regarding teaching with Embedded Xinu.  For example, the [http://www.cs.olemiss.edu/acmse2010/pdf/xinu.pdf Teaching With Embedded Xinu Workshop] at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010] in Oxford, Mississippi (Ole Miss campus) shared ready-made curriculum resources that have been used successfully to teach hardware systems, operating systems, realtime/embedded systems, networking, and compilers with the Embedded Xinu platform at several colleges/universities.&lt;br /&gt;
&lt;br /&gt;
== Building an Embedded Xinu Laboratory ==&lt;br /&gt;
&lt;br /&gt;
In this section we are developing instructions so that other groups can benefit from the work we are doing.  These guides can be followed more or less in order to create a relatively inexpensive platform for a custom operating system.  As our work develops further, there will be more Xinu-specific information.&lt;br /&gt;
&lt;br /&gt;
# Obtain a [[List of supported platforms|supported platform]].&lt;br /&gt;
# (Required if using a Linksys/Asus router) [[HOWTO:Modify the Linksys hardware|Modify the Linksys hardware]] or [[HOWTO:Modify the ASUS hardware|Modify the ASUS hardware]]&lt;br /&gt;
## [[HOWTO:Connect to a modified router|Connect to a modified router]]&lt;br /&gt;
# [[HOWTO:Build Xinu|Build Xinu]]&lt;br /&gt;
# [[HOWTO:Deploy Xinu|Deploy Xinu]]&lt;br /&gt;
# (Optional) [[HOWTO:Build Backend Pool|Build a pool of backends]]&lt;br /&gt;
# (Recommended) [[HOWTO:Backup your router|Backup your router's factory configuration]]&lt;br /&gt;
&lt;br /&gt;
== Other Embedded Xinu Information ==&lt;br /&gt;
&lt;br /&gt;
* MIPS [[processor]]&lt;br /&gt;
* Main [[memory]]&lt;br /&gt;
* [[Exception and Interrupt Handling]]&lt;br /&gt;
* [[UART driver]]&lt;br /&gt;
* [[TTY driver]]&lt;br /&gt;
* [[Switch driver]]&lt;br /&gt;
* [[Networking]]&lt;br /&gt;
* [[Flash memory]]&lt;br /&gt;
* [[Flashing firmware]]&lt;br /&gt;
* [[EJTAG|Enhanced Joint Test Action Group]] debugger&lt;br /&gt;
* [[Standard library]]&lt;br /&gt;
* [[XinuPhone]] Internet telephony&lt;br /&gt;
* [[Router Recovery]] aka &amp;quot;Debricking&amp;quot;&lt;br /&gt;
* [[Development]]&lt;br /&gt;
* [[Contributors]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;small&amp;gt;&amp;lt;small&amp;gt;The Xinu Lab is brought to you in part by [[XMMS|M&amp;amp;M's]].&amp;lt;/small&amp;gt;&amp;lt;/small&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
--&amp;gt;__NOTOC__&amp;lt;!-- Disable &amp;quot;Contents&amp;quot; box from showing --&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;__NOEDITSECTION__&amp;lt;!-- Disable [edit] from appearing --&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Template:Note&amp;diff=4414</id>
		<title>Template:Note</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Template:Note&amp;diff=4414"/>
		<updated>2024-03-22T16:28:49Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: Created page with &amp;quot;     &amp;lt;span style=&amp;quot;border:1px; border-style:solid; border-radius: 7px;      border-color:#ddffdd; background-color:#f2fff2; padding:0.1em;      margin:0.1em; display:      inli...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;     &amp;lt;span style=&amp;quot;border:1px; border-style:solid; border-radius: 7px;&lt;br /&gt;
     border-color:#ddffdd; background-color:#f2fff2; padding:0.1em;&lt;br /&gt;
     margin:0.1em; display:&lt;br /&gt;
    &lt;br /&gt;
inline-block;&amp;quot;&amp;gt;[[File:Bulbgraph.png|18px|Note|link=]]&amp;amp;nbsp;'''Note:'''&amp;amp;nbsp;&amp;amp;nbsp;{{{1|}}}&amp;lt;/span&amp;gt;&amp;lt;noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Riscv-nezha&amp;diff=4412</id>
		<title>Riscv-nezha</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Riscv-nezha&amp;diff=4412"/>
		<updated>2024-03-22T01:17:42Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists details about the Sipeed Nezha .&lt;br /&gt;
&lt;br /&gt;
== Hardware Info ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
As report by [https://linux-sunxi.org/Allwinner_Nezha Linux Sunxi]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
! Device&lt;br /&gt;
! Note&lt;br /&gt;
|-&lt;br /&gt;
| SOC&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | Allwinner D1 @1.0Ghz&lt;br /&gt;
|-&lt;br /&gt;
| DRAM&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 512MiB/1GiB/2GiB DDR3 @ 792MHz, 2×&amp;lt;br /&amp;gt;H5TQ4G63EFR&lt;br /&gt;
|-&lt;br /&gt;
| NAND&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 256MB, MX35LF2GE4AD&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | DC 5V @ 2A (via OTG or dedicated USB Type-C connector)&lt;br /&gt;
|-&lt;br /&gt;
| Video&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | HDMI (Type A - full), LVDS&lt;br /&gt;
|-&lt;br /&gt;
| Audio&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 3.5mm headphone plug, HDMI, microphone array board connector, I2S&lt;br /&gt;
|-&lt;br /&gt;
| Network&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | WiFi 802.11 b/g/n (XRadioTech XR829), 10/100/1000Mbps Ethernet (Realtek RTL8211F)&lt;br /&gt;
|-&lt;br /&gt;
| Storage&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | µSD, SPI NAND&lt;br /&gt;
|-&lt;br /&gt;
| USB&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 1 USB2.0 Host, 1 USB Type-C OTG&lt;br /&gt;
|-&lt;br /&gt;
| Other&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | Power LED, RGB LED, OK &amp;amp; FEL buttons&lt;br /&gt;
|-&lt;br /&gt;
| Headers&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 40-pin GPIO, DEBUG&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Serial Header ===&lt;br /&gt;
The Sipeed Nezha follows the Raspberry Pi line in terms of the pins for the serial header.  The serial header pins are 5V power (pin 4), ground (pin 6), TXD (pin 8), and RXD (pin 10). &lt;br /&gt;
&lt;br /&gt;
The following setting can be used to connect to the Sipeed Nezha.  The serial terminal shall be enabled by default.&lt;br /&gt;
&lt;br /&gt;
* Speed (baud rate): 115200&lt;br /&gt;
* Bits: 8&lt;br /&gt;
* Parity: None&lt;br /&gt;
* Stop Bits: 1&lt;br /&gt;
* Flow Control: None&lt;br /&gt;
&lt;br /&gt;
== Software Info ==&lt;br /&gt;
By default, Nezhas ship with Debian or a Debian-like operating system called [[https://github.com/Tina-Linux/ TinaLinux]] on the SD card.  A version of the operating system also exists in the device's NAND memory.  Embedded Xinu will not overwrite the operating system in NAND, however the SD card will need to be overwritten to boot Embedded Xinu.  &lt;br /&gt;
&lt;br /&gt;
Nezhas ship with a version of U-Boot preinstalled.  This version of U-Boot, however, does not support network booting.  We recommended network booting as it doesn't require students to write their operating system the SD cards (which can wear them out).  See [https://xinu.cs.mu.edu/index.php/Build_Backend_Pool#TFTP_Daemon here] for more information on TFTP in a Xinu lab.&lt;br /&gt;
&lt;br /&gt;
To install an updated version of U-Boot on the SD card:&lt;br /&gt;
&lt;br /&gt;
1. Get the WIP U-Boot code for the Nezha&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/smaeul/u-boot -b d1-wip&lt;br /&gt;
    pushd u-boot&lt;br /&gt;
&lt;br /&gt;
2. Make the configuration file&lt;br /&gt;
&lt;br /&gt;
    make CROSS_COMPILE=riscv64-linux-gnu- nezha_defconfig&lt;br /&gt;
&lt;br /&gt;
3. Make U-Boot&lt;br /&gt;
    &lt;br /&gt;
    make CROSS_COMPILE=riscv64-linux-gnu-&lt;br /&gt;
&lt;br /&gt;
4. Write U-Boot to SD card.  Note, change &amp;quot;x&amp;quot; to the drive of the SD card.&lt;br /&gt;
    sudo dd if=nboot/boot0_sdcard_sun20iw1p1.bin of=/dev/sdX bs=8192 seek=16&lt;br /&gt;
    sudo dd if=nboot/boot0_sdcard_sun20iw1p1.bin of=/dev/sdX bs=8192 seek=256&lt;br /&gt;
&lt;br /&gt;
5. The SD card shall now have the WIP version of U-Boot.  Insert the SD-card back into the Nezha.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[WRT54G]]&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Riscv-nezha&amp;diff=4411</id>
		<title>Riscv-nezha</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Riscv-nezha&amp;diff=4411"/>
		<updated>2024-03-22T01:12:07Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists details about the Sipeed Nezha .&lt;br /&gt;
&lt;br /&gt;
== Hardware Info ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
As report by [https://linux-sunxi.org/Allwinner_Nezha Linux Sunxi]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
! Device&lt;br /&gt;
! Note&lt;br /&gt;
|-&lt;br /&gt;
| SOC&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | Allwinner D1 @1.0Ghz&lt;br /&gt;
|-&lt;br /&gt;
| DRAM&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 512MiB/1GiB/2GiB DDR3 @ 792MHz, 2×&amp;lt;br /&amp;gt;H5TQ4G63EFR&lt;br /&gt;
|-&lt;br /&gt;
| NAND&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 256MB, MX35LF2GE4AD&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | DC 5V @ 2A (via OTG or dedicated USB Type-C connector)&lt;br /&gt;
|-&lt;br /&gt;
| Video&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | HDMI (Type A - full), LVDS&lt;br /&gt;
|-&lt;br /&gt;
| Audio&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 3.5mm headphone plug, HDMI, microphone array board connector, I2S&lt;br /&gt;
|-&lt;br /&gt;
| Network&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | WiFi 802.11 b/g/n (XRadioTech XR829), 10/100/1000Mbps Ethernet (Realtek RTL8211F)&lt;br /&gt;
|-&lt;br /&gt;
| Storage&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | µSD, SPI NAND&lt;br /&gt;
|-&lt;br /&gt;
| USB&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 1 USB2.0 Host, 1 USB Type-C OTG&lt;br /&gt;
|-&lt;br /&gt;
| Other&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | Power LED, RGB LED, OK &amp;amp; FEL buttons&lt;br /&gt;
|-&lt;br /&gt;
| Headers&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 40-pin GPIO, DEBUG&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Serial Header ===&lt;br /&gt;
The Sipeed Nezha follows the Raspberry Pi line in terms of the pins for the serial header.  The serial header pins are 5V power (pin 4), ground (pin 6), TXD (pin 8), and RXD (pin 10). &lt;br /&gt;
&lt;br /&gt;
The following setting can be used to connect to the Sipeed Nezha.  The serial terminal shall be enabled by default.&lt;br /&gt;
&lt;br /&gt;
* Speed (baud rate): 115200&lt;br /&gt;
* Bits: 8&lt;br /&gt;
* Parity: None&lt;br /&gt;
* Stop Bits: 1&lt;br /&gt;
* Flow Control: None&lt;br /&gt;
&lt;br /&gt;
== Software Info ==&lt;br /&gt;
By default, Nezhas ship with Debian or a Debian-like operating system called [[https://github.com/Tina-Linux/ TinaLinux]] on the SD card.  A version of the operating system also exists in the device's NAND memory.  Embedded Xinu will not overwrite the operating system in NAND, however the SD card will need to be overwritten to boot Embedded Xinu.  &lt;br /&gt;
&lt;br /&gt;
Nezhas ship with a version of U-Boot preinstalled.  This version of U-Boot, however, does not support network booting.  We recommended network booting as it doesn't require students to write their operating system the SD cards (which can wear them out).  See [https://xinu.cs.mu.edu/index.php/Build_Backend_Pool#TFTP_Daemon here] for more information on TFTP in a Xinu lab.&lt;br /&gt;
&lt;br /&gt;
To install an updated version of U-Boot on the SD card:&lt;br /&gt;
&lt;br /&gt;
1. Get the WIP U-Boot code for the Nezha&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/smaeul/u-boot -b d1-wip&lt;br /&gt;
    pushd u-boot&lt;br /&gt;
&lt;br /&gt;
2. Make the configuration file&lt;br /&gt;
&lt;br /&gt;
    make CROSS_COMPILE=riscv64-linux-gnu- nezha_defconfig&lt;br /&gt;
&lt;br /&gt;
3. Make U-Boot&lt;br /&gt;
    &lt;br /&gt;
    make CROSS_COMPILE=riscv64-linux-gnu-&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[WRT54G]]&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Riscv-nezha&amp;diff=4410</id>
		<title>Riscv-nezha</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Riscv-nezha&amp;diff=4410"/>
		<updated>2024-03-22T01:10:40Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists details about the Sipeed Nezha .&lt;br /&gt;
&lt;br /&gt;
== Hardware Info ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
As report by [https://linux-sunxi.org/Allwinner_Nezha Linux Sunxi]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
! Device&lt;br /&gt;
! Note&lt;br /&gt;
|-&lt;br /&gt;
| SOC&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | Allwinner D1 @1.0Ghz&lt;br /&gt;
|-&lt;br /&gt;
| DRAM&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 512MiB/1GiB/2GiB DDR3 @ 792MHz, 2×&amp;lt;br /&amp;gt;H5TQ4G63EFR&lt;br /&gt;
|-&lt;br /&gt;
| NAND&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 256MB, MX35LF2GE4AD&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | DC 5V @ 2A (via OTG or dedicated USB Type-C connector)&lt;br /&gt;
|-&lt;br /&gt;
| Video&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | HDMI (Type A - full), LVDS&lt;br /&gt;
|-&lt;br /&gt;
| Audio&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 3.5mm headphone plug, HDMI, microphone array board connector, I2S&lt;br /&gt;
|-&lt;br /&gt;
| Network&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | WiFi 802.11 b/g/n (XRadioTech XR829), 10/100/1000Mbps Ethernet (Realtek RTL8211F)&lt;br /&gt;
|-&lt;br /&gt;
| Storage&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | µSD, SPI NAND&lt;br /&gt;
|-&lt;br /&gt;
| USB&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 1 USB2.0 Host, 1 USB Type-C OTG&lt;br /&gt;
|-&lt;br /&gt;
| Other&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | Power LED, RGB LED, OK &amp;amp; FEL buttons&lt;br /&gt;
|-&lt;br /&gt;
| Headers&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 40-pin GPIO, DEBUG&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Serial Header ===&lt;br /&gt;
The Sipeed Nezha follows the Raspberry Pi line in terms of the pins for the serial header.  The serial header pins are 5V power (pin 4), ground (pin 6), TXD (pin 8), and RXD (pin 10). &lt;br /&gt;
&lt;br /&gt;
The following setting can be used to connect to the Sipeed Nezha.  The serial terminal shall be enabled by default.&lt;br /&gt;
&lt;br /&gt;
* Speed (baud rate): 115200&lt;br /&gt;
* Bits: 8&lt;br /&gt;
* Parity: None&lt;br /&gt;
* Stop Bits: 1&lt;br /&gt;
* Flow Control: None&lt;br /&gt;
&lt;br /&gt;
== Software Info ==&lt;br /&gt;
By default, Nezhas ship with Debian or a Debian-like operating system called [[https://github.com/Tina-Linux/ TinaLinux]] on the SD card.  A version of the operating system also exists in the device's NAND memory.  Embedded Xinu will not overwrite the operating system in NAND, however the SD card will need to be overwritten to boot Embedded Xinu.  &lt;br /&gt;
&lt;br /&gt;
Nezhas ship with a version of U-Boot preinstalled.  This version of U-Boot, however, does not support network booting.  We recommended network booting as it doesn't require students to write their operating system the SD cards (which can wear them out).  See [https://xinu.cs.mu.edu/index.php/Build_Backend_Pool#TFTP_Daemon here] for more information on TFTP in a Xinu lab.&lt;br /&gt;
&lt;br /&gt;
To install an updated version of U-Boot on the SD card:&lt;br /&gt;
&lt;br /&gt;
1. Get the WIP U-Boot code for the Nezha&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/smaeul/u-boot -b d1-wip&lt;br /&gt;
    pushd u-boot&lt;br /&gt;
&lt;br /&gt;
2. Make the configuration file&lt;br /&gt;
&lt;br /&gt;
    make CROSS_COMPILE=riscv64-linux-gnu- nezha_defconfig&lt;br /&gt;
&lt;br /&gt;
3. Make U-Boot&lt;br /&gt;
    &lt;br /&gt;
    make CROSS_COMPILE=riscv64-linux-gnu- OPENSBI=../opensbi/build/platform/generic/firmware/fw_dynamic.bin&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[WRT54G]]&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4409</id>
		<title>Build Xinu</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4409"/>
		<updated>2024-03-22T00:52:44Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: /* MIPS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HOWTO]]&lt;br /&gt;
The new MIPS port of Embedded XINU has been released.  See the [[Downloads]] tab for more information.&lt;br /&gt;
&lt;br /&gt;
== Cross-Compiler ==&lt;br /&gt;
=== RISC-V Cross-Compiler and Toolchain ===&lt;br /&gt;
The RISC-V cross-compiler and toolchain can be found [[https://github.com/riscv-collab/riscv-gnu-toolchain here]].  Installing the toolchain installs the cross-compiler, LLVM, QEMU, and GCC all with RISC-V support.&lt;br /&gt;
&lt;br /&gt;
==== Installing the Toolchain ====&lt;br /&gt;
1. Clone the RISC-V toolchain.  Note, this may take a while.&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/riscv-collab/riscv-gnu-toolchain --recurse-submodules&lt;br /&gt;
2. Install the dependencies for your system&lt;br /&gt;
&lt;br /&gt;
'''For Ubuntu'''&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev&lt;br /&gt;
&lt;br /&gt;
'''For Fedora/CentOS/RHEL OS'''&lt;br /&gt;
&lt;br /&gt;
    sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk  bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel&lt;br /&gt;
4. Run the configuration script.  By default, it will install the toolchain in &amp;lt;code&amp;gt;/opt/riscv&amp;lt;/code&amp;gt;.  Change this parameter to install the toolchain in a different location.&lt;br /&gt;
    cd riscv-gnu-toolchain &amp;amp;&amp;amp; ./configure --prefix=/opt/riscv&lt;br /&gt;
&lt;br /&gt;
5. Install the toolchain&lt;br /&gt;
    make linux&lt;br /&gt;
&lt;br /&gt;
6. Ensure the directory containing the toolchain is added to the system's PATH.  This is operating system specific.  If the toolchain is not added to the PATH, users will not be able to execute it from any directory.&lt;br /&gt;
&lt;br /&gt;
7. If all has gone well, you should now have a gcc cross-compiler from your host's native architecture to RISC-V 64-bit:&lt;br /&gt;
&lt;br /&gt;
   riscv64-linux-gnu-gcc&lt;br /&gt;
&lt;br /&gt;
=== MIPS Cross-Compiler ===&lt;br /&gt;
In order to compile Embedded MIPS kernels on a workstation that is not itself&lt;br /&gt;
a MIPS processor, it is necessary to build and install an appropriate&lt;br /&gt;
[[wikipedia:Cross Compiler|cross compiler]].  There are many&lt;br /&gt;
ways to accomplish this; for reference, we list the specific versions and&lt;br /&gt;
steps we used for our installation.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' the following tutorial describes the steps for creating a MIPS cross-compiler in a Linux environment. See our other wiki pages for tutorials on building cross-compilers for [[HOWTO:Build XINU on Windows XP|Windows XP]] or [[HOWTO:Build XINU on Mac OS X|Mac OS X]].&lt;br /&gt;
&lt;br /&gt;
As always, one should be wary of installing unfamilar software as the root&lt;br /&gt;
user of the system.  All of the steps below have been carried out as a&lt;br /&gt;
lesser-privileged user with write access to the necessary directories.&lt;br /&gt;
&lt;br /&gt;
==== Build binutils ====&lt;br /&gt;
&lt;br /&gt;
First, we downloaded, compiled, and installed the appropriate binary utilities.&lt;br /&gt;
We downloaded [http://www.gnu.org/software/binutils/ binutils] version&lt;br /&gt;
[http://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.gz 2.21], untarred the&lt;br /&gt;
source code, and ran the following commands inside the new directory created by untarring the download:&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Note about cross-compiler location ====&lt;br /&gt;
&lt;br /&gt;
We have chosen the path &amp;quot;/usr/local/project/mipsel-dev&amp;quot; to host our cross-compiler&lt;br /&gt;
installation.  Whatever path is used here must be reflected in the [[XINU]] build&lt;br /&gt;
configuration file, &amp;quot;compile/platforms/*/platformVars&amp;quot; when you arrive at that step.&lt;br /&gt;
&lt;br /&gt;
==== Link include directory ====&lt;br /&gt;
&lt;br /&gt;
We are not building a true, full-blown UNIX cross-compiler here, and do not need&lt;br /&gt;
a proper installation of the platform-specific C libraries; [[XINU]] has its own small&lt;br /&gt;
libraries that compile with the kernel.  However, the GCC compilation will want to&lt;br /&gt;
see appropriate library headers, so we cheat here by linking the platform-specific include directory&lt;br /&gt;
to the host machine's include directory.&lt;br /&gt;
&lt;br /&gt;
   mkdir -p /usr/local/project/mipsel-dev/mipsel/usr&lt;br /&gt;
   ln -s /usr/include /usr/local/project/mipsel-dev/mipsel/usr/include&lt;br /&gt;
&lt;br /&gt;
==== Build GNU C Compiler ====&lt;br /&gt;
&lt;br /&gt;
Second, we downloaded, patched, compiled and installed the GNU C Compiler.&lt;br /&gt;
We downloaded [http://gcc.gnu.org/ GCC] version 4.6.1.  We added the newly compiled binutils&lt;br /&gt;
into the shell path (/usr/local/project/mipsel-dev/bin) for the gcc compilation to find them.&lt;br /&gt;
This is also known to work with [http://gcc.gnu.org/ GCC] version 4.1.2 and 4.2.0 unpatched, using&lt;br /&gt;
[http://www.mscs.mu.edu/~brylow/xinu/fakelibdetection.sh this script] to get around installing&lt;br /&gt;
a bunch of platform-specific UNIX libraries.&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel --with-sysroot=/usr/local/project/mipsel-dev/mipsel/ --enable-languages=c&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Rejoice ====&lt;br /&gt;
&lt;br /&gt;
If all has gone well, you should now have a gcc cross-compiler from your host's native architecture to&lt;br /&gt;
little-endian MIPS:&lt;br /&gt;
&lt;br /&gt;
   /usr/local/project/mipsel-dev/bin/mipsel-gcc&lt;br /&gt;
&lt;br /&gt;
Remember the path to this file because later you'll need to double check some building variables to make sure they point to the correct location of your cross-compiler.&lt;br /&gt;
&lt;br /&gt;
== Building the XINU Image ==&lt;br /&gt;
&lt;br /&gt;
Once you have downloaded and extracted the Xinu tarball, you will see a basic directory structure (depending on the architecture): First, it is a good idea to read up on [[Build System|building the XINU system]]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;AUTHORS  device   lib      loader   README  system&lt;br /&gt;
compile  include  LICENSE  mailbox  shell   test&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;AUTHORS&amp;lt;/tt&amp;gt; is a brief history of contributors to the XINU operating system in it's varying iterations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;compile/&amp;lt;/tt&amp;gt; contains the Makefile and other necessities for [[Build System|building the XINU system]] once you have a cross-compiler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;device/&amp;lt;/tt&amp;gt; contains the source for all device drivers, including the tty and uart driver.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;include/&amp;lt;/tt&amp;gt; contains all the header files used by XINU.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;lib/&amp;lt;/tt&amp;gt; contains a folder (libxc/) with a Makefile and source for the library, as well as a binary blob which contains the pre-compiled library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;LICENSE&amp;lt;/tt&amp;gt; is the license under which this project falls.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loader/&amp;lt;/tt&amp;gt; (MIPS only) contains assembly files and is where the bootloader will begin execution of O/S code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mailbox/&amp;lt;/tt&amp;gt; contains the source for the mailbox message-passing implementation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;README&amp;lt;/tt&amp;gt; is this document.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;shell/&amp;lt;/tt&amp;gt; contains the source for all shell related functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;system/&amp;lt;/tt&amp;gt; contains the source for all system functions such as the nulluser process (initialize.c) as well as code to set up a C environment (startup.S).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;test/&amp;lt;/tt&amp;gt; contains a number of testcases (which can be run using the shell command testsuite).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== MIPS Specific Instructions ===&lt;br /&gt;
Next, you'll want to check your &amp;lt;code&amp;gt; mipsVars &amp;lt;/code&amp;gt; file in the &amp;lt;code&amp;gt; compile &amp;lt;/code&amp;gt; directory. The file should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;MIPS_ROOT = /usr/local/project/mipsel-dev/bin&lt;br /&gt;
MIPS_PREFIX = mipsel-&lt;br /&gt;
&lt;br /&gt;
COMPILER_ROOT = ${MIPS_ROOT}/${MIPS_PREFIX}&lt;br /&gt;
&lt;br /&gt;
CC       = ${COMPILER_ROOT}gcc&lt;br /&gt;
CPP      = ${COMPILER_ROOT}cpp&lt;br /&gt;
LD       = ${COMPILER_ROOT}ld&lt;br /&gt;
AS       = ${COMPILER_ROOT}as&lt;br /&gt;
AR       = ${COMPILER_ROOT}ar&lt;br /&gt;
MAKEDEP  = `which makedepend`&lt;br /&gt;
&lt;br /&gt;
DOCGEN   = doxygen&lt;br /&gt;
&lt;br /&gt;
# DETAIL   = -DDETAIL&lt;br /&gt;
&lt;br /&gt;
DEFS     =&lt;br /&gt;
INCLUDE  = -I../include&lt;br /&gt;
&lt;br /&gt;
#flag for producing GDB debug information&lt;br /&gt;
BUGFLAG = -ggdb&lt;br /&gt;
&lt;br /&gt;
CFLAGS = -O0 -Wall -Werror -Wstrict-prototypes -Wno-trigraphs            \&lt;br /&gt;
             -nostdinc -fno-builtin -fno-strict-aliasing -fno-common \&lt;br /&gt;
         -fomit-frame-pointer -fno-pic -ffunction-sections -G 0  \&lt;br /&gt;
         -mlong-calls -mno-abicalls -mabi=32 -march=mips32       \&lt;br /&gt;
         -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap        \&lt;br /&gt;
         ${DEBUG} ${INCLUDE} ${DETAIL} ${DEFS} -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ASFLAGS  = ${INCLUDE} ${DEBUG} -march=mips32 -mips32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important thing to note on this file is the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable. It needs to point to the directory containing the cross-compiler. If you followed the commands in the tutorial exactly, then the value of the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable in the code above should be the correct value.&lt;br /&gt;
&lt;br /&gt;
Now you'll want to actually create your boot image. In the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory execute the following commands: &amp;lt;code&amp;gt;make clean &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt; make &amp;lt;/code&amp;gt; command will let you know if you have any compiling errors or warnings. If there are none, then you should have successfully created a XINU boot image located in the file &amp;lt;code&amp;gt; xinu.boot &amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory. Remember that each time you make changes to source files, to recompile and create a new XINU boot image you have to execute &amp;lt;code&amp;gt; make clean &amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== What to do next? ==&lt;br /&gt;
&lt;br /&gt;
Now that you have successfully built a XINU boot image you're ready to use that file to actually [[HOWTO:Deploy_Xinu|boot XINU]] on your device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
''This work is supported in part by NSF grant DUE-CCLI-0737476.''&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4408</id>
		<title>Build Xinu</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4408"/>
		<updated>2024-03-22T00:52:23Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HOWTO]]&lt;br /&gt;
The new MIPS port of Embedded XINU has been released.  See the [[Downloads]] tab for more information.&lt;br /&gt;
&lt;br /&gt;
== Cross-Compiler ==&lt;br /&gt;
=== RISC-V Cross-Compiler and Toolchain ===&lt;br /&gt;
The RISC-V cross-compiler and toolchain can be found [[https://github.com/riscv-collab/riscv-gnu-toolchain here]].  Installing the toolchain installs the cross-compiler, LLVM, QEMU, and GCC all with RISC-V support.&lt;br /&gt;
&lt;br /&gt;
==== Installing the Toolchain ====&lt;br /&gt;
1. Clone the RISC-V toolchain.  Note, this may take a while.&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/riscv-collab/riscv-gnu-toolchain --recurse-submodules&lt;br /&gt;
2. Install the dependencies for your system&lt;br /&gt;
&lt;br /&gt;
'''For Ubuntu'''&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev&lt;br /&gt;
&lt;br /&gt;
'''For Fedora/CentOS/RHEL OS'''&lt;br /&gt;
&lt;br /&gt;
    sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk  bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel&lt;br /&gt;
4. Run the configuration script.  By default, it will install the toolchain in &amp;lt;code&amp;gt;/opt/riscv&amp;lt;/code&amp;gt;.  Change this parameter to install the toolchain in a different location.&lt;br /&gt;
    cd riscv-gnu-toolchain &amp;amp;&amp;amp; ./configure --prefix=/opt/riscv&lt;br /&gt;
&lt;br /&gt;
5. Install the toolchain&lt;br /&gt;
    make linux&lt;br /&gt;
&lt;br /&gt;
6. Ensure the directory containing the toolchain is added to the system's PATH.  This is operating system specific.  If the toolchain is not added to the PATH, users will not be able to execute it from any directory.&lt;br /&gt;
&lt;br /&gt;
7. If all has gone well, you should now have a gcc cross-compiler from your host's native architecture to RISC-V 64-bit:&lt;br /&gt;
&lt;br /&gt;
   riscv64-linux-gnu-gcc&lt;br /&gt;
&lt;br /&gt;
=== MIPS Cross-Compiler ===&lt;br /&gt;
In order to compile Embedded MIPS kernels on a workstation that is not itself&lt;br /&gt;
a MIPS processor, it is necessary to build and install an appropriate&lt;br /&gt;
[[wikipedia:Cross Compiler|cross compiler]].  There are many&lt;br /&gt;
ways to accomplish this; for reference, we list the specific versions and&lt;br /&gt;
steps we used for our installation.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' the following tutorial describes the steps for creating a MIPS cross-compiler in a Linux environment. See our other wiki pages for tutorials on building cross-compilers for [[HOWTO:Build XINU on Windows XP|Windows XP]] or [[HOWTO:Build XINU on Mac OS X|Mac OS X]].&lt;br /&gt;
&lt;br /&gt;
As always, one should be wary of installing unfamilar software as the root&lt;br /&gt;
user of the system.  All of the steps below have been carried out as a&lt;br /&gt;
lesser-privileged user with write access to the necessary directories.&lt;br /&gt;
&lt;br /&gt;
==== Build binutils ====&lt;br /&gt;
&lt;br /&gt;
First, we downloaded, compiled, and installed the appropriate binary utilities.&lt;br /&gt;
We downloaded [http://www.gnu.org/software/binutils/ binutils] version&lt;br /&gt;
[http://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.gz 2.21], untarred the&lt;br /&gt;
source code, and ran the following commands inside the new directory created by untarring the download:&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Note about cross-compiler location ====&lt;br /&gt;
&lt;br /&gt;
We have chosen the path &amp;quot;/usr/local/project/mipsel-dev&amp;quot; to host our cross-compiler&lt;br /&gt;
installation.  Whatever path is used here must be reflected in the [[XINU]] build&lt;br /&gt;
configuration file, &amp;quot;compile/platforms/*/platformVars&amp;quot; when you arrive at that step.&lt;br /&gt;
&lt;br /&gt;
==== Link include directory ====&lt;br /&gt;
&lt;br /&gt;
We are not building a true, full-blown UNIX cross-compiler here, and do not need&lt;br /&gt;
a proper installation of the platform-specific C libraries; [[XINU]] has its own small&lt;br /&gt;
libraries that compile with the kernel.  However, the GCC compilation will want to&lt;br /&gt;
see appropriate library headers, so we cheat here by linking the platform-specific include directory&lt;br /&gt;
to the host machine's include directory.&lt;br /&gt;
&lt;br /&gt;
   mkdir -p /usr/local/project/mipsel-dev/mipsel/usr&lt;br /&gt;
   ln -s /usr/include /usr/local/project/mipsel-dev/mipsel/usr/include&lt;br /&gt;
&lt;br /&gt;
==== Build GNU C Compiler ====&lt;br /&gt;
&lt;br /&gt;
Second, we downloaded, patched, compiled and installed the GNU C Compiler.&lt;br /&gt;
We downloaded [http://gcc.gnu.org/ GCC] version 4.6.1.  We added the newly compiled binutils&lt;br /&gt;
into the shell path (/usr/local/project/mipsel-dev/bin) for the gcc compilation to find them.&lt;br /&gt;
This is also known to work with [http://gcc.gnu.org/ GCC] version 4.1.2 and 4.2.0 unpatched, using&lt;br /&gt;
[http://www.mscs.mu.edu/~brylow/xinu/fakelibdetection.sh this script] to get around installing&lt;br /&gt;
a bunch of platform-specific UNIX libraries.&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel --with-sysroot=/usr/local/project/mipsel-dev/mipsel/ --enable-languages=c&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Rejoice ====&lt;br /&gt;
&lt;br /&gt;
If all has gone well, you should now have a gcc cross-compiler from your host's native architecture to&lt;br /&gt;
little-endian MIPS:&lt;br /&gt;
&lt;br /&gt;
   /usr/local/project/mipsel-dev/bin/mipsel-gcc&lt;br /&gt;
&lt;br /&gt;
Remember the path to this file because later you'll need to double check some building variables to make sure they point to the correct location of your cross-compiler.&lt;br /&gt;
&lt;br /&gt;
== Building the XINU Image ==&lt;br /&gt;
&lt;br /&gt;
Once you have downloaded and extracted the Xinu tarball, you will see a basic directory structure (depending on the architecture): First, it is a good idea to read up on [[Build System|building the XINU system]]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;AUTHORS  device   lib      loader   README  system&lt;br /&gt;
compile  include  LICENSE  mailbox  shell   test&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;AUTHORS&amp;lt;/tt&amp;gt; is a brief history of contributors to the XINU operating system in it's varying iterations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;compile/&amp;lt;/tt&amp;gt; contains the Makefile and other necessities for [[Build System|building the XINU system]] once you have a cross-compiler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;device/&amp;lt;/tt&amp;gt; contains the source for all device drivers, including the tty and uart driver.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;include/&amp;lt;/tt&amp;gt; contains all the header files used by XINU.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;lib/&amp;lt;/tt&amp;gt; contains a folder (libxc/) with a Makefile and source for the library, as well as a binary blob which contains the pre-compiled library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;LICENSE&amp;lt;/tt&amp;gt; is the license under which this project falls.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loader/&amp;lt;/tt&amp;gt; (MIPS only) contains assembly files and is where the bootloader will begin execution of O/S code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mailbox/&amp;lt;/tt&amp;gt; contains the source for the mailbox message-passing implementation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;README&amp;lt;/tt&amp;gt; is this document.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;shell/&amp;lt;/tt&amp;gt; contains the source for all shell related functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;system/&amp;lt;/tt&amp;gt; contains the source for all system functions such as the nulluser process (initialize.c) as well as code to set up a C environment (startup.S).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;test/&amp;lt;/tt&amp;gt; contains a number of testcases (which can be run using the shell command testsuite).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== MIPS ===&lt;br /&gt;
Next, you'll want to check your &amp;lt;code&amp;gt; mipsVars &amp;lt;/code&amp;gt; file in the &amp;lt;code&amp;gt; compile &amp;lt;/code&amp;gt; directory. The file should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;MIPS_ROOT = /usr/local/project/mipsel-dev/bin&lt;br /&gt;
MIPS_PREFIX = mipsel-&lt;br /&gt;
&lt;br /&gt;
COMPILER_ROOT = ${MIPS_ROOT}/${MIPS_PREFIX}&lt;br /&gt;
&lt;br /&gt;
CC       = ${COMPILER_ROOT}gcc&lt;br /&gt;
CPP      = ${COMPILER_ROOT}cpp&lt;br /&gt;
LD       = ${COMPILER_ROOT}ld&lt;br /&gt;
AS       = ${COMPILER_ROOT}as&lt;br /&gt;
AR       = ${COMPILER_ROOT}ar&lt;br /&gt;
MAKEDEP  = `which makedepend`&lt;br /&gt;
&lt;br /&gt;
DOCGEN   = doxygen&lt;br /&gt;
&lt;br /&gt;
# DETAIL   = -DDETAIL&lt;br /&gt;
&lt;br /&gt;
DEFS     =&lt;br /&gt;
INCLUDE  = -I../include&lt;br /&gt;
&lt;br /&gt;
#flag for producing GDB debug information&lt;br /&gt;
BUGFLAG = -ggdb&lt;br /&gt;
&lt;br /&gt;
CFLAGS = -O0 -Wall -Werror -Wstrict-prototypes -Wno-trigraphs            \&lt;br /&gt;
             -nostdinc -fno-builtin -fno-strict-aliasing -fno-common \&lt;br /&gt;
         -fomit-frame-pointer -fno-pic -ffunction-sections -G 0  \&lt;br /&gt;
         -mlong-calls -mno-abicalls -mabi=32 -march=mips32       \&lt;br /&gt;
         -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap        \&lt;br /&gt;
         ${DEBUG} ${INCLUDE} ${DETAIL} ${DEFS} -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ASFLAGS  = ${INCLUDE} ${DEBUG} -march=mips32 -mips32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important thing to note on this file is the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable. It needs to point to the directory containing the cross-compiler. If you followed the commands in the tutorial exactly, then the value of the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable in the code above should be the correct value.&lt;br /&gt;
&lt;br /&gt;
Now you'll want to actually create your boot image. In the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory execute the following commands: &amp;lt;code&amp;gt;make clean &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt; make &amp;lt;/code&amp;gt; command will let you know if you have any compiling errors or warnings. If there are none, then you should have successfully created a XINU boot image located in the file &amp;lt;code&amp;gt; xinu.boot &amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory. Remember that each time you make changes to source files, to recompile and create a new XINU boot image you have to execute &amp;lt;code&amp;gt; make clean &amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== What to do next? ==&lt;br /&gt;
&lt;br /&gt;
Now that you have successfully built a XINU boot image you're ready to use that file to actually [[HOWTO:Deploy_Xinu|boot XINU]] on your device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
''This work is supported in part by NSF grant DUE-CCLI-0737476.''&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4407</id>
		<title>Build Xinu</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4407"/>
		<updated>2024-03-22T00:48:18Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HOWTO]]&lt;br /&gt;
The new MIPS port of Embedded XINU has been released.  See the [[Downloads]] tab for more information.&lt;br /&gt;
&lt;br /&gt;
== Cross-Compiler ==&lt;br /&gt;
=== RISC-V Cross-Compiler and Toolchain ===&lt;br /&gt;
The RISC-V cross-compiler and toolchain can be found [[https://github.com/riscv-collab/riscv-gnu-toolchain here]].  Installing the toolchain installs the cross-compiler, LLVM, QEMU, and GCC all with RISC-V support.&lt;br /&gt;
&lt;br /&gt;
==== Installing the Toolchain ====&lt;br /&gt;
1. Clone the RISC-V toolchain.  Note, this may take a while.&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/riscv-collab/riscv-gnu-toolchain --recurse-submodules&lt;br /&gt;
2. Install the dependencies for your system&lt;br /&gt;
&lt;br /&gt;
'''For Ubuntu'''&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev&lt;br /&gt;
&lt;br /&gt;
'''For Fedora/CentOS/RHEL OS'''&lt;br /&gt;
&lt;br /&gt;
    sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk  bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel&lt;br /&gt;
4. Run the configuration script.  By default, it will install the toolchain in `/opt/riscv`.  Change this parameter to install the toolchain in a different location.&lt;br /&gt;
    cd riscv-gnu-toolchain &amp;amp;&amp;amp; ./configure --prefix=/opt/riscv&lt;br /&gt;
&lt;br /&gt;
5. Install the toolchain&lt;br /&gt;
    make linux&lt;br /&gt;
&lt;br /&gt;
6. Ensure the directory containing the toolchain is added to the system's PATH.  This is operating system specific.  If the toolchain is not added to the PATH, users will not be able to execute it from any directory.&lt;br /&gt;
&lt;br /&gt;
7. If all has gone well, you should now have a gcc cross-compiler from your host's native architecture to little-endian MIPS:&lt;br /&gt;
&lt;br /&gt;
   riscv64-linux-gnu-gcc&lt;br /&gt;
&lt;br /&gt;
=== MIPS Cross-Compiler ===&lt;br /&gt;
In order to compile Embedded MIPS kernels on a workstation that is not itself&lt;br /&gt;
a MIPS processor, it is necessary to build and install an appropriate&lt;br /&gt;
[[wikipedia:Cross Compiler|cross compiler]].  There are many&lt;br /&gt;
ways to accomplish this; for reference, we list the specific versions and&lt;br /&gt;
steps we used for our installation.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' the following tutorial describes the steps for creating a MIPS cross-compiler in a Linux environment. See our other wiki pages for tutorials on building cross-compilers for [[HOWTO:Build XINU on Windows XP|Windows XP]] or [[HOWTO:Build XINU on Mac OS X|Mac OS X]].&lt;br /&gt;
&lt;br /&gt;
As always, one should be wary of installing unfamilar software as the root&lt;br /&gt;
user of the system.  All of the steps below have been carried out as a&lt;br /&gt;
lesser-privileged user with write access to the necessary directories.&lt;br /&gt;
&lt;br /&gt;
==== Build binutils ====&lt;br /&gt;
&lt;br /&gt;
First, we downloaded, compiled, and installed the appropriate binary utilities.&lt;br /&gt;
We downloaded [http://www.gnu.org/software/binutils/ binutils] version&lt;br /&gt;
[http://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.gz 2.21], untarred the&lt;br /&gt;
source code, and ran the following commands inside the new directory created by untarring the download:&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Note about cross-compiler location ====&lt;br /&gt;
&lt;br /&gt;
We have chosen the path &amp;quot;/usr/local/project/mipsel-dev&amp;quot; to host our cross-compiler&lt;br /&gt;
installation.  Whatever path is used here must be reflected in the [[XINU]] build&lt;br /&gt;
configuration file, &amp;quot;compile/platforms/*/platformVars&amp;quot; when you arrive at that step.&lt;br /&gt;
&lt;br /&gt;
==== Link include directory ====&lt;br /&gt;
&lt;br /&gt;
We are not building a true, full-blown UNIX cross-compiler here, and do not need&lt;br /&gt;
a proper installation of the platform-specific C libraries; [[XINU]] has its own small&lt;br /&gt;
libraries that compile with the kernel.  However, the GCC compilation will want to&lt;br /&gt;
see appropriate library headers, so we cheat here by linking the platform-specific include directory&lt;br /&gt;
to the host machine's include directory.&lt;br /&gt;
&lt;br /&gt;
   mkdir -p /usr/local/project/mipsel-dev/mipsel/usr&lt;br /&gt;
   ln -s /usr/include /usr/local/project/mipsel-dev/mipsel/usr/include&lt;br /&gt;
&lt;br /&gt;
==== Build GNU C Compiler ====&lt;br /&gt;
&lt;br /&gt;
Second, we downloaded, patched, compiled and installed the GNU C Compiler.&lt;br /&gt;
We downloaded [http://gcc.gnu.org/ GCC] version 4.6.1.  We added the newly compiled binutils&lt;br /&gt;
into the shell path (/usr/local/project/mipsel-dev/bin) for the gcc compilation to find them.&lt;br /&gt;
This is also known to work with [http://gcc.gnu.org/ GCC] version 4.1.2 and 4.2.0 unpatched, using&lt;br /&gt;
[http://www.mscs.mu.edu/~brylow/xinu/fakelibdetection.sh this script] to get around installing&lt;br /&gt;
a bunch of platform-specific UNIX libraries.&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel --with-sysroot=/usr/local/project/mipsel-dev/mipsel/ --enable-languages=c&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Rejoice ====&lt;br /&gt;
&lt;br /&gt;
If all has gone well, you should now have a gcc cross-compiler from your host's native architecture to&lt;br /&gt;
little-endian MIPS:&lt;br /&gt;
&lt;br /&gt;
   /usr/local/project/mipsel-dev/bin/mipsel-gcc&lt;br /&gt;
&lt;br /&gt;
Remember the path to this file because later you'll need to double check some building variables to make sure they point to the correct location of your cross-compiler.&lt;br /&gt;
&lt;br /&gt;
== Building the XINU Image ==&lt;br /&gt;
&lt;br /&gt;
Once you have downloaded and extracted the xinu tarball, you will see a basic directory structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;AUTHORS  device   lib      loader   README  system&lt;br /&gt;
compile  include  LICENSE  mailbox  shell   test&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;AUTHORS&amp;lt;/tt&amp;gt; is a brief history of contributors to the XINU operating system in it's varying iterations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;compile/&amp;lt;/tt&amp;gt; contains the Makefile and other necessities for [[Build System|building the XINU system]] once you have a cross-compiler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;device/&amp;lt;/tt&amp;gt; contains the source for all device drivers, including the tty and uart driver.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;include/&amp;lt;/tt&amp;gt; contains all the header files used by XINU.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;lib/&amp;lt;/tt&amp;gt; contains a folder (libxc/) with a Makefile and source for the library, as well as a binary blob which contains the pre-compiled library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;LICENSE&amp;lt;/tt&amp;gt; is the license under which this project falls.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loader/&amp;lt;/tt&amp;gt; contains assembly files and is where the bootloader will begin execution of O/S code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mailbox/&amp;lt;/tt&amp;gt; contains the source for the mailbox message-passing implementation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;README&amp;lt;/tt&amp;gt; is this document.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;shell/&amp;lt;/tt&amp;gt; contains the source for all shell related functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;system/&amp;lt;/tt&amp;gt; contains the source for all system functions such as the nulluser process (initialize.c) as well as code to set up a C environment (startup.S).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;test/&amp;lt;/tt&amp;gt; contains a number of testcases (which can be run using the shell command testsuite).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
First, it is a good idea to read up on [[Build System|building the XINU system]]. Next, you'll want to check your &amp;lt;code&amp;gt; mipsVars &amp;lt;/code&amp;gt; file in the &amp;lt;code&amp;gt; compile &amp;lt;/code&amp;gt; directory. The file should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;MIPS_ROOT = /usr/local/project/mipsel-dev/bin&lt;br /&gt;
MIPS_PREFIX = mipsel-&lt;br /&gt;
&lt;br /&gt;
COMPILER_ROOT = ${MIPS_ROOT}/${MIPS_PREFIX}&lt;br /&gt;
&lt;br /&gt;
CC       = ${COMPILER_ROOT}gcc&lt;br /&gt;
CPP      = ${COMPILER_ROOT}cpp&lt;br /&gt;
LD       = ${COMPILER_ROOT}ld&lt;br /&gt;
AS       = ${COMPILER_ROOT}as&lt;br /&gt;
AR       = ${COMPILER_ROOT}ar&lt;br /&gt;
MAKEDEP  = `which makedepend`&lt;br /&gt;
&lt;br /&gt;
DOCGEN   = doxygen&lt;br /&gt;
&lt;br /&gt;
# DETAIL   = -DDETAIL&lt;br /&gt;
&lt;br /&gt;
DEFS     =&lt;br /&gt;
INCLUDE  = -I../include&lt;br /&gt;
&lt;br /&gt;
#flag for producing GDB debug information&lt;br /&gt;
BUGFLAG = -ggdb&lt;br /&gt;
&lt;br /&gt;
CFLAGS = -O0 -Wall -Werror -Wstrict-prototypes -Wno-trigraphs            \&lt;br /&gt;
             -nostdinc -fno-builtin -fno-strict-aliasing -fno-common \&lt;br /&gt;
         -fomit-frame-pointer -fno-pic -ffunction-sections -G 0  \&lt;br /&gt;
         -mlong-calls -mno-abicalls -mabi=32 -march=mips32       \&lt;br /&gt;
         -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap        \&lt;br /&gt;
         ${DEBUG} ${INCLUDE} ${DETAIL} ${DEFS} -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ASFLAGS  = ${INCLUDE} ${DEBUG} -march=mips32 -mips32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important thing to note on this file is the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable. It needs to point to the directory containing the cross-compiler. If you followed the commands in the tutorial exactly, then the value of the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable in the code above should be the correct value.&lt;br /&gt;
&lt;br /&gt;
Now you'll want to actually create your boot image. In the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory execute the following commands: &amp;lt;code&amp;gt;make clean &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt; make &amp;lt;/code&amp;gt; command will let you know if you have any compiling errors or warnings. If there are none, then you should have successfully created a XINU boot image located in the file &amp;lt;code&amp;gt; xinu.boot &amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory. Remember that each time you make changes to source files, to recompile and create a new XINU boot image you have to execute &amp;lt;code&amp;gt; make clean &amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== What to do next? ==&lt;br /&gt;
&lt;br /&gt;
Now that you have successfully built a XINU boot image you're ready to use that file to actually [[HOWTO:Deploy_Xinu|boot XINU]] on your backend router.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
''This work is supported in part by NSF grant DUE-CCLI-0737476.''&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4406</id>
		<title>Build Xinu</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4406"/>
		<updated>2024-03-22T00:45:57Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HOWTO]]&lt;br /&gt;
The new MIPS port of Embedded XINU has been released.  See the [[Downloads]] tab for more information.&lt;br /&gt;
&lt;br /&gt;
== Cross-Compiler ==&lt;br /&gt;
=== RISC-V Cross-Compiler and Toolchain ===&lt;br /&gt;
The RISC-V cross-compiler and toolchain can be found [[https://github.com/riscv-collab/riscv-gnu-toolchain here]].  Installing the toolchain installs the cross-compiler, LLVM, QEMU, and GCC all with RISC-V support.&lt;br /&gt;
&lt;br /&gt;
==== Installing the Toolchain ====&lt;br /&gt;
1. Clone the RISC-V toolchain.  Note, this may take a while.&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/riscv-collab/riscv-gnu-toolchain --recurse-submodules&lt;br /&gt;
2. Install the dependencies for your system&lt;br /&gt;
&lt;br /&gt;
'''For Ubuntu'''&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev&lt;br /&gt;
&lt;br /&gt;
'''For Fedora/CentOS/RHEL OS'''&lt;br /&gt;
&lt;br /&gt;
    sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk  bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel&lt;br /&gt;
4. Run the configuration script.  By default, it will install the toolchain in `/opt/riscv`.  Change this parameter to install the toolchain in a different location.&lt;br /&gt;
    cd riscv-gnu-toolchain &amp;amp;&amp;amp; ./configure --prefix=/opt/riscv&lt;br /&gt;
&lt;br /&gt;
5. Install the toolchain&lt;br /&gt;
    make linux&lt;br /&gt;
&lt;br /&gt;
6. Ensure the directory containing the toolchain is added to the system's PATH.  This is operating system specific.  If the toolchain is not added to the PATH, users will not be able to execute it from any directory.&lt;br /&gt;
&lt;br /&gt;
=== MIPS Cross-Compiler ===&lt;br /&gt;
In order to compile Embedded MIPS kernels on a workstation that is not itself&lt;br /&gt;
a MIPS processor, it is necessary to build and install an appropriate&lt;br /&gt;
[[wikipedia:Cross Compiler|cross compiler]].  There are many&lt;br /&gt;
ways to accomplish this; for reference, we list the specific versions and&lt;br /&gt;
steps we used for our installation.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' the following tutorial describes the steps for creating a MIPS cross-compiler in a Linux environment. See our other wiki pages for tutorials on building cross-compilers for [[HOWTO:Build XINU on Windows XP|Windows XP]] or [[HOWTO:Build XINU on Mac OS X|Mac OS X]].&lt;br /&gt;
&lt;br /&gt;
As always, one should be wary of installing unfamilar software as the root&lt;br /&gt;
user of the system.  All of the steps below have been carried out as a&lt;br /&gt;
lesser-privileged user with write access to the necessary directories.&lt;br /&gt;
&lt;br /&gt;
==== Build binutils ====&lt;br /&gt;
&lt;br /&gt;
First, we downloaded, compiled, and installed the appropriate binary utilities.&lt;br /&gt;
We downloaded [http://www.gnu.org/software/binutils/ binutils] version&lt;br /&gt;
[http://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.gz 2.21], untarred the&lt;br /&gt;
source code, and ran the following commands inside the new directory created by untarring the download:&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Note about cross-compiler location ====&lt;br /&gt;
&lt;br /&gt;
We have chosen the path &amp;quot;/usr/local/project/mipsel-dev&amp;quot; to host our cross-compiler&lt;br /&gt;
installation.  Whatever path is used here must be reflected in the [[XINU]] build&lt;br /&gt;
configuration file, &amp;quot;compile/platforms/*/platformVars&amp;quot; when you arrive at that step.&lt;br /&gt;
&lt;br /&gt;
==== Link include directory ====&lt;br /&gt;
&lt;br /&gt;
We are not building a true, full-blown UNIX cross-compiler here, and do not need&lt;br /&gt;
a proper installation of the platform-specific C libraries; [[XINU]] has its own small&lt;br /&gt;
libraries that compile with the kernel.  However, the GCC compilation will want to&lt;br /&gt;
see appropriate library headers, so we cheat here by linking the platform-specific include directory&lt;br /&gt;
to the host machine's include directory.&lt;br /&gt;
&lt;br /&gt;
   mkdir -p /usr/local/project/mipsel-dev/mipsel/usr&lt;br /&gt;
   ln -s /usr/include /usr/local/project/mipsel-dev/mipsel/usr/include&lt;br /&gt;
&lt;br /&gt;
==== Build GNU C Compiler ====&lt;br /&gt;
&lt;br /&gt;
Second, we downloaded, patched, compiled and installed the GNU C Compiler.&lt;br /&gt;
We downloaded [http://gcc.gnu.org/ GCC] version 4.6.1.  We added the newly compiled binutils&lt;br /&gt;
into the shell path (/usr/local/project/mipsel-dev/bin) for the gcc compilation to find them.&lt;br /&gt;
This is also known to work with [http://gcc.gnu.org/ GCC] version 4.1.2 and 4.2.0 unpatched, using&lt;br /&gt;
[http://www.mscs.mu.edu/~brylow/xinu/fakelibdetection.sh this script] to get around installing&lt;br /&gt;
a bunch of platform-specific UNIX libraries.&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel --with-sysroot=/usr/local/project/mipsel-dev/mipsel/ --enable-languages=c&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Rejoice ====&lt;br /&gt;
&lt;br /&gt;
If all has gone well, you should now have a gcc cross-compiler from your host's native architecture to&lt;br /&gt;
little-endian MIPS:&lt;br /&gt;
&lt;br /&gt;
   /usr/local/project/mipsel-dev/bin/mipsel-gcc&lt;br /&gt;
&lt;br /&gt;
Remember the path to this file because later you'll need to double check some building variables to make sure they point to the correct location of your cross-compiler.&lt;br /&gt;
&lt;br /&gt;
== Building the XINU Image ==&lt;br /&gt;
&lt;br /&gt;
Once you have downloaded and extracted the xinu tarball, you will see a basic directory structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;AUTHORS  device   lib      loader   README  system&lt;br /&gt;
compile  include  LICENSE  mailbox  shell   test&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;AUTHORS&amp;lt;/tt&amp;gt; is a brief history of contributors to the XINU operating system in it's varying iterations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;compile/&amp;lt;/tt&amp;gt; contains the Makefile and other necessities for [[Build System|building the XINU system]] once you have a cross-compiler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;device/&amp;lt;/tt&amp;gt; contains the source for all device drivers, including the tty and uart driver.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;include/&amp;lt;/tt&amp;gt; contains all the header files used by XINU.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;lib/&amp;lt;/tt&amp;gt; contains a folder (libxc/) with a Makefile and source for the library, as well as a binary blob which contains the pre-compiled library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;LICENSE&amp;lt;/tt&amp;gt; is the license under which this project falls.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loader/&amp;lt;/tt&amp;gt; contains assembly files and is where the bootloader will begin execution of O/S code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mailbox/&amp;lt;/tt&amp;gt; contains the source for the mailbox message-passing implementation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;README&amp;lt;/tt&amp;gt; is this document.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;shell/&amp;lt;/tt&amp;gt; contains the source for all shell related functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;system/&amp;lt;/tt&amp;gt; contains the source for all system functions such as the nulluser process (initialize.c) as well as code to set up a C environment (startup.S).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;test/&amp;lt;/tt&amp;gt; contains a number of testcases (which can be run using the shell command testsuite).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
First, it is a good idea to read up on [[Build System|building the XINU system]]. Next, you'll want to check your &amp;lt;code&amp;gt; mipsVars &amp;lt;/code&amp;gt; file in the &amp;lt;code&amp;gt; compile &amp;lt;/code&amp;gt; directory. The file should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;MIPS_ROOT = /usr/local/project/mipsel-dev/bin&lt;br /&gt;
MIPS_PREFIX = mipsel-&lt;br /&gt;
&lt;br /&gt;
COMPILER_ROOT = ${MIPS_ROOT}/${MIPS_PREFIX}&lt;br /&gt;
&lt;br /&gt;
CC       = ${COMPILER_ROOT}gcc&lt;br /&gt;
CPP      = ${COMPILER_ROOT}cpp&lt;br /&gt;
LD       = ${COMPILER_ROOT}ld&lt;br /&gt;
AS       = ${COMPILER_ROOT}as&lt;br /&gt;
AR       = ${COMPILER_ROOT}ar&lt;br /&gt;
MAKEDEP  = `which makedepend`&lt;br /&gt;
&lt;br /&gt;
DOCGEN   = doxygen&lt;br /&gt;
&lt;br /&gt;
# DETAIL   = -DDETAIL&lt;br /&gt;
&lt;br /&gt;
DEFS     =&lt;br /&gt;
INCLUDE  = -I../include&lt;br /&gt;
&lt;br /&gt;
#flag for producing GDB debug information&lt;br /&gt;
BUGFLAG = -ggdb&lt;br /&gt;
&lt;br /&gt;
CFLAGS = -O0 -Wall -Werror -Wstrict-prototypes -Wno-trigraphs            \&lt;br /&gt;
             -nostdinc -fno-builtin -fno-strict-aliasing -fno-common \&lt;br /&gt;
         -fomit-frame-pointer -fno-pic -ffunction-sections -G 0  \&lt;br /&gt;
         -mlong-calls -mno-abicalls -mabi=32 -march=mips32       \&lt;br /&gt;
         -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap        \&lt;br /&gt;
         ${DEBUG} ${INCLUDE} ${DETAIL} ${DEFS} -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ASFLAGS  = ${INCLUDE} ${DEBUG} -march=mips32 -mips32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important thing to note on this file is the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable. It needs to point to the directory containing the cross-compiler. If you followed the commands in the tutorial exactly, then the value of the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable in the code above should be the correct value.&lt;br /&gt;
&lt;br /&gt;
Now you'll want to actually create your boot image. In the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory execute the following commands: &amp;lt;code&amp;gt;make clean &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt; make &amp;lt;/code&amp;gt; command will let you know if you have any compiling errors or warnings. If there are none, then you should have successfully created a XINU boot image located in the file &amp;lt;code&amp;gt; xinu.boot &amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory. Remember that each time you make changes to source files, to recompile and create a new XINU boot image you have to execute &amp;lt;code&amp;gt; make clean &amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== What to do next? ==&lt;br /&gt;
&lt;br /&gt;
Now that you have successfully built a XINU boot image you're ready to use that file to actually [[HOWTO:Deploy_Xinu|boot XINU]] on your backend router.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
''This work is supported in part by NSF grant DUE-CCLI-0737476.''&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4405</id>
		<title>Build Xinu</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4405"/>
		<updated>2024-03-22T00:43:37Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HOWTO]]&lt;br /&gt;
The new MIPS port of Embedded XINU has been released.  See the [[Downloads]] tab for more information.&lt;br /&gt;
&lt;br /&gt;
== Cross-Compiler ==&lt;br /&gt;
=== RISC-V Cross-Compiler and Toolchain ===&lt;br /&gt;
The RISC-V cross-compiler and toolchain can be found [[https://github.com/riscv-collab/riscv-gnu-toolchain here]].  Installing the toolchain installs the cross-compiler, LLVM, QEMU, and GCC all with RISC-V support.&lt;br /&gt;
&lt;br /&gt;
==== Installing the Toolchain ====&lt;br /&gt;
1. Clone the RISC-V toolchain.  Note, this may take a while.&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/riscv-collab/riscv-gnu-toolchain --recurse-submodules&lt;br /&gt;
2. Install the dependencies for your system&lt;br /&gt;
&lt;br /&gt;
'''For Ubuntu'''&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev&lt;br /&gt;
&lt;br /&gt;
'''For Fedora/CentOS/RHEL OS'''&lt;br /&gt;
&lt;br /&gt;
    sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk  bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel&lt;br /&gt;
4. Run the configuration script.  By default, it will install the toolchain in `/opt/riscv`.  Change this parameter to install the toolchain in a different location.&lt;br /&gt;
    cd riscv-gnu-toolchain &amp;amp;&amp;amp; ./configure --prefix=/opt/riscv&lt;br /&gt;
&lt;br /&gt;
5. Finally, install the toolchain&lt;br /&gt;
    make linux&lt;br /&gt;
&lt;br /&gt;
=== MIPS Cross-Compiler ===&lt;br /&gt;
In order to compile Embedded MIPS kernels on a workstation that is not itself&lt;br /&gt;
a MIPS processor, it is necessary to build and install an appropriate&lt;br /&gt;
[[wikipedia:Cross Compiler|cross compiler]].  There are many&lt;br /&gt;
ways to accomplish this; for reference, we list the specific versions and&lt;br /&gt;
steps we used for our installation.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' the following tutorial describes the steps for creating a MIPS cross-compiler in a Linux environment. See our other wiki pages for tutorials on building cross-compilers for [[HOWTO:Build XINU on Windows XP|Windows XP]] or [[HOWTO:Build XINU on Mac OS X|Mac OS X]].&lt;br /&gt;
&lt;br /&gt;
As always, one should be wary of installing unfamilar software as the root&lt;br /&gt;
user of the system.  All of the steps below have been carried out as a&lt;br /&gt;
lesser-privileged user with write access to the necessary directories.&lt;br /&gt;
&lt;br /&gt;
==== Build binutils ====&lt;br /&gt;
&lt;br /&gt;
First, we downloaded, compiled, and installed the appropriate binary utilities.&lt;br /&gt;
We downloaded [http://www.gnu.org/software/binutils/ binutils] version&lt;br /&gt;
[http://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.gz 2.21], untarred the&lt;br /&gt;
source code, and ran the following commands inside the new directory created by untarring the download:&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Note about cross-compiler location ====&lt;br /&gt;
&lt;br /&gt;
We have chosen the path &amp;quot;/usr/local/project/mipsel-dev&amp;quot; to host our cross-compiler&lt;br /&gt;
installation.  Whatever path is used here must be reflected in the [[XINU]] build&lt;br /&gt;
configuration file, &amp;quot;compile/platforms/*/platformVars&amp;quot; when you arrive at that step.&lt;br /&gt;
&lt;br /&gt;
==== Link include directory ====&lt;br /&gt;
&lt;br /&gt;
We are not building a true, full-blown UNIX cross-compiler here, and do not need&lt;br /&gt;
a proper installation of the platform-specific C libraries; [[XINU]] has its own small&lt;br /&gt;
libraries that compile with the kernel.  However, the GCC compilation will want to&lt;br /&gt;
see appropriate library headers, so we cheat here by linking the platform-specific include directory&lt;br /&gt;
to the host machine's include directory.&lt;br /&gt;
&lt;br /&gt;
   mkdir -p /usr/local/project/mipsel-dev/mipsel/usr&lt;br /&gt;
   ln -s /usr/include /usr/local/project/mipsel-dev/mipsel/usr/include&lt;br /&gt;
&lt;br /&gt;
==== Build GNU C Compiler ====&lt;br /&gt;
&lt;br /&gt;
Second, we downloaded, patched, compiled and installed the GNU C Compiler.&lt;br /&gt;
We downloaded [http://gcc.gnu.org/ GCC] version 4.6.1.  We added the newly compiled binutils&lt;br /&gt;
into the shell path (/usr/local/project/mipsel-dev/bin) for the gcc compilation to find them.&lt;br /&gt;
This is also known to work with [http://gcc.gnu.org/ GCC] version 4.1.2 and 4.2.0 unpatched, using&lt;br /&gt;
[http://www.mscs.mu.edu/~brylow/xinu/fakelibdetection.sh this script] to get around installing&lt;br /&gt;
a bunch of platform-specific UNIX libraries.&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel --with-sysroot=/usr/local/project/mipsel-dev/mipsel/ --enable-languages=c&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Rejoice ====&lt;br /&gt;
&lt;br /&gt;
If all has gone well, you should now have a gcc cross-compiler from your host's native architecture to&lt;br /&gt;
little-endian MIPS:&lt;br /&gt;
&lt;br /&gt;
   /usr/local/project/mipsel-dev/bin/mipsel-gcc&lt;br /&gt;
&lt;br /&gt;
Remember the path to this file because later you'll need to double check some building variables to make sure they point to the correct location of your cross-compiler.&lt;br /&gt;
&lt;br /&gt;
== Building the XINU Image ==&lt;br /&gt;
&lt;br /&gt;
Once you have downloaded and extracted the xinu tarball, you will see a basic directory structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;AUTHORS  device   lib      loader   README  system&lt;br /&gt;
compile  include  LICENSE  mailbox  shell   test&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;AUTHORS&amp;lt;/tt&amp;gt; is a brief history of contributors to the XINU operating system in it's varying iterations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;compile/&amp;lt;/tt&amp;gt; contains the Makefile and other necessities for [[Build System|building the XINU system]] once you have a cross-compiler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;device/&amp;lt;/tt&amp;gt; contains the source for all device drivers, including the tty and uart driver.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;include/&amp;lt;/tt&amp;gt; contains all the header files used by XINU.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;lib/&amp;lt;/tt&amp;gt; contains a folder (libxc/) with a Makefile and source for the library, as well as a binary blob which contains the pre-compiled library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;LICENSE&amp;lt;/tt&amp;gt; is the license under which this project falls.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loader/&amp;lt;/tt&amp;gt; contains assembly files and is where the bootloader will begin execution of O/S code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mailbox/&amp;lt;/tt&amp;gt; contains the source for the mailbox message-passing implementation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;README&amp;lt;/tt&amp;gt; is this document.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;shell/&amp;lt;/tt&amp;gt; contains the source for all shell related functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;system/&amp;lt;/tt&amp;gt; contains the source for all system functions such as the nulluser process (initialize.c) as well as code to set up a C environment (startup.S).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;test/&amp;lt;/tt&amp;gt; contains a number of testcases (which can be run using the shell command testsuite).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
First, it is a good idea to read up on [[Build System|building the XINU system]]. Next, you'll want to check your &amp;lt;code&amp;gt; mipsVars &amp;lt;/code&amp;gt; file in the &amp;lt;code&amp;gt; compile &amp;lt;/code&amp;gt; directory. The file should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;MIPS_ROOT = /usr/local/project/mipsel-dev/bin&lt;br /&gt;
MIPS_PREFIX = mipsel-&lt;br /&gt;
&lt;br /&gt;
COMPILER_ROOT = ${MIPS_ROOT}/${MIPS_PREFIX}&lt;br /&gt;
&lt;br /&gt;
CC       = ${COMPILER_ROOT}gcc&lt;br /&gt;
CPP      = ${COMPILER_ROOT}cpp&lt;br /&gt;
LD       = ${COMPILER_ROOT}ld&lt;br /&gt;
AS       = ${COMPILER_ROOT}as&lt;br /&gt;
AR       = ${COMPILER_ROOT}ar&lt;br /&gt;
MAKEDEP  = `which makedepend`&lt;br /&gt;
&lt;br /&gt;
DOCGEN   = doxygen&lt;br /&gt;
&lt;br /&gt;
# DETAIL   = -DDETAIL&lt;br /&gt;
&lt;br /&gt;
DEFS     =&lt;br /&gt;
INCLUDE  = -I../include&lt;br /&gt;
&lt;br /&gt;
#flag for producing GDB debug information&lt;br /&gt;
BUGFLAG = -ggdb&lt;br /&gt;
&lt;br /&gt;
CFLAGS = -O0 -Wall -Werror -Wstrict-prototypes -Wno-trigraphs            \&lt;br /&gt;
             -nostdinc -fno-builtin -fno-strict-aliasing -fno-common \&lt;br /&gt;
         -fomit-frame-pointer -fno-pic -ffunction-sections -G 0  \&lt;br /&gt;
         -mlong-calls -mno-abicalls -mabi=32 -march=mips32       \&lt;br /&gt;
         -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap        \&lt;br /&gt;
         ${DEBUG} ${INCLUDE} ${DETAIL} ${DEFS} -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ASFLAGS  = ${INCLUDE} ${DEBUG} -march=mips32 -mips32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important thing to note on this file is the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable. It needs to point to the directory containing the cross-compiler. If you followed the commands in the tutorial exactly, then the value of the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable in the code above should be the correct value.&lt;br /&gt;
&lt;br /&gt;
Now you'll want to actually create your boot image. In the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory execute the following commands: &amp;lt;code&amp;gt;make clean &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt; make &amp;lt;/code&amp;gt; command will let you know if you have any compiling errors or warnings. If there are none, then you should have successfully created a XINU boot image located in the file &amp;lt;code&amp;gt; xinu.boot &amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory. Remember that each time you make changes to source files, to recompile and create a new XINU boot image you have to execute &amp;lt;code&amp;gt; make clean &amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== What to do next? ==&lt;br /&gt;
&lt;br /&gt;
Now that you have successfully built a XINU boot image you're ready to use that file to actually [[HOWTO:Deploy_Xinu|boot XINU]] on your backend router.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
''This work is supported in part by NSF grant DUE-CCLI-0737476.''&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4404</id>
		<title>Build Xinu</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4404"/>
		<updated>2024-03-22T00:42:59Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: /* Cross-Compiler */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HOWTO]]&lt;br /&gt;
The new MIPS port of Embedded XINU has been released.  See the [[Downloads]] tab for more information.&lt;br /&gt;
&lt;br /&gt;
== Cross-Compiler ==&lt;br /&gt;
=== RISC-V Cross-Compiler and Toolchain ===&lt;br /&gt;
The RISC-V cross-compiler and toolchain can be found [[https://github.com/riscv-collab/riscv-gnu-toolchain here]].  Installing the toolchain installs the cross-compiler, LLVM, QEMU, and GCC all with RISC-V support.&lt;br /&gt;
&lt;br /&gt;
==== Installing the Toolchain ====&lt;br /&gt;
1. Clone the RISC-V toolchain.  Note, this may take a while.&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/riscv-collab/riscv-gnu-toolchain --recurse-submodules&lt;br /&gt;
2. Install the dependencies for your system&lt;br /&gt;
&lt;br /&gt;
'''For Ubuntu'''&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev&lt;br /&gt;
&lt;br /&gt;
'''For Fedora/CentOS/RHEL OS'''&lt;br /&gt;
&lt;br /&gt;
    sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk  bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel&lt;br /&gt;
4. Run the configuration script.  By default, it will install the toolchain in `/opt/riscv`.  Change this parameter to install the toolchain in a different location.&lt;br /&gt;
    ./configure --prefix=/opt/riscv&lt;br /&gt;
&lt;br /&gt;
5. Finally, install the toolchain&lt;br /&gt;
    make linux&lt;br /&gt;
&lt;br /&gt;
=== MIPS Cross-Compiler ===&lt;br /&gt;
In order to compile Embedded MIPS kernels on a workstation that is not itself&lt;br /&gt;
a MIPS processor, it is necessary to build and install an appropriate&lt;br /&gt;
[[wikipedia:Cross Compiler|cross compiler]].  There are many&lt;br /&gt;
ways to accomplish this; for reference, we list the specific versions and&lt;br /&gt;
steps we used for our installation.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' the following tutorial describes the steps for creating a MIPS cross-compiler in a Linux environment. See our other wiki pages for tutorials on building cross-compilers for [[HOWTO:Build XINU on Windows XP|Windows XP]] or [[HOWTO:Build XINU on Mac OS X|Mac OS X]].&lt;br /&gt;
&lt;br /&gt;
As always, one should be wary of installing unfamilar software as the root&lt;br /&gt;
user of the system.  All of the steps below have been carried out as a&lt;br /&gt;
lesser-privileged user with write access to the necessary directories.&lt;br /&gt;
&lt;br /&gt;
==== Build binutils ====&lt;br /&gt;
&lt;br /&gt;
First, we downloaded, compiled, and installed the appropriate binary utilities.&lt;br /&gt;
We downloaded [http://www.gnu.org/software/binutils/ binutils] version&lt;br /&gt;
[http://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.gz 2.21], untarred the&lt;br /&gt;
source code, and ran the following commands inside the new directory created by untarring the download:&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Note about cross-compiler location ====&lt;br /&gt;
&lt;br /&gt;
We have chosen the path &amp;quot;/usr/local/project/mipsel-dev&amp;quot; to host our cross-compiler&lt;br /&gt;
installation.  Whatever path is used here must be reflected in the [[XINU]] build&lt;br /&gt;
configuration file, &amp;quot;compile/platforms/*/platformVars&amp;quot; when you arrive at that step.&lt;br /&gt;
&lt;br /&gt;
==== Link include directory ====&lt;br /&gt;
&lt;br /&gt;
We are not building a true, full-blown UNIX cross-compiler here, and do not need&lt;br /&gt;
a proper installation of the platform-specific C libraries; [[XINU]] has its own small&lt;br /&gt;
libraries that compile with the kernel.  However, the GCC compilation will want to&lt;br /&gt;
see appropriate library headers, so we cheat here by linking the platform-specific include directory&lt;br /&gt;
to the host machine's include directory.&lt;br /&gt;
&lt;br /&gt;
   mkdir -p /usr/local/project/mipsel-dev/mipsel/usr&lt;br /&gt;
   ln -s /usr/include /usr/local/project/mipsel-dev/mipsel/usr/include&lt;br /&gt;
&lt;br /&gt;
==== Build GNU C Compiler ====&lt;br /&gt;
&lt;br /&gt;
Second, we downloaded, patched, compiled and installed the GNU C Compiler.&lt;br /&gt;
We downloaded [http://gcc.gnu.org/ GCC] version 4.6.1.  We added the newly compiled binutils&lt;br /&gt;
into the shell path (/usr/local/project/mipsel-dev/bin) for the gcc compilation to find them.&lt;br /&gt;
This is also known to work with [http://gcc.gnu.org/ GCC] version 4.1.2 and 4.2.0 unpatched, using&lt;br /&gt;
[http://www.mscs.mu.edu/~brylow/xinu/fakelibdetection.sh this script] to get around installing&lt;br /&gt;
a bunch of platform-specific UNIX libraries.&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel --with-sysroot=/usr/local/project/mipsel-dev/mipsel/ --enable-languages=c&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Rejoice ====&lt;br /&gt;
&lt;br /&gt;
If all has gone well, you should now have a gcc cross-compiler from your host's native architecture to&lt;br /&gt;
little-endian MIPS:&lt;br /&gt;
&lt;br /&gt;
   /usr/local/project/mipsel-dev/bin/mipsel-gcc&lt;br /&gt;
&lt;br /&gt;
Remember the path to this file because later you'll need to double check some building variables to make sure they point to the correct location of your cross-compiler.&lt;br /&gt;
&lt;br /&gt;
== Building the XINU Image ==&lt;br /&gt;
&lt;br /&gt;
Once you have downloaded and extracted the xinu tarball, you will see a basic directory structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;AUTHORS  device   lib      loader   README  system&lt;br /&gt;
compile  include  LICENSE  mailbox  shell   test&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;AUTHORS&amp;lt;/tt&amp;gt; is a brief history of contributors to the XINU operating system in it's varying iterations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;compile/&amp;lt;/tt&amp;gt; contains the Makefile and other necessities for [[Build System|building the XINU system]] once you have a cross-compiler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;device/&amp;lt;/tt&amp;gt; contains the source for all device drivers, including the tty and uart driver.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;include/&amp;lt;/tt&amp;gt; contains all the header files used by XINU.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;lib/&amp;lt;/tt&amp;gt; contains a folder (libxc/) with a Makefile and source for the library, as well as a binary blob which contains the pre-compiled library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;LICENSE&amp;lt;/tt&amp;gt; is the license under which this project falls.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loader/&amp;lt;/tt&amp;gt; contains assembly files and is where the bootloader will begin execution of O/S code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mailbox/&amp;lt;/tt&amp;gt; contains the source for the mailbox message-passing implementation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;README&amp;lt;/tt&amp;gt; is this document.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;shell/&amp;lt;/tt&amp;gt; contains the source for all shell related functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;system/&amp;lt;/tt&amp;gt; contains the source for all system functions such as the nulluser process (initialize.c) as well as code to set up a C environment (startup.S).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;test/&amp;lt;/tt&amp;gt; contains a number of testcases (which can be run using the shell command testsuite).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
First, it is a good idea to read up on [[Build System|building the XINU system]]. Next, you'll want to check your &amp;lt;code&amp;gt; mipsVars &amp;lt;/code&amp;gt; file in the &amp;lt;code&amp;gt; compile &amp;lt;/code&amp;gt; directory. The file should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;MIPS_ROOT = /usr/local/project/mipsel-dev/bin&lt;br /&gt;
MIPS_PREFIX = mipsel-&lt;br /&gt;
&lt;br /&gt;
COMPILER_ROOT = ${MIPS_ROOT}/${MIPS_PREFIX}&lt;br /&gt;
&lt;br /&gt;
CC       = ${COMPILER_ROOT}gcc&lt;br /&gt;
CPP      = ${COMPILER_ROOT}cpp&lt;br /&gt;
LD       = ${COMPILER_ROOT}ld&lt;br /&gt;
AS       = ${COMPILER_ROOT}as&lt;br /&gt;
AR       = ${COMPILER_ROOT}ar&lt;br /&gt;
MAKEDEP  = `which makedepend`&lt;br /&gt;
&lt;br /&gt;
DOCGEN   = doxygen&lt;br /&gt;
&lt;br /&gt;
# DETAIL   = -DDETAIL&lt;br /&gt;
&lt;br /&gt;
DEFS     =&lt;br /&gt;
INCLUDE  = -I../include&lt;br /&gt;
&lt;br /&gt;
#flag for producing GDB debug information&lt;br /&gt;
BUGFLAG = -ggdb&lt;br /&gt;
&lt;br /&gt;
CFLAGS = -O0 -Wall -Werror -Wstrict-prototypes -Wno-trigraphs            \&lt;br /&gt;
             -nostdinc -fno-builtin -fno-strict-aliasing -fno-common \&lt;br /&gt;
         -fomit-frame-pointer -fno-pic -ffunction-sections -G 0  \&lt;br /&gt;
         -mlong-calls -mno-abicalls -mabi=32 -march=mips32       \&lt;br /&gt;
         -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap        \&lt;br /&gt;
         ${DEBUG} ${INCLUDE} ${DETAIL} ${DEFS} -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ASFLAGS  = ${INCLUDE} ${DEBUG} -march=mips32 -mips32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important thing to note on this file is the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable. It needs to point to the directory containing the cross-compiler. If you followed the commands in the tutorial exactly, then the value of the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable in the code above should be the correct value.&lt;br /&gt;
&lt;br /&gt;
Now you'll want to actually create your boot image. In the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory execute the following commands: &amp;lt;code&amp;gt;make clean &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt; make &amp;lt;/code&amp;gt; command will let you know if you have any compiling errors or warnings. If there are none, then you should have successfully created a XINU boot image located in the file &amp;lt;code&amp;gt; xinu.boot &amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory. Remember that each time you make changes to source files, to recompile and create a new XINU boot image you have to execute &amp;lt;code&amp;gt; make clean &amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== What to do next? ==&lt;br /&gt;
&lt;br /&gt;
Now that you have successfully built a XINU boot image you're ready to use that file to actually [[HOWTO:Deploy_Xinu|boot XINU]] on your backend router.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
''This work is supported in part by NSF grant DUE-CCLI-0737476.''&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4403</id>
		<title>Build Xinu</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Build_Xinu&amp;diff=4403"/>
		<updated>2024-03-22T00:30:02Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HOWTO]]&lt;br /&gt;
The new MIPS port of Embedded XINU has been released.  See the [[Downloads]] tab for more information.&lt;br /&gt;
&lt;br /&gt;
== Cross-Compiler ==&lt;br /&gt;
&lt;br /&gt;
=== MIPS Cross-Compiler ===&lt;br /&gt;
In order to compile Embedded MIPS kernels on a workstation that is not itself&lt;br /&gt;
a MIPS processor, it is necessary to build and install an appropriate&lt;br /&gt;
[[wikipedia:Cross Compiler|cross compiler]].  There are many&lt;br /&gt;
ways to accomplish this; for reference, we list the specific versions and&lt;br /&gt;
steps we used for our installation.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' the following tutorial describes the steps for creating a MIPS cross-compiler in a Linux environment. See our other wiki pages for tutorials on building cross-compilers for [[HOWTO:Build XINU on Windows XP|Windows XP]] or [[HOWTO:Build XINU on Mac OS X|Mac OS X]].&lt;br /&gt;
&lt;br /&gt;
As always, one should be wary of installing unfamilar software as the root&lt;br /&gt;
user of the system.  All of the steps below have been carried out as a&lt;br /&gt;
lesser-privileged user with write access to the necessary directories.&lt;br /&gt;
&lt;br /&gt;
==== Build binutils ====&lt;br /&gt;
&lt;br /&gt;
First, we downloaded, compiled, and installed the appropriate binary utilities.&lt;br /&gt;
We downloaded [http://www.gnu.org/software/binutils/ binutils] version&lt;br /&gt;
[http://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.gz 2.21], untarred the&lt;br /&gt;
source code, and ran the following commands inside the new directory created by untarring the download:&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Note about cross-compiler location ====&lt;br /&gt;
&lt;br /&gt;
We have chosen the path &amp;quot;/usr/local/project/mipsel-dev&amp;quot; to host our cross-compiler&lt;br /&gt;
installation.  Whatever path is used here must be reflected in the [[XINU]] build&lt;br /&gt;
configuration file, &amp;quot;compile/platforms/*/platformVars&amp;quot; when you arrive at that step.&lt;br /&gt;
&lt;br /&gt;
==== Link include directory ====&lt;br /&gt;
&lt;br /&gt;
We are not building a true, full-blown UNIX cross-compiler here, and do not need&lt;br /&gt;
a proper installation of the platform-specific C libraries; [[XINU]] has its own small&lt;br /&gt;
libraries that compile with the kernel.  However, the GCC compilation will want to&lt;br /&gt;
see appropriate library headers, so we cheat here by linking the platform-specific include directory&lt;br /&gt;
to the host machine's include directory.&lt;br /&gt;
&lt;br /&gt;
   mkdir -p /usr/local/project/mipsel-dev/mipsel/usr&lt;br /&gt;
   ln -s /usr/include /usr/local/project/mipsel-dev/mipsel/usr/include&lt;br /&gt;
&lt;br /&gt;
==== Build GNU C Compiler ====&lt;br /&gt;
&lt;br /&gt;
Second, we downloaded, patched, compiled and installed the GNU C Compiler.&lt;br /&gt;
We downloaded [http://gcc.gnu.org/ GCC] version 4.6.1.  We added the newly compiled binutils&lt;br /&gt;
into the shell path (/usr/local/project/mipsel-dev/bin) for the gcc compilation to find them.&lt;br /&gt;
This is also known to work with [http://gcc.gnu.org/ GCC] version 4.1.2 and 4.2.0 unpatched, using&lt;br /&gt;
[http://www.mscs.mu.edu/~brylow/xinu/fakelibdetection.sh this script] to get around installing&lt;br /&gt;
a bunch of platform-specific UNIX libraries.&lt;br /&gt;
&lt;br /&gt;
   ./configure  --prefix=/usr/local/project/mipsel-dev --target=mipsel --with-sysroot=/usr/local/project/mipsel-dev/mipsel/ --enable-languages=c&lt;br /&gt;
   make&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
==== Rejoice ====&lt;br /&gt;
&lt;br /&gt;
If all has gone well, you should now have a gcc cross-compiler from your host's native architecture to&lt;br /&gt;
little-endian MIPS:&lt;br /&gt;
&lt;br /&gt;
   /usr/local/project/mipsel-dev/bin/mipsel-gcc&lt;br /&gt;
&lt;br /&gt;
Remember the path to this file because later you'll need to double check some building variables to make sure they point to the correct location of your cross-compiler.&lt;br /&gt;
&lt;br /&gt;
== Building the XINU Image ==&lt;br /&gt;
&lt;br /&gt;
Once you have downloaded and extracted the xinu tarball, you will see a basic directory structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;AUTHORS  device   lib      loader   README  system&lt;br /&gt;
compile  include  LICENSE  mailbox  shell   test&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;AUTHORS&amp;lt;/tt&amp;gt; is a brief history of contributors to the XINU operating system in it's varying iterations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;compile/&amp;lt;/tt&amp;gt; contains the Makefile and other necessities for [[Build System|building the XINU system]] once you have a cross-compiler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;device/&amp;lt;/tt&amp;gt; contains the source for all device drivers, including the tty and uart driver.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;include/&amp;lt;/tt&amp;gt; contains all the header files used by XINU.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;lib/&amp;lt;/tt&amp;gt; contains a folder (libxc/) with a Makefile and source for the library, as well as a binary blob which contains the pre-compiled library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;LICENSE&amp;lt;/tt&amp;gt; is the license under which this project falls.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loader/&amp;lt;/tt&amp;gt; contains assembly files and is where the bootloader will begin execution of O/S code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;mailbox/&amp;lt;/tt&amp;gt; contains the source for the mailbox message-passing implementation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;README&amp;lt;/tt&amp;gt; is this document.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;shell/&amp;lt;/tt&amp;gt; contains the source for all shell related functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;system/&amp;lt;/tt&amp;gt; contains the source for all system functions such as the nulluser process (initialize.c) as well as code to set up a C environment (startup.S).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;test/&amp;lt;/tt&amp;gt; contains a number of testcases (which can be run using the shell command testsuite).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
First, it is a good idea to read up on [[Build System|building the XINU system]]. Next, you'll want to check your &amp;lt;code&amp;gt; mipsVars &amp;lt;/code&amp;gt; file in the &amp;lt;code&amp;gt; compile &amp;lt;/code&amp;gt; directory. The file should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;MIPS_ROOT = /usr/local/project/mipsel-dev/bin&lt;br /&gt;
MIPS_PREFIX = mipsel-&lt;br /&gt;
&lt;br /&gt;
COMPILER_ROOT = ${MIPS_ROOT}/${MIPS_PREFIX}&lt;br /&gt;
&lt;br /&gt;
CC       = ${COMPILER_ROOT}gcc&lt;br /&gt;
CPP      = ${COMPILER_ROOT}cpp&lt;br /&gt;
LD       = ${COMPILER_ROOT}ld&lt;br /&gt;
AS       = ${COMPILER_ROOT}as&lt;br /&gt;
AR       = ${COMPILER_ROOT}ar&lt;br /&gt;
MAKEDEP  = `which makedepend`&lt;br /&gt;
&lt;br /&gt;
DOCGEN   = doxygen&lt;br /&gt;
&lt;br /&gt;
# DETAIL   = -DDETAIL&lt;br /&gt;
&lt;br /&gt;
DEFS     =&lt;br /&gt;
INCLUDE  = -I../include&lt;br /&gt;
&lt;br /&gt;
#flag for producing GDB debug information&lt;br /&gt;
BUGFLAG = -ggdb&lt;br /&gt;
&lt;br /&gt;
CFLAGS = -O0 -Wall -Werror -Wstrict-prototypes -Wno-trigraphs            \&lt;br /&gt;
             -nostdinc -fno-builtin -fno-strict-aliasing -fno-common \&lt;br /&gt;
         -fomit-frame-pointer -fno-pic -ffunction-sections -G 0  \&lt;br /&gt;
         -mlong-calls -mno-abicalls -mabi=32 -march=mips32       \&lt;br /&gt;
         -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap        \&lt;br /&gt;
         ${DEBUG} ${INCLUDE} ${DETAIL} ${DEFS} -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ASFLAGS  = ${INCLUDE} ${DEBUG} -march=mips32 -mips32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important thing to note on this file is the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable. It needs to point to the directory containing the cross-compiler. If you followed the commands in the tutorial exactly, then the value of the &amp;lt;code&amp;gt; MIPS_ROOT &amp;lt;/code&amp;gt; variable in the code above should be the correct value.&lt;br /&gt;
&lt;br /&gt;
Now you'll want to actually create your boot image. In the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory execute the following commands: &amp;lt;code&amp;gt;make clean &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt; make &amp;lt;/code&amp;gt; command will let you know if you have any compiling errors or warnings. If there are none, then you should have successfully created a XINU boot image located in the file &amp;lt;code&amp;gt; xinu.boot &amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt; compile/ &amp;lt;/code&amp;gt; directory. Remember that each time you make changes to source files, to recompile and create a new XINU boot image you have to execute &amp;lt;code&amp;gt; make clean &amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt; make&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== What to do next? ==&lt;br /&gt;
&lt;br /&gt;
Now that you have successfully built a XINU boot image you're ready to use that file to actually [[HOWTO:Deploy_Xinu|boot XINU]] on your backend router.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
''This work is supported in part by NSF grant DUE-CCLI-0737476.''&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Main_Page&amp;diff=4402</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Main_Page&amp;diff=4402"/>
		<updated>2024-03-22T00:28:02Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Embedded Xinu''' is an ongoing research and implementation project in the area of Operating Systems and Embedded Systems.  Its original goal was to re-implement and port the [[Xinu|Xinu Operating System]] to several embedded MIPS platforms, such as the Linksys [[WRT54GL]] router.  Since then, Embedded Xinu has been ported to other platforms, such as the [[mipsel-qemu|QEMU MIPSel virtual environment]] and the [[Raspberry Pi]]; see the [[list of supported platforms]].  Although Embedded Xinu is still being developed and ported to new platforms, a laboratory environment and curriculum materials are already in use for courses in Operating Systems, Hardware Systems, Embedded Systems, Networking, and Compilers at Marquette University and other colleges/universities.&lt;br /&gt;
&lt;br /&gt;
The Embedded Xinu project was conceived and is supervised by [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] and is being conducted by both graduate and undergraduate students in the [[Systems Laboratory]] in the [http://www.mscs.mu.edu/ Math, Statistics, &amp;amp; Computer Science] department of [http://www.mu.edu/ Marquette University] in Milwaukee, Wisconsin.  The first major phase of work on Embedded Xinu began in the Summer of 2006.&lt;br /&gt;
&lt;br /&gt;
Our project partners include [http://www.cse.buffalo.edu/~bina/ Dr. Bina Ramamurthy] at University of Buffalo (with whom we shared an [http://www.nsf.gov/pubs/2009/nsf09529/nsf09529.html NSF CCLI] grant), [http://cs.olemiss.edu/~ruth/wiki/doku.php Dr. Paul Ruth] at University of Mississippi, and [http://www.cs.purdue.edu/people/comer Dr. Doug Comer] (father of Xinu) at Purdue University.&lt;br /&gt;
&lt;br /&gt;
== Teaching With Embedded Xinu ==&lt;br /&gt;
&lt;br /&gt;
* For curriculum guidance on adopting or adapting Embedded Xinu for undergraduate coursework, see [[Teaching With Xinu]].&lt;br /&gt;
* Workshops have been held regarding teaching with Embedded Xinu.  For example, the [http://www.cs.olemiss.edu/acmse2010/pdf/xinu.pdf Teaching With Embedded Xinu Workshop] at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010] in Oxford, Mississippi (Ole Miss campus) shared ready-made curriculum resources that have been used successfully to teach hardware systems, operating systems, realtime/embedded systems, networking, and compilers with the Embedded Xinu platform at several colleges/universities.&lt;br /&gt;
&lt;br /&gt;
== Building an Embedded Xinu Laboratory ==&lt;br /&gt;
&lt;br /&gt;
In this section we are developing instructions so that other groups can benefit from the work we are doing.  These guides can be followed more or less in order to create a relatively inexpensive platform for a custom operating system.  As our work develops further, there will be more Xinu-specific information.&lt;br /&gt;
&lt;br /&gt;
# Obtain a [[List of supported platforms|supported platform]].&lt;br /&gt;
# (Required if using a Linksys/Asus router) [[HOWTO:Modify the Linksys hardware|Modify the Linksys hardware]] or [[HOWTO:Modify the ASUS hardware|Modify the ASUS hardware]]&lt;br /&gt;
## [[HOWTO:Connect to a modified router|Connect to a modified router]]&lt;br /&gt;
# [[HOWTO:Build Xinu|Build Xinu]]&lt;br /&gt;
# [[HOWTO:Deploy Xinu|Deploy Xinu]]&lt;br /&gt;
# (Optional) [[HOWTO:Build Backend Pool|Build a pool of backends]]&lt;br /&gt;
# (Recommended) [[HOWTO:Backup your router|Backup your router's factory configuration]]&lt;br /&gt;
&lt;br /&gt;
== Other Embedded Xinu Information ==&lt;br /&gt;
&lt;br /&gt;
* MIPS [[processor]]&lt;br /&gt;
* Main [[memory]]&lt;br /&gt;
* [[Exception and Interrupt Handling]]&lt;br /&gt;
* [[UART driver]]&lt;br /&gt;
* [[TTY driver]]&lt;br /&gt;
* [[Switch driver]]&lt;br /&gt;
* [[Networking]]&lt;br /&gt;
* [[Flash memory]]&lt;br /&gt;
* [[Flashing firmware]]&lt;br /&gt;
* [[EJTAG|Enhanced Joint Test Action Group]] debugger&lt;br /&gt;
* [[Standard library]]&lt;br /&gt;
* [[XinuPhone]] Internet telephony&lt;br /&gt;
* [[Router Recovery]] aka &amp;quot;Debricking&amp;quot;&lt;br /&gt;
* [[Development]]&lt;br /&gt;
* [[Contributors]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;small&amp;gt;&amp;lt;small&amp;gt;The Xinu Lab is brought to you in part by [[XMMS|M&amp;amp;M's]].&amp;lt;/small&amp;gt;&amp;lt;/small&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
--&amp;gt;__NOTOC__&amp;lt;!-- Disable &amp;quot;Contents&amp;quot; box from showing --&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;__NOEDITSECTION__&amp;lt;!-- Disable [edit] from appearing --&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Riscv-nezha&amp;diff=4401</id>
		<title>Riscv-nezha</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Riscv-nezha&amp;diff=4401"/>
		<updated>2024-03-21T20:17:49Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists details about the Sipeed Nezha .&lt;br /&gt;
&lt;br /&gt;
== Hardware Info ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
As report by [https://linux-sunxi.org/Allwinner_Nezha Linux Sunxi]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
! Device&lt;br /&gt;
! Note&lt;br /&gt;
|-&lt;br /&gt;
| SOC&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | Allwinner D1 @1.0Ghz&lt;br /&gt;
|-&lt;br /&gt;
| DRAM&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 512MiB/1GiB/2GiB DDR3 @ 792MHz, 2×&amp;lt;br /&amp;gt;H5TQ4G63EFR&lt;br /&gt;
|-&lt;br /&gt;
| NAND&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 256MB, MX35LF2GE4AD&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | DC 5V @ 2A (via OTG or dedicated USB Type-C connector)&lt;br /&gt;
|-&lt;br /&gt;
| Video&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | HDMI (Type A - full), LVDS&lt;br /&gt;
|-&lt;br /&gt;
| Audio&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 3.5mm headphone plug, HDMI, microphone array board connector, I2S&lt;br /&gt;
|-&lt;br /&gt;
| Network&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | WiFi 802.11 b/g/n (XRadioTech XR829), 10/100/1000Mbps Ethernet (Realtek RTL8211F)&lt;br /&gt;
|-&lt;br /&gt;
| Storage&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | µSD, SPI NAND&lt;br /&gt;
|-&lt;br /&gt;
| USB&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 1 USB2.0 Host, 1 USB Type-C OTG&lt;br /&gt;
|-&lt;br /&gt;
| Other&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | Power LED, RGB LED, OK &amp;amp; FEL buttons&lt;br /&gt;
|-&lt;br /&gt;
| Headers&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 40-pin GPIO, DEBUG&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Serial Header ===&lt;br /&gt;
The Sipeed Nezha follows the Raspberry Pi line in terms of the pins for the serial header.  The serial header pins are 5V power (pin 4), ground (pin 6), TXD (pin 8), and RXD (pin 10). &lt;br /&gt;
&lt;br /&gt;
The following setting can be used to connect to the Sipeed Nezha.  The serial terminal shall be enabled by default.&lt;br /&gt;
&lt;br /&gt;
* Speed (baud rate): 115200&lt;br /&gt;
* Bits: 8&lt;br /&gt;
* Parity: None&lt;br /&gt;
* Stop Bits: 1&lt;br /&gt;
* Flow Control: None&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[WRT54G]]&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Riscv-nezha&amp;diff=4400</id>
		<title>Riscv-nezha</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Riscv-nezha&amp;diff=4400"/>
		<updated>2024-03-21T20:17:21Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists details about the Sipeed Nezha .&lt;br /&gt;
&lt;br /&gt;
== Hardware Info ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
As report by [https://linux-sunxi.org/Allwinner_Nezha Linux Sunxi]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
! Device&lt;br /&gt;
! Note&lt;br /&gt;
|-&lt;br /&gt;
| SOC&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | Allwinner D1 @1.0Ghz&lt;br /&gt;
|-&lt;br /&gt;
| DRAM&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 512MiB/1GiB/2GiB DDR3 @ 792MHz, 2×&amp;lt;br /&amp;gt;H5TQ4G63EFR&lt;br /&gt;
|-&lt;br /&gt;
| NAND&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 256MB, MX35LF2GE4AD&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | DC 5V @ 2A (via OTG or dedicated USB Type-C connector)&lt;br /&gt;
|-&lt;br /&gt;
| Video&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | HDMI (Type A - full), LVDS&lt;br /&gt;
|-&lt;br /&gt;
| Audio&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 3.5mm headphone plug, HDMI, microphone array board connector, I2S&lt;br /&gt;
|-&lt;br /&gt;
| Network&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | WiFi 802.11 b/g/n (XRadioTech XR829), 10/100/1000Mbps Ethernet (Realtek RTL8211F)&lt;br /&gt;
|-&lt;br /&gt;
| Storage&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | µSD, SPI NAND&lt;br /&gt;
|-&lt;br /&gt;
| USB&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 1 USB2.0 Host, 1 USB Type-C OTG&lt;br /&gt;
|-&lt;br /&gt;
| Other&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | Power LED, RGB LED, OK &amp;amp; FEL buttons&lt;br /&gt;
|-&lt;br /&gt;
| Headers&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 40-pin GPIO, DEBUG&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Serial Header ===&lt;br /&gt;
The Sipeed Nezha follows the Raspberry Pi line in terms of the pins for the serial header.  The serial header pins are 5V power (GPIO 4), ground (GPIO 6), TXD (GPIO 8), and RXD (GPIO 10). &lt;br /&gt;
&lt;br /&gt;
The following setting can be used to connect to the Sipeed Nezha.  The serial terminal shall be enabled by default.&lt;br /&gt;
&lt;br /&gt;
* Speed (baud rate): 115200&lt;br /&gt;
* Bits: 8&lt;br /&gt;
* Parity: None&lt;br /&gt;
* Stop Bits: 1&lt;br /&gt;
* Flow Control: None&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[WRT54G]]&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=Riscv-nezha&amp;diff=4399</id>
		<title>Riscv-nezha</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=Riscv-nezha&amp;diff=4399"/>
		<updated>2024-03-21T20:12:57Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: Created page with &amp;quot;This page lists details about the Sipeed Nezha .  == Hardware Info ==  === General === As report by [https://linux-sunxi.org/Allwinner_Nezha Linux Sunxi] {| class=&amp;quot;wikitable&amp;quot;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists details about the Sipeed Nezha .&lt;br /&gt;
&lt;br /&gt;
== Hardware Info ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
As report by [https://linux-sunxi.org/Allwinner_Nezha Linux Sunxi]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
! Device&lt;br /&gt;
! Note&lt;br /&gt;
|-&lt;br /&gt;
| SOC&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | Allwinner D1 @1.0Ghz&lt;br /&gt;
|-&lt;br /&gt;
| DRAM&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 512MiB/1GiB/2GiB DDR3 @ 792MHz, 2×&amp;lt;br /&amp;gt;H5TQ4G63EFR&lt;br /&gt;
|-&lt;br /&gt;
| NAND&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 256MB, MX35LF2GE4AD&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | DC 5V @ 2A (via OTG or dedicated USB Type-C connector)&lt;br /&gt;
|-&lt;br /&gt;
| Video&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | HDMI (Type A - full), LVDS&lt;br /&gt;
|-&lt;br /&gt;
| Audio&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 3.5mm headphone plug, HDMI, microphone array board connector, I2S&lt;br /&gt;
|-&lt;br /&gt;
| Network&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | WiFi 802.11 b/g/n (XRadioTech XR829), 10/100/1000Mbps Ethernet (Realtek RTL8211F)&lt;br /&gt;
|-&lt;br /&gt;
| Storage&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | µSD, SPI NAND&lt;br /&gt;
|-&lt;br /&gt;
| USB&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 1 USB2.0 Host, 1 USB Type-C OTG&lt;br /&gt;
|-&lt;br /&gt;
| Other&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | Power LED, RGB LED, OK &amp;amp; FEL buttons&lt;br /&gt;
|-&lt;br /&gt;
| Headers&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | 40-pin GPIO, DEBUG&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Serial Header ===&lt;br /&gt;
The Sipeed Nezha follows the Raspberry Pi line in terms of the pins for the serial header.  The serial header pins &lt;br /&gt;
&lt;br /&gt;
The following setting can be used to connect to the Sipeed Nezha.  The serial terminal shall be enabled by default.&lt;br /&gt;
&lt;br /&gt;
* Speed (baud rate): 115200&lt;br /&gt;
* Bits: 8&lt;br /&gt;
* Parity: None&lt;br /&gt;
* Stop Bits: 1&lt;br /&gt;
* Flow Control: None&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[WRT54G]]&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
	<entry>
		<id>https://xinu.cs.mu.edu/index.php?title=List_of_supported_platforms&amp;diff=4398</id>
		<title>List of supported platforms</title>
		<link rel="alternate" type="text/html" href="https://xinu.cs.mu.edu/index.php?title=List_of_supported_platforms&amp;diff=4398"/>
		<updated>2024-03-21T19:58:25Z</updated>

		<summary type="html">&lt;p&gt;AGebhard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
This page lists the platforms currently supported by the Embedded Xinu operating system (or at least in development).&lt;br /&gt;
&lt;br /&gt;
== Supported Platforms ==&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;18%&amp;quot;|Platform&lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|Status&lt;br /&gt;
!Comments&lt;br /&gt;
|-&lt;br /&gt;
|[[riscv-nezha|RISC-V Nezha]] [http://www.qemu.org/]&lt;br /&gt;
|Experimental&lt;br /&gt;
|This is the first port of Embedded Xinu to a RISC-V platform; development began in summer 2022.&lt;br /&gt;
|-&lt;br /&gt;
|[[Raspberry Pi model 3B+]] [http://www.raspberrypi.org]&lt;br /&gt;
|Experimental&lt;br /&gt;
|This is the first multi-core port of Embedded Xinu, and has been in use on Marquette campus since 2017.&lt;br /&gt;
|-&lt;br /&gt;
|[[Raspberry Pi model 1A and 1B]] [http://www.raspberrypi.org]&lt;br /&gt;
|Supported&lt;br /&gt;
|This was the primary development platform for Embedded Xinu 2014-2018.&lt;br /&gt;
|-&lt;br /&gt;
|[[WRT54GL|Linksys WRT54GL]] [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&amp;amp;childpagename=US%2FLayout&amp;amp;cid=1133202177241&amp;amp;pagename=Linksys%2FCommon%2FVisitorWrapper]&lt;br /&gt;
|Supported - Legacy&lt;br /&gt;
|This is was the primary development platform for Embedded Xinu 2007-2013.&lt;br /&gt;
|-&lt;br /&gt;
|[[WRT54G|Linksys WRT54G]] v8 [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&amp;amp;childpagename=US%2FLayout&amp;amp;cid=1149562300349&amp;amp;pagename=Linksys%2FCommon%2FVisitorWrapper] &lt;br /&gt;
|Supported - Legacy&lt;br /&gt;
|Tested and running at the Embedded Xinu Lab.&lt;br /&gt;
|-&lt;br /&gt;
|[[WRT54G|Linksys WRT54G]] v4 [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&amp;amp;childpagename=US%2FLayout&amp;amp;cid=1149562300349&amp;amp;pagename=Linksys%2FCommon%2FVisitorWrapper]&lt;br /&gt;
|Probably Supported&lt;br /&gt;
|The v4 is apparently the version on which WRT54GL is based, and so although the Embedded Xinu Lab has not explicitly tested it, it probably works.&lt;br /&gt;
|-&lt;br /&gt;
|[[WRT160NL|Linksys WRT160NL]] [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&amp;amp;childpagename=US%2FLayout&amp;amp;cid=1149562300349&amp;amp;pagename=Linksys%2FCommon%2FVisitorWrapper]&lt;br /&gt;
|Supported - Legacy&lt;br /&gt;
|Newer model of router.  Full O/S teaching core functioning, including wired network interface.&lt;br /&gt;
|-&lt;br /&gt;
|[[mipsel-qemu]] [http://www.qemu.org/]&lt;br /&gt;
|Supported&lt;br /&gt;
|Full O/S teaching core functioning, network support incomplete.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AGebhard</name></author>
		
	</entry>
</feed>