https://wiki.emacinc.com/api.php?action=feedcontributions&user=Awichmann&feedformat=atomwiki.emacinc.com - User contributions [en]2024-03-29T07:07:07ZUser contributionsMediaWiki 1.31.6https://wiki.emacinc.com/index.php?title=Open_Source_Community&diff=5404Open Source Community2016-06-15T15:59:40Z<p>Awichmann: </p>
<hr />
<div>{{todo|SEOKWREV (perpetual review required); (10.29.13-21:55->MD-);(12.19.13-19:30->MD+);(01.03.14-15:55->MD+);(01.03.14-16:21->MW+);(03.06.14-15:50->BS-);(04.11.14-17:05->BS+)|Klint Youngmeyer|project=oe 4,oe 5,ky,SEOKWREV,md,mw,bs}}<br />
<br />
{{#seo:<br />
|title=Open Source Community<br />
|titlemode=append<br />
|keywords=Online Open Source Community,Resources<br />
|description=To get general Linux support quickly, it is sometimes best to first reach out to the online communities dedicated to open source software and Linux.<br />
}}<br />
<!--'''NOTE: This page still needs more info. More will be provided over time. It needs to stay on your task list until almost the date of release, so that we can flesh this out with enough good sources. The "Getting Started with Linux" guide actually shows more, such as Polish Linux. Look through the links in there, and add sites from that page to here.'''--><br />
<br />
To get general Linux support quickly, it is sometimes best to first reach out to the online communities dedicated to open source software and Linux. Online open source communities benefit from having thousands of people to help with issues.<br />
<br />
== Open Source Community Resources ==<br />
=== Websites ===<br />
The following list contains a great number of resources from around the web that can provide information about possible issues.<br />
==== General ====<br />
* [http://www.linuxfoundation.org/ linuxfoundation.org/]<br />
* [http://www.ubuntu.com/support ubuntu.com/support]<br />
* [http://www.howtoforge.com/ howtoforge.com]<br />
* [http://www.linuxquestions.org/ linuxquestion.org]<br />
* [http://www.tldp.org/ tldp.org]<br />
* [http://www.linuxsolved.com linuxsolved.com]<br />
* [http://www.linuxjournal.com linuxjournal.com]<br />
* [http://www.openembedded.org/wiki/Main_Page openembedded.org]<br />
* [https://www.yoctoproject.org/ yoctoproject.org]<br />
<br />
==== Installing Linux ====<br />
* [https://www.linux.com/learn/how-install-and-try-linux-absolutely-easiest-and-safest-way Installing Linux]<br />
<br />
==== Questions ====<br />
* [http://unix.stackexchange.com/ unix.stackexchange.com]<br />
* [http://askubuntu.com/ askubuntu.com]<br />
* [http://superuser.com/ superuser.com]<br />
<br />
==== Training ====<br />
* [http://training.linuxfoundation.org/ training.linuxfoundation.org]<br />
* [http://www.tldp.org/guides.html tldp.org/guides]<br />
<br />
==== Linux Shell ====<br />
* [http://linuxcommand.org// linuxcommand.org]<br />
* [http://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/index.html Linux Command-Line Tools]<br />
<br />
==== Scripting ====<br />
* [http://www.tldp.org/LDP/Bash-Beginners-Guide/html/index.html Bash For Beginners]<br />
* [http://www.arachnoid.com/linux/shell_programming.html Bash Scripting]<br />
* [http://www.tldp.org/LDP/abs/html/ Advanced Bash Scripting]<br />
<br />
==== Kernel ====<br />
* [https://www.kernel.org/ kernel.org]<br />
* [http://kernelnewbies.org/ kernelnewbies.org]<br />
* [http://www.linuxprogrammingblog.com/ Small But Growing Site on Linux Programming]<br />
* [http://www.tldp.org/LDP/lkmpg/2.6/html/index.html Linux Kernel Module Programming]<br />
<br />
=== Chat ===<br />
Use an IRC client such as [http://xchat.org/ XChat], [http://www.pidgin.im/ Pidgin], [http://webchat.freenode.net/ Freenode Webchat], or [http://irssi.org/ irssi] to visit <code>irc.freenode.net</code> for live community support.<br />
<br />
Directions: [http://freenode.net/irc_servers.shtml IRC Setup]<br />
<br />
IRC Support: [http://www.irchelp.org/irchelp/irctutorial.html Tutorial]<br />
<br />
Suggested channels: <br />
* ##linux<br />
* #oe<br />
* #yocto<br />
* #busybox<br />
* #kernelnewbies<br />
<br />
<!--[[Category: Support]]--></div>Awichmannhttps://wiki.emacinc.com/index.php?title=Serial_Mode&diff=5403Serial Mode2016-06-08T17:53:48Z<p>Awichmann: Created page with "{{todo| In-progress (06.8.2016-12:40)|Andrew Wichmann| project=OE 5.0}} {{DISPLAYTITLE:Serial Mode}} <!-- /******************************************************************..."</p>
<hr />
<div>{{todo| In-progress (06.8.2016-12:40)|Andrew Wichmann| project=OE 5.0}}<br />
<br />
{{DISPLAYTITLE:Serial Mode}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<span style="background:#00FF00;color:#FF0000;font-size:300%"></span><br />
This page helps explain the usage of the serial mode utility on EMAC OE 5.X.<br />
<br />
__TOC__<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:geninfo | initials=BS | title=Software Overview | desc=EMAC products offer a wide variety of software support from both open source and proprietary sources. | project=OE 5.0 }}<br />
=== Serial Mode ===<br />
The <code>serial_mode</code> command allows the user to switch between RS232, RS484, and RS422 modes on supportive serial ports.<br />
<br />
=== Usage ===<br />
Simply use the -p option to select the desired port and then use the -m option to specify the desired mode, or use the -m option to turn the port off. Note: only certain ports support switching between serial modes.</div>Awichmannhttps://wiki.emacinc.com/index.php?title=OE:Versions&diff=5402OE:Versions2016-06-08T16:47:54Z<p>Awichmann: </p>
<hr />
<div>{{todo| InProgress (10.06.2015-12:18->MG+)|Michael Gloff| project=OE 5.0,MG }}<br />
{{#seo:<br />
|title=OE EMAC Versions<br />
|titlemode=append<br />
|keywords= OE embedded linux EMAC<br />
|description=Main landing page for OE EMAC Linux Versions<br />
}}<br />
{{:Template:Navpgtable | initials={{{initials}}} | title=EMAC Openembedded Linux | desc={{{desc}}} | project=OE 5 }}<br />
{{:Templateimpl:navtableentry | title=OE 4.X }}<br />
{{:Templateimpl:Navti | [[OE40wiki | EMAC OE 4.0 wiki]] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
{{:Templateimpl:navtableentry | title=OE 5.X }}<br />
{{:Templateimpl:Navti | [[OE_50_EMAC_Linux | EMAC OE 5.X wiki]] }}<br />
<br />
{{:Templateimpl:navtend}}</div>Awichmannhttps://wiki.emacinc.com/index.php?title=EMAC_OpenEmbedded_Fact_Sheet&diff=5401EMAC OpenEmbedded Fact Sheet2016-06-08T16:45:33Z<p>Awichmann: </p>
<hr />
<div>{{todo|SEOKWREV ''(Update with OE5 when ready)'' (11.13.13-12:11->KY+);(11.15.13-21:40->MD-)(11.25.13-18:12-KY+)(12.17.13-12:30-MG+)(03.04.14-15:10->BS-)(03.07.14-12:00->BS+)(03.10.14-15:05->BS+)|Klint Youngmeyer|project=oe 4,oe 5,ky,md,mg,bs,SEOKWREV}}<br />
<br />
{{#seo:<br />
|title=EMAC OpenEmbedded Fact Sheet<br />
|titlemode=append<br />
|keywords=EMAC,EMAC OE Linux,EMAC Hardware,Open Source Licenses,Embedded Systems<br />
|description=This page contains some basic information and frequently asked questions about EMAC OE Linux and embedded Linux in general.<br />
}}<br />
This page contains some basic information and frequently asked questions about EMAC OE Linux and embedded Linux in general. This information is helpful in deciding if EMAC OE will be a suitable OS choice as well as understanding what to expect from the system and its capabilities.<br />
<br />
== Linux ==<br />
Linux is an open source operating system kernel. The project was originally started by Linus Torvalds and now has a very large community of developers and users all around the world. Linux is used in an extremely wide variety of devices such as industrial embedded systems, appliances, cell phones, desktop systems, and mainframe servers. Unix-like operating systems utilizing the Linux kernel are loosely referred to as Linux systems. Most Linux systems are a combination of the Linux kernel, [http://www.gnu.org GNU Utilities], and other software libraries and Open Source projects. These systems are also referred to as GNU/Linux.<br />
== Embedded Systems ==<br />
An embedded system is a device designed and configured for a specific purpose. These systems may or may not have an operating system but are generally controlled by a microprocessor or microcontroller.<br />
== OpenEmbedded ==<br />
OpenEmbedded is a build framework for embedded Linux that allows complete Linux systems to be compiled from source. OpenEmbedded is designed to work on any Linux distribution and has support for compiling systems for many different architectures. OE has support for 1000's of packages. See the [http://openembedded.org/wiki/Main_Page OpenEmbedded Wiki] for more information.<br />
== EMAC OpenEmbedded Linux ==<br />
EMAC OpenEmbedded is the Linux distribution used on the majority of EMAC products. The current version of EMAC OE, version 4.0, is primarily based on the 2009 stable branch of OpenEmbedded<!--, while version 5.0 of EMAC OE is based on Yocto 1.5(remove comment markers when finalized)-->. EMAC customizes OpenEmbedded by adding support for EMAC hardware, patching software, and controlling the configuration of the operating system to create EMAC OE Linux. While EMAC OE is designed for embedded systems, it also serves as a full-featured Linux system, including common GNU utilities provided by Busybox and other projects, servers, networking, filesystem support, hotplugging support, and other applications.<br />
<br />
== EMAC OE vs Desktop Linux ==<br />
<br />
There are many high quality Linux distributions available for desktop systems, such as Debian, Ubuntu, Gentoo, etc. However, these operating systems are not well-suited for use in an embedded system for several reasons. Because extreme reliability is a necessary quality for embedded systems, the operating system must be a controlled environment with no chance for changes that are untested on the target hardware. In addition, embedded systems generally have no moving parts, utilize flash memory, and must be able to reliably recover from unexpected loss of power. The use of flash memory requires that writes to the flash are reduced and filesystems utilizing wear-leveling are utilized to prevent wearing out the flash. The following qualities of EMAC OE make it well suited for use in embedded systems: <br />
* EMAC OE is built completely from source, allowing control over exactly which software packages are included, which versions and patches are used, and how they are installed on the system.<br />
* EMAC OE systems are designed to avoid writing to the root filesystem under normal operation. Volatile files such as log files and dynamic settings are stored on a temporary RAM filesystem. The root flash is mounted readonly by default on most systems. This allows for protection of flash memory and corruption prevention from power failure.<br />
* EMAC OE utilizes robust journaling filesystems such as ext3 on Compact Flash disks and JFFS2 on raw flash devices. This adds to the performance of the systems and increases flash life on flash that does not have hardware wear-leveling.<br />
* The Linux kernels developed for EMAC products are configured to only include support for commonly needed hardware and a select set of necessary features. This improves system performance and boot time by reducing resource usage.<br />
<br />
== Using Other Linux Distributions on EMAC Hardware ==<br />
<br />
Given the above comparison of EMAC OE to Desktop Linux distributions, installing a Desktop Linux distribution on EMAC systems is not generally recommended. However, this is usually possible and in some cases may be a valid design decision. Linux distributions are readily available for x86 hardware as well as ARM systems, though customization may be required depending on the target hardware. If the system will be used as a general-purpose system without the need for extreme reliability that an embedded system requires, a desktop Linux distribution may be an appropriate choice. Keep in mind that utilizing flash memory still requires controlling the number of writes to the disk to prevent flash burn out. An advantage of desktop Linux distributions is that they are inherently more flexible than embedded operating systems. Also, other embedded Linux systems may be used on EMAC hardware if EMAC OE does not suit the needs of the project.<br />
== Developing Software for EMAC OE ==<br />
<br />
<!--'''This paragraph is BORING to read, and confusing. It needs to be reworded.'''<br />
Software development for EMAC OE systems is accomplished using a Software Development Kit (SDK) provided by EMAC. This SDK is installed on a PC running Linux and used to cross-compile software for the target hardware. If a Linux PC is not available for development, a Virtual Linux system may be installed under another operating system using software such as [http://www.virtualbox.org/ VirtualBox]. A customized distribution of the Eclipse IDE is also provided by EMAC for use with EMAC OE SDKs. EMAC OE systems do not include GCC or other development tools by default (though debugging tools such as GDBserver, Strace, and others are included). This is done to save system resources and also because most single board computers are not designed with the interfaces or resources to make on-board development efficient. Remote development using an SDK and toolchain allows use of IDEs such as Eclipse for development as well as taking full advantage of the resources of a desktop PC for compiling. Software is uploaded and tested through network FTP and SSH servers on the EMAC OE system. Remote debugging is accomplished using GDBserver in conjunction with the cross-GDB provided with the SDK. See the EMAC OE Software Development documentation pages for more information.--><br />
<br />
<br />
In order to make software development easier for EMAC OE systems, EMAC provides a Software Development Kit (SDK) used to cross-compile programs for the target hardware. There are several ways of setting up the SDK for development, including: installing the SDK on an existing Linux PC, installing the SDK on a [http://www.virtualbox.org/ virtual] Linux machine running on top of another operating system, and purchasing a pre-built Linux Development Computer ([http://www.emacinc.com/products/ldc LDC]) from EMAC.<br />
<br />
The EMAC SDK uses a customized version of the Eclipse IDE as the development environment. Remote development using the EMAC SDK and toolchain is necessary because EMAC OE systems do not include GCC or other development tools by default. This is done to save system resources and because most single board computers are not designed with the interfaces or resources to make on-board development efficient. Beneficially, this makes developing software for EMAC OE systems feel similar to developing desktop software. This is because the Eclipse IDE automatically handles sending the compiled program to the remote system and running it on the remote system. Eclipse also allows debugging the remotely executing program while the local Eclipse GUI displays the view of the watches, breakpoints, etc., just like in desktop development.<br />
<br />
<!-- NOT TRUE: "Software is uploaded to the boards using an FTP server and tested using an SSH connection." The software is usually sent via scp, which is a "file copy through an ssh tunnel" type of program, not via ftp.--><br />
Remote debugging can also be done manually using GDBserver paired with the cross-platform-GDB provided with the SDK. See the [[Getting_Started_with_EMAC_Embedded_Linux_Development | EMAC OE Software Development documentation]] pages for instructions and more information.<br />
<br />
== Building EMAC OE From Source ==<br />
While most customers do not utilize the option, it is possible to create an EMAC OE development environment and build the EMAC OE image and other OE packages from source. A Linux PC or virtual machine is required for this task. EMAC provides the custom additions to the standard OE stable repository on our public SVN server. Scripts are also provided for setting up the development environment and building images. Support for building any packages that are not a part of the standard EMAC image for the target hardware will be provided on a contractual basis only. See the EMAC OE Development documentation for more information.<br />
<br />
== Open Source Licenses ==<br />
<br />
Part of using an Open Source operating system in a commercial environment includes understanding the licenses used for the software on the system. The software must be used under the terms of the license under which it is released. For example, a different set of rules apply to using a library released under the GPL to one released under the LGPL. The Linux kernel is released under the GPL (GNU General Public License). Common open source licenses are the GPL, LGPL, MIT, BSD, and many others. Please note that developing software for a Linux system does not mean that you need to release your source code. The terms of the licenses of the software to which your software links usually determines the terms to which you are bound. Usually, developing software for an embedded Linux system will not require you to release any of the source code you wrote. While licensing requires evaluation, open source software is used very commonly in commercial environments without issue. EMAC will provide source code and configuration to customers for all open source software that has been delivered in binary form. The Open Source Initiative maintains a list of approved Open Source licenses here: [http://www.opensource.org/licenses www.opensource.org/licenses]. Note that this may not be an exhaustive list of all open source licenses encountered depending on the software packages utilized.<br />
<br />
== Additional Information ==<br />
<br />
For additional information not covered here, contact EMAC Support at [http://www.emacinc.com/support www.emacinc.com/support].<br />
<br />
<!-- [[Category:OpenEmbedded]] --></div>Awichmannhttps://wiki.emacinc.com/index.php?title=OE50:Packages&diff=5400OE50:Packages2016-06-08T16:37:59Z<p>Awichmann: </p>
<hr />
<div>{{todo|(1-12-15-12:30->MG+)(1.12.15-18:05->MD+)(11.10.15-16:05->KY+)|Michael Gloff|project=oe 5,mg,Complete}}<br />
<br />
{{#seo:<br />
|title=EMAC OE 5.X Release information<br />
|titlemode=append<br />
|keywords=OE 5.X Standard Packages,Release information<br />
|description=Information about EMAC OE 5.X Release.<br />
}}<br />
<br />
{{DISPLAYTITLE:EMAC OE 5.X Release Information}}<br />
<br />
The OE 5.''X'' release represents the next generation of embedded Linux. The new crop of embedded machines on the market have become powerful enough to justify bringing some of the best parts of Linux distributions that are targeted towards servers and desktops into the embedded realm. OE 5.X is designed to make developing software for embedded Linux easier than ever before.<br />
<br />
===New Features===<br />
<br />
Quite a few new features are being introduced with OE 5.X to support the goal of streamlining the development process and improving the embedded Linux software development experience. These features can be broken down into the following categories.<br />
<br />
====Operating System====<br />
<br />
The underlying operating system, Linux, has seen a refresh to the much more modern 3.10 kernel on ARM, and the 3.14 kernel on x86 systems. This updated kernel provides improved support for the ARM architecture, new drivers for new hardware, and the Device Tree File System for ARM hardware. Device Tree is a new way of specifying hardware parameters which pulls memory offset specifications (and similar) out of the kernel binary and puts them into a separate file which can be maintained independently of the kernel.<br />
<br />
====Filesystem====<br />
<br />
OE 5.X uses more modern filesystems to enable faster access to files, larger maximum filesystem sizes, and improved wear leveling on the underlying flash devices. The following filesystems are now a part of OE 5.X:<br />
<br />
* '''ext4''' - for eMMC/mSATA/SD/CF devices<br />
* '''JFFS2''' - for NAND flash devices<br />
<br />
The filesystem is now generated using the Yocto build system, which enables a more streamlined and simpler process for generating custom filesystems based on our available base images. The Yocto Project is hosted by engineers at Intel, and is built upon the time tested OpenEmbedded project.<br />
<br />
====SDK====<br />
<br />
EMAC OE 5.X includes a new SDK with an updated GNU gcc compiler (version 4.9.1) which brings enhanced optimization capabilities, advanced code generation, and improved (preliminary) support for C++11 features. The gcc cross compilers come bundled with support for the CMake build system which greatly eases the work involved in creating a build system for today's complex software. The CMake system can be used from the command line as well as from the IDE, and is the default build system for new projects. EMAC OE 5.X provides tools for generating the base CMake files from the commandline or from the IDE, allowing you to get started quickly whether you choose to use the commandline or an IDE for your development work.<br />
<br />
====IDE====<br />
<br />
EMAC OE 5.X now includes the Qt Creator IDE as the standard development environment. This IDE provides a polished, sophisticated development environment which can be used for developing any type of application in C or C++. For Qt, it provides a sophisticated GUI editor and code generation wizards to enable RAD. The integrated help system is of use whether the issue with the application under development is related to Qt, Linux, or just standard C/C++.<br />
<br />
====Tools====<br />
<br />
EMAC OE 5.X now includes a wealth of tools to enable development to proceed faster than ever before. These tools ease the effort required for numerous development tasks.<br />
<br />
Some of the development work in a typical project requires performing complex tasks which are done so infrequently that most developers need to look them up each time they're performed. These tasks typically have eaten into a project's time by taking much longer than anticipated to perform. EMAC OE 5.X includes tools to make these tasks quick, simple, and intuitive. These tasks include:<br />
<br />
* Timezone Configuration.<br />
* Splashscreen Configuration.<br />
* Touchscreen Calibration.<br />
* Configuring software to automatically start on boot.<br />
* Finding the serial ports on the development desktop from among the dozens of device nodes which could all be ports.<br />
* Creation of desktop icons for opening serial terminals for your devices.<br />
* Configuring a system to log messages to a remote syslog server to enable capturing everything that happened on a machine right up to the point where it froze (without losing any messages).<br />
<br />
Other tasks, which are performed often by developers, can be cumbersome. EMAC OE 5.X provides tools to make these chores easy, too:<br />
<br />
* Sending a compiled binary to a remote board and executing it.<br />
* Debugging a program on a remote board.<br />
* Ensuring the root filesystem is writeable before attempting to copy files to it, or changing files that are already there.<br />
* Maintaining a list of remote machines, with their IP addresses automatically updated as they change (usually due to DHCP leases handing out different addresses). The remote machines can be addressed by a name assigned by the developer, or by MAC or IP address, to perform any of the above tasks, plus:<br />
** Copy files to/from remote machines.<br />
** Browse the remote filesystem.<br />
** Ping the boards to see if they're alive.<br />
** Run programs on the remote board (any program).<br />
* Support developer scripts to automate routine tasks during the development process.<br />
<br />
Using these tools, the developer can easily create scripts to perform the following routine tasks without having to enter a password for the remote board a single time while running the script. A typical script might perform the following tasks:<br />
<br />
# Shut down the webserver on the remote board.<br />
# Remove all the web files from the remote board (to ensure there won't be stale files left behind), then replace them with the current locally held set of web files from the developer's desktop.<br />
# Remove and replace custom binary executables on the remote board.<br />
# Update the autostart scripts for executing programs on boot to ensure that they will start the current crop of programs that need to be run.<br />
# Copying configuration files into place on the remote board.<br />
# Copying content files (pictures, documents, videos, sound clips, database files, etc.) onto the remote board.<br />
# Send to the board a script to verify consistency of the files installed and/or to perform some final installation steps, and execute it out of a RAM disk.<br />
# Reboot the machine so that the developer can ensure it will come up into the desired state through every step of the development process.<br />
<br />
The above tasks have typically been very time consuming tasks, which has led to developers usually only performing a minimal subset of these tasks during each phase of the development cycle.<br />
<br />
EMAC OE 5.X tools make it easy to provide these tasks every time, which, in addition to highlighting the cause of a problem as soon as possible after a change causes it, enables the following additional benefits:<br />
<br />
* The script can be used to program a new board, and continue development painlessly, when the previous development hardware has been compromised by an unexpected event caused by a bug in some part of the system under development or by some other spurious event.<br />
* Additional units can be programmed to provide the necessary equipment for other developers on a team.<br />
* Multiple units can easily be updated simultaneously. &nbsp;With the IP address tracking of OE PhoneHome, no scripts will need to be edited to account for changing IP addresses so long as the boards are referred to by name or by MAC address in the script which uses OE PhoneHome.<br />
* Small production runs can be filled easily in house without the need to have a custom image at EMAC's facility, since the script can be used to apply your latest and greatest version of your software to the standard or customized EMAC OE Linux image which was provided to you by EMAC. This can often prove useful to start pushing hardware out the door with your latest software to the customers who've been waiting for it the day you've finished it, while you wait for a larger shipment of pre-programmed hardware to come from EMAC with your updated filesystem image.<br />
<br />
=== Easy Installation on Ubuntu Linux ===<br />
<br />
EMAC OE 5.X software and documentation can now be installed more easily than ever before! No longer is the process a long, drawn out, cumbersome task. With EMAC OE 5.X, you can now get up and running with EMAC's offerings before you even take your first break in the morning.<br />
<br />
EMAC OE 5.X features packages prebuilt for our supported Linux distributions, Ubuntu 12.04 LTS and Ubuntu 14.04 LTS. These versions of Ubuntu were chosen for their stability and high overall quality. With the Ubuntu repository server at EMAC's facility, the EMAC SDK, IDE, tools, examples, and documentation packages can now be installed as easily as any other software provided by Ubuntu. Simply apt-get install or use the Ubuntu Software Center to install and/or update these packages from EMAC (after you have configured your machine to point to EMAC's apt repository).<br />
<br />
===Release Testing===<br />
<br />
EMAC has completely revamped its release testing for the EMAC OE 5.X release series. The new testing process provides a far more comprehensive and exhaustive method of testing our software and hardware together to ensure the highest quality experience possible. Throughout the 5.X release series, we will continue to improve and refine this testing process to ensure that each release is even better than the previous.<br />
<br />
==Provided Software==<br />
<br />
EMAC OE 5.X provides a number of software packages which weren't provided with previous versions of EMAC OE. These new packages provide additional capabilities and extend existing capabilities. These packages were carefully chosen to ensure that the best available tools are provided across the full range of tasks which need to be performed on EMAC OE machines.<br />
<br />
The following list shows the new tools which have been added or updated, and what you will gain from each one.<br />
<br />
* '''ethtool''' - This tool will allow you to inspect the network interfaces at the hardware level, allowing you to see if the physical link is good and, if so, what speed it's running at. No more guessing as to whether your networking issue is a hardware or software issue. If this shows your hardware is working correctly, you know it's a software configuration issue.<br />
* '''lighttpd''' - This is a much more sophisticated web server than the one provided by Busybox. It was a very popular custom package for the 4.0 series, so it is now included by default in 5.X.<br />
* '''vim''' - The real vim, not the Busybox version of vi. This provides syntax highlighting, undo, redo, macros, last position memory, and all of the other powerful features of vim that are missing from Busybox vi.<br />
* '''wget''' and '''ftpput''' - These provide a simple way to retrieve files from a webserver and to push them to a webserver. This can make retrieving updated files much simpler.<br />
* '''strace''' - Shows the system calls made by any executable which is run through it. This is a very powerful tool for debugging.<br />
* '''ntp''' and '''ntpdate''' - These tools provide a method to update the system clock to the time provided by the atomic clocks which share their time over the Internet. &nbsp;These full versions are more reliable and more sophisticated than the Busybox version.<br />
* '''minicom''' - Much more sophisticated than microcom, this tool provides the same powerful terminal client you use on your desktop.<br />
* '''htop''' - This tool provides a sophisticated view into what's running on your system.<br />
* '''sudo''' - This tool allows for execution of a program with the elevated privileges of the superuser.<br />
* '''rsync''' - This tool allows for easy remote file synchronization between two computers.<br />
* '''file''' - This tool lets you inspect files to determine what type they are and various properties of them.<br />
* '''evtest''' - This tool provides a way to diagnose issues with input events.<br />
* '''bash''' - The real bash shell. Much more powerful than the Busybox shell, and much better for scripting.<br />
* '''procps''' - The full suite of process utilities, such as ps, kill, watch, uptime, free, pgrep, sysctl, and top, the full versions of these tools provide the useful functionality which was missing from the Busybox versions.<br />
* '''inotify-tools''' - These tools provide filesystem notifications which enable scripts and programs to only perform events after a file or directory has been modified/created/deleted/etc. No polling required.<br />
* '''tftp client''' - Easily download files from a tftp server with the integrated tftp client.<br />
* '''iptables''' - The standard tool for configuring firewalls on Linux.<br />
* '''tcpdump''' - An invaluable tool for debugging firewalls and TCP/UDP/IP connections of any kind.<br />
<br />
This partial list shows just the highlights of the new software that's part of EMAC OE 5.X. &nbsp;All of the software previously provided in OE4 is available in 5.X as well.<br />
<br />
Other software provided by OE 5.X includes:<br />
<br />
* '''nano''' - Basic text editor.<br />
* '''amidi/aplaymidi/arecordmidi''' - Simple MIDI music player/recorder/controller.<br />
* '''candump/canecho/cansend/cansequence''' - Tools for working with a CAN bus (included only on systems which have CAN support).<br />
* Tools for working with flash memory.<br />
* '''opkg''' - Package management tools.<br />
* '''mpg123''' - MPEG Audio Decoder/Player<br />
* Memory testing tools.<br />
* '''Busybox''' - The embedded "Swiss Army Knife"<br />
* '''Openssh sshd''' - SSH server (and client).<br />
<br />
== See Also ==<br />
<br />
* [[ EMAC_OE_50_Add-on_Packages | EMAC OE 5.X Add-on Packages ]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=Opkg&diff=5398Opkg2016-06-08T16:23:52Z<p>Awichmann: </p>
<hr />
<div>{{todo| Complete (11.12.2014-18:38->MD+);(11.05.2015-19:20->MD+);(11.06.2015-16:10->MD+);(11.06.2015-17:25->MD+);(11.13.2015-16:15->KY+);(11.13.2015-16:24->ER+)|Mike Dean| project=OE 5,MD,KY,ER,Complete}}<br />
{{#seo:<br />
|title=OPKG<br />
|titlemode=append<br />
|keywords=opkg,yocto,openembedded<br />
|description=Package Management with OPKG<br />
}}<br />
<br />
<span class="pagedesc"><br />
Every modern operating system is expected to host a variety of software applications and libraries. Managing their installation, upgrade, and removal has become more complex as software has become more sophisticated. Additionally, the pervasive presence of the Internet has driven an expectation by users of an ability to perform OS updates and upgrades via the Internet. This page describes the tool used by EMAC OE to cater to these needs and expectations.<br />
</span><br />
<br />
__TOC__<br />
<br />
{{:Templateimpl:bg | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
There are many package managers used for Linux systems. You may already be familiar with the ones most popularly used in desktop and server distributions of Linux: <code>apt</code> (<code>apt-get</code>, <code>aptitude</code>, etc), <code>rpm</code>, and <code>yum</code>. You may even be familiar with some of the less popular ones, such as <code>emerge</code> (from gentoo's <code>portage</code>), the Mac OS X GNU tools package manager <code>brew</code>, and the BSD package manager, <code>ports</code>. The package manager used by EMAC OE is similar to these tools, but is the popular choice for embedded Linux: <code>opkg</code>. If you're already familiar with any of the desktop/server package managers listed here, <code>opkg</code> should be very easy to learn since it is quite similar to all of those tools. If not, it should still be easy to learn because it has a well designed interface.<br />
<br />
{{:Templateimpl:geninfo | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
The basic capabilities of <code>opkg</code> are available in OE 4.0 and earlier, but no packages are available online for these older versions. EMAC OE 5.X adds an online package repository complete with important updates for packages during the support window for each release. EMAC creates and hosts packages for all of our standard offerings, and may add updated packages as needed. EMAC recommends checking for and installing any updates available for your OE 5.X system prior to creating the final image which will be used to deploy your systems to ensure your image contains the latest bug fixes and security patches. It is important to remember to retest your application after an update to ensure that everything still works as expected, just as you would have to do for a desktop application.<br />
<br />
Should your application require the ability to be updated/upgraded remotely, EMAC is able to provide assistance and services for creating custom packages for your application and hosting these packages for a modest fee. We will also assist you with configuring the systems to check for and install these updates. Please contact EMAC support should you need more information about this extra level of support.<br />
<br />
The <code>opkg</code> tool is used to work with the OPKG package management system. This tool provides the user with many different capabilities. In this document, only the basic capabilities are described. More information can be found in the last section of this page.<br />
{{:Templateimpl:using | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
The following basic capabilities are shown in this document:<br />
<br />
* Updating the list of available packages.<br />
* Upgrading the system.<br />
* Finding packages to install.<br />
* Installing new packages.<br />
* Removing packages.<br />
<br />
=== Updating the List of Available Packages ===<br />
<br />
The OPKG Package Manager keeps a local cache of the list of available packages so that it doesn't have to reach out to the Internet every time the user wishes to use this list in any way. This list is updated on demand, rather than periodically, so it's important to update this list before attempting to search for or install any new packages, or attempting to upgrade the system.<br />
<br />
To update the cached list of available packages, run:<br />
<br />
{{cli|opkg update}}<br />
<br />
Note that you must be root in order to update this list.<br />
<br />
=== Upgrading the System ===<br />
<br />
You can use <code>opkg</code> to upgrade the system by selectively telling it which packages to upgrade. You first need to obtain a list of available packages to upgrade with the following command:<br />
<br />
{{cli|opkg list-upgradable}}<br />
<br />
You can then upgrade a package with this command:<br />
<br />
{{cli|opkg upgrade ''packagename''}}<br />
<br />
=== Finding Packages to Install ===<br />
<br />
==== Listing Packages ====<br />
<br />
There is more than one way to look through packages to see what's available to be installed. The first is the <code>list</code> command by itself:<br />
<br />
{{cli|opkg list}}<br />
<br />
This provides a complete list of all available packages. ''If you're already comfortable with the Linux command line, you may now wish to skip to the section entitled, "Installing New Pacakges." If not, the following content shows how to more easily work with this output.''<br />
<br />
==== Browsing the Package List ====<br />
<br />
As usual on the Linux command line, this long list can be made much easier to peruse by piping the output of the <code>opkg list</code> command into the <code>less</code> command, like so:<br />
<br />
{{cli|opkg list {{!}} less}}<br />
<br />
{{note|Unlike the <code>more</code> command, the <code>less</code> command allows you to scroll bidirectionally through a text file. It also allows you to search through a document using regular expressions; press the <code>/</code> key followed by some text (or a basic regular expression) for which you would like to search. This can be used to directly read a text file as well: {{icli|less some_text_file}}}}<br />
<br />
==== Filtering the Package List ====<br />
<br />
Often times, you will wish to search for something more specific. The <code>grep</code> command is very useful for this task. The most basic use of grep looks like this:<br />
<br />
{{cli|opkg list {{!}} grep ''packagename''}}<br />
<br />
If you're not sure of the full package name, you can put in just a part of the name, since grep doesn't match against whole words by default.<br />
<br />
===== Matching Whole Words =====<br />
<br />
If, on the other hand, you want it to match against a whole word, you can enclose the word with escaped angle brackets:<br />
<br />
{{cli|opkg list {{!}} grep \<''packagename''\>}}<br />
<br />
This tells <code>grep</code> to only match against the full word represented by ''packagename''. Use only the opening angle bracket if you only want it to look for a word that starts with ''packagename'', and likewise, only use the closing angle bracket at the end if you only want it to search for a word that ends with ''packagename''.<br />
<br />
===== More Stringent Filtering =====<br />
<br />
If the search is returning too many results because the word you're looking for is found in package descriptions, you may want to try using the beginning of line glob character, the caret:<br />
<br />
{{cli|opkg list{{!}} grep ^''packagename''}}<br />
<br />
This will cause only lines which begin with ''packagename'' to be displayed.<br />
<br />
===== More Information about Filtering the Package List =====<br />
<br />
There are many more advanced regular expressions which can be used with grep. These will allow you to do things like match wildcards from the beginning of the line up to the characters you specify after the wildcard (which you might do if you know the package name contains a word, but doesn't start with that word, yet the word is too common to allow it to search through all of the text), but this should be enough to get you started. There are many in depth resources for the usage of <code>grep</code> available online.<br />
<br />
=== Installing New Packages ===<br />
<br />
Once you have found a package or list of packages you wish to install, the <code>opkg</code> command makes installation simple:<br />
<br />
{{cli|opkg install ''packagename''}}<br />
<br />
This will download and install ''packagename'' and all of its dependencies for you. <br />
<br />
<br />
If you would like to install more than one at a time, you can do so by specifying them as a space-separated list:<br />
<br />
{{cli|opkg install ''package1'' ''package2'' ''package3'' ''etc''}}<br />
<br />
As before, all of the dependencies for the packages specified will be automatically downloaded and installed by <code>opkg</code> as well.<br />
<br />
=== Removing Packages ===<br />
<br />
When you have installed a package that you no longer want to have on your system, <code>opkg</code> provides the <code>remove</code> command for removal of the package:<br />
<br />
{{cli|opkg remove ''packagename''}}<br />
<br />
If there is anything that depends on it, <code>opkg</code> will output an error message indicating that packages depend on it.<br />
<br />
You can add the <code>--force-removal-of-dependent-packages</code> to force it to remove the package and everything that depends on it:<br />
<br />
{{cli|opkg remove --force-removal-of-dependent-packages ''packagename''}}<br />
<br />
{{Caution|The very verbose argument name is required because this can be a dangerous way to remove packages. The length of the argument's name (<code>--force-removal-of-dependent-packages</code>)is intended to remind you of the danger. You may find yourself with an unbootable system if you uninstall a package which was depended upon by important system packages. It's generally wiser to use the less heavy handed version, <code>--force-depends</code>, which will only remove the package and the dependencies which are one layer deep:<br />
<br />
<br />
{{cli|opkg remove --force-depends ''packagename''}}<br />
<br />
<br />
If more than one layer of dependencies needs to be removed, you should use the <code>remove</code> command without either of these options. Use it on each dependency layer to see what depends upon those dependencies, and continue this procedure recursively to ensure that nothing important will be removed before you attempt to remove a package with the heavy handed variant.<br />
<br /><br /><br />
If you do render your system unbootable, you may contact EMAC, and we will help you get your system back into a usable state for a small fee. If you would prefer to avoid this fee, please be very careful about what you remove since damage to the filesystem caused by misuse of the above commands is not covered under the EMAC warranty.<br />
}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:examples | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
{{example|Removing a Package which has Dependencies}}<br />
<br />
{{clo}}<br />
{{clio|opkg remove alsa-conf-base}}<br />
No packages removed.<br /><br />
Collected errors:<br /><br />
&nbsp;* print_dependents_warning: Package alsa-conf-base is depended upon by packages:<BR><br />
&nbsp;* print_dependents_warning: libasound2<br /><br />
&nbsp;* print_dependents_warning: These might cease to work if package alsa-conf-base is removed.<br /><br />
&nbsp;* print_dependents_warning: Force removal of this package with --force-depends.<br /><br />
&nbsp;* print_dependents_warning: Force removal of this package and its dependents<br /><br />
&nbsp;* print_dependents_warning: with --force-removal-of-dependent-packages.<br /><br />
{{clio|opkg remove --force-depends alsa-conf-base}}<br />
Removing package alsa-conf-base from root...<br />
{{clio|}}<br />
{{clos}}<br />
<br />
{{example|Updating a Package}}<br />
<br />
{{clop}}<br />
{{cliop|opkg update}}<nowiki><br />
Downloading ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Downloading ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Downloading ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Collected errors:<br />
* opkg_update_cmd: Not able to update list of packages in /var/lib/opkg/all.<br />
* opkg_update_cmd: Not able to update list of packages in /var/lib/opkg/ipac9x25.<br />
* opkg_update_cmd: Not able to update list of packages in /var/lib/opkg/armv5e.<br />
</nowiki>{{closp}}<br />
If you've forgotten to remount your root filesystem as rw, you'll see output similar to that shown above. Remount the filesystem rw and try again:<br />
{{clop}}<br />
{{cliop|opkg update}}<nowiki><br />
Downloading ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/all.<br />
Downloading ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/ipac9x25.<br />
Downloading ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/armv5e.<br />
</nowiki><br />
{{cliop|opkg list-upgradable}}<nowiki><br />
u-boot-fw-utils - v2014.07+git0+91fbeacdf3-r0 - v2015.04+git0+5feae908fd-r0<br />
libssl1.0.0 - 1.0.2a-r0 - 1.0.2d-r0<br />
tzdata-pacific - 2015b-r0 - 2015d-r0<br />
tzdata - 2015b-r0 - 2015d-r0<br />
openssl-conf - 1.0.2a-r0 - 1.0.2d-r0<br />
libcrypto1.0.0 - 1.0.2a-r0 - 1.0.2d-r0<br />
tzdata-arctic - 2015b-r0 - 2015d-r0<br />
tzdata-africa - 2015b-r0 - 2015d-r0<br />
tzdata-europe - 2015b-r0 - 2015d-r0<br />
tzdata-americas - 2015b-r0 - 2015d-r0<br />
tzdata-atlantic - 2015b-r0 - 2015d-r0<br />
tzdata-australia - 2015b-r0 - 2015d-r0<br />
tzdata-antarctica - 2015b-r0 - 2015d-r0<br />
tzdata-asia - 2015b-r0 - 2015d-r0<br />
</nowiki><br />
{{cliop|opkg upgrade libssl1.0.0 openssl-conf}}<nowiki><br />
Upgrading libssl1.0.0 from 1.0.2a-r0 to 1.0.2d-r0 on root.<br />
Downloading ftp://oe50opkg:opkgoe50123@ftp.emacinc.com/armv5e/libssl1.0.0_1.0.2d-r0_armv5e.ipk.<br />
Upgrading libcrypto1.0.0 from 1.0.2a-r0 to 1.0.2d-r0 on root.<br />
Downloading ftp://oe50opkg:opkgoe50123@ftp.emacinc.com/armv5e/libcrypto1.0.0_1.0.2d-r0_armv5e.ipk.<br />
Upgrading openssl-conf from 1.0.2a-r0 to 1.0.2d-r0 on root.<br />
Downloading ftp://oe50opkg:opkgoe50123@ftp.emacinc.com/armv5e/openssl-conf_1.0.2d-r0_armv5e.ipk.<br />
Configuring openssl-conf.<br />
Configuring libcrypto1.0.0.<br />
Configuring libssl1.0.0.<br />
</nowiki><br />
{{cliop|}}<br />
{{closp}}<br />
<br />
Here, the <code>libssl1.0.0</code> package and the <code>openssl-conf</code> package were both upgraded simultaneously by specifying them to <code>opkg upgrade</code> as a space delimited list.<br />
<br />
{{example|Installing a New Package}}<br />
<br />
{{clop}}<br />
{{cliop|opkg update}}<nowiki><br />
Downloading ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/all.<br />
Downloading ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/ipac9x25.<br />
Downloading ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/armv5e.<br />
</nowiki><br />
{{cliop|opkg list {{!}} grep iptables -A 2}}<nowiki><br />
iptables - 1.4.21-r0 - Tools for managing kernel packet filtering capabilities iptables is the<br />
userspace command line program used to configure and control network<br />
packet filtering code in Linux.<br />
iptables-dbg - 1.4.21-r0 - Tools for managing kernel packet filtering capabilities - Debugging files<br />
iptables is the userspace command line program used to configure and<br />
control network packet filtering code in Linux. This package contains<br />
ELF symbols and related sources for debugging purposes.<br />
iptables-dev - 1.4.21-r0 - Tools for managing kernel packet filtering capabilities - Development<br />
files iptables is the userspace command line program used to configure<br />
and control network packet filtering code in Linux. This package<br />
contains symbolic links, header files, and related items necessary for<br />
--<br />
iptables-doc - 1.4.21-r0 - Tools for managing kernel packet filtering capabilities - Documentation<br />
files iptables is the userspace command line program used to configure<br />
and control network packet filtering code in Linux. This package<br />
</nowiki><br />
{{cliop|opkg install iptables-doc}}<nowiki><br />
Installing iptables-doc (1.4.21-r0) on root.<br />
Downloading ftp://oe50@ftp.emacinc.com/armv5e/iptables-doc_1.4.21-r0_armv5e.ipk.<br />
Configuring iptables-doc.<br />
</nowiki><br />
{{cliop|}}<br />
{{closp}}<br />
<br />
If you try to install a package which is already installed, it will check to see if it's up to date:<br />
<br />
{{clop}}<br />
{{cliop |opkg install iptables}}<nowiki><br />
Package iptables (1.4.21-r0) installed in root is up to date.<br />
</nowiki><br />
{{cliop|}}<br />
{{closp}}<br />
<br />
<br />
{{:Templateimpl:conclusion | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
This article demonstrated the basic usage of <code>opkg</code>, but did not cover any of the more advanced topics. Topics covered in this article include installing software, updating software, removing software, and searching for available packages.<br />
<br />
More advanced topics are covered in other articles, such as configuring <code>opkg</code>, inspecting package metadata and package contents, and creating packages. Look to the last section of this article if you need more information on these topics.<br />
<br />
The EMAC opkg package repository contains a wealth of software you can install to customize and enhance the environment of your EMAC OE Linux machine. While a great deal of additional functionality is provided with the standard EMAC opkg repository, you may not be able to find a particular package you need. If you encounter this situation, you may contact EMAC support to request the creation of a custom package for you. EMAC is able to provide custom packages for most opensource software, and can recommend good alternatives in cases where a specific software package has been found to work or perform poorly (or not at all) in an embedded environment. EMAC charges a nominal fee to provide this package, but this fee includes support for the package as well.<br />
<br />
The EMAC opkg repository is a great source of additional functionality for your machine, but even more importantly, the EMAC opkg repository is a source of updates for the software installed on your machine. Taking advantage of the EMAC opkg repository to update your systems helps to ensure that your systems will be protected from the latest threats, such as the Heartbleed OpenSSL vulnerability that made a big splash in the recent past.<br />
<br />
{{:Templateimpl:moreinfo | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
* [[opkg:installedPkgs|Working with Installed Packages]]<br />
* [[opkg:configuration|Configuring the Package Manager]]<br />
* [[opkg::advanced|Advanced Package Management]]<br />
<br />
{{:Templateimpl:whatnext | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
* [[Install_the_EMAC_SDK#Install_Using_apt_.28Recommended.29 | Installing EMAC Packages Using Apt]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=Example_Xenomai_Timer&diff=5397Example Xenomai Timer2016-06-08T16:22:33Z<p>Awichmann: </p>
<hr />
<div>{{todo| Complete (10.06.2015-12:58->KY+)(11.13.2015-13:15->MG+)|Klint Youngmeyer| project=OE 5.0,KY,MG,MD,Complete }}<br />
{{#seo:<br />
|title=Example xenomai timer<br />
|titlemode=append<br />
|keywords=Example timer,Xenomai, Timer C,Software Timer<br />
|description=This is a guide to the <code>xenomai-timer</code> C example project included in the EMAC OE SDK.<br />
}}<br />
This is a guide to the <code>xenomai-timer</code> C example project included in the EMAC OE SDK.<br />
<br />
This project demonstrates how to build the real-time software timer.<br />
<br />
The <code>timer</code> project builds one executable: <code>timer</code>.<br />
<br />
== Building and Running the Project Files ==<br />
<br />
===Hardware Requirements===<br />
<br />
The <code>xenomai-timer</code> C example project will run on an i586 system with a Xenomai real-time enabled kernel.<br />
<br />
=== Building the Project ===<br />
<br />
There are two options for building this example project: Qt Creator or CMake.<br />
<br />
==== Qt Creator ====<br />
<br />
This process will show how to build the project using Qt Creator. For further information on using Qt Creator, please see [[Getting_Started_With_Qt_Creator |Getting Started With Qt Creator]].<br />
<br />
# Open Qt Creator using the "EMAC IDE" button on the Ubuntu sidebar. <br />
# Click the "Example" button on the left of the page. This will bring up a list of all included examples. <br />
# Select the "Xenomai Timer" icon. The example wizard will now request the build directory for the project. It is not recommended to use the default location. The following is a reasonable location on an EMAC LDC.<br />
#:{{clo}}/home/developer/Projects/xenomai-timer{{clos}}<br />
# The next window will prompt you to run CMake. Click the "Run CMake" button.<br />
# Click "Finish" (Note: This project may not build for the Desktop kit, unless the Xenomai libraries are installed for your host system.)<br />
# Click the "Projects" icon in the left column, then click "Add Kit" and select "OE 5.x x86".<br />
# The default build location is fine; click Next.<br />
# Enter the following into the Arguments field, then click, "Run CMake."<br />
#:{{clo}}-DARCH:STRING=x86{{clos}}<br />
# Click Finish.<br />
# Ensure that the "OE 5.x x86" kit is selected by clicking the computer icon on the lower left, then click Build (the hammer icon).<br />
# Add the target device to the Qt Creator devices by following the instructions on [[Getting_Started_With_Qt_Creator#Getting_Started_with_Qt_Creator|this page]], starting at point 9.<br />
# Click the Run button on the bottom left (green arrow).<br />
<br />
=== CMake ===<br />
<br />
This process will show how to build the project using CMake.<br />
<br />
# Navigate to the Projects directory.<br />
#:{{cli | username=developer | hostname=ldc | cd ~/Projects }}<br />
# Copy the xenomai-timer example to the current directory.<br />
#:{{cli | username=developer | hostname=ldc | cp -r /opt/emac/5.X/sysroots/x86_64-emacsdk-linux/usr/demos/EMAC-Examples/xenomai-timer/ . }}<br />
# Change directory to the project directory.<br />
#:{{cli | username=developer | hostname=ldc | cd xenomai-timer }}<br />
# Create the build directory for cross-compilation, then change directory into it.<br />
#:{{cli | username=developer | hostname=ldc | mkdir xenomai-timer-build-OE5-x86 }}<br />
#:{{cli | username=developer | hostname=ldc | cd xenomai-timer-build-OE5-x86 }}<br />
# Run CMake.<br />
#:{{cli | username=developer | hostname=ldc | 1 = cmake .. -DARCH:STRING=x86 }}<br />
# Build the project.<br />
#:{{cli | username=developer | hostname=ldc | make }}<br />
# Copy the executable to the target board. Substitute the IP address <code>10.0.2.41</code> with the IP address of your target board.<br />
#:{{cli | username=developer | hostname=ldc | scp timer root@10.0.2.41:/tmp }}<br />
#Open a terminal on the target board, using SSH, serial, or a dedicated screen and keyboard.<br />
# Navigate to the /tmp directory.<br />
#:{{cli | hostname=x86 | cd /tmp }}<br />
# Run the program.<br />
{{clo | indent=3}}<br />
{{clio|hostname=x86|pwd=/tmp|./timer}}<br />
Starting Timer Test: Period = 100000000 ns<br /><br />
Press Ctrl-C to exit<br /><br />
testtask periodic loop: count=1<br /><br />
testtask periodic loop: count=2<br /><br />
testtask periodic loop: count=3<br /><br />
testtask periodic loop: count=4<br /><br />
testtask periodic loop: count=5<br /><br />
{{clos}}<br />
<br />
The program will continue running until it is manually halted with a CTRL-C.<br />
==Summary==<br />
<br />
The <code>timer</code> C example project demonstrates how to use the xenomai timer.</div>Awichmannhttps://wiki.emacinc.com/index.php?title=System_Logging&diff=5396System Logging2016-06-08T16:20:18Z<p>Awichmann: </p>
<hr />
<div>{{todo| Complete (04.13.2015-14:44->BS+)(11.10.2015-18:00->MD+)(11.11.2015-10:30->MD+)(11.17.2015-18:10->MD+);(11.18.2015-12:55->MD+)(11.18.2015-14:50->MD+)(11.18.2015-15:10->KY+);(11.18.2015-15:50->ER+)|Mike Dean| project=OE 5.0,MD,Complete}}<br />
{{#seo:<br />
|title=System Logging<br />
|titlemode=append<br />
|keywords=syslogd,syslog-ng,busybox<br />
|description=The page describes how to work with syslog.<br />
}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
This document provides an overview of how system logging works in Linux, and provides guidance on how to work with and configure system logging so that it meets your needs.<br />
<br />
__TOC__<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:bg | initials=MD | title=System Logging | desc=The page describes how to system log. | project=OE 5.0 }}<br />
System Logging services exist on Linux systems to provide a central logging facility. This central logging service can store logged messages in files on the local machine, can forward the log messages to a remote machine for remote storage and display, and can output the log messages as they arrive to a terminal. <br />
<br />
The syslog facility is standardized by POSIX and, as a result, there is a great deal of support for the syslog facility. There are APIs for logging to the syslog facility from C, C++, Python, Java, PHP, Perl, Bash, the commandline, and many other languages. Using the commandline tool, it is even possible to write to the syslog facility from the commandline.<br />
<br />
==== Facilities ====<br />
<br />
In syslog terminology, a facility is a category for log messages. There are generally at least seven standard syslog facilities on any Linux syslog system. The following list shows the standard seven, as well as some which are rarely used anymore (especially in embedded systems). The name of the facility is followed, in parenthesis, by the integer facility code associated with the facility, which is then followed by a description of the facility. The ones you should not expect to find on an embedded system are demarcated with an asterisk (*):<br />
<br />
;kern(0)<br />
: Kernel messages<br />
;user(1)<br />
: User Level Messages<br />
;mail(2)*<br />
: Mail System Messages<br />
;daemon(3)<br />
: System Daemon Messages<br />
;auth(4)<br />
: Security/Authentication Messages<br />
;syslog(5)<br />
: Internally Generated Syslog Messages<br />
;lpr(6)*<br />
: Line Printer Subsystem Messages<br />
;news(7)*<br />
: Network News Subsystem Messages<br />
;uucp(8)*<br />
: UUCP Subsystem Messages<br />
;cron(15)<br />
: Cron Scheduling Daemon Messages<br />
;local(16-23)<br />
: Locally Defined Usage, Messages<br />
<br />
==== Severity ====<br />
<br />
Each of these facilities accepts messages which will have an associated severity level. The severity level is important for filtering messages. The following list shows the eight available severity levels:<br />
<br />
;emerg(0)<br />
: Emergency - System is now unusable<br />
;alert(1)<br />
: Alert - Immediate Attention is Required<br />
;crit(2)<br />
: Critical - The System is in a Critical Condition, which may be caused by a failure in the primary appliction.<br />
;err(3)<br />
: Error - An Error has occurred.<br />
;warning(4)<br />
: Warning - An unusual, but not erroneous, event has occurred. For example: "Warning: Could not check for updates."<br />
;notice(5)<br />
: Notice - Uncommon but generally expected messages. For example: "Network Interface eth0 received IP address of 192.168.0.100 from DHCP server."<br />
;info(6)<br />
: Informational - Common, expected events generate these messages. For example: "Application XYZ started successfully."<br />
;debug(7)<br />
: Debug - Debugging messages belong at this level.<br />
<br />
==== Storage ====<br />
<br />
By default, the log messages on an EMAC OE Linux machine are stored in a local ramdisk. This type of storage prevents excessive wear of the flash, and works when all of the flash partitions are mounted read-only. However, by storing the messages in a ramdisk, all messages in the ramdisk will be lost as soon as the machine resets, powers off, or reboots for any reason.<br />
<br />
===== Alternate Logging Locations =====<br />
<br />
The syslog server can be configured to log to alternate locations. This is useful for configuring the server to log to persistent storage, such as a writable partition on the local flash or a partition on an SD card. The alternate logging locations can even be remote machines.<br />
<br />
===== Remote Logging =====<br />
<br />
The <code>/var/log</code> directory is the standard location for holding local log messages. This directory usually contains either one file per facility or one directory per facility. If a facility has a directory, it may contain different files which all belong to the facility. The system logging facility directs messages to these files based on rules set in its configuration. The configured rules use the facility level and the severity level to direct the syslogger's filters regarding to which file to send any particular message. There are several different implementations of the syslogger facility, each with its own configuration mechanisms and level of flexibility.<br />
<br />
The system logger is also able to send messages to a remote syslog server over a network. The remote syslog server will be able to filter the messages using all of the same criteria as above, but also by source. A remote syslog server configuration can be very useful for remotely debugging deployed machines. While an embedded machine stores its logs on a ramdisk, the remote machine may store them to a traditional hard disk or SSD, allowing them to be preserved through power cycles.<br />
<br />
The remote syslog server can be on any normal server, it can be on a developer's desktop, or it can be on another embedded machine. Sending debug messages to a central syslog server ensures the debug messages will be available even if the machine of interest freezes or resets. The use of a remote syslog server can also assist with looking for trends and outliers among a group of deployed machines since the log messages for the entire group of machines can be located in one place.<br />
<br />
===== Log Rotation =====<br />
<br />
Syslog servers incorporate a feature called log rotation. Log rotation is a process which prevents log files from growing beyond a certain size while preserving log messages for later reference. The syslog server (or logrotate system) can be configured with a maximum file size and a maximum number of rotated logs to keep. When the maximum file size is reached, the file will be "rotated." When the maximum number of logs to keep is exceeded, the oldest one will be deleted. There is more information on how this process works below.<br />
<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:geninfo | initials=MD | title=System Logging | desc=The page describes how to system log. | project=OE 5.0 }}<br />
<br />
====Your Daemons====<br />
<br />
When developing a software daemon, syslog is a very useful tool for monitoring and debugging your software. The syslog daemon is highly configurable, allowing filters to be altered to suit the current needs of a developer without recompiling software. This capability allows developers to deploy software which sends ample debugging messages to the syslog server without fear of overwhelming the system with debug messages. Using the eight <code>local</code> facilities syslog recognizes, these debug messages can be categorized by developers to allow them to selectively choose the amount of log information they store from each of up to eight different subsystems. This is extremely useful when a system in the field is experiencing intermittent issues. By enabling maximum debugging output for only the subsystem responsible for the feature which is misbehaving, the developers have the greatest chance of seeing the messages they need to diagnose the source of the problem without overwhelming the system (or the storage) with messages. If eight facilities is not enough, the developers can always repurpose dedicated facilities which aren't in use by their intended systems. For instance, the line printing facility is rarely used on an embedded system, and may be safely repurposed by developers.<br />
<br />
====Web Development====<br />
<br />
When providing a web interface for an embedded system, the syslog daemon is often the only way to debug a variety of issues with the web server. When links don't work, certain browsers have issues, pages load slowly, or any of a myriad of other issues crop up, the logs are generally the first place people turn for answers. This is just as true on embedded systems as it is on any large scale web server or server farm. On embedded systems, however, the configuration for the logging system may need to be altered due to the volatile nature of the logs in the default configuration. This document provides information on how to solve the issues which may be encountered as a result of this.<br />
<br />
====Machine Startup====<br />
<br />
When configuring a machine to start up all the necessary services in the correct sequential order, when the machine is powered on, the syslog server is very helpful in performing the following tasks:<br />
* Ensuring that process X really did start before process Y.<br />
* Checking to see if any errors or warnings were reported by processes starting up.<br />
* Ensuring that processes really did start, at all.<br />
* Checking to see what configuration was chosen by a process which is capable of choosing its configuration dynamically.<br />
* Checking the messages reported by device drivers as they start up.<br />
* Determining the IP address used by a system which gets its network configuration via DHCP.<br />
Startup scripts log their activity to the syslog daemon. Any daemon process launched by these startup scripts should also log startup messages to indicate that they're starting, how they're configured, and that they've finished the startup sequence and are now running. The system logs enable the engineer to assure that a machine has started as intended.<br />
<br />
====Malfunctioning Systems====<br />
<br />
When a proven system is malfunctioning, the system logs can be essential in determining the cause of the malfunction. In cases such as this, the system logs are helpful for:<br />
* Looking to see who logged into a machine, and when.<br />
* Looking for signs of attacks directed at the machine.<br />
* Looking for signs of failing hardware.<br />
* Looking for error and warning messages coming from system processes, daemons, and/or your custom application.<br />
Without these logs, it may be nearly impossible to diagnose these malfunctions.<br />
<br />
====In Brief====<br />
<br />
This guide provides enough background information to enable you to handle any of the situations described above. Using the information contain herein, you will be able to approach any of the above listed problems with the tools you need to solve the problems you are facing.<br />
<br />
{{note | To make best use of the log files, a working knowledge of <code>grep</code> is highly beneficial. Experience with crafting and using regular expressions with <code>grep</code> prior to writing system logging messages in your application and init scripts can make the diagnosis process simpler, since a little forethought into a syntax for the messages can make filtering the messages through <code>grep</code> much easier to accomplish correctly.}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:using | initials=MD | title=System Logging | desc=The page describes how to system log. | project=OE 5.0 }}<br />
EMAC OE Linux 5.X uses Busybox's syslog daemon, <code>syslogd</code>, by default. However, the <code>syslog-ng</code> package can be installed to provide a much more capable system logging daemon, when needed.<br />
<br />
===Default Syslog Daemon===<br />
<br />
The Busybox syslog daemon is used by default.<br />
<br />
====About====<br />
<br />
The standard syslog daemon supports the following configuration capabilities:<br />
* Maximum size limit for log files.<br />
* Maximum number of log files to keep, when rotated.<br />
* Minimum priority level for messages to log.<br />
* Duplicate dropping (not usually recommended).<br />
* Log to remote and local files simultaneously, just to local files, or to a memory buffer which needs to be read by a special utility.<br />
<br />
====Working With====<br />
<br />
The Busybox syslog daemon is configured, by default, to log to files in the RAMDISK mounted on <code>/var/log/</code>. The files contained in this directory will be capped in size and rotated according to the configuration of the syslog daemon.<br />
<br />
The Busybox syslog daemon is configured with the file, <code>/etc/syslog-startup.conf</code>. This file is used for backwards compatibility, because the Busybox syslog daemon recently began reading the <code>/etc/syslog.conf</code> file. The <code>/etc/syslog-startup.conf</code> comes from OE rather than from Busybox.<br />
<br />
The standard <code>/etc/syslog-startup.conf</code> configuration is shown below:<br />
<br />
<syntaxhighlight lang=bash><br />
# This configuration file is used by the busybox syslog init script,<br />
# /etc/init.d/syslog[.busybox] to set syslog configuration at start time.<br />
<br />
DESTINATION=file # log destinations (buffer file remote)<br />
LOGFILE=/var/log/messages # where to log (file)<br />
REMOTE=loghost:514 # where to log (syslog remote)<br />
REDUCE=no # reduce-size logging<br />
DROPDUPLICATES=no # whether to drop duplicate log entries<br />
#ROTATESIZE=0 # rotate log if grown beyond X [kByte]<br />
#ROTATEGENS=3 # keep X generations of rotated logs<br />
BUFFERSIZE=64 # size of circular buffer [kByte]<br />
FOREGROUND=no # run in foreground (don't use!)<br />
#LOGLEVEL=5 # local log level (between 1 and 8)<br />
</syntaxhighlight><br />
<br />
;DESTINATION<br />
: This configures where the syslog messages will be sent. <br />
:;buffer<br />
:: The <code>buffer</code> option will cause the messages to be stored in an internal circular buffer, in RAM. This buffer must be read with <code>logread</code>.<br />
:;file<br />
:: The <code>file</code> option will cause the messages to be stored in a file in the location specified by the <code>LOGFILE</code> parameter, listed below.<br />
:;remote<br />
:: The <code>remote</code> option will cause syslog messages to be sent to a remote syslog daemon.<br />
;LOGFILE<br />
: The <code>LOGFILE</code> parameter specifies the location of the logfile which should be used with the <code>file</code> destination.<br />
;REMOTE<br />
: The <code>REMOTE</code> parameter specifies the host and port to which to send remote log messages. The two part format for this variable provides the destination host followed by the destination port number, with a colon as the delimiter between the two. The destination may be specified as a hostname, or as an IP address. The destination port number should be the port on which the remote syslog server listens.<br />
<br />
{{note | If the destination is specified as a hostname, it is best to create an entry in <code>/etc/hosts</code> for the hostname so that it will resolve to an IP address even if there is a problem with the DNS servers.}}<br />
<br />
;REDUCE<br />
: The <code>REDUCE</code> option takes a <code>yes</code> or <code>no</code> argument. When set to <code>yes</code>, the syslog server will neglect to log the hostname, facility, and severity level with each log message. This is only recommended for severely resource constrained systems, since the facility and severity level are often used for filtering messages through <code>grep</code>.<br />
;DROPDUPLICATES<br />
: The <code>DROPDUPLICATES</code> option takes a <code>yes</code> or <code>no</code> argument. When set to <code>yes</code>, the syslog server will ignore messages which duplicate the preceeding message. This can be useful when an errant process keeps sending the same message over and over again, and swamps out the other messages as a result (due to the maximum size setting for the log files). It is best to keep this option off unless it is absolutely needed for a situation like the one just described, because having it turned on can cause other problems to be hidden (generally leading to frustration and/or embarrassment).<br />
;ROTATESIZE<br />
: The <code>ROTATESIZE</code> option takes a numeric argument. This argument is the maximum desired size for a log file, specified in kibibytes. When a log file has grown to the point where it exceeds this high water mark, it will be rotated.<br />
;ROTATEGENS<br />
: The <code>ROTATEGENS</code> option takes a numeric argument. This argument specifies the number of older generations of log files to keep in existence. By generations, it means the number of log files which have already been renamed with a sequencing number as a postfix. See the note below for more information.<br />
{{note | Logfile rotation is a process which renames log files sequentially, to preserve older log messages while keeping incoming messages writing to the same location. For instance, for the <code>/var/log/messages</code> file, this might look like:<code><br />
messages -> messages.0<br />
+messages</code><br />
Or, if one were to perform this rotation manually at a terminal, it may look like:<br />
{{clo}}<br />
{{clio | pwd=/var/log |mv messages messages.0}}<br />
{{clio | pwd=/var/log |touch messages}}<br />
{{clos}}<br />
If there already is a <code>messages.0</code> file, and the number of generations to keep is set to 2, then a manual version of the rotation might look something like this:<br />
{{clo}}<br />
{{clio | pwd=/var/log |rm -f messages.2}}<br />
{{clio | pwd=/var/log |mv messages.1 messages.2}}<br />
{{clio | pwd=/var/log |mv messages.0 messages.1}}<br />
{{clio | pwd=/var/log |mv messages messages.0}}<br />
{{clio | pwd=/var/log |touch messages}}<br />
{{clos}}<br />
}}<br />
<br />
;BUFFERSIZE<br />
: The <code>BUFFERSIZE</code> option takes a numeric argument. This argument specifies the size of the internal circular buffer to use for holding log messages in an internal RAM buffer. This argument only matters when the <code>DESTINATION</code> is set to <code>buffer</code>. The size is specified in kibibytes.<br />
;FOREGROUND<br />
: The <code>FOREGROUND</code> option takes a <code>yes</code> or <code>no</code> argument. This argument specifies whether the <code>syslogd</code> process should run in the foreground or as a daemon. It is strongly recommended for this option to always be set to, <code>no</code>, to run <code>syslogd</code> as a daemon. This option mostly exists for the developers of Busybox to debug their <code>syslogd</code> implementation.<br />
;LOGLEVEL<br />
: The <code>LOGLEVEL</code> option takes a numeric argument. This argument specifies the highest numbered severity level which should be logged (see [[System_Logging#Severity | severity]] above). By default, this is set such that messages with a severity of '''notice''', or more severe, will be logged.<br />
<br />
===Optional <code>syslog-ng</code> With <code>logrotate</code>===<br />
<br />
The optional <code>syslog-ng</code> and <code>logrotate</code> option provides everything that's provided by the Busybox syslog daemon, plus:<br />
* Sophisticated filters for directing log traffic.<br />
* The ability to act as a central syslog server which receives log messages from remote syslog machines.<br />
* Enhanced control over the destination(s) for log messages, allowing (for example) messages to be logged to a local RAMDISK, a local SD card (if available), and to a remote syslog server (if available) simultaneously.<br />
* The ability to configure logrotate to automatically e-mail log files when they're rotated.<br />
<br />
* Same syslog server software is readily available for Linux desktops and servers.<br />
As can be expected, the potential drawback of <code>syslog-ng</code> is the steeper learning curve required to make use of its more sophisticated features. However, those already familiar with <code>syslog-ng</code> will be able to benefit from its extra sophistication immediately.<br />
<br />
The official manual page for <code>syslog-ng</code> has more details: http://www.syslog.org/syslog-ng/v1/<br />
<br />
Please contact EMAC for details on how to install <code>syslog-ng</code> and <code>logrotate</code> if you have trouble finding and installing them with <code>opkg</code>.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:examples | initials=MD | title=System Logging | desc=The page describes how to system log. | project=OE 5.0 }}<br />
<br />
===Evaluating Log Messages===<br />
<br />
Log messages are stored in <code>/var/log/</code> by default. This directory contains at least one log file, <code>messages</code>. There are usually (at least) a few other small log files which where generated by the kernel before <code>syslogd</code> started. When <code>syslog-ng</code> is used, you may have several log files which are continually growing, depending on how you configured it.<br />
<br />
====Showing All the Messages====<br />
<br />
When the log is rotated, a sequence of additional files will be generated from it, such as <code>messages.0</code>, <code>messages.1</code>, etc. The highest numbered file is the oldest. If you wish to look for messages through as much of the log history as possible, you will need to look through all of the available log files. Fortunately, this is simple. Say you have two rotated versions of the <code>messages</code> file, <code>messages.0</code> and <code>messages.1</code>. You can output all of the messages from these three files, in order, with the following command:<br />
<br />
{{clop}}<br />
{{cliop | pwd=/var/log |cat messages.1 messages.0 messages}}<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: klogd started: BusyBox v1.23.1 (2015-07-02 12:53:54 CDT)<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: Linux version 3.10.0-emac-standard+23f12b107c (developer@OEBuilder) (gcc <br />
ersion 4.9.2 (GCC) ) #1 Tue Jul 21 21:46:40 CDT 2015<br />
Nov 17 19:00:21 ipac9x25 user.warn kernel: CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177<br />
Nov 17 19:00:21 ipac9x25 user.warn kernel: CPU: VIVT data cache, VIVT instruction cache<br />
Nov 17 19:00:21 ipac9x25 user.warn kernel: Memory policy: ECC disabled, Data cache writeback<br />
''etc.''<br />
{{cliop | pwd=/var/log |}}<br />
{{closp}}<br />
<br />
You can combine this with <code>grep</code> to see only what you're interested in:<br />
<br />
{{clop}}<br />
{{cliop | pwd=/var/log |cat messages.1 messages.0 messages {{!}} grep authpriv}}<br />
Nov 17 19:01:11 ipac9x25 authpriv.notice login[1046]: ROOT LOGIN on '/dev/ttyS5'<br />
{{cliop | pwd=/var/log |}}<br />
{{closp}}<br />
<br />
Here, we can see that someone logged into the machine as the <code>root</code> user on November 17 at 7:01pm, on the serial console (<code>/dev/ttyS5</code>). This is the only login on the machine since it booted. Had there been other logins, they would also have been shown.<br />
<br />
Say you want to see a certain type of message, but there are a lot of results. You can add <code>less</code> to make it easier to read through them:<br />
<br />
{{clop}}<br />
{{cliop | pwd=/var/log |cat messages.1 messages.0 messages {{!}} grep user.notice {{!}} less}}<nowiki><br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: klogd started: BusyBox v1.23.1 (2015-07-02 12:53:54 CDT)<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: Linux version 3.10.0-emac-standard+23f12b107c (developer@OEBuilder) (gcc version 4.9.2 (GCC) ) #1 Tue Jul 21 21:46:40 CDT 2015<br />
Nov 17 19:00:21 ipac9x25 user.warn kernel: CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177<br />
Nov 17 19:00:21 ipac9x25 user.warn kernel: CPU: VIVT data cache, VIVT instruction cache<br />
Nov 17 19:00:21 ipac9x25 user.warn kernel: Memory policy: ECC disabled, Data cache writeback<br />
Nov 17 19:00:21 ipac9x25 user.warn kernel: Clocks: CPU 400 MHz, master 133 MHz, main 12.000 MHz<br />
Nov 17 19:00:21 ipac9x25 user.warn kernel: Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: Kernel command line: console=ttyS5,115200 root=/dev/mmcblk0p1 rootfstype=ext4 <br />
w rootwait<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: Memory: 124820k/124820k available, 6252k reserved, 0K highmem<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: klogd started: BusyBox v1.23.1 (2015-07-02 12:53:54 CDT)<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: Linux version 3.10.0-emac-standard+23f12b107c (developer@OEBuilder) (gcc <br />
ersion 4.9.2 (GCC) ) #1 Tue Jul 21 21:46:40 CDT 2015<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: Kernel command line: console=ttyS5,115200 root=/dev/mmcblk0p1 rootfstype=ext4 rw rootwait<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: Memory: 124820k/124820k available, 6252k reserved, 0K highmem<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: Virtual kernel memory layout:<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: vector : 0xffff0000 - 0xffff1000 ( 4 kB)<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: vmalloc : 0xc8800000 - 0xff000000 ( 872 MB)<br />
Nov 17 19:00:21 ipac9x25 user.notice kernel: lowmem : 0xc0000000 - 0xc8000000 ( 128 MB)<br />
</nowiki><br />
{{closp}}<br />
<br />
====Helper Functions====<br />
<br />
When it gets to the point where there are several rotated log files, the command to cat them all can be a lot to type. Let's create a couple of helper functions to make our lives easier. We can enter these at the shell, as shown here. To save them permanently, put them in your <code>~/.bashrc</code> or <code>/etc/profile</code> file.<br />
<br />
{{clop}}<br />
{{cliop | pwd=/var/log |<nowiki>function genseq() { logfn=$1; max=$2; for i in $(seq $max -1 0); do printf "${logfn}.${i} "; done;</nowiki>}}<nowiki><br />
printf "$logfn\n"; }</nowiki><br />
{{closp}}<br />
<br />
This function generates a sequence of log file names for us to use, like this:<br />
<br />
{{clop}}<br />
{{cliop | pwd=/var/log |genseq messages 5}}<br />
messages.5 messages.4 messages.3 messages.2 messages.1 messages.0 messages<br />
{{cliop | pwd=/var/log |}}<br />
{{closp}}<br />
<br />
While we could use this list directly, it's still a bit awkward to type:<br />
<br />
{{cli | pwd=/var/log |cat $(genseq messages 5)}}<br />
<br />
Especially when piping to <code>grep</code> and maybe <code>less</code>, so let's make a helper function:<br />
<br />
{{cli | pwd=/var/log |<nowiki>function catseq() { cat $(genseq $1 $2); }</nowiki>}}<br />
<br />
Okay, now we can just type:<br />
<br />
{{cli | pwd=/var/log |catseq messages 5}}<br />
<br />
Much easier to type. We'll use this function from here on.<br />
<br />
====Sifting Through Messages====<br />
<br />
Here are a few ways you may wish to sift through messages.<br />
<br />
=====Checking for Errors, Only=====<br />
<br />
If you only want to look for error messages, you might type something like:<br />
<br />
{{cli | pwd=/var/log |catseq messages 3 {{!}} grep '\.err '}}<br />
<br />
The regular expression used here is to avoid false positives. Note the trailing space in the regular expression.<br />
<br />
=====Checking for Errors and Worse=====<br />
<br />
If you want to scan for messages which are of these categories (only):<br />
* Emergency<br />
* Alert<br />
* Critical<br />
* Error<br />
You might do the following:<br />
<br />
{{cli | pwd=/var/log |catseq messages 3 {{!}} egrep '\.(emerg{{!}}alert{{!}}crit{{!}}err) '}}<br />
<br />
Note the use of <code>egrep</code> here; it is required for this extended regular expression to work.<br />
<br />
=====Looking for Certain <code>local</code> Facility Messages=====<br />
<br />
Perhaps you're making use of several of the <code>local</code> log facilities, and you wish to see all of the messages from just a few of them. In this example, we'll filter out all but two local facilities: <code>local3</code> and <code>local5</code>:<br />
<br />
{{cli | pwd=/var/log |catseq messages 3 {{!}} grep ' local[35]\.'}}<br />
<br />
Note the leading space in the regular expression. The 3 and 5 are listed in between square brackets. You can list numbers you're interested in individually and/or use ranges. If you wanted to list all <code>local</code> facility messages except for <code>local4</code>, you could write:<br />
<br />
{{cli | pwd=/var/log |catseq messages 3 {{!}} grep ' local[0-35-7]\.}}<br />
<br />
=====Looking for <code>local</code> Facility Messages of a Certain Priority=====<br />
<br />
While you're debugging your application, you find that you need to see all events from certain <code>local</code> facilities which are of a subset of priority levels, because you're sure you'll figure out what's going wrong if you can get these specific messages. So, you ignore the mumblings of your coworkers about, "famous last words," and such, and you type:<br />
<br />
{{cli | pwd=/var/log |catseq messages 3 {{!}} egrep ' local([0-246]\.(err{{!}}notice{{!}}warn){{!}}[357]\.(emerg{{!}}alert)) '}}<br />
<br />
By cleverly crafting this complex regular expression, you were able to filter out exactly the right messages you needed to see the sequence of events leading up to the catastrophic failure you were experiencing and save the day. Your coworkers cheer and hoist you on their shoulders, singing your praises. <br />
<br />
Okay, so in reality, nobody notices and you go to lunch happily, knowing that you're not going to get yelled at for a major fault. You treat yourself to some dessert (because, hey, why should Fido be the only one who gets a treat for doing something right?), and everyone's happy.<br />
<br />
Of course, you wouldn't have been able to properly diagnose what went wrong without having generated good log messages from your software in the first place. The next section shows you how to generate the messages; you'll have to figure out how to make them good messages on your own, though.<br />
<br />
===Writing to Syslog from Programs and Scripts===<br />
As mentioned previously, many languages support writing to the Linux system logging daemon. There are many handy libraries and functions which provide this capability. Some of the most commonly used ones are shown here.<br />
<br />
====Shell Utility: <code>logger</code>====<br />
Whether you are writing a shell script, or simply wishing to enter something into the system logs from the commandline, the <code>logger</code> utility will give you the capability you need. This simple command takes a few options, but it can also be run with the only argument being the message to log.<br />
<br />
=====Arguments to <code>logger</code>=====<br />
<br />
The following options are available for <code>logger</code>:<br />
;<code>-t</code> ''TAG''<br />
: Takes a ''TAG'' as an argument. This option specifies a tag to use for labeling the message. Tags are useful for sorting through logs later on.<br />
;<code>-p</code> ''Priority''<br />
: Takes a ''Priority'' as an argument. The priority may be specified as just a numeric priority level, identifying the severity of the message, or it can be specified as a tuple containing a facility name and a priority level, delimited by a dot (<code>.</code>). If no facility is specified, the facility defaults to, <code>user</code>. The severity levels are specified in [[System_Logging#Severity | severity]] above. The facility names are specified in [[System_Logging#Facilities | facilities]] above.<br />
;<code>-s</code><br />
: This option sets a boolean which enables logging messages to <code>stdout</code> as well as to the system logger. This is especially useful in interactive shell scripts, since it allows the developer to use one function to output a message to the screen and to the system logs simultaneously.<br />
<br />
=====Examples of Using <code>logger</code>=====<br />
<br />
To send a message to the system log as simply as possible:<br />
{{clo}}<br />
{{clio |logger "Default settings message example"}}<br />
{{clio |tail -n 1 /var/log/messages}}<br />
Nov 17 19:20:23 ipac9x25 user.notice root: Default settings message example<br />
{{clos}}<br />
<br />
To send a message to the system log with severity 3 (err):<br />
{{clo}}<br />
{{clio |logger -p 3 "This is an example error message"}}<br />
{{clio |tail -n 1 /var/log/messages}}<br />
Nov 17 19:22:06 ipac9x25 user.err root: This is an example error message<br />
{{clos}}<br />
<br />
To send a message with the facility, <code>local5</code>, and the severity 4 (warn):<br />
{{clo}}<br />
{{clio |logger -p local5.4 "This is a local5 facility warning message example."}}<br />
{{clio |tail -n 1 /var/log/messages}}<br />
Nov 17 19:23:51 ipac9x25 local5.warn root: This is a local5 facility warning message example.{{clos}}<br />
To add a tag (highly recommended) to the above, use <code>-t</code>. Here, we use the tag, <code>EXAMPLE</code>:<br />
{{clo}}<br />
{{clio |logger -t EXAMPLE -p local5.4 "This is a local5 facility warning message example."}}<br />
{{clio |tail -n 1 /var/log/messages}}<br />
Nov 17 19:25:19 ipac9x25 local5.warn EXAMPLE: This is a local5 facility warning message example.<br />
{{clos}}<br />
Notice that the username (<code>root</code>) was replaced by the tag (<code>EXAMPLE</code>). When using tags in a script or program, it is best to come up with a unique tag and create a function for sending messages to the system log with this tag. That way, you can easily find all messages from just your program/script. If you have a complex program or set of scripts to debug, you could use multiple tags, but this will be more difficult to search for unless you use the optional <code>syslog-ng</code> to redirect the messages from your software to distinct files.<br />
In an interactive script, you might use <code>logger</code> like this:<br />
{{clo}}<br />
{{clio|logger -t EXAMPLE -p local3.6 -s "Successfully wrote new configuration file."}}<br />
EXAMPLE: Successfully wrote new configuration file.<br />
{{clio |tail -n 1 /var/log/messages}}<br />
Nov 17 19:25:19 ipac9x25 local5.warn EXAMPLE: This is a local5 facility warning message example.<br />
{{clos}}<br />
Notice that the message isn't visible in the system log? This is because the <code>syslogd</code> daemon on this machine is only configured to log messages which have a severity of 5 or lower. We might modify the example so that it will be logged, like this:<br />
{{clo}}<br />
{{clio|logger -t EXAMPLE -p local3.5 -s "Successfully wrote new configuration file."}}<br />
EXAMPLE: Successfully wrote new configuration file.<br />
{{clio |tail -n 1 /var/log/messages}}<br />
Nov 17 19:31:37 ipac9x25 local3.notice EXAMPLE: Successfully wrote new configuration file.<br />
{{clos}}<br />
<br />
Now the message has been saved to the system logs as well as displayed on <code>stdout</code>.<br />
<br />
====Writing to Syslog from a C Program====<br />
There is a standard C function call on Linux for writing to the system logger. This function, <code>syslog()</code>, uses a persistent connection to the log facility which can be opened and closed using the associated <code>openlog()</code> and <code>closelog()</code> functions. However, if the <code>syslog()</code> function is called without first calling <code>openlog()</code>, the <code>syslog()</code> function will open the connection implicitly.<br />
<br />
=====Essential Elements=====<br />
The header file required for these functions is <code>syslog.h</code>.<br />
<br />
The relevant functions are:<br />
<br />
{{function | name=openlog |<br />
<code>'''void openlog( const char * ident, int option, int facility )'''</code><br />
<br /><br />The <code>openlog()</code> function is used to (optionally) open a connection to the log daemon before writing log messages. If the <code>openlog()</code> function is called, the <code>closelog()</code> function must also be called before exiting. <br /><br />The following parameters are accepted by this function:<br /><br /><br />
:;<code>'''ident'''</code><br />
:: The <code>ident</code> parameter is an identification string to use for log messages. This is just like the tag option to the <code>logger</code> command available from the shell. If this parameter is <code>null</code>, the identification string defaults to the name of the process sending the messages.<br />
:;<code>'''option'''</code><br />
:: The <code>option</code> parameter is a bit string which accepts the following single bit masks:<br />
::;<code>'''LOG_PERROR'''</code><br />
::: If on, any log messages sent will also go to the <code>stderr</code> stream associated with the current process.<br />
::;<code>'''LOG_CONS'''</code><br />
::: This useful flag causes any messages which were unable to be sent to the system logger (due to any kind of failure) will be sent to the system console instead.<br />
::;<code>'''LOG_PID'''</code><br />
::: When on, the process ID of the current process will be printed with each log message. This is especially useful for programs which call <code>fork()</code> at some point in their lifetime.<br />
::;<code>'''LOG_NDELAY'''</code><br />
::: This option forces the connection to be established immediately, rather than deferred to a later point (such as at the beginning of the first call to the <code>syslog()</code> function.)<br />
:;<code>'''facility'''</code><br />
:: This is the facility to which the log messages should be directed. The available facilities were described earlier in this document; see [[System_Logging#Facilities | facilities]].<br />
}}<br />
<br />
{{function | name=syslog | <br />
<code>'''void syslog( int facility_priority, const char * format, ... )'''</code><br />
<br /><br />The <code>syslog()</code> function is the core function for writing messages to the system log. This function may be called in between calls to <code>openlog()</code> and <code>closelog()</code>, or standalone. Using this function is very similar to using the standard <code>printf()</code> function, or is (perhaps) even more similar to the standard <code>fprintf()</code> function.<br /><br />The following parameters are accepted by this function:<br /><br /><br />
:;<code>'''facility_priority'''</code><br />
:: The <code>facility_priority</code> argument is an integer which will accept any of the following predefined macros: <br />
::* LOG_USER<br />
::* LOG_MAIL<br />
::* LOG_DAEMON<br />
::* LOG_AUTH<br />
::* LOG_SYSLOG<br />
::* LOG_LPR<br />
::* LOG_NEWS<br />
::* LOG_UUCP<br />
::* LOG_CRON<br />
::* LOG_AUTHPRIV<br />
::* LOG_FTP<br />
::* LOG_LOCAL0<br />
::* LOG_LOCAL1<br />
::* LOG_LOCAL''2 through 7''...<br />
:: These facility priorities correspond to the facilities discussed earlier in [[System_Logging#Facilities | facilities]].<br />
:;<br /><code>'''format'''</code><br />
:: The <code>format</code> parameter accepts a string with formatting parameters identical to the kind used for the standard <code>printf()</code> function. For information on how to craft such formatting strings, see the <code>printf()</code> documentation.<br />
:;<br /><code>'''...'''</code> ''(ellipsis operator)''<br />
:: Any arguments needed for the formatting string are passed here, just like with the standard <code>printf()</code> function.<br />
}}<br />
<br />
{{function | name=closelog |<br />
<code>'''void closelog( void )'''</code><br />
<br /><br />The <code>closelog()</code> function must be called before exiting the program, but only if the <code>openlog()</code> function was called earlier. The <code>openlog()</code> and <code>closelog()</code> functions should be treated the same as <code>fopen()</code> and <code>fclose()</code>, or <code>malloc()</code> and <code>free()</code>.<br />
<br /><br /><br />
This function takes no arguments.<br />
}}<br />
<br />
{{function | name=setlogmask |<br />
<code>'''int setlogmask( int mask )'''</code><br />
<br /><br />The <code>setlogmask()</code> function controls what messages get sent to the <code>syslog</code> server. While the <code>syslog</code> server does message filtering of its own, this function prevents the messages from ever reaching the <code>syslog</code> server. This type of filtering is good to use in conjunction with debug macros in order to reduce the overhead caused by having ample log messages spread throughout your software.<br />
<br /><br /><br />
Each bit set in the <code>mask</code> represents a priority level. If the bit is set, a message of the corresponding priority level will be sent to syslog; otherwise, it won't. The <code>LOG_MASK</code> macro is used to translate priority levels into appropriate bits, such as <code>LOG_MASK( LOG_ERROR )</code>.<br />
<br /><br /><br />
Using the <code>LOG_UPTO</code> macro is the easiest way to set the mask. Since the most critical error message has a value of zero, and every less critical message has a value greater than zero, the <code>LOG_UPTO</code> macro will create a mask which passes the given priority level and anything more severe. For example, to pass messages which have a severity of Warning or worse, you may use: <code>LOG_UPTO( LOG_WARN )</code>.<br />
:;<code>mask</code><br />
:: The <code>mask</code> parameter is used to determine what messages to pass to <code>syslog</code>, as described above.<br />
:;''Returns'': <code>int</code><br />
:: The previously set log mask is returned by the function. You may safely discard it if you don't intend to restore it later.<br />
For example:<br />
<syntaxhighlight lang=C><br />
#include <syslog.h><br />
<br />
int main( int argc, char ** argv )<br />
{<br />
setlogmask( LOG_UPTO( LOG_WARN ) );<br />
syslog( LOG_INFO, "You'll never see me!" );<br />
syslog( LOG_WARN, "Now you see me." );<br />
<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
}}<br />
<br />
=====Examples of Using the C <code>syslog()</code> Function (and Friends)=====<br />
<br />
The most simple use of this function is found in the following <code>Hello, World</code> style program:<br />
<br />
<syntaxhighlight lang=C><br />
#include <syslog.h><br />
<br />
int main( int argc, char ** argv )<br />
{<br />
syslog( LOG_INFO, "Hello, World from syslog()!" );<br />
<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
Note the lack of a newline character. You should not pass newlines to syslog. If you do, they will be stripped off.<br />
<br />
A slightly more sophisticated use of syslog follows:<br />
<br />
<syntaxhighlight lang=C><br />
#include <syslog.h><br />
#include <unistd.h><br />
<br />
int main( int argc, char ** argv )<br />
{<br />
int i;<br />
// Use "MyEXAMPLE" as the "tag" for messages. Log output to stderr and to the system log, and include my PID.<br />
openlog( "MyEXAMPLE", LOG_PERROR | LOG_PID );<br />
// Let's generate some output.<br />
syslog( LOG_WARN, "You have until the count of ten, Mr..." );<br />
<br />
for( i = 10; i > 0; --i )<br />
{<br />
syslog( LOG_WARN, "%d", i );<br />
sleep( 1 );<br />
}<br />
<br />
syslog( LOG_ERR, "I warned you, sir and/or madam. You almost made an error. If you'd broken out of this with" );<br />
syslog( LOG_ERR, "Control-C, the closelog() call never would have been made. Whew. That was a close one. Next" );<br />
syslog( LOG_ERR, "time make sure to catch the SIGINT signal (at the least) and call the closelog() function in" );<br />
syslog( LOG_ERR, "your signal handler to such avoid wasteful behavior." );<br />
<br />
closelog();<br />
<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /****************************************** Conclusion ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:conclusion | initials=MD | title=System Logging | desc=The page describes how to system log. | project=OE 5.0 }}<br />
This article covered quite a bit of territory. You were given an overview of how logging works on Linux systems. We then talked about a variety of ways in which people make use of these logs to solve real world problems. We covered the basics of the standard <code>syslog</code> system for EMAC OE Linux as well as the alternative, <code>syslog-ng</code>, and gave an overview of what extras you can gain by installing <code>syslog-ng</code>. Next, we went through several examples of searching through messages to find the ones which are relevant to your current needs. Finally, we covered ways to send messages to the syslog service from software, and from the commandline as well. We didn't cover all programming languages, but the information presented here should provide a solid enough foundation for you to perform a search on the Internet for a syslog client library for other programming languages, and to make use of what you find quickly and easily.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /****************************************** More Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:moreinfo | initials=MD | title=System Logging | desc=The page describes how to system log. | project=OE 5.0 }}<br />
* [[Install_the_EMAC_SDK | Installing the EMAC SDK]]<br />
<br />
{{:Templateimpl:whatnext | initials=MD | title=System Logging | desc=The page describes how to system log. | project=OE 5.0 }}<br />
* [[Opkg | Working With the OPKG Package Manager]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=Getting_Started_with_the_EMAC_OE_SDK&diff=5395Getting Started with the EMAC OE SDK2016-06-08T16:18:00Z<p>Awichmann: </p>
<hr />
<div>{{todo| Complete (03.31.2015-13:42->BS+);(04.08.2015-15:00->BS+);(04.09.15-14:00->MD+);(04.21.2015-10:15->BS+);(04.24.2015-20:00->MD-);(04.28.2015-12:20->MD+);(04.29.2015-16:00->BS+);(04.29.2015-17:30->MD+);(04.30.2015-15:30->KY+); (07.22.2015-11:00->BS+)(10.07.2015-16:32->KY+)|Brian Serrano| project=OE 5.0,BS,MD,Complete,KY}}<br />
{{#seo:<br />
|title=Getting Started with the EMAC OE SDK<br />
|titlemode=append<br />
|keywords=EMAC SDK,Cross compiling, ARM Target Compiling, CMake Build System, CMake Cross Compiling, CMake, CMake Arm<br />
|description=A basic tutorial for using the EMAC OE SDK.<br />
}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<span style="background:#00FF00;color:#FF0000;font-size:300%"></span><br />
The EMAC OE SDK is distributed with a set of example projects intended to demonstrate how to use the EMAC OE toolchain and libraries. This page demonstrates the process of compiling an example project and running it on the target machine. Also, it provides a straightforward guide to the essential steps you need to follow to get started with cross compiling a simple program with gcc and running the program on your embedded machine.<br />
<br />
__TOC__<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:geninfo | initials=BS | title=Getting Started with the EMAC OE SDK | desc=Basic tutorial for using the EMAC OE SDK. | project=OE 5.0 }}<br />
<br />
The EMAC OE SDK is primarily distributed via our apt repository as a deb package for Ubuntu. Using EMAC's apt repository makes installing and updating the EMAC SDK and tools as easy as installing and updating any standard Ubuntu package. This tutorial will show you how to configure your system to use the EMAC apt repository so that you can use the same package management tools you're familiar with in Ubuntu to install and update the EMAC provided SDK and tools.<br />
<br />
EMAC also provides a tarball you can extract and install manually in case you're using a distribution other than Ubuntu (or a derivative), but EMAC strongly recommends using an Ubuntu LTS release. The recent Ubuntu LTS releases have been thoroughly tested with the EMAC SDK and tools and are fully supported by EMAC. Given the large number of alternate Linux distributions available, EMAC is only able to provide limited support (in the form of a manually installed tarball) for other Linux distributions. <br />
<br />
Each SDK includes the C/C++ header files and libraries compatible with the target hardware. It also includes the C/C++ cross-compiler toolchain components necessary to compile and debug custom application code. The links below will help you get started building and running the example projects on the target hardware.<br />
<br />
More information on using Qt Creator with the EMAC SDK is available on the [[Getting_Started_With_Qt_Creator |Getting Started With Qt Creator]] page.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:using | initials=BS | title=Getting Started with the EMAC OE SDK | desc=Basic tutorial for using the EMAC OE SDK. | project=OE 5.0 }} <br />
<br />
=== Installing EMAC SDK ===<br />
<br />
This is the EMAC Apt Repository, which hosts installation files for EMAC provided tools built for 64 bit Ubuntu 12.04 LTS and 14.04 LTS. To use this repository, a source for it must be added to your apt sources, and the key for the repository must be added to your machine. The steps below outline how to do this. <br />
<br />
# Add the EMAC Repository as an Apt source:<br />
#:<br />
#:'''For Ubuntu 12.04 LTS:'''<br />
#:<br />
#:{{cli | username=developer | hostname=ldc | <nowiki>echo "deb http://apt.emacinc.com/ubuntu precise non-free" > /etc/apt/sources.list.d/emac.list</nowiki> }}<br />
#:<br />
#:'''For Ubuntu 14.04 LTS:'''<br />
#:<br />
#:{{cli | username=developer | hostname=ldc | <nowiki>echo "deb http://apt.emacinc.com/ubuntu trusty non-free" > /etc/apt/sources.list.d/emac.list</nowiki> }}<br />
#:<br />
# Add the EMAC Apt Key:<br />
#:<br />
#:{{cli | username=developer | hostname=ldc | <nowiki>sudo sh -c 'wget -O - http://apt.emacinc.com/packages.emac.key</nowiki> {{!}} apt-key add -' }}<br />
#:<br />
#:'''Note that the 'O' above is a capital letter 'o', not a zero.'''<br />
#:<br />
# Update your apt cache:<br />
#:<br />
#:{{cli | username=developer | hostname=ldc | sudo apt-get update }}<br />
#:<br />
<ol start="4"><br />
<li> Search for available EMAC packages:<br />
{{clo | indent=2}}<br />
{{clio | username=developer | hostname=ldc | sudo apt-cache search emac- }}<br />
emac-common-toolchain - This package provides the common toolchain files.<br /><br />
emac-ide-qtcreator - This package provides the Qt Creator IDE for the EMAC Software Development Kit.<br /><br />
emac-sdk-examples - This package provides examples for the Qt Creator IDE and the EMAC Software Development Kit.<br /><br />
emac-toolchain-armv5e - The SDK for cross compiling software for armv5e based targets running EMAC OE Linux.<br /><br />
emac-toolchain-i586 - The SDK for cross compiling software for i586 based targets running EMAC OE Linux.<br /><br />
emac-tools-at - The Auto Tools package for EMAC's Software Development Kit.<br /><br />
emac-tools-projects - This package provides the oe_init_project tools for creating CMake based projects for EMAC OE 5.<br /><br />
emac-tools-util - This package provides the scanserial tool from the EMAC Software Development Kit.<br /><br />
{{clos}}<br />
</li><br />
<li> Install desired EMAC packages:<br />
{{cli | indent=1 | username=developer | hostname=ldc | apt-get install emac-sdk }}<br />
</li><br />
</ol><br />
<br />
=== Connecting to a Target Board ===<br />
<br />
A machine running EMAC OE Linux can be connected to through a serial port or through a network cable. EMAC OE Linux allows users to log in via getty, and SSH (Secure Shell). A getty can be accessed via a serial connection (through a console) while SSH utilizes a network connection. More information on establishing a physical connection to a board is available on the [[Serial_Connections |Serial Connections]] and [[Network_Connections |Network Connections]] page.<br />
<br />
The next step after establishing a physical connection to the board is logging in. For more information visit the [[System_Log_In | System Log In]] page.<br />
<br />
=== Setting the Filesystem to Read-Write ===<br />
The root filesystem on a machine running EMAC OE Linux is mounted read-only by default. In order to put files on the board, you may need to make the filesystem read-write. The [[Linux_Filesystem_Organization|Linux Filesystem Organization page]] has more information regarding which parts of the filesystem are mounted read-only by default versus which parts are always writeable. Note that EMAC recommends installing your program into a read-only portion of the filesystem (according to the guide) to safeguard it from filesystem corruption (such as may be caused by removing power from the board without shutting down the operating system first, which is normal in embedded systems).<br />
<br />
To remount the root filesytem in read-write mode, enter the following into the terminal: <br />
{{cli | oemntrw | hostname=ipac9x25}}<br />
<br />
{{note|This will only change the root filesystem to read-write for the current boot. When the system is rebooted, the root filesystem will once again be mounted read-only.}}<br />
<br />
=== Transferring Files ===<br />
The command line syntax for transferring a file using the SSH protocol is <code>scp file user@host:/directory</code>. SCP, or Secure Copy, is a way of securely transferring files between a local and remote host. For example, to send the file ''example.text'' to the <code>/home</code> directory of a system with the IP address 10.0.6.221, enter the following command:<br />
{{cli | username=developer | hostname=ldc | scp example.text root@10.0.6.221:/home/ }}<br />
<br />
Alternatively, you can leave off the path after the colon if you want the file to go directly into the home directory.<br />
<br />
{{cli | username=developer | hostname=ldc | scp example.text root@10.0.6.221: }}<br />
<br />
{{note|This copy operation will fail if the filesystem on the remote machine is mounted read-only, which is the default on most EMAC systems. If you experience this failure, remount the root filesystem read-write (see above) and try again.}}<br />
<br />
=== Remote Execution ===<br />
SSH can also be used to execute programs on remote systems without logging in. The syntax for SSH remote execution is <code>ssh user@host "my_command -args file"</code>. The following is an example of a command to run a program on a board with the IP address ''10.0.6.221''.<br />
<br />
{{cli | username=developer | hostname=ldc | ssh root@10.0.6.221 "/path/to/executable -args" }}<br />
<br />
<br />
=== Basic Compiling ===<br />
The two subsections below show the two common options for how to compile source code. The first subsection demonstrates how to use the EMAC [[ #CMake_Compiling| CMake ]] tool, while the second subsection demonstrates how to compile c code [[ #Manual_Compiling | manually ]].<br />
<br />
==== CMake Compiling ====<br />
===== Host Machine Compiling =====<br />
<br />
This section demonstrates how to use the EMAC CMake tool to generate CMake files automatically for a project. When using the EMAC SDK there are currently two options for cross compiling:<br />
* arm<br />
* x86<br />
For the purposes of this guide, the <tt>arm</tt> option will be used for the listed examples.<br />
<br />
Navigate to the directory where the project will be located. Then run the CMake new project script.<br />
{{clo}}<br />
{{clio | username=developer | hostname=ldc | pwd=~/projects | oe_init_project -n hello.c }}<br />
If desired, please enter a name for this project, otherwise press Enter to use the default: hello_emac <br /><br />
<br />
-- Creating new project directory... <br /><br />
-- Creating new source file... <br /><br />
-- Building custom CMakeLists.txt file... <br /><br />
-- Done. <br /><br />
<br />
Do you want to create a build directory for this project? (y/n) y <br /><br />
<br />
-- Creating build directory... <br /><br />
<br />
Do you want to run cmake for this project? (y/n) y <br /><br />
<br />
-- Using system compiler <br /><br />
-- The C compiler identification is GNU 4.8.2 <br /><br />
-- The CXX compiler identification is GNU 4.8.2 <br /><br />
-- Check for working C compiler: /usr/bin/cc <br /><br />
-- Check for working C compiler: /usr/bin/cc -- works <br /><br />
-- Detecting C compiler ABI info <br /><br />
-- Detecting C compiler ABI info - done <br /><br />
-- Check for working CXX compiler: /usr/bin/c++ <br /><br />
-- Check for working CXX compiler: /usr/bin/c++ -- works <br /><br />
-- Detecting CXX compiler ABI info <br /><br />
-- Detecting CXX compiler ABI info - done <br /><br />
-- Configuring done <br /><br />
-- Generating done <br /><br />
-- Build files have been written to: /home/developer/projects/hello_emac/hello_emac-build <br /><br />
<br />
Do you want to compile this project? (y/n) y<br />
<br />
Scanning dependencies of target hello_emac <br /><br />
[100%] Building C object CMakeFiles/hello_emac.dir/hello.c.o <br /><br />
Linking C executable hello_emac <br /><br />
[100%] Built target hello_emac <br /><br />
{{clos}}<br />
<br />
The executable, in this case, is now inside the <code> hello_emac/hello_emac-build </code> directory.<br />
<br />
===== Target Machine Compiling =====<br />
<br />
The CMake project script has now made a project directory that contains the following:<br />
* CMakeLists.txt<br />
* Source code file (''hello.c'' in this case)<br />
* ''README'' file<br />
* Desktop Build Directory (''hello_emac-build'' in this case)<br />
<br />
The ''CMakeLists.txt'' contains the required information to automatically create a ''Makefile'' for a given architecture. This was created by the EMAC <tt>oe_init_project</tt> script, and will need to be modified over time as a project grows. The comments in the file generated by the EMAC tool will provide a good starting point for how to add additional source files and how to perform other common tasks related to maintaining your CMake build system as your project grows. The CMake project provides extensive documentation on how to work with these files.<br />
<br />
The source code file generated by the script (''hello.c'') contains a basic Hello World style program.<br />
<br />
The ''README'' file contains more information on using ''CMake'' with the EMAC 5.X SDK.<br />
<br />
The Desktop Build Directory (''hello_emac-build'') contains the executable ''hello_emac'', the ''Makefile'', and various cache files. These were automatically created by CMake and by the build system, and can be recreated at any time.<br />
<br />
It is useful to have a Desktop Build Directory because it is easier (in the beginning) to use the desktop to verify all code changes before cross-compiling for a target board. This will be useful until the application under development depends upon resources which are only available on the target hardware, such as certain devices drivers or the touchscreen (if so equipped).<br />
<br />
Use the following steps to cross-compile the project and send it to a target board.<br />
<br /><br />
<br /><br />
<cl><br />
1. In a terminal, navigate to the base directory of the project.<br />
{{note | If the target board being used is <tt>x86</tt>, then change all occurrences of <tt>arm</tt> in the following sections below to <tt>x86</tt>.}}<br />
* Create a build directory for cross compiling. <br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac | mkdir hello_emac-build-arm }} <br />
* Change directories into the newly created directory.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac | cd hello_emac-build-arm }} <br />
* Run cmake using the target architecture.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | 1 = cmake .. -DARCH:STRING=arm }} <br />
* Compile the code using make.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | make }} <br />
<br />
The <code> make </code> command creates the target executable in the <code> hello_emac-build-arm </code> directory.<br />
* Now copy the executable to the target board. For information on copying the executable file, see the [[ #Transferring_Files | Transferring Files ]] section.<br />
</cl><br />
<br /><br />
<br /><br />
<br />
==== Manual Compiling ====<br />
===== Host Machine Compiling =====<br />
<br />{{note|In these examples we are using the Ipac-9x25 board. Your board's processor's architecture will determine which file needs to be sourced. These files come from the EMAC SDK toolchain.}}<br />
<br />
Create a file called hello.c using a text editor such as vi, vim, nano, or gedit. Then copy and paste the source code from the [[ #Hello_World_System_Log_Example | Hello World System Log Example ]] section in the text editor of your choice.<br />
<br />
Once you've created and saved the file with the source code, use the following syntax to compile the program called hello.c:<br />
{{cli | username=developer | hostname=ldc | gcc -o hello hello.c }}<br />
<br />
If there is no error in your code then the compiler will successfully create an executable file called hello in the current directory.<br />
<br />
To verify this, enter the following command:<br />
{{clo}}<br />
{{clio | username=developer | hostname=ldc | ls -l hello* }}<br />
-rwxrwxr-x 1 bserrano bserrano 9583 Apr 6 12:45 hello <br /><br />
-rwxr-xr-x 1 bserrano bserrano 129 Apr 6 12:28 hello.c <br />
{{clos}}<br />
<br />
To run the program, enter the following command:<br />
{{clo}}<br />
{{clio | username=developer | hostname=ldc | ./hello }}<br />
Hello EMAC OE!<br />
{{clos}}<br />
<br />
OR<br />
{{clo}}<br />
{{clio | username=developer | hostname=ldc | /path/to/hello }}<br />
Hello EMAC OE!<br />
{{clos}}<br />
<br /><br />
<br /><br />
<br />
===== Target Board Compiling =====<br />
<br />
To compile for the target board, you must <code>source</code> the <code>environment-setup-armv5e-emac-linux-gnueabi</code> file.<br />
{{cli | username=developer | hostname=ldc | source /opt/emac/5.X/environment-setup-armv5e-emac-linux-gnueabi }}<br />
<br />
Once you are in the directory with the source file, enter the following command:<br />
{{cli | username=developer | hostname=ldc | $CC -o hello hello.c }}<br />
<br />
{{note|Once you source the file in your current terminal, you can only use it to cross-compile your program for the target board. You can no longer compile it for your host machine. To compile it to your host machine, simply open a new terminal.}}<br />
<br />
After sourcing the file, copy the program over to the target board using <code>scp</code>. Enter the following command:<br />
{{clo}}<br />
{{clio | username=developer | hostname=ldc | scp hello root@10.0.6.221: }}<br />
root@10.0.6.221's password: <br />
<br />
hello 100% 9583 9.4KB/s 00:00 <br />
{{clos}}<br />
<br />
After copying the program, you can now execute the program on the target board. Enter the following command:<br />
{{clo}}<br />
{{clio | username=developer | hostname=ldc | ssh root@10.0.6.221 ./hello}}<br />
root@10.0.6.221's password: <br /> <br />
Hello EMAC OE!<br />
{{clos}}<br />
<br /><br />
<br /><br />
<br />
=== Linux Filesystem Organization ===<br />
In order to prevent confusion and promote portability, a standard was created for the organization of the Linux filesystem. To ensure future portability of software created today, promote maintainability of software, and ensure proper utilization of available storage on an embedded machine, this standard should be followed as much as possible. This document covers parts of the standard and gives information about the customizations made to it by EMAC OE to accommodate embedded hardware. A link is provided to the standards document which covers the organization of the Linux filesystem at the end of this document. For more information visit the [[Linux_Filesystem_Organization | Linux Filesystem Organization]] page.<br />
<br />
EMAC recommends <tt>/usr/local/bin</tt> as the location for software you deploy.<br />
<br />
{{clo}}<br />
/usr/local/bin/<br />
{{clos}}<br />
<br />
{{note|It is important to pay attention to the filesystem structure in order to ensure that your application will work as expected when the filesystem is in production. Reasons for this include:<br />
<cl><br />
1. Only certain directories, such as <tt>/var/</tt> and <tt>/tmp/</tt>, are writeable when the filesystem is read-only.<br />
* Only certain directories should contain executables, such as <tt>/bin/</tt>, <tt>/usr/bin/</tt>, and <tt>/usr/local/bin/</tt>.<br />
* Following this directory structure properly will make it easier to port your software to a newer release of EMAC OE later on.<br />
</cl>}}<br />
<br />
=== Remote Debugging ===<br />
<br />
When working with embedded systems the binary is usually compiled on a development machine with a different CPU architecture than what is on the target machine. This can be a problem when, as is typically the case, the target machine lacks the system resources to run a debugger. In these cases, it is possible to use the GNU debugger (<tt>gdb</tt>) on the development machine to remotely debug the target machine provided it has a flavor-matched version of a program named <tt>gdbserver</tt>. All EMAC OE builds are packaged with a flavor-matched <tt>gdbserver</tt> to simplify the setup process for developers.<br />
<br />
{{note | A flavor-matched <tt>gdbserver</tt> is one which is built against the same source code revision as the <tt>gdb</tt> client for your desktop, because <tt>gdb</tt> does not have a stable interface for attaching to the <tt>gdbserver</tt>. In fact, the interface changes slightly with almost every release, so if you find yourself having difficulty getting <tt>gdb</tt> and <tt>gdbserver</tt> to communicate with each other, make sure they're the exact same version before trying any other debugging steps.}}<br />
<br />
For more information visit the [[Remote_Debugging_EMAC_OE_SDK_Projects_with_gdbserver | Remote Debugging EMAC OE SDK Projects with gdbserver]] page.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:examples | initials=BS | title=Getting Started with the EMAC OE SDK | desc=Basic tutorial for using the EMAC OE SDK. | project=OE 5.0 }}<br />
<br />
=== Hello World System Log Example ===<br />
This example will print <code>Hello EMAC OE!</code> to the syslog facility as well as the console. This will allow you to log, debug, and send status messages to the system logger.<br />
<br />
To compile and run this program, see the sections above.<br />
<br />
<syntaxhighlight lang="c"><br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <unistd.h><br />
#include <syslog.h><br />
<br />
int main(int argc, char** argv)<br />
{ <br />
char message[] = "Hello EMAC OE!";<br />
<br />
openlog("slog", LOG_PID|LOG_CONS, LOG_USER);<br />
syslog(LOG_INFO, "%s", message);<br />
closelog(); <br />
<br />
printf("%s\n", message);<br />
<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
This is extremely useful because it allows you to save a record of the output that you might not see first hand.<br />
<br />
To verify the output of the program went into syslog, enter the following command:<br />
{{clo}}<br />
{{clio | username=developer | hostname=ldc | tail /var/log/syslog}}<br />
Apr 7 14:10:06 ENG-26-LX dhclient: DHCPACK of 10.0.6.237 from 10.0.2.1<br /><br />
Apr 7 14:10:06 ENG-26-LX dhclient: bound to 10.0.6.237 -- renewal in 3306 seconds.<br /><br />
Apr 7 14:17:01 ENG-26-LX CRON[21193]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)<br /><br />
Apr 7 14:54:41 ENG-26-LX hpcups[21266]: prnt/hpcups/HPCupsFilter.cpp 689: First raster data plane..<br /><br />
Apr 7 14:55:31 hpcups[21266]: last message repeated 3 times<br /><br />
Apr 7 15:05:12 ENG-26-LX dhclient: DHCPREQUEST of 10.0.6.237 on eth0 to 10.0.2.1 port 67<br /><br />
Apr 7 15:05:12 ENG-26-LX dhclient: DHCPACK of 10.0.6.237 from 10.0.2.1<br /><br />
Apr 7 15:05:12 ENG-26-LX dhclient: bound to 10.0.6.237 -- renewal in 3559 seconds.<br /><br />
Apr 7 15:17:01 ENG-26-LX CRON[21302]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)<br /><br />
Apr 7 15:27:08 ENG-26-LX slog[21375]: Hello EMAC OE!<br />
{{clos}}<br />
<br />
As you can see on the bottom line, your program output has been recorded and date stamped in syslog.<br />
<br />
For more information on system logging visit the [[System_Logging| System Logging ]] page.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /****************************************** More Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:moreinfo | initials=BS | title=Getting Started with the EMAC OE SDK | desc=Basic tutorial for using the EMAC OE SDK. | project=OE 5.0 }}<br />
* [[Getting_Started_With_Qt_Creator |Getting Started With Qt Creator]]<br />
<br />
{{:Templateimpl:whatnext | initials=BS | title=Getting Started with the EMAC OE SDK | desc=Basic tutorial for using the EMAC OE SDK. | project=OE 5.0 }}<br />
* [[System_Log_In | System Log In]]<br />
* [[Serial_Connections | Serial Connections ]]<br />
* [[Network_Connections | Network_Connections ]]<br />
* [[System_Log_In | System Log In ]]<br />
* [[Remote_Debugging_EMAC_OE_SDK_Projects_with_gdbserver | Remote Debugging EMAC OE SDK Projects with gdbserver ]]<br />
* [[Linux_Filesystem_Organization | Linux Filesystem Organization]]<br />
* [[Creating_a_New_EMAC_OE_SDK_Project_with_CMake | Creating a Project with CMake ]]<br />
* [[Remote_Debugging_EMAC_OE_SDK_with_gdbserver | Remote Debugging EMAC OE SDK Projects with gdbserver]]<br />
* [[System_Logging | System Logging ]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=Getting_Started_With_Qt_Creator&diff=5394Getting Started With Qt Creator2016-06-08T16:16:54Z<p>Awichmann: </p>
<hr />
<div>{{todo| Complete (02.03.2015-10:42->BS+);(06.18.2015-14:25->BS+);(06.18.2015-15:48->KY+);(11.16.2015-11:35->MD+);(11.16.2015-12:15->MG+);(11.16.2015-12:20->KY+)|Brian Serrano| project=OE 5.0,BS,KY,MD,MG,Complete}}<br />
{{#seo:<br />
|title=Getting Started with Qt Creator<br />
|titlemode=append<br />
|keywords=Qt Creator, Tutorial, Qt Creator Examples<br />
|description=The following page can be used to get familiarized with EMAC Qt Creator.<br />
}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<span style="background:#00FF00;color:#FF0000;font-size:300%"></span><br />
The following page demonstrates the process of getting familiar with EMAC Qt Creator and running it on the target machine.<br />
__TOC__<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:bg | initials=BS | title=Getting Started with Qt Creator | desc=The following page can be used to get familiarized with EMAC Qt Creator. | project=OE 5.0 }}<br />
Qt Creator is a cross-platform Open Source Integrated Development Environment (IDE) that can be used to develop software for many different languages. It includes a visual debugger and an integrated GUI layout and forms designer. <br />
<br />
For more information visit the Qt Project site http://qt-project.org/wiki/Category:Tools::QtCreator.<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:geninfo | initials=BS | title=Getting Started with Qt Creator | desc=The following page can be used to get familiarized with EMAC Qt Creator. | project=OE 5.0 }}<br />
=== Tools Required ===<br />
* [[Getting_Started_with_the_EMAC_OE_SDK | EMAC OE 5.X SDK]]<br />
* EMAC Qt Creator<br />
* GNU <code>make</code><br />
* CMake<br />
=== Setup === <br />
# Make sure the system has the [[Getting_Started_with_the_EMAC_OE_SDK | EMAC OE 5.X SDK and tools installed. ]]<br />
# Launch EMAC Qt Creator.<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:using | initials=BS | title=Getting Started with Qt Creator | desc=The following page can be used to get familiarized with EMAC Qt Creator. | project=OE 5.0 }}<br />
<br />
After installing the EMAC SDK, launch Qt Creator using the EMAC Qt Creator desktop icon.<br />
<br />
1. Press the Start key or Alt + F2 and search for Qt Creator EMAC<br />
<br />
2. Put the Qt Creator EMAC icon on the Launcher for easy access.<br />
<br />
[[File:EMAC_Qt_Creator_Icon.png|600px|left|thumb|Figure 1: Qt Creator Launcher Icon]]<br />
<br clear=all><br />
<br />
3. To generate a new project from Qt Creator, select '''New Project''' on the opening splash window. The examples being used are all written in the <code>C programming</code> language.<br />
<br />
[[File:Qtcreator_gui.png|600px|left|thumb|Figure 2: Qt Creator GUI]]<br />
<br clear=all><br />
<br />
4. After selecting '''New Project''' a new window will pop up. To run a <code>C programming</code> example using EMAC hardware, select '''EMAC Project''' under the Projects tab. Then select '''EMAC C Project (CMake Build)'''. Click the '''Choose''' button on the bottom right of the window to continue to the next page as shown in Figure 3.<br />
<br />
[[File:EMAC_C_Project.png|600px|left|thumb|Figure 3: Qt Creator EMAC Project]]<br />
<br clear=all><br />
<br />
5. The next page will be '''Introduction and Project Location'''. Select a name for the <code> C </code> project. Once the project name is given, choose a directory to store the project. Note: It is highly recommended to store your project somewhere other than the default location. For this example, we used <code>/home/developer/Projects</code>.<br />
<br />
[[File:Project_location1.png|600px|left|thumb|Figure 4: Qt Creator Project Location]]<br />
<br clear=all><br />
<br />
6. The next page summarizes the '''EMAC C Project'''. Click '''Finish''' to continue.<br />
<br />
[[File:Project_summary1.png|600px|left|thumb|Figure 5: Qt Creator Project Summary]]<br />
<br clear=all><br />
<br />
7. Next, it will prompt you to enter the '''CMake Wizard Build Location'''. Click '''Next''' to continue. Note: It is highly recommended to use the default build directory as stated below in Figure 6. <br />
<br />
[[File:Build_location.png|600px|left|thumb|Figure 6: Qt Creator Build Location]] <br />
<br clear=all><br />
<br />
8. The '''CMake Wizard''' will then prompt you to '''Run CMake'''. For setting up the Desktop Kit, click '''Run CMake'''; the output should be similar to Figure 7 below. Click '''Finish''' to start new project.<br />
<br />
[[File:Run_cmake1.png|600px|left|thumb|Figure 7: Qt Creator Run CMake]]<br />
<br clear=all><br />
<br />
9. The next step is to set up the device you will be using for the Qt Creator examples. Click Tools -> Options<br />
{{note|The board used for this example is the iPac-9x25. The iPac-9x25 is a 32-bit ARM architecture. Make sure to connect power, Ethernet, and serial to the board.}}<br />
<br />
10. Select '''Devices''' from the left pane.<br />
<br />
[[File:Options_devices.png|600px|left|thumb|Figure 8: Qt Creator Device Option]] <br />
<br clear=all><br />
<br />
11. Click the '''Add''' button <br />
<br />
12. Select Generic Linux Device, then click '''Start Wizard'''.<br />
<br />
[[File:Generic_linux.png|600px|left|thumb|Figure 9: Qt Creator Wizard Selection]]<br />
<br clear=all><br />
<br />
13. Type in a name, the IP address, the user name, and the password for the device. Use the credentials below to sign in.<br />
<br />
{| class="wikitable"<br />
!colspan="2"|Table 4: Default Login Credentials <br />
|-<br />
! Username !! Password<br />
|-<br />
| root || emac_inc<br />
|}<br />
<br />
[[File:Device_connection.png|600px|left|thumb|Figure 10: Qt Creator Configuration Setup]]<br />
<br clear=all><br />
<br />
14. Click '''Next'''.<br />
<br />
15. Click '''Finish'''.<br />
<br />
16. A connection will be established with the target device.<br />
<br />
[[File:Device_test.png|600px|left|thumb|Figure 11: Qt Creator Device Test]]<br />
<br clear=all><br />
<br />
17. Click '''Close'''.<br />
<br />
18. Click '''Apply'''.<br />
<br />
19. Navigate to '''Add Kit''' in the '''Projects''' tab. Under '''Add Kit''', select the architecture for the board being used. Click '''EMAC OE 5.X arm'''. <br />
<br />
<br />
[[File:Add_kit_arm.jpg|600px|left|thumb|Figure 12: Qt Creator Add Kit]]<br />
<br clear=all><br />
<br />
20. As previously stated in step 7, it will prompt you to enter the '''CMake Wizard Build Location'''. Click '''Next''' to continue. Note: It is highly recommended to use the default build directory as stated below in Figure 13.<br />
<br />
[[File:Add_arm.png|600px|left|thumb|Figure 13: Qt Creator Add Kit Build Location]]<br />
<br clear=all><br />
<br />
21. The '''CMake Wizard''' will then prompt you to '''Run CMake'''. For setting up the iPac-9x25 ARM kit, click the box next to '''Arguments'''. Copy and paste the string below: <br />
''-DARCH:STRING=arm''<br />
{{note|By default, CMake will build the project using the Debug build configuration. If a Release build is needed, see [[Creating_a_New_EMAC_OE_SDK_Project_with_CMake#Debug_Build_Types | this page.]]}}<br />
<br />
[[File:Arm_argument_string.png|600px|left|thumb|Figure 14: Qt Creator Argument String]] <br />
<br clear=all><br />
<br />
The EMAC SDK provides another architecture kit for x86 hardware. If using an x86 architecture, copy and paste the argument string below into the '''Arguments''' box. <br />
''-DARCH:STRING=x86'' <br />
<br />
22. Once the arguments string is pasted into the box, click '''Run CMake''', and the output should be similar to Figure 15 below. Click '''Finish''' to add the kit to the current project.<br />
<br />
[[File:Run_arm_cmake.png|600px|left|thumb|Figure 15: Qt Creator Run CMake]] <br />
<br clear=all><br />
<br />
23. To confirm the kit installed correctly, click on the '''Kit Selector''' tab (Monitor symbol) on the left hand side of the Qt Creator window as shown in Figure 16. Both '''Desktop''' and '''OE 5.X arm''' kit should be present.<br />
<br />
[[File:Arm_kit.jpg|600px|left|thumb|Figure 16: Qt Creator Kits Installed]] <br />
<br clear=all><br />
<br />
24. To run the example project on the target board remotely, you will need to add it to the '''Run Configuration'''. Click on '''Projects'''.<br />
<br />
25. Select '''Run''' under the '''OE 5.X arm''' tab.<br />
<br />
26. To '''Run Configuration''', click on '''Add''' and select your project name (on Remote Generic Linux Host). In this case, our project name is Prime_Numbers (on Remote Generic Linux Host).<br />
<br />
[[File:Run_config.jpg|600px|left|thumb|Figure 17: Qt Creator Run Configuration]]<br />
<br clear=all><br />
<br />
You are now ready to run the examples below using Qt Creator.<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:examples | initials=BS | title=Getting Started with Qt Creator | desc=The following page can be used to get familiarized with EMAC Qt Creator. | project=OE 5.0 }}<br />
This section will show how to run <code>C programming</code> examples through the Qt Creator IDE. The example board will be the iPac-9x25. <br />
<br />
The first example is a basic <i> hello c </i> example project. <br />
<br />
1. After creating a new project and installing the necessary kits for the target board, navigate to the '''Edit''' tab on Qt Creator. Qt Creator will automatically have the <i> hello c </i> example uploaded as shown in Figure 18.<br />
<br />
<syntaxhighlight lang="c"><br />
#include <stdio.h><br />
#include <stdlib.h><br />
<br />
int main(int argc, char * argv[])<br />
{<br />
printf("Hello EMAC OE!\n");<br />
<br />
exit(EXIT_SUCCESS);<br />
}<br />
</syntaxhighlight><br />
<br />
[[File:Edit_window.png|600px|left|thumb|Figure 18: Qt Creator Edit Window]] <br />
<br clear=all><br />
<br />
2. Before executing the example, you must build the program. Click on the build icon (hammer symbol) on the bottom left of Qt Creator. If the build was successful, a green progress bar will fill on the bottom right of the window.<br />
<br />
3. Once the program successfully builds, you may run the program. Click on the run icon (green arrow symbol) on the left hand side of Qt Creator. The program prints <code> Hello EMAC OE! </code> in the '''Application Output''' terminal. <br />
<br />
[[File:Final_output.png|600px|left|thumb|Figure 19: Qt Creator Edit Window]]<br />
<br clear=all><br />
<br />
The second example will show how to run a ''C programming'' project on a target board. This example will show all prime numbers from 1 through 100 on the Qt Creator remote terminal.<br />
<br />
1. Create a new project and install the necessary kits for the target board as shown before. Call this project <code> Prime_Numbers </code>. Then, navigate to the '''Edit''' tab on Qt Creator. Copy and paste the following code (below) to the Qt Creator terminal: <br />
<br />
<syntaxhighlight lang="c"><br />
#include <stdio.h><br />
#include <stdlib.h><br />
<br />
int main(int argc, char * argv[])<br />
{ <br />
int i;<br />
int j;<br />
<br />
for (i = 2; i <= 100; i++)<br />
{<br />
for (j = 2; j <= i; j++)<br />
{<br />
if (i%j==0)<br />
{<br />
break;<br />
}<br />
}<br />
if (i == j)<br />
{<br />
printf ("%d is a prime number. \n", i);<br />
}<br />
}<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
[[File:Prime_Numbers_edit.png|600px|left|thumb|Figure 210: Qt Creator Edit Window]] <br />
<br clear=all><br />
<br />
2. Click on the build icon (hammer symbol) on the bottom left of the Qt Creator window. If the build was successful, a green progress bar will be full on the bottom right of the Qt Creator window.<br />
<br />
3. Click on the run icon (green arrow symbol) on the left hand side of Qt Creator. The program prints all prime numbers from 1 through 100 in the '''Application Output''' terminal. <br />
<br />
[[File:Final_Prime_Numbers.png|600px|left|thumb|Figure 21: Qt Creator Edit Window]] <br />
<br clear=all><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /****************************************** Conclusion ******************************************/ --> <br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:conclusion | initials=BS | title=Getting Started with Qt Creator | desc=The following page can be used to get familiarized with EMAC Qt Creator. | project=OE 5.0 }}<br />
This page is a quick getting started tutorial on how to use EMAC Qt Creator for the first time. It shows you how to create an EMAC C Project, how to set up the necessary kits for your target board, how to set up your target board, and how to build and run example projects.<br />
<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /****************************************** More Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!--{{:Templateimpl:moreinfo | initials=BS | title=Getting Started with the EMAC OE SDK | desc=Basic tutorial for using the EMAC OE SDK. | project=OE 5.0 }}<br />
* --><br />
<br />
{{:Templateimpl:whatnext | initials=BS | title=Getting Started with the EMAC OE SDK | desc=Basic tutorial for using the EMAC OE SDK. | project=OE 5.0 }}<br />
* [[Getting_Started_with_the_EMAC_OE_SDK | Getting Started with the EMAC OE SDK ]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=Configuring_Qt_Creator&diff=5393Configuring Qt Creator2016-06-08T16:13:42Z<p>Awichmann: </p>
<hr />
<div>{{todo| Complete (11.09.2015-13:55->KY+)(11.13.2015-13:00->MG+)(11.17.2015-11:25->KY+)(11.17.2015-12:25->MD+)(11.17.2015-14:30->MG+)|Brian Serrano|project=oe 5,bs,KY,MG,MD,Complete}}<br />
<br />
{{#seo:<br />
|title=Configuring Qt Creator<br />
|titlemode=append<br />
|keywords=Qt Creator<br />
|description=<br />
}}<br />
{{caution| This page is written for customers that have installed Qt Creator using the installer directly from the Qt website, as described on [[Installing_QtCreator | this page]]. This method is not recommended.<br />
<br /><br />
The recommended method is to use Ubuntu 12.04 LTS or (preferably) 14.04 LTS, and install using apt as described on [[Install_the_EMAC_SDK | this page]].}}<br />
<br />
==Configure Kits in Qt Creator==<br />
<br />
<cl><br />
1. [[Installing_QtCreator | Install Qt Creator]], which, by default, is installed in the user's home directory.<br />
* Open Qt Creator<br />
{{cli | username=developer | hostname=ldc |/home/developer/qtcreator-3.1.0/bin/qtcreator}}<br />
<br />
* Click Tools->Options...<br />
* Select '''Devices''' from the left pane<br />
i. Press the '''Add...''' button<br />
* Select Generic Linux Device, then press '''Start Wizard'''<br />
* Type in a name, the IP address, user name, and password for the device<br />
* Click '''Next >'''<br />
* Click '''Finish'''<br />
* A connection will be established with the target device<br />
* Click Apply<br />
* Select Build & Run from the left pane<br />
* Select the '''Qt Versions''' tab<br />
i. Press the '''Add...''' button<br />
* Navigate to <code>/opt/emac/5.X/sysroots/x86_64-emacsdk-linux/usr/bin/</code><br />
* Select qmake<br />
* Press apply<br />
<br />
[[File:Qt_Kit_qmake.png|500px|thumb|left|Figure 1: Qt Creator Kit Qmake]]<br />
<br />
<br clear=all><br />
{{note| The ''target_arch'' variable referenced below can either be ''armv5e-emac-linux-gnueabi'' for ARM targets or ''i586-emac-linux'' for x86 targets.}}<br />
<br />
* Select the '''Compilers''' tab<br />
i. Press '''Add->GCC'''<br />
* Type in a name such as OE5 ARM GCC<br />
* Click Browse...<br />
* Navigate to <code>/opt/emac/5.X/sysroots/x86_64-emacsdk-linux/usr/bin/'''''target_arch'''''/</code><br />
* Select '''''target_arch'''''-gcc<br />
<br />
[[File:Qt_Kit_GCC.png|500px|thumb|left|Figure 2: Qt Creator Kit Compiler]]<br />
<br />
<br clear=all><br />
<br />
* Select the '''Debuggers''' tab<br />
i. Press '''Add'''<br />
* Type in a name such as GDB OE5 ARM<br />
* Click '''Browse...'''<br />
* Navigate to <code>/opt/emac/5.X/sysroots/x86_64-emacsdk-linux/usr/bin/'''''target_arch'''''/</code><br />
* Select '''''target_arch'''''-gdb<br />
<br />
[[File:Qt_Kit_GDB.png|500px|thumb|left|Figure 3: Qt Creator Kit Debugger]]<br />
<br />
<br clear=all><br />
<br />
* Select the '''Kits''' tab<br />
i. Press the '''Add''' button<br />
* Type in a name such as OE 5.0 arm<br />
* Change the '''Device type:''' to Generic Linux Device<br />
* Change the '''Device:''' to the one configured in step 3<br />
* Type <code>/opt/emac/5.X/sysroots/'''''target_arch'''''</code> into the '''Sysroot''' line<br />
* Change the '''Compiler:''' to the one created in step 6<br />
* Change the '''Debugger:''' to the one created in step 7<br />
* Change the '''Qt version:''' to the one created in step 5<br />
* Type '''''target_arch'''''-g++ into the '''Qt mkspec''' line<br />
* Press '''Apply''' then '''Ok'''<br />
<br />
<br />
[[File:Qt_Kit.png|500px|thumb|left|Figure 4: Qt Creator Kit]]<br />
<br />
<br clear=all><br />
</cl><br />
== Conclusion ==<br />
At this time, Qt Creator is configured similarly to the pre-configured version of Qt Creator that is distributed by EMAC. All other pages referencing Qt Creator should apply to this configured version as well.<br />
==== Where to go next ====<br />
* [[Creating_a_New_EMAC_OE_SDK_Project_with_qmake_in_Qt_Creator | Creating a new project in Qt Creator]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=Creating_a_New_EMAC_OE_SDK_Project_with_CMake&diff=5392Creating a New EMAC OE SDK Project with CMake2016-06-08T16:12:41Z<p>Awichmann: </p>
<hr />
<div>{{todo| Complete (08.07.2015-12:59->KY+)(08.17.2015-12:07->KY+)(08.17.2015-14:25->KY+)(08.17.2015-17:40->MD-)(11.03.2015-13:38->KY+);(11.04.2015-11:20->MD-)(11.04.2015-13:04->KY+-);(11.04.2015-13:25->MD+)(11.04.2015-14:45->MG+)|Klint Youngmeyer| project=OE 5.0,KY,MD,Complete }}<br />
{{#seo:<br />
|title=Creating a New EMAC OE SDK Project with CMake<br />
|titlemode=append<br />
|keywords=CMakeLists.txt, CMake cross-compiling, CMake, CMake ARM, oe_init_project<br />
|description=Creating an EMAC OE SDK project which uses the CMake build system.<br />
}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
The EMAC OE SDK is distributed with the intent that CMake be used with the EMAC OE toolchain and libraries to build most projects. This page demonstrates the process of creating and compiling a new project with CMake, and running it on the target machine.<br />
<br />
__TOC__<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:geninfo | initials=KY | title=Creating a New EMAC OE SDK Project with CMake | desc=Creating an EMAC OE SDK Project which Builds via CMake | project=OE 5.0 }}<br />
Creating a new EMAC CMake project is accomplished with the use of the <code>oe_init_project</code> program. This program is included in the <code>emac-tools-projects</code> apt package, which is part of the EMAC SDK. For instructions on installing the EMAC SDK, please see [[Getting_Started_with_the_EMAC_OE_SDK#Installing_EMAC_SDK |this section]] in the getting started guide.<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:using | initials=KY | title=Creating a New EMAC OE SDK Project with CMake | desc=Creating an EMAC OE SDK project which Builds with CMake | project=OE 5.0 }}<br />
<br />
This section demonstrates how to use the EMAC CMake tool, <code>oe_init_project</code>, to generate CMake files automatically for a project. When using the EMAC SDK there are currently two options for cross compiling:<br />
* <code>arm</code><br />
* <code>x86</code><br />
For the purposes of this guide, the <code>arm</code> option will be used for the listed examples.<br />
=== Host Machine Compiling ===<br />
Navigate to the directory where the project will be located. Then run the CMake new project tool, <code>oe_init_project</code>.<br />
{{clo}}<br />
{{clio | username=developer | hostname=ldc | pwd=~/projects | oe_init_project -n hello.c }}<br />
If desired, please enter a name for this project, otherwise press Enter to use the default: hello_emac <br /><br />
<br />
-- Creating new project directory... <br /><br />
-- Creating new source file... <br /><br />
-- Building custom CMakeLists.txt file... <br /><br />
-- Done. <br /><br />
<br />
Do you want to create a build directory for this project? (y/n) y <br /><br />
<br />
-- Creating build directory... <br /><br />
<br />
Do you want to run cmake for this project? (y/n) y <br /><br />
<br />
-- Using system compiler <br /><br />
-- The C compiler identification is GNU 4.8.2 <br /><br />
-- The CXX compiler identification is GNU 4.8.2 <br /><br />
-- Check for working C compiler: /usr/bin/cc <br /><br />
-- Check for working C compiler: /usr/bin/cc -- works <br /><br />
-- Detecting C compiler ABI info <br /><br />
-- Detecting C compiler ABI info - done <br /><br />
-- Check for working CXX compiler: /usr/bin/c++ <br /><br />
-- Check for working CXX compiler: /usr/bin/c++ -- works <br /><br />
-- Detecting CXX compiler ABI info <br /><br />
-- Detecting CXX compiler ABI info - done <br /><br />
-- Configuring done <br /><br />
-- Generating done <br /><br />
-- Build files have been written to: /home/developer/projects/hello_emac/hello_emac-build <br /><br />
<br />
Do you want to compile this project? (y/n) y<br />
<br />
Scanning dependencies of target hello_emac <br /><br />
[100%] Building C object CMakeFiles/hello_emac.dir/hello.c.o <br /><br />
Linking C executable hello_emac <br /><br />
[100%] Built target hello_emac <br /><br />
{{clos}}<br />
<br />
The executable, in this case, is now inside the <code> hello_emac/hello_emac-build </code> directory.<br />
FinalDraft<br />
=== Target Machine Compiling ===<br />
<br />
The CMake project script has now made a project directory that contains the following:<br />
* <code>CMakeLists.txt</code><br />
* Source code file (<code>hello.c</code> in this case)<br />
* <code>README</code> file<br />
* Desktop Build Directory (<code>hello_emac-build</code> in this case)<br />
<br />
Despite what the file extension implies, the <code>CMakeLists.txt</code> is actually a script which contains the required information to automatically create a <code>Makefile</code> for any supported architecture. This file was generated by the EMAC <code>oe_init_project</code> tool, and will need to be modified over time as a project grows. The comments in the <code>CMakeLists.txt</code> file generated by the EMAC tool will provide a good starting point for how to add additional source files and how to perform other common tasks related to maintaining your CMake build system as you develop your software project. The CMake project provides extensive documentation on how to work with these files.<br />
<br />
The source code file generated by the script (<code>hello.c</code>) contains a basic Hello World style program. This can provide a starting point for your application, or can be replaced by another source file with the same name.<br />
<br />
The <code>README</code> file contains more information on using <code>CMake</code> with the EMAC OE 5.X SDK. You may refer to this file for quick reference.<br />
<br />
The Desktop Build Directory (<code>hello_emac-build</code>) contains the executable, <code>hello_emac</code>, the <code>Makefile</code>, and various cache files. These were automatically created by CMake and by the build system, and can be recreated at any time.<br />
<br />
It is useful to have a Desktop Build Directory because it is easier (in the beginning) to use the desktop to verify all code changes before cross-compiling for a target board. This will be useful until the application under development depends upon resources which are only available on the target hardware, such as certain device drivers or the touchscreen (if so equipped).<br />
<br />
Use the following steps to cross-compile the project and send it to a target board.<br />
<br /><br />
<cl><br />
1. In a terminal, navigate to the base directory of the project. {{note | If the architecture of the target board you're using for your appliction <code>x86</code>, then you will need to change all occurrences of <code>arm</code> in the following sections below to <code>x86</code>.}}<br />
* Create a build directory for cross compiling. <br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac | mkdir hello_emac-build-arm }} <br />
* Navigate into the newly created directory.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac | cd hello_emac-build-arm }} <br />
* Run <code>cmake</code> using the target architecture.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | 1 = cmake .. -DARCH:STRING=arm }} <br />
* Compile the code using <code>make</code>.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | make }} <br />
The <code> make </code> command creates the target executable in the <code>hello_emac-build-arm</code> directory.<br />
* Now copy the executable to the target board. For information on copying the executable file, see the [[ #Transferring_Files | Transferring Files ]] section.<br />
</cl><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:examples | initials=KY | title=Creating a New EMAC OE SDK Project with CMake | desc=Creating an EMAC OE SDK project for use with CMake | project=OE 5.0 }}<br />
This section illustrates how to complete various tasks associated with configuring and building a CMake project.<br />
===Debug Build Types===<br />
By default, new projects will have the Debug build type. To compile the project with the Release or Minimum Size Release build types, there are two options:<br />
*Make a secondary (or tertiary) build directory. (Recommended)<br />
*Clean the current build directory and re-run CMake.<br />
The different levels of build type correlate to usage of different C Flags. When cross-compiling, these C Flags are located in the <code>toolchain.<architecture>.cmake</code> files located, by default, in <code>/opt/emac/5.X/</code>, with ''X'' being the specific version of SDK. The following table will give a brief overview of the different build types.<br />
<br />
<br />
<br /><br />
<br /><br />
<table style="border-style:double; border-width:2px; margin-top:-10%; margin-bottom:-3%;"><tr style="border-style:double; border-width:2px;"><td>'''Name:'''</td><td>'''Type:'''</td><td>'''Debugging Features:'''</td><td>'''Description:'''</td><td>'''Optimization Level:'''</td><td>'''C Flags Used:'''</td></tr><br />
<br />
<br />
<tr style="border-style:solid; border-width:2px;"><td>Release</td><td>Release</td><td>disabled</td><td>Release targeted build optimized for best performance.</td><td>-O2</td><td>CMAKE_C_FLAGS_RELEASE</td></tr><br />
<br />
<br />
<tr style="border-style:solid; border-width:2px;"><td>MinSizeRel</td><td>Release</td><td>disabled</td><td>Release targeted build with experimental optimizations. (Builds using this should be thoroughly tested.)</td><td>-O3</td><td>CMAKE_C_FLAGS_MINSIZEREL</td></tr><br />
<br />
<br />
<tr style="border-style:solid; border-width:2px;"><td>Debug</td><td>Debug</td><td>enabled</td><td>A standard debugging oriented build, optimized for improved debugging.</td><td>-O0</td><td>CMAKE_C_FLAGS_DEBUG</td></tr><br />
<br />
</table><br />
<br /><br />
<br /><br />
<br /><br />
If you wish to add any additional flags to a build type, they can be defined in the project's <code>CMakeList.txt</code> file as shown in the code snippet below.<br />
<syntaxhighlight lang="cmake"><br />
project(example)<br />
<br />
SET(MAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -Wpedantic")<br />
<br />
# This will add the -Wall and -Wpedantic options to the existing debug build flags<br />
</syntaxhighlight><br />
<!--{{warning | This is really useful information for any developer. Knowing the level of optimization is insightful, so that should be included. Knowing whether or not the build was stripped of debugging information is important if they ever intend to release binaries to the public (such as for updates) and to ensure small size and max speed. Knowing what preprocessor defines are #def'd with a target is really useful when writing debugging code.<br />
<br />
<br />
I would put all this in a table like the example I made above (but accurate and complete). The border-radius and shadows will need to be overridden to make it look right. Can always use css or a template for this.<br />
}}--><br />
<br />
<br />
====Method 1: Create separate build directory====<br />
To create a Release build using the 1st (recommended) method, use the following steps. This method is recommended because it allows both the Debug and the Release executable to exist at the same time.<br />
<cl><br />
1. In a terminal, navigate to the base directory of the project.<br />
* Create a new release build directory<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac | mkdir hello_emac-build-arm-release }}<br />
* Change directories into the newly created directory.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac | cd hello_emac-build-arm-release }} <br />
* Run <code>cmake</code> using the target architecture.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | 1 = cmake .. -DARCH:STRING=arm -DCMAKE_BUILD_TYPE:STRING=Release }}{{note | The string 'MinSizeRel' can be used in place of 'Release' for a potentially smaller executable}}<br />
* Compile the code using <code>make</code>.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | make }} <br />
</cl><br />
<br /><br />
====Method 2: Re-use build directory====<br />
Another option for creating a release build is as follows:<br />
<cl><br />
1. In a terminal, navigate to the build directory of the project.<br />
* Clean the directory with <code>make</code><br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | 1 = make clean}}<br />
* Run <code>cmake</code> using the target architecture.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | 1 = cmake .. -DARCH:STRING=arm -DCMAKE_BUILD_TYPE:STRING=Release }}{{note | The string 'MinSizeRel' can be used in place of 'Release' for a potentially smaller executable}}<br />
* Compile the code using <code>make</code>.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | make }} <br />
</cl><br />
<br />
===Renaming the Target Executable===<br />
To rename the executable, the <code>ADD_EXECUTABLE()</code> function arguments must be changed. The first argument refers to the name of the executable, and the second refers to the source code file.<br />
<br />
To change the name of the executable from "main" to "new_name", change the <code>ADD_EXECUTABLE()</code> from the first code box to the second code box.<br />
<syntaxhighlight lang="cmake"><br />
ADD_EXECUTABLE(main main.cpp)<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="cmake"><br />
ADD_EXECUTABLE(new_name main.cpp)<br />
</syntaxhighlight><br />
<br />
===Adding Include Files===<br />
To add an include file and implementation file (in this case, the <code>tools.cpp</code> and <code>tools.h</code> in the <code>util</code> and <code>include</code> directory, respectively) to the CMake project, changes will need to be made to the CMakeLists.txt file. Please refer to the code sample below.<br />
<br />
# The directory to be included must be specified by the <code>INCLUDE_DIRECTORIES()</code> function. The variable <code>${PROJECT_SOURCE_DIR}</code> refers to the base path of the project which is generally where this <code>README</code> file is located.<br />
# The <code>SOURCES</code> must be set. This list of files should include all of the source files in the project.<br />
<br />
<syntaxhighlight lang="cmake"><br />
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}include)<br />
<br />
SET(SOURCES<br />
${PROJECT_SOURCE_DIR}main.cpp<br />
${PROJECT_SOURCE_DIR}util/tools.cpp<br />
)<br />
SET(HEADERS<br />
${PROJECT_SOURCE_DIR}include/tools.h<br />
)<br />
<br />
ADD_EXECUTABLE(main ${SOURCES} ${HEADERS})<br />
</syntaxhighlight><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /****************************************** More Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:moreinfo | initials=KY | title=Creating a New EMAC OE SDK Project with CMake | desc=Creating an EMAC OE SDK project for use with CMake | project=OE 5.0 }}<br />
<!--{{:Templateimpl:whatnext | initials=KY | title=Creating a New EMAC OE SDK Project with CMake | desc=Creating an EMAC OE SDK project for use with CMake | project=OE 5.0 }}--><br />
* [[System_Log_In | System Log In]]<br />
* [[Serial_Connections | Serial Connections ]]<br />
* [[Network_Connections | Network Connections ]]<br />
* [[System_Log_In | System Log In ]]<br />
* [[Remote_Debugging_EMAC_OE_SDK_Projects_with_gdbserver | Remote Debugging EMAC OE SDK Projects with gdbserver ]]<br />
* [[System_Logging | System Logging ]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=OE50:Packages&diff=5391OE50:Packages2016-06-08T16:09:57Z<p>Awichmann: </p>
<hr />
<div>{{todo|(1-12-15-12:30->MG+)(1.12.15-18:05->MD+)(11.10.15-16:05->KY+)|Michael Gloff, Mike Dean|project=oe 5,mg,md,Complete}}<br />
<br />
{{#seo:<br />
|title=EMAC OE 5.X Release information<br />
|titlemode=append<br />
|keywords=OE 5.X Standard Packages,Release information<br />
|description=Information about EMAC OE 5.X Release.<br />
}}<br />
<br />
{{DISPLAYTITLE:EMAC OE 5.X Release Information}}<br />
<br />
The OE 5.0.''X'' release represents the next generation of embedded Linux. The new crop of embedded machines on the market have become powerful enough to justify bringing some of the best parts of Linux distributions that are targeted towards servers and desktops into the embedded realm. OE 5.0 is designed to make developing software for embedded Linux easier than ever before.<br />
<br />
===New Features===<br />
<br />
Quite a few new features are being introduced with OE 5.0 to support the goal of streamlining the development process and improving the embedded Linux software development experience. These features can be broken down into the following categories.<br />
<br />
====Operating System====<br />
<br />
The underlying operating system, Linux, has seen a refresh to the much more modern 3.10 kernel on ARM, and the 3.14 kernel on x86 systems. This updated kernel provides improved support for the ARM architecture, new drivers for new hardware, and the Device Tree File System for ARM hardware. Device Tree is a new way of specifying hardware parameters which pulls memory offset specifications (and similar) out of the kernel binary and puts them into a separate file which can be maintained independently of the kernel.<br />
<br />
====Filesystem====<br />
<br />
OE 5.0 uses more modern filesystems to enable faster access to files, larger maximum filesystem sizes, and improved wear leveling on the underlying flash devices. The following filesystems are now a part of OE 5.0:<br />
<br />
* '''ext4''' - for eMMC/mSATA/SD/CF devices<br />
* '''JFFS2''' - for NAND flash devices<br />
<br />
The filesystem is now generated using the Yocto build system, which enables a more streamlined and simpler process for generating custom filesystems based on our available base images. The Yocto Project is hosted by engineers at Intel, and is built upon the time tested OpenEmbedded project.<br />
<br />
====SDK====<br />
<br />
EMAC OE 5.0 includes a new SDK with an updated GNU gcc compiler (version 4.9.1) which brings enhanced optimization capabilities, advanced code generation, and improved (preliminary) support for C++11 features. The gcc cross compilers come bundled with support for the CMake build system which greatly eases the work involved in creating a build system for today's complex software. The CMake system can be used from the command line as well as from the IDE, and is the default build system for new projects. EMAC OE 5.0 provides tools for generating the base CMake files from the commandline or from the IDE, allowing you to get started quickly whether you choose to use the commandline or an IDE for your development work.<br />
<br />
====IDE====<br />
<br />
EMAC OE 5.0 now includes the Qt Creator IDE as the standard development environment. This IDE provides a polished, sophisticated development environment which can be used for developing any type of application in C or C++. For Qt, it provides a sophisticated GUI editor and code generation wizards to enable RAD. The integrated help system is of use whether the issue with the application under development is related to Qt, Linux, or just standard C/C++.<br />
<br />
====Tools====<br />
<br />
EMAC OE 5.0 now includes a wealth of tools to enable development to proceed faster than ever before. These tools ease the effort required for numerous development tasks.<br />
<br />
Some of the development work in a typical project requires performing complex tasks which are done so infrequently that most developers need to look them up each time they're performed. These tasks typically have eaten into a project's time by taking much longer than anticipated to perform. EMAC OE 5.0 includes tools to make these tasks quick, simple, and intuitive. These tasks include:<br />
<br />
* Timezone Configuration.<br />
* Splashscreen Configuration.<br />
* Touchscreen Calibration.<br />
* Configuring software to automatically start on boot.<br />
* Finding the serial ports on the development desktop from among the dozens of device nodes which could all be ports.<br />
* Creation of desktop icons for opening serial terminals for your devices.<br />
* Configuring a system to log messages to a remote syslog server to enable capturing everything that happened on a machine right up to the point where it froze (without losing any messages).<br />
<br />
Other tasks, which are performed often by developers, can be cumbersome. EMAC OE 5.0 provides tools to make these chores easy, too:<br />
<br />
* Sending a compiled binary to a remote board and executing it.<br />
* Debugging a program on a remote board.<br />
* Ensuring the root filesystem is writeable before attempting to copy files to it, or changing files that are already there.<br />
* Maintaining a list of remote machines, with their IP addresses automatically updated as they change (usually due to DHCP leases handing out different addresses). The remote machines can be addressed by a name assigned by the developer, or by MAC or IP address, to perform any of the above tasks, plus:<br />
** Copy files to/from remote machines.<br />
** Browse the remote filesystem.<br />
** Ping the boards to see if they're alive.<br />
** Run programs on the remote board (any program).<br />
* Support developer scripts to automate routine tasks during the development process.<br />
<br />
Using these tools, the developer can easily create scripts to perform the following routine tasks without having to enter a password for the remote board a single time while running the script. A typical script might perform the following tasks:<br />
<br />
# Shut down the webserver on the remote board.<br />
# Remove all the web files from the remote board (to ensure there won't be stale files left behind), then replace them with the current locally held set of web files from the developer's desktop.<br />
# Remove and replace custom binary executables on the remote board.<br />
# Update the autostart scripts for executing programs on boot to ensure that they will start the current crop of programs that need to be run.<br />
# Copying configuration files into place on the remote board.<br />
# Copying content files (pictures, documents, videos, sound clips, database files, etc.) onto the remote board.<br />
# Send to the board a script to verify consistency of the files installed and/or to perform some final installation steps, and execute it out of a RAM disk.<br />
# Reboot the machine so that the developer can ensure it will come up into the desired state through every step of the development process.<br />
<br />
The above tasks have typically been very time consuming tasks, which has led to developers usually only performing a minimal subset of these tasks during each phase of the development cycle.<br />
<br />
EMAC OE 5.0 tools make it easy to provide these tasks every time, which, in addition to highlighting the cause of a problem as soon as possible after a change causes it, enables the following additional benefits:<br />
<br />
* The script can be used to program a new board, and continue development painlessly, when the previous development hardware has been compromised by an unexpected event caused by a bug in some part of the system under development or by some other spurious event.<br />
* Additional units can be programmed to provide the necessary equipment for other developers on a team.<br />
* Multiple units can easily be updated simultaneously. &nbsp;With the IP address tracking of OE PhoneHome, no scripts will need to be edited to account for changing IP addresses so long as the boards are referred to by name or by MAC address in the script which uses OE PhoneHome.<br />
* Small production runs can be filled easily in house without the need to have a custom image at EMAC's facility, since the script can be used to apply your latest and greatest version of your software to the standard or customized EMAC OE Linux image which was provided to you by EMAC. This can often prove useful to start pushing hardware out the door with your latest software to the customers who've been waiting for it the day you've finished it, while you wait for a larger shipment of pre-programmed hardware to come from EMAC with your updated filesystem image.<br />
<br />
=== Easy Installation on Ubuntu Linux ===<br />
<br />
EMAC OE 5.0 software and documentation can now be installed more easily than ever before! No longer is the process a long, drawn out, cumbersome task. With EMAC OE 5.0, you can now get up and running with EMAC's offerings before you even take your first break in the morning.<br />
<br />
EMAC OE 5.0 features packages prebuilt for our supported Linux distributions, Ubuntu 12.04 LTS and Ubuntu 14.04 LTS. These versions of Ubuntu were chosen for their stability and high overall quality. With the Ubuntu repository server at EMAC's facility, the EMAC SDK, IDE, tools, examples, and documentation packages can now be installed as easily as any other software provided by Ubuntu. Simply apt-get install or use the Ubuntu Software Center to install and/or update these packages from EMAC (after you have configured your machine to point to EMAC's apt repository).<br />
<br />
===Release Testing===<br />
<br />
EMAC has completely revamped its release testing for the EMAC OE 5.0 release series. The new testing process provides a far more comprehensive and exhaustive method of testing our software and hardware together to ensure the highest quality experience possible. Throughout the 5.0 release series, we will continue to improve and refine this testing process to ensure that each release is even better than the previous.<br />
<br />
==Provided Software==<br />
<br />
EMAC OE 5.0 provides a number of software packages which weren't provided with previous versions of EMAC OE. These new packages provide additional capabilities and extend existing capabilities. These packages were carefully chosen to ensure that the best available tools are provided across the full range of tasks which need to be performed on EMAC OE machines.<br />
<br />
The following list shows the new tools which have been added or updated, and what you will gain from each one.<br />
<br />
* '''ethtool''' - This tool will allow you to inspect the network interfaces at the hardware level, allowing you to see if the physical link is good and, if so, what speed it's running at. No more guessing as to whether your networking issue is a hardware or software issue. If this shows your hardware is working correctly, you know it's a software configuration issue.<br />
* '''lighttpd''' - This is a much more sophisticated web server than the one provided by Busybox. It was a very popular custom package for the 4.0 series, so it is now included by default in 5.0.<br />
* '''vim''' - The real vim, not the Busybox version of vi. This provides syntax highlighting, undo, redo, macros, last position memory, and all of the other powerful features of vim that are missing from Busybox vi.<br />
* '''wget''' and '''ftpput''' - These provide a simple way to retrieve files from a webserver and to push them to a webserver. This can make retrieving updated files much simpler.<br />
* '''strace''' - Shows the system calls made by any executable which is run through it. This is a very powerful tool for debugging.<br />
* '''ntp''' and '''ntpdate''' - These tools provide a method to update the system clock to the time provided by the atomic clocks which share their time over the Internet. &nbsp;These full versions are more reliable and more sophisticated than the Busybox version.<br />
* '''minicom''' - Much more sophisticated than microcom, this tool provides the same powerful terminal client you use on your desktop.<br />
* '''htop''' - This tool provides a sophisticated view into what's running on your system.<br />
* '''sudo''' - This tool allows for execution of a program with the elevated privileges of the superuser.<br />
* '''rsync''' - This tool allows for easy remote file synchronization between two computers.<br />
* '''file''' - This tool lets you inspect files to determine what type they are and various properties of them.<br />
* '''evtest''' - This tool provides a way to diagnose issues with input events.<br />
* '''bash''' - The real bash shell. Much more powerful than the Busybox shell, and much better for scripting.<br />
* '''procps''' - The full suite of process utilities, such as ps, kill, watch, uptime, free, pgrep, sysctl, and top, the full versions of these tools provide the useful functionality which was missing from the Busybox versions.<br />
* '''inotify-tools''' - These tools provide filesystem notifications which enable scripts and programs to only perform events after a file or directory has been modified/created/deleted/etc. No polling required.<br />
* '''tftp client''' - Easily download files from a tftp server with the integrated tftp client.<br />
* '''iptables''' - The standard tool for configuring firewalls on Linux.<br />
* '''tcpdump''' - An invaluable tool for debugging firewalls and TCP/UDP/IP connections of any kind.<br />
<br />
This partial list shows just the highlights of the new software that's part of EMAC OE 5.0. &nbsp;All of the software previously provided in OE4 is available in 5.0 as well.<br />
<br />
Other software provided by OE 5.0 includes:<br />
<br />
* '''nano''' - Basic text editor.<br />
* '''amidi/aplaymidi/arecordmidi''' - Simple MIDI music player/recorder/controller.<br />
* '''candump/canecho/cansend/cansequence''' - Tools for working with a CAN bus (included only on systems which have CAN support).<br />
* Tools for working with flash memory.<br />
* '''opkg''' - Package management tools.<br />
* '''mpg123''' - MPEG Audio Decoder/Player<br />
* Memory testing tools.<br />
* '''Busybox''' - The embedded "Swiss Army Knife"<br />
* '''Openssh sshd''' - SSH server (and client).<br />
<br />
== See Also ==<br />
<br />
* [[ EMAC_OE_50_Add-on_Packages | EMAC OE 5.X Add-on Packages ]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=OE50:Packages&diff=5390OE50:Packages2016-06-08T16:08:34Z<p>Awichmann: </p>
<hr />
<div>{{todo|(1-12-15-12:30->MG+)(1.12.15-18:05->MD+)(11.10.15-16:05->KY+)|Michael Gloff, Mike Dean|project=oe 5,mg,md,Complete}}<br />
<br />
{{#seo:<br />
|title=EMAC OE 5.X Release information<br />
|titlemode=append<br />
|keywords=OE 5.X Standard Packages,Release information<br />
|description=Information about EMAC OE 5.X Release.<br />
}}<br />
<br />
{{DISPLAYTITLE:EMAC OE 5.X Release Information}}<br />
<br />
The OE 5.0.''x'' release represents the next generation of embedded Linux. The new crop of embedded machines on the market have become powerful enough to justify bringing some of the best parts of Linux distributions that are targeted towards servers and desktops into the embedded realm. OE 5.0 is designed to make developing software for embedded Linux easier than ever before.<br />
<br />
===New Features===<br />
<br />
Quite a few new features are being introduced with OE 5.0 to support the goal of streamlining the development process and improving the embedded Linux software development experience. These features can be broken down into the following categories.<br />
<br />
====Operating System====<br />
<br />
The underlying operating system, Linux, has seen a refresh to the much more modern 3.10 kernel on ARM, and the 3.14 kernel on x86 systems. This updated kernel provides improved support for the ARM architecture, new drivers for new hardware, and the Device Tree File System for ARM hardware. Device Tree is a new way of specifying hardware parameters which pulls memory offset specifications (and similar) out of the kernel binary and puts them into a separate file which can be maintained independently of the kernel.<br />
<br />
====Filesystem====<br />
<br />
OE 5.0 uses more modern filesystems to enable faster access to files, larger maximum filesystem sizes, and improved wear leveling on the underlying flash devices. The following filesystems are now a part of OE 5.0:<br />
<br />
* '''ext4''' - for eMMC/mSATA/SD/CF devices<br />
* '''JFFS2''' - for NAND flash devices<br />
<br />
The filesystem is now generated using the Yocto build system, which enables a more streamlined and simpler process for generating custom filesystems based on our available base images. The Yocto Project is hosted by engineers at Intel, and is built upon the time tested OpenEmbedded project.<br />
<br />
====SDK====<br />
<br />
EMAC OE 5.0 includes a new SDK with an updated GNU gcc compiler (version 4.9.1) which brings enhanced optimization capabilities, advanced code generation, and improved (preliminary) support for C++11 features. The gcc cross compilers come bundled with support for the CMake build system which greatly eases the work involved in creating a build system for today's complex software. The CMake system can be used from the command line as well as from the IDE, and is the default build system for new projects. EMAC OE 5.0 provides tools for generating the base CMake files from the commandline or from the IDE, allowing you to get started quickly whether you choose to use the commandline or an IDE for your development work.<br />
<br />
====IDE====<br />
<br />
EMAC OE 5.0 now includes the Qt Creator IDE as the standard development environment. This IDE provides a polished, sophisticated development environment which can be used for developing any type of application in C or C++. For Qt, it provides a sophisticated GUI editor and code generation wizards to enable RAD. The integrated help system is of use whether the issue with the application under development is related to Qt, Linux, or just standard C/C++.<br />
<br />
====Tools====<br />
<br />
EMAC OE 5.0 now includes a wealth of tools to enable development to proceed faster than ever before. These tools ease the effort required for numerous development tasks.<br />
<br />
Some of the development work in a typical project requires performing complex tasks which are done so infrequently that most developers need to look them up each time they're performed. These tasks typically have eaten into a project's time by taking much longer than anticipated to perform. EMAC OE 5.0 includes tools to make these tasks quick, simple, and intuitive. These tasks include:<br />
<br />
* Timezone Configuration.<br />
* Splashscreen Configuration.<br />
* Touchscreen Calibration.<br />
* Configuring software to automatically start on boot.<br />
* Finding the serial ports on the development desktop from among the dozens of device nodes which could all be ports.<br />
* Creation of desktop icons for opening serial terminals for your devices.<br />
* Configuring a system to log messages to a remote syslog server to enable capturing everything that happened on a machine right up to the point where it froze (without losing any messages).<br />
<br />
Other tasks, which are performed often by developers, can be cumbersome. EMAC OE 5.0 provides tools to make these chores easy, too:<br />
<br />
* Sending a compiled binary to a remote board and executing it.<br />
* Debugging a program on a remote board.<br />
* Ensuring the root filesystem is writeable before attempting to copy files to it, or changing files that are already there.<br />
* Maintaining a list of remote machines, with their IP addresses automatically updated as they change (usually due to DHCP leases handing out different addresses). The remote machines can be addressed by a name assigned by the developer, or by MAC or IP address, to perform any of the above tasks, plus:<br />
** Copy files to/from remote machines.<br />
** Browse the remote filesystem.<br />
** Ping the boards to see if they're alive.<br />
** Run programs on the remote board (any program).<br />
* Support developer scripts to automate routine tasks during the development process.<br />
<br />
Using these tools, the developer can easily create scripts to perform the following routine tasks without having to enter a password for the remote board a single time while running the script. A typical script might perform the following tasks:<br />
<br />
# Shut down the webserver on the remote board.<br />
# Remove all the web files from the remote board (to ensure there won't be stale files left behind), then replace them with the current locally held set of web files from the developer's desktop.<br />
# Remove and replace custom binary executables on the remote board.<br />
# Update the autostart scripts for executing programs on boot to ensure that they will start the current crop of programs that need to be run.<br />
# Copying configuration files into place on the remote board.<br />
# Copying content files (pictures, documents, videos, sound clips, database files, etc.) onto the remote board.<br />
# Send to the board a script to verify consistency of the files installed and/or to perform some final installation steps, and execute it out of a RAM disk.<br />
# Reboot the machine so that the developer can ensure it will come up into the desired state through every step of the development process.<br />
<br />
The above tasks have typically been very time consuming tasks, which has led to developers usually only performing a minimal subset of these tasks during each phase of the development cycle.<br />
<br />
EMAC OE 5.0 tools make it easy to provide these tasks every time, which, in addition to highlighting the cause of a problem as soon as possible after a change causes it, enables the following additional benefits:<br />
<br />
* The script can be used to program a new board, and continue development painlessly, when the previous development hardware has been compromised by an unexpected event caused by a bug in some part of the system under development or by some other spurious event.<br />
* Additional units can be programmed to provide the necessary equipment for other developers on a team.<br />
* Multiple units can easily be updated simultaneously. &nbsp;With the IP address tracking of OE PhoneHome, no scripts will need to be edited to account for changing IP addresses so long as the boards are referred to by name or by MAC address in the script which uses OE PhoneHome.<br />
* Small production runs can be filled easily in house without the need to have a custom image at EMAC's facility, since the script can be used to apply your latest and greatest version of your software to the standard or customized EMAC OE Linux image which was provided to you by EMAC. This can often prove useful to start pushing hardware out the door with your latest software to the customers who've been waiting for it the day you've finished it, while you wait for a larger shipment of pre-programmed hardware to come from EMAC with your updated filesystem image.<br />
<br />
=== Easy Installation on Ubuntu Linux ===<br />
<br />
EMAC OE 5.0 software and documentation can now be installed more easily than ever before! No longer is the process a long, drawn out, cumbersome task. With EMAC OE 5.0, you can now get up and running with EMAC's offerings before you even take your first break in the morning.<br />
<br />
EMAC OE 5.0 features packages prebuilt for our supported Linux distributions, Ubuntu 12.04 LTS and Ubuntu 14.04 LTS. These versions of Ubuntu were chosen for their stability and high overall quality. With the Ubuntu repository server at EMAC's facility, the EMAC SDK, IDE, tools, examples, and documentation packages can now be installed as easily as any other software provided by Ubuntu. Simply apt-get install or use the Ubuntu Software Center to install and/or update these packages from EMAC (after you have configured your machine to point to EMAC's apt repository).<br />
<br />
===Release Testing===<br />
<br />
EMAC has completely revamped its release testing for the EMAC OE 5.0 release series. The new testing process provides a far more comprehensive and exhaustive method of testing our software and hardware together to ensure the highest quality experience possible. Throughout the 5.0 release series, we will continue to improve and refine this testing process to ensure that each release is even better than the previous.<br />
<br />
==Provided Software==<br />
<br />
EMAC OE 5.0 provides a number of software packages which weren't provided with previous versions of EMAC OE. These new packages provide additional capabilities and extend existing capabilities. These packages were carefully chosen to ensure that the best available tools are provided across the full range of tasks which need to be performed on EMAC OE machines.<br />
<br />
The following list shows the new tools which have been added or updated, and what you will gain from each one.<br />
<br />
* '''ethtool''' - This tool will allow you to inspect the network interfaces at the hardware level, allowing you to see if the physical link is good and, if so, what speed it's running at. No more guessing as to whether your networking issue is a hardware or software issue. If this shows your hardware is working correctly, you know it's a software configuration issue.<br />
* '''lighttpd''' - This is a much more sophisticated web server than the one provided by Busybox. It was a very popular custom package for the 4.0 series, so it is now included by default in 5.0.<br />
* '''vim''' - The real vim, not the Busybox version of vi. This provides syntax highlighting, undo, redo, macros, last position memory, and all of the other powerful features of vim that are missing from Busybox vi.<br />
* '''wget''' and '''ftpput''' - These provide a simple way to retrieve files from a webserver and to push them to a webserver. This can make retrieving updated files much simpler.<br />
* '''strace''' - Shows the system calls made by any executable which is run through it. This is a very powerful tool for debugging.<br />
* '''ntp''' and '''ntpdate''' - These tools provide a method to update the system clock to the time provided by the atomic clocks which share their time over the Internet. &nbsp;These full versions are more reliable and more sophisticated than the Busybox version.<br />
* '''minicom''' - Much more sophisticated than microcom, this tool provides the same powerful terminal client you use on your desktop.<br />
* '''htop''' - This tool provides a sophisticated view into what's running on your system.<br />
* '''sudo''' - This tool allows for execution of a program with the elevated privileges of the superuser.<br />
* '''rsync''' - This tool allows for easy remote file synchronization between two computers.<br />
* '''file''' - This tool lets you inspect files to determine what type they are and various properties of them.<br />
* '''evtest''' - This tool provides a way to diagnose issues with input events.<br />
* '''bash''' - The real bash shell. Much more powerful than the Busybox shell, and much better for scripting.<br />
* '''procps''' - The full suite of process utilities, such as ps, kill, watch, uptime, free, pgrep, sysctl, and top, the full versions of these tools provide the useful functionality which was missing from the Busybox versions.<br />
* '''inotify-tools''' - These tools provide filesystem notifications which enable scripts and programs to only perform events after a file or directory has been modified/created/deleted/etc. No polling required.<br />
* '''tftp client''' - Easily download files from a tftp server with the integrated tftp client.<br />
* '''iptables''' - The standard tool for configuring firewalls on Linux.<br />
* '''tcpdump''' - An invaluable tool for debugging firewalls and TCP/UDP/IP connections of any kind.<br />
<br />
This partial list shows just the highlights of the new software that's part of EMAC OE 5.0. &nbsp;All of the software previously provided in OE4 is available in 5.0 as well.<br />
<br />
Other software provided by OE 5.0 includes:<br />
<br />
* '''nano''' - Basic text editor.<br />
* '''amidi/aplaymidi/arecordmidi''' - Simple MIDI music player/recorder/controller.<br />
* '''candump/canecho/cansend/cansequence''' - Tools for working with a CAN bus (included only on systems which have CAN support).<br />
* Tools for working with flash memory.<br />
* '''opkg''' - Package management tools.<br />
* '''mpg123''' - MPEG Audio Decoder/Player<br />
* Memory testing tools.<br />
* '''Busybox''' - The embedded "Swiss Army Knife"<br />
* '''Openssh sshd''' - SSH server (and client).<br />
<br />
== See Also ==<br />
<br />
* [[ EMAC_OE_50_Add-on_Packages | EMAC OE 5.X Add-on Packages ]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=Creating_a_New_EMAC_OE_SDK_Project_with_qmake_in_Qt_Creator&diff=5389Creating a New EMAC OE SDK Project with qmake in Qt Creator2016-06-08T16:03:11Z<p>Awichmann: </p>
<hr />
<div>{{todo| Complete (11.10.2015-12:42->JJ+);(11.11.2015-16:05->JJ+);(11.12.2015-12:30->JJ+);(11.12.2015-14:30->MG+);(11.12.2015-14:50->JJ+);(11.12.2015-15:00->MG+);(11.12.2015-15:15->KY+)|Jeffrey Jung| project=OE 5.0,JJ,Complete,MG,KY }}<br />
{{#seo:<br />
|title=Creating the Project<br />
|titlemode=append<br />
|keywords=qmake, Qt Creator, Qt applications<br />
|description=Creating a New EMAC OE SDK Project with qmake in Qt Creator<br />
}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!--<span style="background:#00FF00;color:#FF0000;font-size:300%">'''''Put the page description text here.'''''</span>--><br />
Alongside the EMAC OE 5.X SDK, EMAC provides the Qt Creator IDE(Interactive Development Environment). A great feature of this IDE is its UI design tool that will allow developers to produce applications with a GUI for EMAC devices equipped with LCD displays. The UI is constructed by dragging and dropping objects to the application UI. Using slots and signals, developers can easily program a functional, interactive, and visually pleasing interface. These project requires Qt Creator's tool <code>qmake</code> to build these applications. <br />
__TOC__<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:bg | initials=JJ | title=Creating the Project | desc=Creating a New EMAC OE SDK Project with qmake in Qt Creator | project=OE 5.0 }}<br />
The user interface (UI) designer tool in Qt Creator can be used to develop applications reliant on a UI. Written in C++, these applications built using the EMAC OE SDK and the <code>qmake</code> tool can be deployed to EMAC carriers equipped with touch screen displays. Developers will be able to create software that is much more interactive with the user. For more information about Qt Creator, go to the [http://wiki.qt.io/Qt_Creator_Guidance Qt Creator Guidance] page.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:geninfo | initials=JJ | title=Creating the Project | desc=Creating a New EMAC OE SDK Project with qmake in Qt Creator | project=OE 5.0 }}<br />
This page will present a guide to create a basic application using Qt Creator. You'll not only write the source code, but also design a UI for the application. Once that is done, you'll compile the project and deploy it to run on a remote target machine. A "Hello World" project is used as an example to demonstrate how to use the UI designer and receive output from the IDE.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:using | initials=JJ | title=Creating the Project | desc=Creating a New EMAC OE SDK Project with qmake in Qt Creator | project=OE 5.0 }}<br />
<cl>1. Launch the EMAC Qt Creator. <br /><br /><br />
[[File:EMAC_Qt_Creator_Icon.png]]<br />
<br /><br /><br />
<br />
* Click on "New Project".<br /><br /><br />
[[File:Qtcreator_gui.png|800px]]<br />
<br /><br /><br />
<br />
* A new window will pop up to specify the type of project you will be coding for. Select '''Application''' under the Projects column.<br />
<br />
* Select '''Qt Widgets Application'''. <br /> <br /><br />
[[File:SelectQtWidgetApplication.png|800px]]<br />
<br /><br /><br />
<br />
* Click '''Choose'''. You'll be brought to another page requesting you to give the project a name and choose the location of the project. <br ><br /> [[File:QtAppName_Location.png| 800px]]<br />
<br /><br /><br />
<br />
* Once you've given your project a name and have determined the path to store the project, click '''Next'''.<br />
<br />
* Select the kit required for the device(s) on which you wish to run the application. In this example, all kits are selected, but this project will be deployed to an OE 5.0 ARM device. Click '''Next'''. <br /> <br /><br />
[[File:QtKitSelection.png|800px]]<br />
<br /><br /><br />
<br />
* Give the class a name and leave the base class as '''QMainWindow'''. The header, source, and form files will have the same name as the class name, but different extensions. These files may be modified if desired. Click '''Next''' to continue to the project summary.<br /> <br />[[File:ClassInfo.png|800px]]<br />
<br /><br /><br />
<br />
* In the summary window, click '''Finish''' to be begin developing the project.<br />
</cl><br />
<br />
<br />
For this example application, Qt will open <code>helloworld.cpp</code> in the editor. This is where the functionality of the application is implemented. Within <code>main.cpp</code>, a new object of the class will be created and launched. Almost all of the C++ code will be written in the class definition. The class definition is also capable of creating an managing UI elements, such as a push button. This example is designed to provide a quick start and won't demonstrate management of UI elements. More information on management of UI elements can be found at http://doc.qt.io/qtcreator/creator-using-qt-designer.html. <br />
<br />
===Modify deployment configurations===<br />
Before developing the project, you will need to make some modifications to allow the project to be displayed and run on the desired device.<br />
<br />
<cl>1. Start by double clicking on <code>HelloWorld.pro</code>.<br />
<br />
* Add the lines "<code>target.path = /tmp</code>" and "<code>INSTALLS += target</code>" at the bottom of the file. This will set the location of the object file of the project to the "<code>/tmp</code>" directory. The full path to the project will be "<code>/tmp/HelloWorld</code>" on the target device. <br /><br /><br />
[[File:DotProPathConfig.png|800px]]<br />
<br /><br /><br />
<br />
* Use <code>'''Ctrl + S'''</code> to save the file.<br />
<br />
* The run configurations can be modified in the '''Project''' tab at the left of the window. At the top of the '''Project''' page, click on '''Run''' under the desired kit.<br />
<br />
* Click on '''Details''' for '''Upload files via SFTP''' and make sure the '''Incremental deployment''' box is unchecked. <br />
<br />
* The <code>'''-qws'''</code> argument is required under the '''Run''' configuration to run the application as a Qt server application. <br /> <br /><br />
[[File:QtProjectRunConfig.png|800px]]<br />
</cl><br />
<br />
===Create a Device Profile===<br />
A profile will need to be created for your device in order for Qt Creator to deploy the application to it. <br />
<br />
<cl>1. Under the '''Tools''' drop down box, select '''Options'''.<br />
<br />
* Select '''Devices''' from the scroll area to the left of the '''Options''' window. <br /><br /><br />
[[File:Options_devices.png|800px]]<br />
<br /><br /> <br />
<br />
* Look to the top right of the window and click '''Add'''.<br />
<br />
* You'll be brought to the '''Wizard Selection''' window to identify the type of device your target is. Select '''Generic Linux Device'''. <br /> <br /><br />
[[File:Generic_linux.png]]<br />
<br /><br /><br />
<br />
* Click '''Start Wizard''' and set up the configuration for the device profile. Give the profile a name, set the device's IP Address, enter the username, and specify the authentication type. Provide a password if the authentication type requires it.<br /><br /><br />
[[File:9G45NewDeviceConnection.png]]<br />
<br /><br /><br />
<br />
* Click '''Next''' when all the proper information of the device is provided. <br />
<br />
* At the summary window, click '''Finish''' and a connection be tween the target device and the developer's desktop will be tested. <br /><br /> [[File:Device_test.png]].<br />
<br /><br /><br />
<br />
* When the test has completed successfully, click '''Close'''.<br />
* Click '''Apply''' in the '''Options''' window to save the profile.<br />
* Click on the '''Build & Run''' section from the list box. Go to the '''Kits''' tab and click on the kit for the device. Under the '''Devices''' drop down menu, select the device profile that was just created. <br /><br /><br />
[[File:SelectDeviceToRun.png|800px]]<br />
<br /><br /><br />
<br />
* Save the device profile by clicking '''Apply'''. The profile has been completed and the options can be closed by clicking '''Ok''' at the bottom right of the window.<br />
</cl><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:examples | initials=JJ | title=Creating the Project | desc=Creating a New EMAC OE SDK Project with qmake in Qt Creator | project=OE 5.0 }}<br />
<br />
===Coding Hello World and Designing the User Interface===<br />
Qt Creator is now able to deploy the project to the target device. The application definition needs to be completed.<br />
<br />
<cl>1. Double click the class <code>cpp</code> file in the '''Edit''' tab.<br />
<br />
* In the constructor, use the <code>qDebug()</code> function to print the string "<code>Hello World</code>". <br />
<br />
* In the destructor, use the <code>qDebug()</code> function to print the string "<code>Goodbye World</code>". <br />
Here's what your <code>helloworld.cpp</code> should look like:<br />
<syntaxhighlight lang="cpp-qt"><br />
#include "helloworld.h"<br />
#include "ui_helloworld.h"<br />
<br />
HelloWorld::HelloWorld(QWidget *parent) :<br />
QMainWindow(parent),<br />
ui(new Ui::HelloWorld)<br />
{<br />
ui->setupUi(this);<br />
qDebug("Hello World");<br />
}<br />
<br />
HelloWorld::~HelloWorld()<br />
{<br />
qDebug("Goodbye World");<br />
delete ui;<br />
}<br />
</syntaxhighlight><br />
<br />
* Double click <code>helloworld.ui</code> under the '''Forms''' folder in the '''Edit''' tabe to the left of the screen. This displays an interface that will allow objects to be dragged on to the UI of the application. <br /><br /><br />
[[File:QtUIDesign.png|800px]]<br />
<br /><br /><br />
<br />
* Drag and drop a label to the UI.<br />
<br />
* Double click on the label to change the text to "<code>Hello World</code>". You may need to resize the label so the text can be seen. <br /><br /> [[File:HelloUI.png|800px]]<br />
</cl><br />
<br />
===Building and Running the Project===<br />
<cl>1. Click on the icon of a monitor at the bottom left of the window. <br />
<br />
* Select the proper kit for your device, '''Build->Debug''', and the project name under '''Run'''. <br /><br /><br />
[[File:BuildDebugRun.png| 800px]]<br />
<br /><br /><br />
<br />
* Build the project by clicking the hammer icon at the bottom left of the window. A little window will momentarily pop up at the bottom right of the screen. The project has been successfully built if the green progress bar is full and now error messages have appeared. <br />
<br />
{{note| If the build command complains of missing or unknown modules, a Qt version mismatch is likely the reason. Sometimes, the host PC and the EMAC target board will use different versions of Qt. Generally, this doesn't cause any problems, but occasionally, some Qt modules have been deprecated in the newer versions.}}<br />
<br />
* Once the project has successfully built, the project may be run. Click the green triangle icon at the bottom left of the window, below the monitor icon. <br /><br /><br />
[[File:HelloWorldRun.png| 800px]]<br />
<br /><br /><br />
</cl><br />
<br />
The Application Output terminal will pop up and display any error messages, the termination message, and any string output by <code>qDebug()</code>.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /****************************************** Conclusion ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:conclusion | initials=JJ | title=Creating the Project | desc=Creating a New EMAC OE SDK Project with qmake in Qt Creator | project=OE 5.0 }}<br />
Although very similar to [[Getting_Started_With_Qt_Creator | Getting Started with Qt Creator]], this guide differs by introducing the reader to the process of developing a Qt application with a graphical user interface using Qt's qmake build system. Developing a new application generally follows these steps: create a new project, configure a new device profile if needed, modify the build and run conditions to allow deployment on the remote device, drag and drop the visual elements to the GUI using the UI designer, write the code needed to respond to interactions with the UI, build the application, and run the application upon a successful build.<br />
<br />
More information about running Qt applications on EMAC systems (Open Embedded Linux modules) can be found at http://doc.qt.io/qt-4.8/qt-embedded-running.html. While the UI designer is a great way to visually plan out how the GUI will turn out, the entire application may be coded within the project C++ class file, including the UI elements. Qt provides a couple of example applications with a GUI for Linux Embedded systems coded in such a way. These example can be viewed at http://doc.qt.io/qt-4.8/examples-embeddedlinux.html. A larger set of Qt example applications can be found at http://doc.qt.io/qt-4.8/all-examples.html; not all of these examples will work for Embedded Linux or the EMAC OE SDK. Qt pre-compiled examples and source code can also be found on EMAC systems with Qt in <code>/usr/bin/qtopia</code> and in the EMAC OE SDK in <code>/opt/emac/5.0/sysroots/target_arch/usr/bin/qtopia </code>. These examples are applicable to Qt version 4.8 which is the newest version supported by EMAC OE 5.X. <br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /****************************************** More Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:moreinfo | initials=JJ | title=Creating the Project | desc=Creating a New EMAC OE SDK Project with qmake in Qt Creator | project=OE 5.0 }}<br />
* --><br />
<br />
{{:Templateimpl:whatnext | initials=JJ | title=Creating the Project | desc=Creating a New EMAC OE SDK Project with qmake in Qt Creator | project=OE 5.0 }}<br />
* [[Getting_Started_With_Qt_Creator | Getting Started With Qt Creator]]<br />
* [[Getting_Started_with_the_EMAC_OE_SDK| Getting Started with the EMAC OE SDK]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=General_Information&diff=5388General Information2016-06-08T16:01:40Z<p>Awichmann: </p>
<hr />
<div><div style="background-color: #CCF2FF; border-style: solid; border-width: thin; font-style: bold; font-size: 33px; text-align: center; padding: 6px">Linux</div><br />
<br />
<div style="border-style: solid; border-width: thin; padding: 20px;" class="wikilinks"><br />
* [[About Linux]]<br />
* [[Getting Started with Linux]]<br />
</div><br />
<br />
<div style="background-color: #CCF2FF; border-style: solid; border-width: thin; font-style: bold; font-size: 33px; text-align: center; padding: 6px; height: 25px;"><br />
EMAC OpenEmbedded</div><br />
<div style="border-style: solid; border-width: thin; padding: 20px;" class="wikilinks"><br />
* [[About EMAC OpenEmbedded]]<br />
<br />
* [[EMAC OpenEmbedded Fact Sheet]]<br />
* [[Getting Started with EMAC Embedded Linux Development]]<br />
* [[OE50:Packages|Software Packages Provided by EMAC OE 5.X]]<br />
* [[EMAC OE Add-on Packages]]<br />
* [[Quick Reference]]<br />
</div><br />
<br />
<div style="background-color: #CCF2FF; border-style: solid; border-width: thin; font-style: bold; font-size: 33px; text-align: center; height: 25px; padding: 6px"><br />
Licensing</div><br />
<br />
<div style="border-style: solid; border-width: thin; padding: 20px;" class="wikilinks"><br />
* [[Open Source Licensing]]<br />
<br />
</div></div>Awichmannhttps://wiki.emacinc.com/index.php?title=Opkg&diff=5387Opkg2016-06-08T16:01:16Z<p>Awichmann: </p>
<hr />
<div>{{todo| Complete (11.12.2014-18:38->MD+);(11.05.2015-19:20->MD+);(11.06.2015-16:10->MD+);(11.06.2015-17:25->MD+);(11.13.2015-16:15->KY+);(11.13.2015-16:24->ER+)|Mike Dean| project=OE 5,MD,KY,ER,Complete}}<br />
{{#seo:<br />
|title=OPKG<br />
|titlemode=append<br />
|keywords=opkg,yocto,openembedded<br />
|description=Package Management with OPKG<br />
}}<br />
<br />
<span class="pagedesc"><br />
Every modern operating system is expected to host a variety of software applications and libraries. Managing their installation, upgrade, and removal has become more complex as software has become more sophisticated. Additionally, the pervasive presence of the Internet has driven an expectation by users of an ability to perform OS updates and upgrades via the Internet. This page describes the tool used by EMAC OE to cater to these needs and expectations.<br />
</span><br />
<br />
__TOC__<br />
<br />
{{:Templateimpl:bg | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
There are many package managers used for Linux systems. You may already be familiar with the ones most popularly used in desktop and server distributions of Linux: <code>apt</code> (<code>apt-get</code>, <code>aptitude</code>, etc), <code>rpm</code>, and <code>yum</code>. You may even be familiar with some of the less popular ones, such as <code>emerge</code> (from gentoo's <code>portage</code>), the Mac OS X GNU tools package manager <code>brew</code>, and the BSD package manager, <code>ports</code>. The package manager used by EMAC OE is similar to these tools, but is the popular choice for embedded Linux: <code>opkg</code>. If you're already familiar with any of the desktop/server package managers listed here, <code>opkg</code> should be very easy to learn since it is quite similar to all of those tools. If not, it should still be easy to learn because it has a well designed interface.<br />
<br />
{{:Templateimpl:geninfo | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
The basic capabilities of <code>opkg</code> are available in OE 4.0 and earlier, but no packages are available online for these older versions. EMAC OE 5.X adds an online package repository complete with important updates for packages during the support window for each release. EMAC creates and hosts packages for all of our standard offerings, and may add updated packages as needed. EMAC recommends checking for and installing any updates available for your OE 5.x system prior to creating the final image which will be used to deploy your systems to ensure your image contains the latest bug fixes and security patches. It is important to remember to retest your application after an update to ensure that everything still works as expected, just as you would have to do for a desktop application.<br />
<br />
Should your application require the ability to be updated/upgraded remotely, EMAC is able to provide assistance and services for creating custom packages for your application and hosting these packages for a modest fee. We will also assist you with configuring the systems to check for and install these updates. Please contact EMAC support should you need more information about this extra level of support.<br />
<br />
The <code>opkg</code> tool is used to work with the OPKG package management system. This tool provides the user with many different capabilities. In this document, only the basic capabilities are described. More information can be found in the last section of this page.<br />
{{:Templateimpl:using | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
The following basic capabilities are shown in this document:<br />
<br />
* Updating the list of available packages.<br />
* Upgrading the system.<br />
* Finding packages to install.<br />
* Installing new packages.<br />
* Removing packages.<br />
<br />
=== Updating the List of Available Packages ===<br />
<br />
The OPKG Package Manager keeps a local cache of the list of available packages so that it doesn't have to reach out to the Internet every time the user wishes to use this list in any way. This list is updated on demand, rather than periodically, so it's important to update this list before attempting to search for or install any new packages, or attempting to upgrade the system.<br />
<br />
To update the cached list of available packages, run:<br />
<br />
{{cli|opkg update}}<br />
<br />
Note that you must be root in order to update this list.<br />
<br />
=== Upgrading the System ===<br />
<br />
You can use <code>opkg</code> to upgrade the system by selectively telling it which packages to upgrade. You first need to obtain a list of available packages to upgrade with the following command:<br />
<br />
{{cli|opkg list-upgradable}}<br />
<br />
You can then upgrade a package with this command:<br />
<br />
{{cli|opkg upgrade ''packagename''}}<br />
<br />
=== Finding Packages to Install ===<br />
<br />
==== Listing Packages ====<br />
<br />
There is more than one way to look through packages to see what's available to be installed. The first is the <code>list</code> command by itself:<br />
<br />
{{cli|opkg list}}<br />
<br />
This provides a complete list of all available packages. ''If you're already comfortable with the Linux command line, you may now wish to skip to the section entitled, "Installing New Pacakges." If not, the following content shows how to more easily work with this output.''<br />
<br />
==== Browsing the Package List ====<br />
<br />
As usual on the Linux command line, this long list can be made much easier to peruse by piping the output of the <code>opkg list</code> command into the <code>less</code> command, like so:<br />
<br />
{{cli|opkg list {{!}} less}}<br />
<br />
{{note|Unlike the <code>more</code> command, the <code>less</code> command allows you to scroll bidirectionally through a text file. It also allows you to search through a document using regular expressions; press the <code>/</code> key followed by some text (or a basic regular expression) for which you would like to search. This can be used to directly read a text file as well: {{icli|less some_text_file}}}}<br />
<br />
==== Filtering the Package List ====<br />
<br />
Often times, you will wish to search for something more specific. The <code>grep</code> command is very useful for this task. The most basic use of grep looks like this:<br />
<br />
{{cli|opkg list {{!}} grep ''packagename''}}<br />
<br />
If you're not sure of the full package name, you can put in just a part of the name, since grep doesn't match against whole words by default.<br />
<br />
===== Matching Whole Words =====<br />
<br />
If, on the other hand, you want it to match against a whole word, you can enclose the word with escaped angle brackets:<br />
<br />
{{cli|opkg list {{!}} grep \<''packagename''\>}}<br />
<br />
This tells <code>grep</code> to only match against the full word represented by ''packagename''. Use only the opening angle bracket if you only want it to look for a word that starts with ''packagename'', and likewise, only use the closing angle bracket at the end if you only want it to search for a word that ends with ''packagename''.<br />
<br />
===== More Stringent Filtering =====<br />
<br />
If the search is returning too many results because the word you're looking for is found in package descriptions, you may want to try using the beginning of line glob character, the caret:<br />
<br />
{{cli|opkg list{{!}} grep ^''packagename''}}<br />
<br />
This will cause only lines which begin with ''packagename'' to be displayed.<br />
<br />
===== More Information about Filtering the Package List =====<br />
<br />
There are many more advanced regular expressions which can be used with grep. These will allow you to do things like match wildcards from the beginning of the line up to the characters you specify after the wildcard (which you might do if you know the package name contains a word, but doesn't start with that word, yet the word is too common to allow it to search through all of the text), but this should be enough to get you started. There are many in depth resources for the usage of <code>grep</code> available online.<br />
<br />
=== Installing New Packages ===<br />
<br />
Once you have found a package or list of packages you wish to install, the <code>opkg</code> command makes installation simple:<br />
<br />
{{cli|opkg install ''packagename''}}<br />
<br />
This will download and install ''packagename'' and all of its dependencies for you. <br />
<br />
<br />
If you would like to install more than one at a time, you can do so by specifying them as a space-separated list:<br />
<br />
{{cli|opkg install ''package1'' ''package2'' ''package3'' ''etc''}}<br />
<br />
As before, all of the dependencies for the packages specified will be automatically downloaded and installed by <code>opkg</code> as well.<br />
<br />
=== Removing Packages ===<br />
<br />
When you have installed a package that you no longer want to have on your system, <code>opkg</code> provides the <code>remove</code> command for removal of the package:<br />
<br />
{{cli|opkg remove ''packagename''}}<br />
<br />
If there is anything that depends on it, <code>opkg</code> will output an error message indicating that packages depend on it.<br />
<br />
You can add the <code>--force-removal-of-dependent-packages</code> to force it to remove the package and everything that depends on it:<br />
<br />
{{cli|opkg remove --force-removal-of-dependent-packages ''packagename''}}<br />
<br />
{{Caution|The very verbose argument name is required because this can be a dangerous way to remove packages. The length of the argument's name (<code>--force-removal-of-dependent-packages</code>)is intended to remind you of the danger. You may find yourself with an unbootable system if you uninstall a package which was depended upon by important system packages. It's generally wiser to use the less heavy handed version, <code>--force-depends</code>, which will only remove the package and the dependencies which are one layer deep:<br />
<br />
<br />
{{cli|opkg remove --force-depends ''packagename''}}<br />
<br />
<br />
If more than one layer of dependencies needs to be removed, you should use the <code>remove</code> command without either of these options. Use it on each dependency layer to see what depends upon those dependencies, and continue this procedure recursively to ensure that nothing important will be removed before you attempt to remove a package with the heavy handed variant.<br />
<br /><br /><br />
If you do render your system unbootable, you may contact EMAC, and we will help you get your system back into a usable state for a small fee. If you would prefer to avoid this fee, please be very careful about what you remove since damage to the filesystem caused by misuse of the above commands is not covered under the EMAC warranty.<br />
}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:examples | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
{{example|Removing a Package which has Dependencies}}<br />
<br />
{{clo}}<br />
{{clio|opkg remove alsa-conf-base}}<br />
No packages removed.<br /><br />
Collected errors:<br /><br />
&nbsp;* print_dependents_warning: Package alsa-conf-base is depended upon by packages:<BR><br />
&nbsp;* print_dependents_warning: libasound2<br /><br />
&nbsp;* print_dependents_warning: These might cease to work if package alsa-conf-base is removed.<br /><br />
&nbsp;* print_dependents_warning: Force removal of this package with --force-depends.<br /><br />
&nbsp;* print_dependents_warning: Force removal of this package and its dependents<br /><br />
&nbsp;* print_dependents_warning: with --force-removal-of-dependent-packages.<br /><br />
{{clio|opkg remove --force-depends alsa-conf-base}}<br />
Removing package alsa-conf-base from root...<br />
{{clio|}}<br />
{{clos}}<br />
<br />
{{example|Updating a Package}}<br />
<br />
{{clop}}<br />
{{cliop|opkg update}}<nowiki><br />
Downloading ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Downloading ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Downloading ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Collected errors:<br />
* opkg_update_cmd: Not able to update list of packages in /var/lib/opkg/all.<br />
* opkg_update_cmd: Not able to update list of packages in /var/lib/opkg/ipac9x25.<br />
* opkg_update_cmd: Not able to update list of packages in /var/lib/opkg/armv5e.<br />
</nowiki>{{closp}}<br />
If you've forgotten to remount your root filesystem as rw, you'll see output similar to that shown above. Remount the filesystem rw and try again:<br />
{{clop}}<br />
{{cliop|opkg update}}<nowiki><br />
Downloading ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/all.<br />
Downloading ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/ipac9x25.<br />
Downloading ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/armv5e.<br />
</nowiki><br />
{{cliop|opkg list-upgradable}}<nowiki><br />
u-boot-fw-utils - v2014.07+git0+91fbeacdf3-r0 - v2015.04+git0+5feae908fd-r0<br />
libssl1.0.0 - 1.0.2a-r0 - 1.0.2d-r0<br />
tzdata-pacific - 2015b-r0 - 2015d-r0<br />
tzdata - 2015b-r0 - 2015d-r0<br />
openssl-conf - 1.0.2a-r0 - 1.0.2d-r0<br />
libcrypto1.0.0 - 1.0.2a-r0 - 1.0.2d-r0<br />
tzdata-arctic - 2015b-r0 - 2015d-r0<br />
tzdata-africa - 2015b-r0 - 2015d-r0<br />
tzdata-europe - 2015b-r0 - 2015d-r0<br />
tzdata-americas - 2015b-r0 - 2015d-r0<br />
tzdata-atlantic - 2015b-r0 - 2015d-r0<br />
tzdata-australia - 2015b-r0 - 2015d-r0<br />
tzdata-antarctica - 2015b-r0 - 2015d-r0<br />
tzdata-asia - 2015b-r0 - 2015d-r0<br />
</nowiki><br />
{{cliop|opkg upgrade libssl1.0.0 openssl-conf}}<nowiki><br />
Upgrading libssl1.0.0 from 1.0.2a-r0 to 1.0.2d-r0 on root.<br />
Downloading ftp://oe50opkg:opkgoe50123@ftp.emacinc.com/armv5e/libssl1.0.0_1.0.2d-r0_armv5e.ipk.<br />
Upgrading libcrypto1.0.0 from 1.0.2a-r0 to 1.0.2d-r0 on root.<br />
Downloading ftp://oe50opkg:opkgoe50123@ftp.emacinc.com/armv5e/libcrypto1.0.0_1.0.2d-r0_armv5e.ipk.<br />
Upgrading openssl-conf from 1.0.2a-r0 to 1.0.2d-r0 on root.<br />
Downloading ftp://oe50opkg:opkgoe50123@ftp.emacinc.com/armv5e/openssl-conf_1.0.2d-r0_armv5e.ipk.<br />
Configuring openssl-conf.<br />
Configuring libcrypto1.0.0.<br />
Configuring libssl1.0.0.<br />
</nowiki><br />
{{cliop|}}<br />
{{closp}}<br />
<br />
Here, the <code>libssl1.0.0</code> package and the <code>openssl-conf</code> package were both upgraded simultaneously by specifying them to <code>opkg upgrade</code> as a space delimited list.<br />
<br />
{{example|Installing a New Package}}<br />
<br />
{{clop}}<br />
{{cliop|opkg update}}<nowiki><br />
Downloading ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/all.<br />
Downloading ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/ipac9x25.<br />
Downloading ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/armv5e.<br />
</nowiki><br />
{{cliop|opkg list {{!}} grep iptables -A 2}}<nowiki><br />
iptables - 1.4.21-r0 - Tools for managing kernel packet filtering capabilities iptables is the<br />
userspace command line program used to configure and control network<br />
packet filtering code in Linux.<br />
iptables-dbg - 1.4.21-r0 - Tools for managing kernel packet filtering capabilities - Debugging files<br />
iptables is the userspace command line program used to configure and<br />
control network packet filtering code in Linux. This package contains<br />
ELF symbols and related sources for debugging purposes.<br />
iptables-dev - 1.4.21-r0 - Tools for managing kernel packet filtering capabilities - Development<br />
files iptables is the userspace command line program used to configure<br />
and control network packet filtering code in Linux. This package<br />
contains symbolic links, header files, and related items necessary for<br />
--<br />
iptables-doc - 1.4.21-r0 - Tools for managing kernel packet filtering capabilities - Documentation<br />
files iptables is the userspace command line program used to configure<br />
and control network packet filtering code in Linux. This package<br />
</nowiki><br />
{{cliop|opkg install iptables-doc}}<nowiki><br />
Installing iptables-doc (1.4.21-r0) on root.<br />
Downloading ftp://oe50@ftp.emacinc.com/armv5e/iptables-doc_1.4.21-r0_armv5e.ipk.<br />
Configuring iptables-doc.<br />
</nowiki><br />
{{cliop|}}<br />
{{closp}}<br />
<br />
If you try to install a package which is already installed, it will check to see if it's up to date:<br />
<br />
{{clop}}<br />
{{cliop |opkg install iptables}}<nowiki><br />
Package iptables (1.4.21-r0) installed in root is up to date.<br />
</nowiki><br />
{{cliop|}}<br />
{{closp}}<br />
<br />
<br />
{{:Templateimpl:conclusion | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
This article demonstrated the basic usage of <code>opkg</code>, but did not cover any of the more advanced topics. Topics covered in this article include installing software, updating software, removing software, and searching for available packages.<br />
<br />
More advanced topics are covered in other articles, such as configuring <code>opkg</code>, inspecting package metadata and package contents, and creating packages. Look to the last section of this article if you need more information on these topics.<br />
<br />
The EMAC opkg package repository contains a wealth of software you can install to customize and enhance the environment of your EMAC OE Linux machine. While a great deal of additional functionality is provided with the standard EMAC opkg repository, you may not be able to find a particular package you need. If you encounter this situation, you may contact EMAC support to request the creation of a custom package for you. EMAC is able to provide custom packages for most opensource software, and can recommend good alternatives in cases where a specific software package has been found to work or perform poorly (or not at all) in an embedded environment. EMAC charges a nominal fee to provide this package, but this fee includes support for the package as well.<br />
<br />
The EMAC opkg repository is a great source of additional functionality for your machine, but even more importantly, the EMAC opkg repository is a source of updates for the software installed on your machine. Taking advantage of the EMAC opkg repository to update your systems helps to ensure that your systems will be protected from the latest threats, such as the Heartbleed OpenSSL vulnerability that made a big splash in the recent past.<br />
<br />
{{:Templateimpl:moreinfo | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
* [[opkg:installedPkgs|Working with Installed Packages]]<br />
* [[opkg:configuration|Configuring the Package Manager]]<br />
* [[opkg::advanced|Advanced Package Management]]<br />
<br />
{{:Templateimpl:whatnext | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
* [[Install_the_EMAC_SDK#Install_Using_apt_.28Recommended.29 | Installing EMAC Packages Using Apt]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=Opkg&diff=5386Opkg2016-06-08T15:59:55Z<p>Awichmann: </p>
<hr />
<div>{{todo| Complete (11.12.2014-18:38->MD+);(11.05.2015-19:20->MD+);(11.06.2015-16:10->MD+);(11.06.2015-17:25->MD+);(11.13.2015-16:15->KY+);(11.13.2015-16:24->ER+)|Mike Dean| project=OE 5,MD,KY,ER,Complete}}<br />
{{#seo:<br />
|title=OPKG<br />
|titlemode=append<br />
|keywords=opkg,yocto,openembedded<br />
|description=Package Management with OPKG<br />
}}<br />
<br />
<span class="pagedesc"><br />
Every modern operating system is expected to host a variety of software applications and libraries. Managing their installation, upgrade, and removal has become more complex as software has become more sophisticated. Additionally, the pervasive presence of the Internet has driven an expectation by users of an ability to perform OS updates and upgrades via the Internet. This page describes the tool used by EMAC OE to cater to these needs and expectations.<br />
</span><br />
<br />
__TOC__<br />
<br />
{{:Templateimpl:bg | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
There are many package managers used for Linux systems. You may already be familiar with the ones most popularly used in desktop and server distributions of Linux: <code>apt</code> (<code>apt-get</code>, <code>aptitude</code>, etc), <code>rpm</code>, and <code>yum</code>. You may even be familiar with some of the less popular ones, such as <code>emerge</code> (from gentoo's <code>portage</code>), the Mac OS X GNU tools package manager <code>brew</code>, and the BSD package manager, <code>ports</code>. The package manager used by EMAC OE is similar to these tools, but is the popular choice for embedded Linux: <code>opkg</code>. If you're already familiar with any of the desktop/server package managers listed here, <code>opkg</code> should be very easy to learn since it is quite similar to all of those tools. If not, it should still be easy to learn because it has a well designed interface.<br />
<br />
{{:Templateimpl:geninfo | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
The basic capabilities of <code>opkg</code> are available in OE 4.0 and earlier, but no packages are available online for these older versions. EMAC OE 5.x adds an online package repository complete with important updates for packages during the support window for each release. EMAC creates and hosts packages for all of our standard offerings, and may add updated packages as needed. EMAC recommends checking for and installing any updates available for your OE 5.x system prior to creating the final image which will be used to deploy your systems to ensure your image contains the latest bug fixes and security patches. It is important to remember to retest your application after an update to ensure that everything still works as expected, just as you would have to do for a desktop application.<br />
<br />
Should your application require the ability to be updated/upgraded remotely, EMAC is able to provide assistance and services for creating custom packages for your application and hosting these packages for a modest fee. We will also assist you with configuring the systems to check for and install these updates. Please contact EMAC support should you need more information about this extra level of support.<br />
<br />
The <code>opkg</code> tool is used to work with the OPKG package management system. This tool provides the user with many different capabilities. In this document, only the basic capabilities are described. More information can be found in the last section of this page.<br />
{{:Templateimpl:using | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
The following basic capabilities are shown in this document:<br />
<br />
* Updating the list of available packages.<br />
* Upgrading the system.<br />
* Finding packages to install.<br />
* Installing new packages.<br />
* Removing packages.<br />
<br />
=== Updating the List of Available Packages ===<br />
<br />
The OPKG Package Manager keeps a local cache of the list of available packages so that it doesn't have to reach out to the Internet every time the user wishes to use this list in any way. This list is updated on demand, rather than periodically, so it's important to update this list before attempting to search for or install any new packages, or attempting to upgrade the system.<br />
<br />
To update the cached list of available packages, run:<br />
<br />
{{cli|opkg update}}<br />
<br />
Note that you must be root in order to update this list.<br />
<br />
=== Upgrading the System ===<br />
<br />
You can use <code>opkg</code> to upgrade the system by selectively telling it which packages to upgrade. You first need to obtain a list of available packages to upgrade with the following command:<br />
<br />
{{cli|opkg list-upgradable}}<br />
<br />
You can then upgrade a package with this command:<br />
<br />
{{cli|opkg upgrade ''packagename''}}<br />
<br />
=== Finding Packages to Install ===<br />
<br />
==== Listing Packages ====<br />
<br />
There is more than one way to look through packages to see what's available to be installed. The first is the <code>list</code> command by itself:<br />
<br />
{{cli|opkg list}}<br />
<br />
This provides a complete list of all available packages. ''If you're already comfortable with the Linux command line, you may now wish to skip to the section entitled, "Installing New Pacakges." If not, the following content shows how to more easily work with this output.''<br />
<br />
==== Browsing the Package List ====<br />
<br />
As usual on the Linux command line, this long list can be made much easier to peruse by piping the output of the <code>opkg list</code> command into the <code>less</code> command, like so:<br />
<br />
{{cli|opkg list {{!}} less}}<br />
<br />
{{note|Unlike the <code>more</code> command, the <code>less</code> command allows you to scroll bidirectionally through a text file. It also allows you to search through a document using regular expressions; press the <code>/</code> key followed by some text (or a basic regular expression) for which you would like to search. This can be used to directly read a text file as well: {{icli|less some_text_file}}}}<br />
<br />
==== Filtering the Package List ====<br />
<br />
Often times, you will wish to search for something more specific. The <code>grep</code> command is very useful for this task. The most basic use of grep looks like this:<br />
<br />
{{cli|opkg list {{!}} grep ''packagename''}}<br />
<br />
If you're not sure of the full package name, you can put in just a part of the name, since grep doesn't match against whole words by default.<br />
<br />
===== Matching Whole Words =====<br />
<br />
If, on the other hand, you want it to match against a whole word, you can enclose the word with escaped angle brackets:<br />
<br />
{{cli|opkg list {{!}} grep \<''packagename''\>}}<br />
<br />
This tells <code>grep</code> to only match against the full word represented by ''packagename''. Use only the opening angle bracket if you only want it to look for a word that starts with ''packagename'', and likewise, only use the closing angle bracket at the end if you only want it to search for a word that ends with ''packagename''.<br />
<br />
===== More Stringent Filtering =====<br />
<br />
If the search is returning too many results because the word you're looking for is found in package descriptions, you may want to try using the beginning of line glob character, the caret:<br />
<br />
{{cli|opkg list{{!}} grep ^''packagename''}}<br />
<br />
This will cause only lines which begin with ''packagename'' to be displayed.<br />
<br />
===== More Information about Filtering the Package List =====<br />
<br />
There are many more advanced regular expressions which can be used with grep. These will allow you to do things like match wildcards from the beginning of the line up to the characters you specify after the wildcard (which you might do if you know the package name contains a word, but doesn't start with that word, yet the word is too common to allow it to search through all of the text), but this should be enough to get you started. There are many in depth resources for the usage of <code>grep</code> available online.<br />
<br />
=== Installing New Packages ===<br />
<br />
Once you have found a package or list of packages you wish to install, the <code>opkg</code> command makes installation simple:<br />
<br />
{{cli|opkg install ''packagename''}}<br />
<br />
This will download and install ''packagename'' and all of its dependencies for you. <br />
<br />
<br />
If you would like to install more than one at a time, you can do so by specifying them as a space-separated list:<br />
<br />
{{cli|opkg install ''package1'' ''package2'' ''package3'' ''etc''}}<br />
<br />
As before, all of the dependencies for the packages specified will be automatically downloaded and installed by <code>opkg</code> as well.<br />
<br />
=== Removing Packages ===<br />
<br />
When you have installed a package that you no longer want to have on your system, <code>opkg</code> provides the <code>remove</code> command for removal of the package:<br />
<br />
{{cli|opkg remove ''packagename''}}<br />
<br />
If there is anything that depends on it, <code>opkg</code> will output an error message indicating that packages depend on it.<br />
<br />
You can add the <code>--force-removal-of-dependent-packages</code> to force it to remove the package and everything that depends on it:<br />
<br />
{{cli|opkg remove --force-removal-of-dependent-packages ''packagename''}}<br />
<br />
{{Caution|The very verbose argument name is required because this can be a dangerous way to remove packages. The length of the argument's name (<code>--force-removal-of-dependent-packages</code>)is intended to remind you of the danger. You may find yourself with an unbootable system if you uninstall a package which was depended upon by important system packages. It's generally wiser to use the less heavy handed version, <code>--force-depends</code>, which will only remove the package and the dependencies which are one layer deep:<br />
<br />
<br />
{{cli|opkg remove --force-depends ''packagename''}}<br />
<br />
<br />
If more than one layer of dependencies needs to be removed, you should use the <code>remove</code> command without either of these options. Use it on each dependency layer to see what depends upon those dependencies, and continue this procedure recursively to ensure that nothing important will be removed before you attempt to remove a package with the heavy handed variant.<br />
<br /><br /><br />
If you do render your system unbootable, you may contact EMAC, and we will help you get your system back into a usable state for a small fee. If you would prefer to avoid this fee, please be very careful about what you remove since damage to the filesystem caused by misuse of the above commands is not covered under the EMAC warranty.<br />
}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:examples | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
{{example|Removing a Package which has Dependencies}}<br />
<br />
{{clo}}<br />
{{clio|opkg remove alsa-conf-base}}<br />
No packages removed.<br /><br />
Collected errors:<br /><br />
&nbsp;* print_dependents_warning: Package alsa-conf-base is depended upon by packages:<BR><br />
&nbsp;* print_dependents_warning: libasound2<br /><br />
&nbsp;* print_dependents_warning: These might cease to work if package alsa-conf-base is removed.<br /><br />
&nbsp;* print_dependents_warning: Force removal of this package with --force-depends.<br /><br />
&nbsp;* print_dependents_warning: Force removal of this package and its dependents<br /><br />
&nbsp;* print_dependents_warning: with --force-removal-of-dependent-packages.<br /><br />
{{clio|opkg remove --force-depends alsa-conf-base}}<br />
Removing package alsa-conf-base from root...<br />
{{clio|}}<br />
{{clos}}<br />
<br />
{{example|Updating a Package}}<br />
<br />
{{clop}}<br />
{{cliop|opkg update}}<nowiki><br />
Downloading ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Downloading ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Downloading ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Collected errors:<br />
* opkg_update_cmd: Not able to update list of packages in /var/lib/opkg/all.<br />
* opkg_update_cmd: Not able to update list of packages in /var/lib/opkg/ipac9x25.<br />
* opkg_update_cmd: Not able to update list of packages in /var/lib/opkg/armv5e.<br />
</nowiki>{{closp}}<br />
If you've forgotten to remount your root filesystem as rw, you'll see output similar to that shown above. Remount the filesystem rw and try again:<br />
{{clop}}<br />
{{cliop|opkg update}}<nowiki><br />
Downloading ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/all.<br />
Downloading ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/ipac9x25.<br />
Downloading ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/armv5e.<br />
</nowiki><br />
{{cliop|opkg list-upgradable}}<nowiki><br />
u-boot-fw-utils - v2014.07+git0+91fbeacdf3-r0 - v2015.04+git0+5feae908fd-r0<br />
libssl1.0.0 - 1.0.2a-r0 - 1.0.2d-r0<br />
tzdata-pacific - 2015b-r0 - 2015d-r0<br />
tzdata - 2015b-r0 - 2015d-r0<br />
openssl-conf - 1.0.2a-r0 - 1.0.2d-r0<br />
libcrypto1.0.0 - 1.0.2a-r0 - 1.0.2d-r0<br />
tzdata-arctic - 2015b-r0 - 2015d-r0<br />
tzdata-africa - 2015b-r0 - 2015d-r0<br />
tzdata-europe - 2015b-r0 - 2015d-r0<br />
tzdata-americas - 2015b-r0 - 2015d-r0<br />
tzdata-atlantic - 2015b-r0 - 2015d-r0<br />
tzdata-australia - 2015b-r0 - 2015d-r0<br />
tzdata-antarctica - 2015b-r0 - 2015d-r0<br />
tzdata-asia - 2015b-r0 - 2015d-r0<br />
</nowiki><br />
{{cliop|opkg upgrade libssl1.0.0 openssl-conf}}<nowiki><br />
Upgrading libssl1.0.0 from 1.0.2a-r0 to 1.0.2d-r0 on root.<br />
Downloading ftp://oe50opkg:opkgoe50123@ftp.emacinc.com/armv5e/libssl1.0.0_1.0.2d-r0_armv5e.ipk.<br />
Upgrading libcrypto1.0.0 from 1.0.2a-r0 to 1.0.2d-r0 on root.<br />
Downloading ftp://oe50opkg:opkgoe50123@ftp.emacinc.com/armv5e/libcrypto1.0.0_1.0.2d-r0_armv5e.ipk.<br />
Upgrading openssl-conf from 1.0.2a-r0 to 1.0.2d-r0 on root.<br />
Downloading ftp://oe50opkg:opkgoe50123@ftp.emacinc.com/armv5e/openssl-conf_1.0.2d-r0_armv5e.ipk.<br />
Configuring openssl-conf.<br />
Configuring libcrypto1.0.0.<br />
Configuring libssl1.0.0.<br />
</nowiki><br />
{{cliop|}}<br />
{{closp}}<br />
<br />
Here, the <code>libssl1.0.0</code> package and the <code>openssl-conf</code> package were both upgraded simultaneously by specifying them to <code>opkg upgrade</code> as a space delimited list.<br />
<br />
{{example|Installing a New Package}}<br />
<br />
{{clop}}<br />
{{cliop|opkg update}}<nowiki><br />
Downloading ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/all/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/all.<br />
Downloading ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/ipac9x25/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/ipac9x25.<br />
Downloading ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Inflating ftp://oe50@ftp.emacinc.com/armv5e/Packages.gz.<br />
Updated list of available packages in /var/lib/opkg/armv5e.<br />
</nowiki><br />
{{cliop|opkg list {{!}} grep iptables -A 2}}<nowiki><br />
iptables - 1.4.21-r0 - Tools for managing kernel packet filtering capabilities iptables is the<br />
userspace command line program used to configure and control network<br />
packet filtering code in Linux.<br />
iptables-dbg - 1.4.21-r0 - Tools for managing kernel packet filtering capabilities - Debugging files<br />
iptables is the userspace command line program used to configure and<br />
control network packet filtering code in Linux. This package contains<br />
ELF symbols and related sources for debugging purposes.<br />
iptables-dev - 1.4.21-r0 - Tools for managing kernel packet filtering capabilities - Development<br />
files iptables is the userspace command line program used to configure<br />
and control network packet filtering code in Linux. This package<br />
contains symbolic links, header files, and related items necessary for<br />
--<br />
iptables-doc - 1.4.21-r0 - Tools for managing kernel packet filtering capabilities - Documentation<br />
files iptables is the userspace command line program used to configure<br />
and control network packet filtering code in Linux. This package<br />
</nowiki><br />
{{cliop|opkg install iptables-doc}}<nowiki><br />
Installing iptables-doc (1.4.21-r0) on root.<br />
Downloading ftp://oe50@ftp.emacinc.com/armv5e/iptables-doc_1.4.21-r0_armv5e.ipk.<br />
Configuring iptables-doc.<br />
</nowiki><br />
{{cliop|}}<br />
{{closp}}<br />
<br />
If you try to install a package which is already installed, it will check to see if it's up to date:<br />
<br />
{{clop}}<br />
{{cliop |opkg install iptables}}<nowiki><br />
Package iptables (1.4.21-r0) installed in root is up to date.<br />
</nowiki><br />
{{cliop|}}<br />
{{closp}}<br />
<br />
<br />
{{:Templateimpl:conclusion | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
This article demonstrated the basic usage of <code>opkg</code>, but did not cover any of the more advanced topics. Topics covered in this article include installing software, updating software, removing software, and searching for available packages.<br />
<br />
More advanced topics are covered in other articles, such as configuring <code>opkg</code>, inspecting package metadata and package contents, and creating packages. Look to the last section of this article if you need more information on these topics.<br />
<br />
The EMAC opkg package repository contains a wealth of software you can install to customize and enhance the environment of your EMAC OE Linux machine. While a great deal of additional functionality is provided with the standard EMAC opkg repository, you may not be able to find a particular package you need. If you encounter this situation, you may contact EMAC support to request the creation of a custom package for you. EMAC is able to provide custom packages for most opensource software, and can recommend good alternatives in cases where a specific software package has been found to work or perform poorly (or not at all) in an embedded environment. EMAC charges a nominal fee to provide this package, but this fee includes support for the package as well.<br />
<br />
The EMAC opkg repository is a great source of additional functionality for your machine, but even more importantly, the EMAC opkg repository is a source of updates for the software installed on your machine. Taking advantage of the EMAC opkg repository to update your systems helps to ensure that your systems will be protected from the latest threats, such as the Heartbleed OpenSSL vulnerability that made a big splash in the recent past.<br />
<br />
{{:Templateimpl:moreinfo | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
* [[opkg:installedPkgs|Working with Installed Packages]]<br />
* [[opkg:configuration|Configuring the Package Manager]]<br />
* [[opkg::advanced|Advanced Package Management]]<br />
<br />
{{:Templateimpl:whatnext | initials=MD | title=OPKG | desc=Package Management with OPKG | project=OE 5 }}<br />
* [[Install_the_EMAC_SDK#Install_Using_apt_.28Recommended.29 | Installing EMAC Packages Using Apt]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=General_Information&diff=5385General Information2016-06-08T15:52:22Z<p>Awichmann: </p>
<hr />
<div><div style="background-color: #CCF2FF; border-style: solid; border-width: thin; font-style: bold; font-size: 33px; text-align: center; padding: 6px">Linux</div><br />
<br />
<div style="border-style: solid; border-width: thin; padding: 20px;" class="wikilinks"><br />
* [[About Linux]]<br />
* [[Getting Started with Linux]]<br />
</div><br />
<br />
<div style="background-color: #CCF2FF; border-style: solid; border-width: thin; font-style: bold; font-size: 33px; text-align: center; padding: 6px; height: 25px;"><br />
EMAC OpenEmbedded</div><br />
<div style="border-style: solid; border-width: thin; padding: 20px;" class="wikilinks"><br />
* [[About EMAC OpenEmbedded]]<br />
<br />
* [[EMAC OpenEmbedded Fact Sheet]]<br />
* [[Getting Started with EMAC Embedded Linux Development]]<br />
* [[OE50:Packages|Software Packages Provided by EMAC OE 5.x]]<br />
* [[EMAC OE Add-on Packages]]<br />
* [[Quick Reference]]<br />
</div><br />
<br />
<div style="background-color: #CCF2FF; border-style: solid; border-width: thin; font-style: bold; font-size: 33px; text-align: center; height: 25px; padding: 6px"><br />
Licensing</div><br />
<br />
<div style="border-style: solid; border-width: thin; padding: 20px;" class="wikilinks"><br />
* [[Open Source Licensing]]<br />
<br />
</div></div>Awichmannhttps://wiki.emacinc.com/index.php?title=Example_Timezone_Change&diff=5381Example Timezone Change2016-04-04T17:09:51Z<p>Awichmann: Created page with "{{todo| Review (02.17.2016-1:44->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }} This is a guide to the <code>timechangeGUI</code> C++ example project. This project will dis..."</p>
<hr />
<div>{{todo| Review (02.17.2016-1:44->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
This is a guide to the <code>timechangeGUI</code> C++ example project.<br />
This project will display all the available time zones to which the user can navigate to and change the system's timezone.<br />
<br />
<br />
The <code>timechangeGUI</code> project builds one executable: <code>timechangeGUI</code>.<br />
<br />
<br />
== Opening, Building and Uploading the Project Files ==<br />
<br />
For information on opening the project from within Eclipse, please see [[Importing the EMAC OE SDK Projects with Eclipse]]. Then, follow [[Using the EMAC OE SDK Projects with Eclipse]] for information on how to build, upload and execute the example.<br />
<br />
Alternatively, the <code>Makefile</code> can be used with the <code>make</code> command from the commandline to build and upload the example. For more information on this method, please see<br />
[[Using EMAC OE SDK Example Projects]].<br />
<br />
<br />
==Usage and Behavior==<br />
<br />
<br />
===Hardware Requirements===<br />
<br />
<br />
The <code>timechangeGUI</code> C++ example project will run on any system for which it can be compiled.<br />
<br />
<br />
===Using <code>timechangeGUI</code>===<br />
<br />
<br />
The <code>timechangeGUI</code> program can be executed from the console. It takes no parameters.<br />
<br />
<br />
<code>./timechangeGUI</code><br />
<br />
<br />
The program displays a QTreeView Widget displaying the contents of the /usr/share/zoneinfo directory. Any file within this directory can be used to change the time zone of the device. Simply highlight the desired timezone file and press the QPushButton to change the timezone.<br />
<br />
<br />
<br />
==Summary==<br />
<br />
<br />
The <code>timechangeGUI</code> application provides a nice interface to change the timezone without meddling in the command line.</div>Awichmannhttps://wiki.emacinc.com/index.php?title=User_talk:Awichmann&diff=5380User talk:Awichmann2016-03-22T17:32:54Z<p>Awichmann: Created page with "{{todo| Review (02.17.2016-1:44->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }} This is a guide to the <code>timechangeGUI</code> C++ example project. This project wil..."</p>
<hr />
<div>{{todo| Review (02.17.2016-1:44->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
<br />
<br />
This is a guide to the <code>timechangeGUI</code> C++ example project.<br />
<br />
<br />
<br />
This project will display all the available time zones to which the user can navigate to and change the system's timezone.<br />
<br />
<br />
<br />
The <code>timechangeGUI</code> project builds one executable: <code>timechangeGUI</code>.<br />
<br />
<br />
== Opening, Building and Uploading the Project Files ==<br />
<br />
For information on opening the project from within Eclipse, please see [[Importing the EMAC OE SDK Projects with Eclipse]]. Then, follow [[Using the EMAC OE SDK Projects with Eclipse]] for information on how to build, upload and execute the example.<br />
<br />
Alternatively, the <code>Makefile</code> can be used with the <code>make</code> command from the commandline to build and upload the example. For more information on this method, please see [[Using EMAC OE SDK Example Projects]].<br />
<br />
==Usage and Behavior==<br />
<br />
===Hardware Requirements===<br />
<br />
The <code>timechangeGUI</code> C++ example project will run on any system for which it can be compiled.<br />
<br />
===Using <code>timechangeGUI</code>===<br />
<br />
The <code>timechangeGUI</code> program can be executed from the console. It takes no parameters.<br />
<br />
<code>./timechangeGUI</code><br />
<br />
The program displays a QTreeView Widget displaying the contents of the /usr/share/zoneinfo directory. Any file within this directory can be used to change the time zone of the device. Simply highlight the desired timezone file and press the QPushButton to change the timezone.<br />
<br />
<br />
==Summary==<br />
<br />
The <code>timechangeGUI</code> application provides a nice interface to change the timezone without meddling in the command line.</div>Awichmannhttps://wiki.emacinc.com/index.php?title=X86_SIB&diff=5317X86 SIB2016-02-23T18:22:48Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.18.2016-11:22->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=x86 "Server In a Box" (SIB) Embedded Servers | desc=A collection pages for x86 "Server In a Box" | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* x86 SIBs *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
EMAC's Server-In-a-Box line of Embedded Servers and Industrial PCs are Single Board Computers built into small, rugged embedded servers. These Industrial PCs are just as comfortable in the industrial environment as they are on a desktop while providing only the requred portions of the functionality from a conventional server.<br />
In order to toughen these embedded servers EMAC utilizes a Flash Disk in place of a hard drive and a fanless embedded SBC providing a server with no moving parts. On the software side, EMAC supports the most popular Embedded Operating Systems (OS), Embedded Linux and Real Time Linux, or Windows Embedded. EMAC has the expertise to customize the Embedded OS build to meet your application needs if required. This custom Embedded OS build can be archived under a unique part number guaranteeing that you receive the correct build each time you order.<br />
If your application does not require a chassis/case or power supply you can utilize one of EMAC's Single Board Embedded Servers. These Single Board Embedded Servers can utilize virtually any Single Board Computer that EMAC sells. Just select an SBC, add flash, and select an OS along with any extra components you might need.<br />
<br />
{{:Templateimpl:navtableentry | title=x86 SIBs }}<br />
<br />
<br />
* '''Embedded Servers Selection Guide'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/embedded_servers SIB Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/EmbeddedServers/ SIB Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=Getting_Started_With_Minicom&diff=5316Getting Started With Minicom2016-02-18T19:34:03Z<p>Awichmann: </p>
<hr />
<div>{{todo| Complete (10.28.2015-16:36->JJ+);(11.2.2015-18:00->JJ+);(11.3.2015-14:25->JJ+);(11.04.2015-13:00->MD-);(11.04.2015-17:15->JJ+);(11.05.2015-18:55->MD-);(11.09.2015-15:14->JJ+);(11.10.2015-11:00->MD+);(11.10.2015-12:32->KY+) |Jeffrey Jung| project=OE 5.0,Complete,JJ,MD,KY}}<br />
{{#seo:minicom<br />
|title=Getting Started With Minicom<br />
|titlemode=append<br />
|keywords=minicom,PuTTY,serial console,terminal<br />
|description=A guide to help customers connect to their devices with minicom<br />
}}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- <span style="background:#00FF00;color:#FF0000;font-size:300%">'''''Put the page description text here.'''''</span><br />
__TOC__<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:bg | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }}<br />
<code>minicom</code> is a serial communication program that connects to devices through a GNU/Linux PC's serial ports. If run by calling its name without any additional arguments, it uses whatever settings have been saved for its defaults in <code>/etc/minicom/minirc.dfl</code>. For those using Windows, PuTTY is a viable application to make such connections between a Windows PC and one of our EMAC devices. More information about PuTTY can be found at http://wiki.emacinc.com/wiki/PuTTY. <br />
<br />
Please note that while PuTTY will work, it is missing a number of features relative to a real Linux terminal. In particular, a number of keystroke shortcuts will not work with PuTTY, and not all output will be displayed correctly in PuTTY (although it does manage to display most output correctly). For serious work with Linux, a real Linux terminal (such as minicom, described here) is strongly recommended.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:geninfo | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }}<br />
The use of a terminal emulator, such as <code>minicom</code>, is required when connecting to an EMAC board via a serial console. This page sets out to provide general information about using <code>minicom</code> to communicate between EMAC machines and a development PC.<br />
<br />
The following list of arguments can be used to alter minicom's behavior from the command line:<br />
<br />
;-b <baudrate><br />
:The serial port baud rate used by the external device–typically a SOM.<br />
;-D <device_name><br />
:The device name for the serial port being used.<br />
;-h<br />
:Show a list of arguments that minicom accepts.<br />
<br />
For a more comprehensive list of options and their descriptions, read the manpage for minicom:<br />
{{cli|man minicom|hostname=developerpc|username=user}}<br />
<br />
The calling convention for minicom is as follows:<br />
<code>minicom [OPTIONS] [configuration]</code><br />
<br />
Where <code>[OPTIONS]</code> is a space-delimited list of options from among those listed above.<br />
<code>[configuration]</code> is a configuration file that can be found in <code>/etc/minicom/</code>. <br />
<br />
Note that most configurations are named <code>minirc.<some_name></code> where <code><some_name></code> is what should be specified in place of <code>[configuration]</code> above.<br />
<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:using | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }}<br />
<cl>1. If <code>minicom</code> has yet to be installed on your Linux machine, use <code>apt-get</code> to install the <code>minicom</code> package<br />
{{cli|sudo apt-get install minicom|hostname=developerpc|username=user}}<br />
<br />
* The <code>minicom</code> settings will need to be changed so that the application will be able to find your device. Pull up the settings using the <code>-s</code> option.<br />
{{cli|sudo minicom -s|hostname=developerpc|username=user}}<br />
<br />
This should bring up a colorful display listing the different settings. If the display isn't colored, arrow down to '''Exit from Minicom'''. Run the <code>minicom</code> command with the option <code>-con</code>. The <code>c</code> specifies the color display and <code>on</code> tells <code>minicom</code> to display the interface in color. <code>minicom</code> can be made to always run in color by modifying the <code>~/.bashrc</code> file, setting the <code>MINICOM</code> environment variable by adding the lines shown below, and restarting your terminal session (or sourcing your <code>.bashrc</code>) to make the change take effect:<br />
<pre><br />
MINICOM&#x3d;'-con'<br />
export MINICOM<br />
</pre><br />
<br />
Another method to set <code>minicom</code> to always display in color is to set an alias for <code>minicom</code> to <code>minicom -con</code>. However, doing this could lead to problems or confusion when trying to run minicom with other aliases or with a very specific set of commandline options, so the environment variable method should be used instead wherever possible.<br />
<pre><br />
alias minicom='minicom -con'<br />
</pre><br />
<br />
* The first thing that will need to be configured is the '''Serial port setup'''. Arrow down to the title and press the 'Enter' key.<br />
<br /><br />
<br />
* To modify the different configurations, press the key corresponding to the setting. For example, press the 'A' key to modify the path to the '''Serial Device'''. Press the 'Enter' key to save the parameters for the setting. The settings for specific EMAC devices can be found at the [[Serial_Connections | Serial Connections]] page. <br /> [[File:Minicomserialport.png| Serial Port Setup for minicom]]<br />
<br /><br />
In this screenshot, the "115200 8N1" for the '''Bps/Par/Bits''' setting indicates the baud rate is set to 115200, data bits set to 8 (the '8' in 8N1), parity is set to none (the 'N' in 8N1), and stop bits is set to 1 (the '1' in 8N1).<br />
<br />
* Press enter and scroll to '''Modem and dialing''' and press enter again. Clear out the '''Init string''', '''Reset string''', '''Dialing prefix #1''', '''Dialing suffix #1''', '''Dialing prefix #2''', '''Dialing suffix #2''', '''Dialing prefix #3''', '''Dialing suffix #3''' by pressing the corresponding letters [A-H] then deleting the string. The final result should look like: <br />[[File:Minicom_dialing_parameter_setup.png| Minicom dialing and parameter setup]]<br />
<br /><br />
<br />
* You will most likely wish to modify the '''Serial Device''' setting to have the path to the serial port you normally use. This way, you'll be able to run the command without any options or commands. The <code>scanserial</code> tool provided in the <code>emac-tools-util</code> package can display a list of serial ports using the <code>-l</code> option.<br />
{{cli|scanserial -l| hostname=developerpc|username=user}}<br />
<br />
More information about the <code>scanserial</code> program can be found at the [[Scanserial | scanserial page]].<br />
Press the 'Esc' key to be be brought back to the configurations page.<br />
<br />
* The next setting that needs to be configured is the '''Modem and dialing'''. Press the 'A' key and delete its content. Hit the 'Enter' key to set the setting as blank. Also do this for B through H and K. Hit the 'Esc' key when finished deleting the content of these settings.<br />
* That's all the modifications that need to be done to get <code>minicom</code> set up. You'll need to save the configurations in one of two ways:<br />
:*You may want to save the configuration as the default whenever <code>minicom</code> is launched. Arrow down to '''Save setup as dfl''' and press 'Enter'.<br />
<br />
:*You may also save the modifications as its own configuration. This is advantageous if you have many serial ports or if you have multiple systems with varying serial connection configurations. Arrow down to '''Save setup as..''' and press 'Enter'. Name the configuration as something unique, like <code>ttyS11</code> to identify that the path to the serial device is <code>/dev/ttyS11</code>. The new file created for your configuration will be <code>/etc/minicom/mini.ttyS11</code>. You may pass the configuration as an argument to use that configuration when launching <code>minicom</code>:<br />
:{{cli|minicom ttyS11|hostname=developerpc|username=user}}<br />
<br />
<br />
:If a "<code>cannot write to"</code> message pops up, you likely aren't running the command as root. Re-run "<code>minicom -s</code>" with <code>sudo</code>.<br />
<br />
* Once you have saved the configuration, arrow down to '''Exit from Minicom'''.<br />
</cl><br />
<br />
<br />
== Running Minicom ==<br />
Now that everything is configured, you are ready to open the serial connection.<br />
<cl>1. Run the <code>minicom</code> command to start <code>minicom</code> with the serial port setting you configured above. If you wish to use <code>minicom</code> on a different serial port, see the note below.<br />
<br />
* Log in, if necessary, with the appropriate username and password for the device. Login information can be found [[System_Log_In | here]].<br />
You're now able to communicate to the device and use <code>minicom</code> in the same way as using the terminal for the device. <br />
</cl><br />
{{ note | When opening a connection to a different serial port than what has been saved from the <code>minicom</code> configurations, use the <code>-D</code> option to specify the path to the desired serial port. For example, to use <code>/dev/ttyUSB0</code>, run <code>minicom</code> like this:<br />
<br />
<br />
{{cli|minicom -D /dev/ttyUSB0| hostname=developerpc| username=user}}<br />
<br />
}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- There's only one example, so we really don't need an entire section for it. Plus, the cli template looks nice inside the Note box.<br />
<br />
{{:Templateimpl:examples | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }} <br />
Suppose the port <code>/dev/ttyS10</code> is specified as the default. If the desired path to a different port is at <code>/dev/ttyUSB0</code>, run <code>minicom</code> as follows:<br />
{{cli|minicom -D /dev/ttyUSB0| hostname=developerpc| username=user}} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /****************************************** Conclusion ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:conclusion | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }}<br />
This program is a very important tool for developers. The serial console is essential for working with the bootloader on ARM systems, since U-Boot cannot be accessed via ssh. Using the serial console, you will be able to configure the bootloader, to program new kernels via the bootloader, to program new filesystems, to make a copy of the filesystem on a board, and to perform memory checks using U-Boot. The serial console will also enable you to see startup and shutdown messages, to configure and debug the system when networking is not configured or is not working, and to debug the system when the machine is not booting up.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /****************************************** More Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:moreinfo | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }}<br />
* [[System_Log_In | System Log In]]<br />
* [[Scanserial | scanserial]]<br />
<br />
<br />
{{:Templateimpl:whatnext | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }}<br />
* [[Serial_Connections | Serial Connections]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=File:Minicom_dialing_parameter_setup.png&diff=5315File:Minicom dialing parameter setup.png2016-02-18T19:26:03Z<p>Awichmann: </p>
<hr />
<div></div>Awichmannhttps://wiki.emacinc.com/index.php?title=Getting_Started_With_Minicom&diff=5314Getting Started With Minicom2016-02-18T19:23:43Z<p>Awichmann: </p>
<hr />
<div>{{todo| Complete (10.28.2015-16:36->JJ+);(11.2.2015-18:00->JJ+);(11.3.2015-14:25->JJ+);(11.04.2015-13:00->MD-);(11.04.2015-17:15->JJ+);(11.05.2015-18:55->MD-);(11.09.2015-15:14->JJ+);(11.10.2015-11:00->MD+);(11.10.2015-12:32->KY+) |Jeffrey Jung| project=OE 5.0,Complete,JJ,MD,KY}}<br />
{{#seo:minicom<br />
|title=Getting Started With Minicom<br />
|titlemode=append<br />
|keywords=minicom,PuTTY,serial console,terminal<br />
|description=A guide to help customers connect to their devices with minicom<br />
}}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- <span style="background:#00FF00;color:#FF0000;font-size:300%">'''''Put the page description text here.'''''</span><br />
__TOC__<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:bg | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }}<br />
<code>minicom</code> is a serial communication program that connects to devices through a GNU/Linux PC's serial ports. If run by calling its name without any additional arguments, it uses whatever settings have been saved for its defaults in <code>/etc/minicom/minirc.dfl</code>. For those using Windows, PuTTY is a viable application to make such connections between a Windows PC and one of our EMAC devices. More information about PuTTY can be found at http://wiki.emacinc.com/wiki/PuTTY. <br />
<br />
Please note that while PuTTY will work, it is missing a number of features relative to a real Linux terminal. In particular, a number of keystroke shortcuts will not work with PuTTY, and not all output will be displayed correctly in PuTTY (although it does manage to display most output correctly). For serious work with Linux, a real Linux terminal (such as minicom, described here) is strongly recommended.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:geninfo | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }}<br />
The use of a terminal emulator, such as <code>minicom</code>, is required when connecting to an EMAC board via a serial console. This page sets out to provide general information about using <code>minicom</code> to communicate between EMAC machines and a development PC.<br />
<br />
The following list of arguments can be used to alter minicom's behavior from the command line:<br />
<br />
;-b <baudrate><br />
:The serial port baud rate used by the external device–typically a SOM.<br />
;-D <device_name><br />
:The device name for the serial port being used.<br />
;-h<br />
:Show a list of arguments that minicom accepts.<br />
<br />
For a more comprehensive list of options and their descriptions, read the manpage for minicom:<br />
{{cli|man minicom|hostname=developerpc|username=user}}<br />
<br />
The calling convention for minicom is as follows:<br />
<code>minicom [OPTIONS] [configuration]</code><br />
<br />
Where <code>[OPTIONS]</code> is a space-delimited list of options from among those listed above.<br />
<code>[configuration]</code> is a configuration file that can be found in <code>/etc/minicom/</code>. <br />
<br />
Note that most configurations are named <code>minirc.<some_name></code> where <code><some_name></code> is what should be specified in place of <code>[configuration]</code> above.<br />
<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:using | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }}<br />
<cl>1. If <code>minicom</code> has yet to be installed on your Linux machine, use <code>apt-get</code> to install the <code>minicom</code> package<br />
{{cli|sudo apt-get install minicom|hostname=developerpc|username=user}}<br />
<br />
* The <code>minicom</code> settings will need to be changed so that the application will be able to find your device. Pull up the settings using the <code>-s</code> option.<br />
{{cli|sudo minicom -s|hostname=developerpc|username=user}}<br />
<br />
This should bring up a colorful display listing the different settings. If the display isn't colored, arrow down to '''Exit from Minicom'''. Run the <code>minicom</code> command with the option <code>-con</code>. The <code>c</code> specifies the color display and <code>on</code> tells <code>minicom</code> to display the interface in color. <code>minicom</code> can be made to always run in color by modifying the <code>~/.bashrc</code> file, setting the <code>MINICOM</code> environment variable by adding the lines shown below, and restarting your terminal session (or sourcing your <code>.bashrc</code>) to make the change take effect:<br />
<pre><br />
MINICOM&#x3d;'-con'<br />
export MINICOM<br />
</pre><br />
<br />
Another method to set <code>minicom</code> to always display in color is to set an alias for <code>minicom</code> to <code>minicom -con</code>. However, doing this could lead to problems or confusion when trying to run minicom with other aliases or with a very specific set of commandline options, so the environment variable method should be used instead wherever possible.<br />
<pre><br />
alias minicom='minicom -con'<br />
</pre><br />
<br />
* The first thing that will need to be configured is the '''Serial port setup'''. Arrow down to the title and press the 'Enter' key.<br />
<br /><br />
<br />
* To modify the different configurations, press the key corresponding to the setting. For example, press the 'A' key to modify the path to the '''Serial Device'''. Press the 'Enter' key to save the parameters for the setting. The settings for specific EMAC devices can be found at the [[Serial_Connections | Serial Connections]] page. <br /> [[File:Minicomserialport.png| Serial Port Setup for minicom]]<br />
<br /><br />
In this screenshot, the "115200 8N1" for the '''Bps/Par/Bits''' setting indicates the baud rate is set to 115200, data bits set to 8 (the '8' in 8N1), parity is set to none (the 'N' in 8N1), and stop bits is set to 1 (the '1' in 8N1).<br />
<br />
* Press enter and scroll to '''Modem and dialing''' and press enter again. Clear out the '''Init string''', '''Reset string''', '''Dialing prefix #1''', '''Dialing suffix #1''', '''Dialing prefix #2''', '''Dialing suffix #2''', '''Dialing prefix #3''', '''Dialing suffix #3''' by pressing the corresponding letters [A-H] then deleting the string. The final result should look like:<br />
<br />
* You will most likely wish to modify the '''Serial Device''' setting to have the path to the serial port you normally use. This way, you'll be able to run the command without any options or commands. The <code>scanserial</code> tool provided in the <code>emac-tools-util</code> package can display a list of serial ports using the <code>-l</code> option.<br />
{{cli|scanserial -l| hostname=developerpc|username=user}}<br />
<br />
More information about the <code>scanserial</code> program can be found at the [[Scanserial | scanserial page]].<br />
Press the 'Esc' key to be be brought back to the configurations page.<br />
<br />
* The next setting that needs to be configured is the '''Modem and dialing'''. Press the 'A' key and delete its content. Hit the 'Enter' key to set the setting as blank. Also do this for B through H and K. Hit the 'Esc' key when finished deleting the content of these settings.<br />
* That's all the modifications that need to be done to get <code>minicom</code> set up. You'll need to save the configurations in one of two ways:<br />
:*You may want to save the configuration as the default whenever <code>minicom</code> is launched. Arrow down to '''Save setup as dfl''' and press 'Enter'.<br />
<br />
:*You may also save the modifications as its own configuration. This is advantageous if you have many serial ports or if you have multiple systems with varying serial connection configurations. Arrow down to '''Save setup as..''' and press 'Enter'. Name the configuration as something unique, like <code>ttyS11</code> to identify that the path to the serial device is <code>/dev/ttyS11</code>. The new file created for your configuration will be <code>/etc/minicom/mini.ttyS11</code>. You may pass the configuration as an argument to use that configuration when launching <code>minicom</code>:<br />
:{{cli|minicom ttyS11|hostname=developerpc|username=user}}<br />
<br />
<br />
:If a "<code>cannot write to"</code> message pops up, you likely aren't running the command as root. Re-run "<code>minicom -s</code>" with <code>sudo</code>.<br />
<br />
* Once you have saved the configuration, arrow down to '''Exit from Minicom'''.<br />
</cl><br />
<br />
<br />
== Running Minicom ==<br />
Now that everything is configured, you are ready to open the serial connection.<br />
<cl>1. Run the <code>minicom</code> command to start <code>minicom</code> with the serial port setting you configured above. If you wish to use <code>minicom</code> on a different serial port, see the note below.<br />
<br />
* Log in, if necessary, with the appropriate username and password for the device. Login information can be found [[System_Log_In | here]].<br />
You're now able to communicate to the device and use <code>minicom</code> in the same way as using the terminal for the device. <br />
</cl><br />
{{ note | When opening a connection to a different serial port than what has been saved from the <code>minicom</code> configurations, use the <code>-D</code> option to specify the path to the desired serial port. For example, to use <code>/dev/ttyUSB0</code>, run <code>minicom</code> like this:<br />
<br />
<br />
{{cli|minicom -D /dev/ttyUSB0| hostname=developerpc| username=user}}<br />
<br />
}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- There's only one example, so we really don't need an entire section for it. Plus, the cli template looks nice inside the Note box.<br />
<br />
{{:Templateimpl:examples | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }} <br />
Suppose the port <code>/dev/ttyS10</code> is specified as the default. If the desired path to a different port is at <code>/dev/ttyUSB0</code>, run <code>minicom</code> as follows:<br />
{{cli|minicom -D /dev/ttyUSB0| hostname=developerpc| username=user}} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /****************************************** Conclusion ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:conclusion | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }}<br />
This program is a very important tool for developers. The serial console is essential for working with the bootloader on ARM systems, since U-Boot cannot be accessed via ssh. Using the serial console, you will be able to configure the bootloader, to program new kernels via the bootloader, to program new filesystems, to make a copy of the filesystem on a board, and to perform memory checks using U-Boot. The serial console will also enable you to see startup and shutdown messages, to configure and debug the system when networking is not configured or is not working, and to debug the system when the machine is not booting up.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /****************************************** More Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:moreinfo | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }}<br />
* [[System_Log_In | System Log In]]<br />
* [[Scanserial | scanserial]]<br />
<br />
<br />
{{:Templateimpl:whatnext | initials=JJ | title=Getting Started With Minicom | desc=Description for SEO | project=OE 5.0 }}<br />
* [[Serial_Connections | Serial Connections]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=Serial_Connections&diff=5313Serial Connections2016-02-18T19:08:50Z<p>Awichmann: </p>
<hr />
<div>{{todo|SEOKWREV (11.25.13-13:05->KY+);(11.25.13-18:45->MD+);(11.26.13-21:40->MD+);(12.20.13-11:12->MW+);(03.04.14-15:20->BS-);(03.14.14-15:55->BS+)(03.14.14-15:55->BS+)(10.26.15-18:25->MG+)|Klint Youngmeyer|project=oe 4,oe 5,ky,SEOKWREV,md,mw,bs}}<br />
<br />
{{#seo:<br />
|title=Serial Connections<br />
|titlemode=append<br />
|keywords=Serial Connections,Serial Terminal,PuTTY,Serial Communication Parameters<br />
|description=Serial Connections to EMAC boards.<br />
}}<br />
<!--'''THIS PAGE NEEDS: 1. To be split into two pages: "Serial Connections" and "Network Connections". This is because the table listing serial connection information is very important, but has been very difficult to find. We need the page to have the most obvious name possible for this. We also should try to find other pages which mention using a serial connection, and refer them to this page to find out the connection information they need for their board.'''--><br />
<br />
There are several ways to connect to a system running EMAC OE Linux. The preferred connection method depends on the capabilities of the hardware. For example, headless systems (those without a graphical interface) will most likely use a serial port console, while systems with a video connection may be accessed using a keyboard and LCD or monitor. When an LCD or monitor is available, a serial connection can occasionally still be needed; usually, this need arises after a user has accidentally misconfigured the display. Other times, it may be useful to be able to use a serial console on a board that's running remotely but has had its network connection drop out. The serial console can be a very useful tool for diagnosing and debugging issues even after development has finished.<br />
<br />
== Serial Terminal ==<br />
A serial terminal connection is most commonly the first connection that will be made to a system in its default configuration. A serial terminal application such as [[Getting_Started_With_Minicom | Minicom]] for Linux or [[PuTTY]] under Windows is required for this connection. The serial cable type, port, and communication parameters for each system type are listed in Table 1 below.<br />
<br />
<br clear=all><br />
<div align=center><br />
{| class="wikitable" style="text-align: center;" |Table 1: Serial Communication Parameters<br />
|-<br />
! SoM !! Port !! Cable Type !! Baud Rate !! Data Bits !! Parity !! Stop Bits !! Flow Control<br />
|-<br />
| [[ ARM_SOM | 200 Pin SoM's ]] || COMB || NULL Modem || 115200 || 8 || None || 1 || None<br />
|-<br />
| [[ ARM_SOM | 144 Pin SoM's ]] || COME || NULL Modem || 115200 || 8 || None || 1 || None<br />
|-<br />
| [[ SOM-9260 ]] || COMA || NULL Modem || 115200 || 8 || None || 1 || None<br />
|-<br />
| [[ SOM-9G20 ]] || COMA || NULL Modem || 115200 || 8 || None || 1 || None<br />
|-<br />
| [[ iPac-9x25 ]] || COM1 || NULL Modem || 115200 || 8 || None || 1 || None<br />
|-<br />
| x86 Boards || * || * || * || 8 || None || 1 || None<br />
|}<br />
</div><br />
<br />
{{note | '''*''' : These settings vary among x86 systems. Refer to the system manual for the target board for more information. Not all x86 systems have a serial terminal connection enabled by default.}}<br clear=all><br />
<br />
Follow the steps below to establish a serial connection:<br />
# Connect a serial cable between the serial port on the workstation and target board and start a terminal application.<br />
# Setup the communication parameters for your board according to Table 1.<br />
# Connect power to the target board; boot messages will begin to print within a few seconds.<br />
# When the board has finished booting a login prompt will appear.<br />
<br />
<br />
{{note| Boards that do not have the serial device set as the default kernel console (such as the majority of headed x86 systems) will not display boot messages over the serial port during boot without further configuration. In these cases, the login prompt will appear when the board has finished booting. If a login prompt does not appear, press enter in the serial terminal application several times.}}<br clear=all><br />
<br />
<br />
<br />
== Next Steps ==<br />
After you have established a connection with your device running EMAC OE Linux, you will need to [[System_Log_In | log into the system.]]<br />
<br />
<!-- [[Category:Linux]]<br />
[[Category:OpenEmbedded]]<br />
--></div>Awichmannhttps://wiki.emacinc.com/index.php?title=Creating_a_New_EMAC_OE_SDK_Project_with_CMake&diff=5312Creating a New EMAC OE SDK Project with CMake2016-02-18T19:06:18Z<p>Awichmann: </p>
<hr />
<div>{{todo| Complete (08.07.2015-12:59->KY+)(08.17.2015-12:07->KY+)(08.17.2015-14:25->KY+)(08.17.2015-17:40->MD-)(11.03.2015-13:38->KY+);(11.04.2015-11:20->MD-)(11.04.2015-13:04->KY+-);(11.04.2015-13:25->MD+)(11.04.2015-14:45->MG+)|Klint Youngmeyer| project=OE 5.0,KY,MD,Complete }}<br />
{{#seo:<br />
|title=Creating a New EMAC OE SDK Project with CMake<br />
|titlemode=append<br />
|keywords=CMakeLists.txt, CMake cross-compiling, CMake, CMake ARM, oe_init_project<br />
|description=Creating an EMAC OE SDK project which uses the CMake build system.<br />
}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
The EMAC OE SDK is distributed with the intent that CMake be used with the EMAC OE toolchain and libraries to build most projects. This page demonstrates the process of creating and compiling a new project with CMake, and running it on the target machine.<br />
<br />
__TOC__<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:geninfo | initials=KY | title=Creating a New EMAC OE SDK Project with CMake | desc=Creating an EMAC OE SDK Project which Builds via CMake | project=OE 5.0 }}<br />
Creating a new EMAC CMake project is accomplished with the use of the <code>oe_init_project</code> program. This program is included in the <code>emac-tools-projects</code> apt package, which is part of the EMAC SDK. For instructions on installing the EMAC SDK, please see [[Getting_Started_with_the_EMAC_OE_SDK#Installing_EMAC_SDK |this section]] in the getting started guide.<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:using | initials=KY | title=Creating a New EMAC OE SDK Project with CMake | desc=Creating an EMAC OE SDK project which Builds with CMake | project=OE 5.0 }}<br />
<br />
This section demonstrates how to use the EMAC CMake tool, <code>oe_init_project</code>, to generate CMake files automatically for a project. When using the EMAC SDK there are currently two options for cross compiling:<br />
* <code>arm</code><br />
* <code>x86</code><br />
For the purposes of this guide, the <code>arm</code> option will be used for the listed examples.<br />
=== Host Machine Compiling ===<br />
Navigate to the directory where the project will be located. Then run the CMake new project tool, <code>oe_init_project</code>.<br />
{{clo}}<br />
{{clio | username=developer | hostname=ldc | pwd=~/projects | oe_init_project -n hello.c }}<br />
If desired, please enter a name for this project, otherwise press Enter to use the default: hello_emac <br /><br />
<br />
-- Creating new project directory... <br /><br />
-- Creating new source file... <br /><br />
-- Building custom CMakeLists.txt file... <br /><br />
-- Done. <br /><br />
<br />
Do you want to create a build directory for this project? (y/n) y <br /><br />
<br />
-- Creating build directory... <br /><br />
<br />
Do you want to run cmake for this project? (y/n) y <br /><br />
<br />
-- Using system compiler <br /><br />
-- The C compiler identification is GNU 4.8.2 <br /><br />
-- The CXX compiler identification is GNU 4.8.2 <br /><br />
-- Check for working C compiler: /usr/bin/cc <br /><br />
-- Check for working C compiler: /usr/bin/cc -- works <br /><br />
-- Detecting C compiler ABI info <br /><br />
-- Detecting C compiler ABI info - done <br /><br />
-- Check for working CXX compiler: /usr/bin/c++ <br /><br />
-- Check for working CXX compiler: /usr/bin/c++ -- works <br /><br />
-- Detecting CXX compiler ABI info <br /><br />
-- Detecting CXX compiler ABI info - done <br /><br />
-- Configuring done <br /><br />
-- Generating done <br /><br />
-- Build files have been written to: /home/developer/projects/hello_emac/hello_emac-build <br /><br />
<br />
Do you want to compile this project? (y/n) y<br />
<br />
Scanning dependencies of target hello_emac <br /><br />
[100%] Building C object CMakeFiles/hello_emac.dir/hello.c.o <br /><br />
Linking C executable hello_emac <br /><br />
[100%] Built target hello_emac <br /><br />
{{clos}}<br />
<br />
The executable, in this case, is now inside the <code> hello_emac/hello_emac-build </code> directory.<br />
FinalDraft<br />
=== Target Machine Compiling ===<br />
<br />
The CMake project script has now made a project directory that contains the following:<br />
* <code>CMakeLists.txt</code><br />
* Source code file (<code>hello.c</code> in this case)<br />
* <code>README</code> file<br />
* Desktop Build Directory (<code>hello_emac-build</code> in this case)<br />
<br />
Despite what the file extension implies, the <code>CMakeLists.txt</code> is actually a script which contains the required information to automatically create a <code>Makefile</code> for any supported architecture. This file was generated by the EMAC <code>oe_init_project</code> tool, and will need to be modified over time as a project grows. The comments in the <code>CMakeLists.txt</code> file generated by the EMAC tool will provide a good starting point for how to add additional source files and how to perform other common tasks related to maintaining your CMake build system as you develop your software project. The CMake project provides extensive documentation on how to work with these files.<br />
<br />
The source code file generated by the script (<code>hello.c</code>) contains a basic Hello World style program. This can provide a starting point for your application, or can be replaced by another source file with the same name.<br />
<br />
The <code>README</code> file contains more information on using <code>CMake</code> with the EMAC OE 5.0 SDK. You may refer to this file for quick reference.<br />
<br />
The Desktop Build Directory (<code>hello_emac-build</code>) contains the executable, <code>hello_emac</code>, the <code>Makefile</code>, and various cache files. These were automatically created by CMake and by the build system, and can be recreated at any time.<br />
<br />
It is useful to have a Desktop Build Directory because it is easier (in the beginning) to use the desktop to verify all code changes before cross-compiling for a target board. This will be useful until the application under development depends upon resources which are only available on the target hardware, such as certain device drivers or the touchscreen (if so equipped).<br />
<br />
Use the following steps to cross-compile the project and send it to a target board.<br />
<br /><br />
<cl><br />
1. In a terminal, navigate to the base directory of the project. {{note | If the architecture of the target board you're using for your appliction <code>x86</code>, then you will need to change all occurrences of <code>arm</code> in the following sections below to <code>x86</code>.}}<br />
* Create a build directory for cross compiling. <br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac | mkdir hello_emac-build-arm }} <br />
* Navigate into the newly created directory.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac | cd hello_emac-build-arm }} <br />
* Run <code>cmake</code> using the target architecture.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | 1 = cmake .. -DARCH:STRING=arm }} <br />
* Compile the code using <code>make</code>.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | make }} <br />
The <code> make </code> command creates the target executable in the <code>hello_emac-build-arm</code> directory.<br />
* Now copy the executable to the target board. For information on copying the executable file, see the [[ #Transferring_Files | Transferring Files ]] section.<br />
</cl><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:examples | initials=KY | title=Creating a New EMAC OE SDK Project with CMake | desc=Creating an EMAC OE SDK project for use with CMake | project=OE 5.0 }}<br />
This section illustrates how to complete various tasks associated with configuring and building a CMake project.<br />
===Debug Build Types===<br />
By default, new projects will have the Debug build type. To compile the project with the Release or Minimum Size Release build types, there are two options:<br />
*Make a secondary (or tertiary) build directory. (Recommended)<br />
*Clean the current build directory and re-run CMake.<br />
The different levels of build type correlate to usage of different C Flags. When cross-compiling, these C Flags are located in the <code>toolchain.<architecture>.cmake</code> files located, by default, in <code>/opt/emac/5.X/</code>, with ''X'' being the specific version of SDK. The following table will give a brief overview of the different build types.<br />
<br />
<br />
<br /><br />
<br /><br />
<table style="border-style:double; border-width:2px; margin-top:-10%; margin-bottom:-3%;"><tr style="border-style:double; border-width:2px;"><td>'''Name:'''</td><td>'''Type:'''</td><td>'''Debugging Features:'''</td><td>'''Description:'''</td><td>'''Optimization Level:'''</td><td>'''C Flags Used:'''</td></tr><br />
<br />
<br />
<tr style="border-style:solid; border-width:2px;"><td>Release</td><td>Release</td><td>disabled</td><td>Release targeted build optimized for best performance.</td><td>-O2</td><td>CMAKE_C_FLAGS_RELEASE</td></tr><br />
<br />
<br />
<tr style="border-style:solid; border-width:2px;"><td>MinSizeRel</td><td>Release</td><td>disabled</td><td>Release targeted build with experimental optimizations. (Builds using this should be thoroughly tested.)</td><td>-O3</td><td>CMAKE_C_FLAGS_MINSIZEREL</td></tr><br />
<br />
<br />
<tr style="border-style:solid; border-width:2px;"><td>Debug</td><td>Debug</td><td>enabled</td><td>A standard debugging oriented build, optimized for improved debugging.</td><td>-O0</td><td>CMAKE_C_FLAGS_DEBUG</td></tr><br />
<br />
</table><br />
<br /><br />
<br /><br />
<br /><br />
If you wish to add any additional flags to a build type, they can be defined in the project's <code>CMakeList.txt</code> file as shown in the code snippet below.<br />
<syntaxhighlight lang="cmake"><br />
project(example)<br />
<br />
SET(MAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -Wpedantic")<br />
<br />
# This will add the -Wall and -Wpedantic options to the existing debug build flags<br />
</syntaxhighlight><br />
<!--{{warning | This is really useful information for any developer. Knowing the level of optimization is insightful, so that should be included. Knowing whether or not the build was stripped of debugging information is important if they ever intend to release binaries to the public (such as for updates) and to ensure small size and max speed. Knowing what preprocessor defines are #def'd with a target is really useful when writing debugging code.<br />
<br />
<br />
I would put all this in a table like the example I made above (but accurate and complete). The border-radius and shadows will need to be overridden to make it look right. Can always use css or a template for this.<br />
}}--><br />
<br />
<br />
====Method 1: Create separate build directory====<br />
To create a Release build using the 1st (recommended) method, use the following steps. This method is recommended because it allows both the Debug and the Release executable to exist at the same time.<br />
<cl><br />
1. In a terminal, navigate to the base directory of the project.<br />
* Create a new release build directory<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac | mkdir hello_emac-build-arm-release }}<br />
* Change directories into the newly created directory.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac | cd hello_emac-build-arm-release }} <br />
* Run <code>cmake</code> using the target architecture.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | 1 = cmake .. -DARCH:STRING=arm -DCMAKE_BUILD_TYPE:STRING=Release }}{{note | The string 'MinSizeRel' can be used in place of 'Release' for a potentially smaller executable}}<br />
* Compile the code using <code>make</code>.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | make }} <br />
</cl><br />
<br /><br />
====Method 2: Re-use build directory====<br />
Another option for creating a release build is as follows:<br />
<cl><br />
1. In a terminal, navigate to the build directory of the project.<br />
* Clean the directory with <code>make</code><br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | 1 = make clean}}<br />
* Run <code>cmake</code> using the target architecture.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | 1 = cmake .. -DARCH:STRING=arm -DCMAKE_BUILD_TYPE:STRING=Release }}{{note | The string 'MinSizeRel' can be used in place of 'Release' for a potentially smaller executable}}<br />
* Compile the code using <code>make</code>.<br />
{{cli | username=developer | hostname=ldc | pwd=~/projects/hello_emac/hello_emac-build-arm | make }} <br />
</cl><br />
<br />
===Renaming the Target Executable===<br />
To rename the executable, the <code>ADD_EXECUTABLE()</code> function arguments must be changed. The first argument refers to the name of the executable, and the second refers to the source code file.<br />
<br />
To change the name of the executable from "main" to "new_name", change the <code>ADD_EXECUTABLE()</code> from the first code box to the second code box.<br />
<syntaxhighlight lang="cmake"><br />
ADD_EXECUTABLE(main main.cpp)<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="cmake"><br />
ADD_EXECUTABLE(new_name main.cpp)<br />
</syntaxhighlight><br />
<br />
===Adding Include Files===<br />
To add an include file and implementation file (in this case, the <code>tools.cpp</code> and <code>tools.h</code> in the <code>util</code> and <code>include</code> directory, respectively) to the CMake project, changes will need to be made to the CMakeLists.txt file. Please refer to the code sample below.<br />
<br />
# The directory to be included must be specified by the <code>INCLUDE_DIRECTORIES()</code> function. The variable <code>${PROJECT_SOURCE_DIR}</code> refers to the base path of the project which is generally where this <code>README</code> file is located.<br />
# The <code>SOURCES</code> must be set. This list of files should include all of the source files in the project.<br />
<br />
<syntaxhighlight lang="cmake"><br />
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}include)<br />
<br />
SET(SOURCES<br />
${PROJECT_SOURCE_DIR}main.cpp<br />
${PROJECT_SOURCE_DIR}util/tools.cpp<br />
)<br />
SET(HEADERS<br />
${PROJECT_SOURCE_DIR}include/tools.h<br />
)<br />
<br />
ADD_EXECUTABLE(main ${SOURCES} ${HEADERS})<br />
</syntaxhighlight><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /****************************************** More Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:moreinfo | initials=KY | title=Creating a New EMAC OE SDK Project with CMake | desc=Creating an EMAC OE SDK project for use with CMake | project=OE 5.0 }}<br />
<!--{{:Templateimpl:whatnext | initials=KY | title=Creating a New EMAC OE SDK Project with CMake | desc=Creating an EMAC OE SDK project for use with CMake | project=OE 5.0 }}--><br />
* [[System_Log_In | System Log In]]<br />
* [[Serial_Connections | Serial Connections ]]<br />
* [[Network_Connections | Network Connections ]]<br />
* [[System_Log_In | System Log In ]]<br />
* [[Remote_Debugging_EMAC_OE_SDK_Projects_with_gdbserver | Remote Debugging EMAC OE SDK Projects with gdbserver ]]<br />
* [[System_Logging | System Logging ]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=OE50:Packages&diff=5311OE50:Packages2016-02-18T19:03:45Z<p>Awichmann: </p>
<hr />
<div>{{todo|(1-12-15-12:30->MG+)(1.12.15-18:05->MD+)(11.10.15-16:05->KY+)|Michael Gloff, Mike Dean|project=oe 5,mg,md,Complete}}<br />
<br />
{{#seo:<br />
|title=EMAC OE 5.0 Release information<br />
|titlemode=append<br />
|keywords=OE 5.0 Standard Packages,Release information<br />
|description=Information about EMAC OE 5.0 Release.<br />
}}<br />
<br />
{{DISPLAYTITLE:EMAC OE 5.X Release Information}}<br />
<br />
The OE 5.0.''x'' release represents the next generation of embedded Linux. The new crop of embedded machines on the market have become powerful enough to justify bringing some of the best parts of Linux distributions that are targeted towards servers and desktops into the embedded realm. OE 5.0 is designed to make developing software for embedded Linux easier than ever before.<br />
<br />
===New Features===<br />
<br />
Quite a few new features are being introduced with OE 5.0 to support the goal of streamlining the development process and improving the embedded Linux software development experience. These features can be broken down into the following categories.<br />
<br />
====Operating System====<br />
<br />
The underlying operating system, Linux, has seen a refresh to the much more modern 3.10 kernel on ARM, and the 3.14 kernel on x86 systems. This updated kernel provides improved support for the ARM architecture, new drivers for new hardware, and the Device Tree File System for ARM hardware. Device Tree is a new way of specifying hardware parameters which pulls memory offset specifications (and similar) out of the kernel binary and puts them into a separate file which can be maintained independently of the kernel.<br />
<br />
====Filesystem====<br />
<br />
OE 5.0 uses more modern filesystems to enable faster access to files, larger maximum filesystem sizes, and improved wear leveling on the underlying flash devices. The following filesystems are now a part of OE 5.0:<br />
<br />
* '''ext4''' - for eMMC/mSATA/SD/CF devices<br />
* '''JFFS2''' - for NAND flash devices<br />
<br />
The filesystem is now generated using the Yocto build system, which enables a more streamlined and simpler process for generating custom filesystems based on our available base images. The Yocto Project is hosted by engineers at Intel, and is built upon the time tested OpenEmbedded project.<br />
<br />
====SDK====<br />
<br />
EMAC OE 5.0 includes a new SDK with an updated GNU gcc compiler (version 4.9.1) which brings enhanced optimization capabilities, advanced code generation, and improved (preliminary) support for C++11 features. The gcc cross compilers come bundled with support for the CMake build system which greatly eases the work involved in creating a build system for today's complex software. The CMake system can be used from the command line as well as from the IDE, and is the default build system for new projects. EMAC OE 5.0 provides tools for generating the base CMake files from the commandline or from the IDE, allowing you to get started quickly whether you choose to use the commandline or an IDE for your development work.<br />
<br />
====IDE====<br />
<br />
EMAC OE 5.0 now includes the Qt Creator IDE as the standard development environment. This IDE provides a polished, sophisticated development environment which can be used for developing any type of application in C or C++. For Qt, it provides a sophisticated GUI editor and code generation wizards to enable RAD. The integrated help system is of use whether the issue with the application under development is related to Qt, Linux, or just standard C/C++.<br />
<br />
====Tools====<br />
<br />
EMAC OE 5.0 now includes a wealth of tools to enable development to proceed faster than ever before. These tools ease the effort required for numerous development tasks.<br />
<br />
Some of the development work in a typical project requires performing complex tasks which are done so infrequently that most developers need to look them up each time they're performed. These tasks typically have eaten into a project's time by taking much longer than anticipated to perform. EMAC OE 5.0 includes tools to make these tasks quick, simple, and intuitive. These tasks include:<br />
<br />
* Timezone Configuration.<br />
* Splashscreen Configuration.<br />
* Touchscreen Calibration.<br />
* Configuring software to automatically start on boot.<br />
* Finding the serial ports on the development desktop from among the dozens of device nodes which could all be ports.<br />
* Creation of desktop icons for opening serial terminals for your devices.<br />
* Configuring a system to log messages to a remote syslog server to enable capturing everything that happened on a machine right up to the point where it froze (without losing any messages).<br />
<br />
Other tasks, which are performed often by developers, can be cumbersome. EMAC OE 5.0 provides tools to make these chores easy, too:<br />
<br />
* Sending a compiled binary to a remote board and executing it.<br />
* Debugging a program on a remote board.<br />
* Ensuring the root filesystem is writeable before attempting to copy files to it, or changing files that are already there.<br />
* Maintaining a list of remote machines, with their IP addresses automatically updated as they change (usually due to DHCP leases handing out different addresses). The remote machines can be addressed by a name assigned by the developer, or by MAC or IP address, to perform any of the above tasks, plus:<br />
** Copy files to/from remote machines.<br />
** Browse the remote filesystem.<br />
** Ping the boards to see if they're alive.<br />
** Run programs on the remote board (any program).<br />
* Support developer scripts to automate routine tasks during the development process.<br />
<br />
Using these tools, the developer can easily create scripts to perform the following routine tasks without having to enter a password for the remote board a single time while running the script. A typical script might perform the following tasks:<br />
<br />
# Shut down the webserver on the remote board.<br />
# Remove all the web files from the remote board (to ensure there won't be stale files left behind), then replace them with the current locally held set of web files from the developer's desktop.<br />
# Remove and replace custom binary executables on the remote board.<br />
# Update the autostart scripts for executing programs on boot to ensure that they will start the current crop of programs that need to be run.<br />
# Copying configuration files into place on the remote board.<br />
# Copying content files (pictures, documents, videos, sound clips, database files, etc.) onto the remote board.<br />
# Send to the board a script to verify consistency of the files installed and/or to perform some final installation steps, and execute it out of a RAM disk.<br />
# Reboot the machine so that the developer can ensure it will come up into the desired state through every step of the development process.<br />
<br />
The above tasks have typically been very time consuming tasks, which has led to developers usually only performing a minimal subset of these tasks during each phase of the development cycle.<br />
<br />
EMAC OE 5.0 tools make it easy to provide these tasks every time, which, in addition to highlighting the cause of a problem as soon as possible after a change causes it, enables the following additional benefits:<br />
<br />
* The script can be used to program a new board, and continue development painlessly, when the previous development hardware has been compromised by an unexpected event caused by a bug in some part of the system under development or by some other spurious event.<br />
* Additional units can be programmed to provide the necessary equipment for other developers on a team.<br />
* Multiple units can easily be updated simultaneously. &nbsp;With the IP address tracking of OE PhoneHome, no scripts will need to be edited to account for changing IP addresses so long as the boards are referred to by name or by MAC address in the script which uses OE PhoneHome.<br />
* Small production runs can be filled easily in house without the need to have a custom image at EMAC's facility, since the script can be used to apply your latest and greatest version of your software to the standard or customized EMAC OE Linux image which was provided to you by EMAC. This can often prove useful to start pushing hardware out the door with your latest software to the customers who've been waiting for it the day you've finished it, while you wait for a larger shipment of pre-programmed hardware to come from EMAC with your updated filesystem image.<br />
<br />
=== Easy Installation on Ubuntu Linux ===<br />
<br />
EMAC OE 5.0 software and documentation can now be installed more easily than ever before! No longer is the process a long, drawn out, cumbersome task. With EMAC OE 5.0, you can now get up and running with EMAC's offerings before you even take your first break in the morning.<br />
<br />
EMAC OE 5.0 features packages prebuilt for our supported Linux distributions, Ubuntu 12.04 LTS and Ubuntu 14.04 LTS. These versions of Ubuntu were chosen for their stability and high overall quality. With the Ubuntu repository server at EMAC's facility, the EMAC SDK, IDE, tools, examples, and documentation packages can now be installed as easily as any other software provided by Ubuntu. Simply apt-get install or use the Ubuntu Software Center to install and/or update these packages from EMAC (after you have configured your machine to point to EMAC's apt repository).<br />
<br />
===Release Testing===<br />
<br />
EMAC has completely revamped its release testing for the EMAC OE 5.0 release series. The new testing process provides a far more comprehensive and exhaustive method of testing our software and hardware together to ensure the highest quality experience possible. Throughout the 5.0 release series, we will continue to improve and refine this testing process to ensure that each release is even better than the previous.<br />
<br />
==Provided Software==<br />
<br />
EMAC OE 5.0 provides a number of software packages which weren't provided with previous versions of EMAC OE. These new packages provide additional capabilities and extend existing capabilities. These packages were carefully chosen to ensure that the best available tools are provided across the full range of tasks which need to be performed on EMAC OE machines.<br />
<br />
The following list shows the new tools which have been added or updated, and what you will gain from each one.<br />
<br />
* '''ethtool''' - This tool will allow you to inspect the network interfaces at the hardware level, allowing you to see if the physical link is good and, if so, what speed it's running at. No more guessing as to whether your networking issue is a hardware or software issue. If this shows your hardware is working correctly, you know it's a software configuration issue.<br />
* '''lighttpd''' - This is a much more sophisticated web server than the one provided by Busybox. It was a very popular custom package for the 4.0 series, so it is now included by default in 5.0.<br />
* '''vim''' - The real vim, not the Busybox version of vi. This provides syntax highlighting, undo, redo, macros, last position memory, and all of the other powerful features of vim that are missing from Busybox vi.<br />
* '''wget''' and '''ftpput''' - These provide a simple way to retrieve files from a webserver and to push them to a webserver. This can make retrieving updated files much simpler.<br />
* '''strace''' - Shows the system calls made by any executable which is run through it. This is a very powerful tool for debugging.<br />
* '''ntp''' and '''ntpdate''' - These tools provide a method to update the system clock to the time provided by the atomic clocks which share their time over the Internet. &nbsp;These full versions are more reliable and more sophisticated than the Busybox version.<br />
* '''minicom''' - Much more sophisticated than microcom, this tool provides the same powerful terminal client you use on your desktop.<br />
* '''htop''' - This tool provides a sophisticated view into what's running on your system.<br />
* '''sudo''' - This tool allows for execution of a program with the elevated privileges of the superuser.<br />
* '''rsync''' - This tool allows for easy remote file synchronization between two computers.<br />
* '''file''' - This tool lets you inspect files to determine what type they are and various properties of them.<br />
* '''evtest''' - This tool provides a way to diagnose issues with input events.<br />
* '''bash''' - The real bash shell. Much more powerful than the Busybox shell, and much better for scripting.<br />
* '''procps''' - The full suite of process utilities, such as ps, kill, watch, uptime, free, pgrep, sysctl, and top, the full versions of these tools provide the useful functionality which was missing from the Busybox versions.<br />
* '''inotify-tools''' - These tools provide filesystem notifications which enable scripts and programs to only perform events after a file or directory has been modified/created/deleted/etc. No polling required.<br />
* '''tftp client''' - Easily download files from a tftp server with the integrated tftp client.<br />
* '''iptables''' - The standard tool for configuring firewalls on Linux.<br />
* '''tcpdump''' - An invaluable tool for debugging firewalls and TCP/UDP/IP connections of any kind.<br />
<br />
This partial list shows just the highlights of the new software that's part of EMAC OE 5.0. &nbsp;All of the software previously provided in OE4 is available in 5.0 as well.<br />
<br />
Other software provided by OE 5.0 includes:<br />
<br />
* '''nano''' - Basic text editor.<br />
* '''amidi/aplaymidi/arecordmidi''' - Simple MIDI music player/recorder/controller.<br />
* '''candump/canecho/cansend/cansequence''' - Tools for working with a CAN bus (included only on systems which have CAN support).<br />
* Tools for working with flash memory.<br />
* '''opkg''' - Package management tools.<br />
* '''mpg123''' - MPEG Audio Decoder/Player<br />
* Memory testing tools.<br />
* '''Busybox''' - The embedded "Swiss Army Knife"<br />
* '''Openssh sshd''' - SSH server (and client).<br />
<br />
== See Also ==<br />
<br />
* [[ EMAC_OE_50_Add-on_Packages | EMAC OE 5.X Add-on Packages ]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=EMAC_OE_50_Add-on_Packages&diff=5310EMAC OE 50 Add-on Packages2016-02-18T18:44:10Z<p>Awichmann: </p>
<hr />
<div>{{todo|Complete (12-5-14-12:50->MG+);(11.12.2015-14:55->KY+);(11.12.2015-17:35->MD-);(11.13.2015-12:30->MG+);(11.13.2015-14:45->MG+);(11.13.2015-14:55->MD+)|Michael Gloff|project=oe 5,MG,md,Complete}}<br />
<br />
{{#seo:<br />
|title=EMAC OE Add-on Packages<br />
|titlemode=append<br />
|keywords=Add-on Packages,File Sharing,Web Servers,Real Time Extenstions,Database<br />
|description=List of all of EMAC OE Add-on Packages.<br />
}}<br />
<br />
{{DISPLAYTITLE:EMAC OE 5.X Add-on Packages}}<br />
<br />
Additional software packages can be added to the standard EMAC OE distribution for an additional support fee. Thousands of software projects are available through the OpenEmbedded build system; some common packages are listed below. Custom software development is also offered by EMAC. Please contact EMAC for information about package availability and pricing if additional packages and/or custom software development are required.<br />
<br />
==Packages==<br />
<br />
===Database===<br />
* <u>Apache:</u> While LightTPD "lighty" is provided by default, Apache is the world's most used HTTP server that provides a wide range of features.<br />
:[http://www.apache.org/ apache.org]<br />
<br />
* <u>MariaDB:</u> While SQLite3 is provided by default in EMAC OE 5.x, MariaDB is a more powerful database system which is available as an upgrade. MariaDB was formally MySQL before it was forked due to licensing issues which came about when MySQL came under new ownership. MariaDB is a drop-in replacement for MySQL.<br />
:[https://mariadb.org/ mariadb.org]<br />
<br />
* <u>PostgreSQL:</u> PostgreSQL is a powerful, open source object-relational database system.<br />
:[http://www.postgresql.org postgresql.org]<br />
<br />
===Remote viewing===<br />
* <u>VNC server:</u> A VNC server allows for remote viewing of display output.<br />
<br />
===File Sharing===<br />
* <u>NFS Server:</u> Network File System Server - Share the device's filesystem over the network or mount a remote network file system.<br />
<br />
* <u>Samba Server:</u> Common Internet File System (CIFS)/Server Message Block (SMB) and Domain support for Microsoft Windows clients.<br />
<br />
===Network Management===<br />
* <u>SNMP:</u> Simple Network Management Protocol - A popular protocol for network management.<br />
:[http://www.net-snmp.org/ net-snmp.org]<br />
<br />
===Developer Tools===<br />
* <u>Xenomai:</u> A real-time development framework and set of extensions for Linux which provide real time capabilities to the Linux operating system.<br />
:[http://www.xenomai.org/ xenomai.org]<br />
:[[Xenomai | Xenomai for EMAC]]<br />
<br />
*<u>Crank Storyboard:</u> Crank storyboard is a developer tool that simplifies the design and function of a touch screen based application.<br />
:[http://www.cranksoftware.com/storyboard-suite cranksoftware.com/storyboard-suite] <br />
<br />
===Scripting Languages===<br />
* <u>Perl 5:</u> A high-level, interpreted programming language. Many Perl modules are available for EMAC OE 5.x.<br />
:[http://www.perl.org/ perl.org]<br />
<br />
* <u>PHP 5:</u> Server-side HTML embedded scripting language.<br />
:[http://php.net/ php.net]<br />
<br />
* <u>Python 2.7.x:</u> A general purpose high-level programming language. There are many Python libraries available as part of EMAC OE 5.x.<br />
:[http://www.python.org/ python.org]<br />
<br />
===Utilities===<br />
* <u>libmodbus:</u> libmodbus is a C library designed to provide a fast and robust implementation of the Modbus protocol.<br />
:[http://libmodbus.org/ libmodbus.org]<br />
<br />
===Java===<br />
* <u>jamvm:</u> A compact Java Virtual Machine<br />
:[http://jamvm.sourceforge.net/ jamvm.sourceforge.net]<br />
<br />
===Web Browsers===<br />
* <u>Google Chromium:</u> A web browser ideal for use in kiosk applications. Where needed, EMAC can strip the Chrome off of Chromium.<br />
:[http://www.chromium.org/ chromium.org]<br />
<br />
===Window Managers===<br />
* <u>Enlightenment:</u> Enlightenment is a lean, modular, extensible window manager for X11 and Linux.<br />
:[https://enlightenment.org/p.php?p=about&l=en enlightenment.org]<br />
<br />
===Wireless Networking===<br />
* <u>Wireless Tools and WPA Supplicant:</u> A typical wireless LAN setup will require the configuration of the network interfaces and WPA Supplicant if wireless encryption is used. <br />
:[http://wireless.kernel.org/en/users/Documentation/wpa_supplicant WPA Supplicant]<br />
<br />
===Bluetooth===<br />
* <u>Bluez:</u> Provides support for the core Bluetooth layers and protocols in Linux.<br />
:[http://www.bluez.org/ bluez.org/]<br />
<br />
== See Also ==<br />
<br />
* [[ OE50:Packages | EMAC OE 5.X Standard Packages ]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=EMAC_OE_50_Add-on_Packages&diff=5309EMAC OE 50 Add-on Packages2016-02-18T17:51:56Z<p>Awichmann: </p>
<hr />
<div>{{todo|Complete (12-5-14-12:50->MG+);(11.12.2015-14:55->KY+);(11.12.2015-17:35->MD-);(11.13.2015-12:30->MG+);(11.13.2015-14:45->MG+);(11.13.2015-14:55->MD+)|Michael Gloff|project=oe 5,MG,md,Complete}}<br />
<br />
{{#seo:<br />
|title=EMAC OE Add-on Packages<br />
|titlemode=append<br />
|keywords=Add-on Packages,File Sharing,Web Servers,Real Time Extenstions,Database<br />
|description=List of all of EMAC OE Add-on Packages.<br />
}}<br />
<br />
{{DISPLAYTITLE:EMAC OE 5.X Add-on Packages}}<br />
<br />
Additional software packages can be added to the standard EMAC OE distribution for an additional support fee. Thousands of software projects are available through the OpenEmbedded build system; some common packages are listed below. Custom software development is also offered by EMAC. Please contact EMAC for information about package availability and pricing if additional packages and/or custom software development are required.<br />
<br />
==Packages==<br />
<br />
===Database===<br />
* <u>Apache:</u> Apache is the world's most used HTTP server.<br />
:[http://www.apache.org/ apache.org]<br />
<br />
* <u>MariaDB:</u> While SQLite3 is provided by default in EMAC OE 5.x, MariaDB is a more powerful database system which is available as an upgrade. MariaDB was formally MySQL before it was forked due to licensing issues which came about when MySQL came under new ownership. MariaDB is a drop-in replacement for MySQL.<br />
:[https://mariadb.org/ mariadb.org]<br />
<br />
* <u>PostgreSQL:</u> PostgreSQL is a powerful, open source object-relational database system.<br />
:[http://www.postgresql.org postgresql.org]<br />
===File Sharing===<br />
* <u>NFS Server:</u> Network File System Server - Share the device's filesystem over the network or mount a remote network file system.<br />
<br />
* <u>Samba Server:</u> Common Internet File System (CIFS)/Server Message Block (SMB) and Domain support for Microsoft Windows clients.<br />
<br />
===Network Management===<br />
* <u>SNMP:</u> Simple Network Management Protocol - A popular protocol for network management.<br />
:[http://www.net-snmp.org/ net-snmp.org]<br />
<br />
===Real Time Extenstions===<br />
* <u>Xenomai:</u> A real-time development framework and set of extensions for Linux which provide real time capabilities to the Linux operating system.<br />
:[http://www.xenomai.org/ xenomai.org]<br />
:[[Xenomai | Xenomai for EMAC]]<br />
<br />
===Scripting Languages===<br />
* <u>Perl 5:</u> A high-level, interpreted programming language. Many Perl modules are available for EMAC OE 5.x.<br />
:[http://www.perl.org/ perl.org]<br />
<br />
* <u>PHP 5:</u> Server-side HTML embedded scripting language.<br />
:[http://php.net/ php.net]<br />
<br />
* <u>Python 2.7.x:</u> A general purpose high-level programming language. There are many Python libraries available as part of EMAC OE 5.x.<br />
:[http://www.python.org/ python.org]<br />
<br />
===Utilities===<br />
* <u>libmodbus:</u> libmodbus is a C library designed to provide a fast and robust implementation of the Modbus protocol.<br />
:[http://libmodbus.org/ libmodbus.org]<br />
<br />
===Java===<br />
* <u>jamvm:</u> A compact Java Virtual Machine<br />
:[http://jamvm.sourceforge.net/ jamvm.sourceforge.net]<br />
<br />
===Web Browsers===<br />
* <u>Google Chromium:</u> A web browser ideal for use in kiosk applications. Where needed, EMAC can strip the Chrome off of Chromium.<br />
:[http://www.chromium.org/ chromium.org]<br />
<br />
===Window Managers===<br />
* <u>Enlightenment:</u> Enlightenment is a lean, modular, extensible window manager for X11 and Linux.<br />
:[https://enlightenment.org/p.php?p=about&l=en enlightenment.org]<br />
<br />
===Wireless Networking===<br />
* <u>Wireless Tools and WPA Supplicant:</u> A typical wireless LAN setup will require the configuration of the network interfaces and WPA Supplicant if wireless encryption is used. <br />
:[http://wireless.kernel.org/en/users/Documentation/wpa_supplicant WPA Supplicant]<br />
<br />
===Bluetooth===<br />
* <u>Bluez:</u> Provides support for the core Bluetooth layers and protocols in Linux.<br />
:[http://www.bluez.org/ bluez.org/]<br />
<br />
== See Also ==<br />
<br />
* [[ OE50:Packages | EMAC OE 5.X Standard Packages ]]</div>Awichmannhttps://wiki.emacinc.com/index.php?title=X86_SIB&diff=5308X86 SIB2016-02-18T17:25:48Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.18.2016-11:22->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=x86 "Server In a Box (SIB) Embedded Servers | desc=A collection pages for x86 "Server In a Box" | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* x86 SIBs *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
EMAC's Server-In-a-Box line of Embedded Servers and Industrial PCs are Single Board Computers built into small, rugged embedded servers. These Industrial PCs are just as comfortable in the industrial environment as they are on a desktop while providing only the requred portions of the functionality from a conventional server.<br />
In order to toughen these embedded servers EMAC utilizes a Flash Disk in place of a hard drive and a fanless embedded SBC providing a server with no moving parts. On the software side, EMAC supports the most popular Embedded Operating Systems (OS), Embedded Linux and Real Time Linux, or Windows Embedded. EMAC has the expertise to customize the Embedded OS build to meet your application needs if required. This custom Embedded OS build can be archived under a unique part number guaranteeing that you receive the correct build each time you order.<br />
If your application does not require a chassis/case or power supply you can utilize one of EMAC's Single Board Embedded Servers. These Single Board Embedded Servers can utilize virtually any Single Board Computer that EMAC sells. Just select an SBC, add flash, and select an OS along with any extra components you might need.<br />
<br />
{{:Templateimpl:navtableentry | title=x86 SIBs }}<br />
<br />
<br />
* '''Embedded Servers Selection Guide'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/embedded_servers SIB Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/EmbeddedServers/ SIB Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=X86_SBC&diff=5307X86 SBC2016-02-18T17:22:58Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.18.2016-11:18->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=x86 Single Board Computers (SBCs)| desc=A collection pages for x86 Single Board Computers | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* x86 SBCs *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
EMAC can provide Board Support Packages (BSPs) for our single board computers using your choice of compatible Operating Systems. Integration of the single board computer into an enclosure, adding memory or CPU, loading an OS, in most cases is free with the purchase of the Single Board Computer and related components. Addionally EMAC has LCD- Panel Kits with Touchscreen options, allowing our Single Board Computer Solutions to utilize an LCD for video output and a touchscreen replacement of a mouse for input. The LCD Panel Kit with the Touchscreen option in conjunction with the Flash Disk, makes for a Solid State Embedded computer system that is ideal for rugged, wide temperature, and low downtime environments. If you cannot find exactly what you need from our large Off-The-Shelf selection, EMAC can potentially customize any hardware or software component, and additionly offer driver development and software application programming, providing you with the perfect fit for their SBC application needs. EMAC can provide Enclosures, I/O Modules, Peripherals, Memory, and Operating Systems for most of our x86 and ARM SBCs. EMAC supports and can install the the following Operating Systems on Hard Drive or Flash Disk: Linux, Xenomi Development Framework, DOS, Windows CE, and Windows Embedded.<br />
<br />
{{:Templateimpl:navtableentry | title=x86 SBCs }}<br />
<br />
<br />
* '''Single Board Computer Selection Guide'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/pc_compatible_sbcs SBC Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SBC/ SBC Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=X86_SBC&diff=5306X86 SBC2016-02-18T17:22:10Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.18.2016-11:18->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=x86 Single Board Computers| desc=A collection pages for x86 Single Board Computers (SBCs) | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* x86 SBCs *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
EMAC can provide Board Support Packages (BSPs) for our single board computers using your choice of compatible Operating Systems. Integration of the single board computer into an enclosure, adding memory or CPU, loading an OS, in most cases is free with the purchase of the Single Board Computer and related components. Addionally EMAC has LCD- Panel Kits with Touchscreen options, allowing our Single Board Computer Solutions to utilize an LCD for video output and a touchscreen replacement of a mouse for input. The LCD Panel Kit with the Touchscreen option in conjunction with the Flash Disk, makes for a Solid State Embedded computer system that is ideal for rugged, wide temperature, and low downtime environments. If you cannot find exactly what you need from our large Off-The-Shelf selection, EMAC can potentially customize any hardware or software component, and additionly offer driver development and software application programming, providing you with the perfect fit for their SBC application needs. EMAC can provide Enclosures, I/O Modules, Peripherals, Memory, and Operating Systems for most of our x86 and ARM SBCs. EMAC supports and can install the the following Operating Systems on Hard Drive or Flash Disk: Linux, Xenomi Development Framework, DOS, Windows CE, and Windows Embedded.<br />
<br />
{{:Templateimpl:navtableentry | title=x86 SBCs }}<br />
<br />
<br />
* '''Single Board Computer Selection Guide'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/pc_compatible_sbcs SBC Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SBC/ SBC Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=X86_PPC&diff=5305X86 PPC2016-02-18T17:17:23Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.18.2016-11:12->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title= x86 Panel PCs (PPCs)| desc=A collection pages for x86 Panel PCs | project=OE 5.0 }}<br />
<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* x86 PPCs *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
EMAC is a global leader in industrial automation and HMI Panel PCs. We provide Panel PCs for embedded automation computers, automation controllers, remote i/o modules, and custom data acquisition solutions.<br />
<br />
EMAC's Panel PCs are available ready to run with the Operating System installed on flash disk or hard drive. Apply power and watch either the Windows or Linux User Interface appear on the vivid color LCD. Interact with the PPC using the responsive integrated touchscreen. Everything works out of the box, allowing you to concentrate on your application, rather than building and configuring device drivers. Just Write-It and Run-It.<br />
<br />
Contact the EMAC Panel PC Sales Department for details on Sunlight Readable Panel PC, IP65 Panel PC, IP67 Panel PC, Wide Voltage Panel PC, and/or Low Power Consumption Panel PC specifications.<br />
<br />
{{:Templateimpl:navtableentry | title=x86 PPcs }}<br />
<br />
<br />
* '''Panel PC Selection Guide'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/panel_pcs_and_lcds PPC Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/PanelPC/ PPC Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=X86_PPC&diff=5304X86 PPC2016-02-18T17:16:25Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.18.2016-11:12->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title= x86 Panel PCs (PPCs)| desc=A collection pages for x86 Panel PCs | project=OE 5.0 }}<br />
<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* x86 PPCs *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<p style="width:100%;font-size:small;text-align:left;line-height:100%;"/p><br />
EMAC is a global leader in industrial automation and HMI Panel PCs. We provide Panel PCs for embedded automation computers, automation controllers, remote i/o modules, and custom data acquisition solutions.<br />
<br />
EMAC's Panel PCs are available ready to run with the Operating System installed on flash disk or hard drive. Apply power and watch either the Windows or Linux User Interface appear on the vivid color LCD. Interact with the PPC using the responsive integrated touchscreen. Everything works out of the box, allowing you to concentrate on your application, rather than building and configuring device drivers. Just Write-It and Run-It.<br />
<br />
Contact the EMAC Panel PC Sales Department for details on Sunlight Readable Panel PC, IP65 Panel PC, IP67 Panel PC, Wide Voltage Panel PC, and/or Low Power Consumption Panel PC specifications.<br />
<br />
{{:Templateimpl:navtableentry | title=Panel PC Selection Guide }}<br />
<br />
<br />
* '''COM-TC (Atom SoM)'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/panel_pcs_and_lcds PPC Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/PanelPC/ PPC Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=X86_SOM&diff=5303X86 SOM2016-02-17T19:52:08Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.17.2016-1:44->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=x86 System on Module (SoM)| desc=A collection pages for x86 System on Module | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* x86 SoMs *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
System on module (SoM) is an ideal alternative to custom engineering. With an SoM approach you get the best of aspects of both buying an Off-The-Shelf Single Board Computer (SBC) and of a Custom Engineered solution. With Off-The-Shelf standard components such as a generic carrier board and SOM module, it is possible to start development on your software applications before the custom carrier board is complete; thus offering a reduced time to market for your system. A System on Module (SoM) is comprised of a small processor module with CPU bus accessibility and standard I/O functionality. The SoM module does not have any connectorization and is designed to be plugged into a Carrier Board.<br />
<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ x86 COM-Express SoMs ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
{{:Templateimpl:navtableentry | title=x86 COM-Express SoMs }}<br />
<br />
<br />
* '''COM-TC (Atom SoM)'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/CoM-TC CoM-TC Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/COM-U15/ COM-U15 Downloads] }}<br />
* '''COM-U15 (Atom SoM)'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/COM-U15 COM-U15 Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/PanelPC/PPC-E7+/ PPC-E7+ Downloads] }}<br />
* '''SOM-5788 (i7 SoM)'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-5788 SOM-5788 Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-5788/ SOM-5788 Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ x86 SoM Carrier Boards ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=x86 COM-Express Carrier Boards }}<br />
<br />
* '''SOM-DB5700'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-DB5700 SOM-DB5700 Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-DB5700/ SOM-DB5700 Downloads] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=ARM_SIB&diff=5302ARM SIB2016-02-17T19:45:10Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.17.2016-1:38->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=ARM Embedded Servers| desc=A collection pages for ARM Embedded Servers | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* ARM SIBs *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
EMAC's Server-In-a-Box line of Embedded Servers and Industrial PCs are Single Board Computers built into small, rugged embedded servers. These Industrial PCs are just as comfortable in the industrial environment as they are on a desktop while providing only the requred portions of the functionality from a conventional server.<br />
<br />
In order to toughen these embedded servers EMAC utilizes a Flash Disk in place of a hard drive and a fanless embedded SBC providing a server with no moving parts. On the software side, EMAC supports the most popular Embedded Operating Systems (OS), Embedded Linux and Real Time Linux, or Windows Embedded. EMAC has the expertise to customize the Embedded OS build to meet your application needs if required. This custom Embedded OS build can be archived under a unique part number guaranteeing that you receive the correct build each time you order.<br />
<br />
If your application does not require a chassis/case or power supply you can utilize one of EMAC's Single Board Embedded Servers. These Single Board Embedded Servers can utilize virtually any Single Board Computer that EMAC sells. Just select an SBC, add flash, and select an OS along with any extra components you might need.<br />
<br />
{{:Templateimpl:navtableentry | title=ARM Server In A Box (SIB)}}<br />
<br />
<br />
* '''SIB-A5D35 (Atmel ATSAMA5D35 ARM Cortex A5)'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/embedded_servers/SIB-A5D35 SIB-A5D35 Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/EmbeddedServers/SIB-A5D35/ SIB-A5D35 Downloads]}}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=ARM_SBC&diff=5301ARM SBC2016-02-17T19:37:46Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.17.2016-1:30->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=ARM Single Board Computers (SBC)| desc=A collection pages for ARM Single Board Computers | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* ARM SBCs *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
EMAC can provide Board Support Packages (BSPs) for our single board computers using your choice of compatible Operating Systems. Integration of the single board computer into an enclosure, adding memory or CPU, loading an OS, in most cases is free with the purchase of the Single Board Computer and related components. Addionally EMAC has LCD- Panel Kits with Touchscreen options, allowing our Single Board Computer Solutions to utilize an LCD for video output and a touchscreen replacement of a mouse for input. The LCD Panel Kit with the Touchscreen option in conjunction with the Flash Disk, makes for a Solid State Embedded computer system that is ideal for rugged, wide temperature, and low downtime environments. If you cannot find exactly what you need from our large Off-The-Shelf selection, EMAC can potentially customize any hardware or software component, and additionly offer driver development and software application programming, providing you with the perfect fit for their SBC application needs. EMAC can provide Enclosures, I/O Modules, Peripherals, Memory, and Operating Systems for most of our x86 and ARM SBCs. EMAC supports and can install the the following Operating Systems on Hard Drive or Flash Disk: Linux, Xenomi Development Framework, DOS, Windows CE, and Windows Embedded.<br />
<br />
<br />
{{:Templateimpl:navtableentry | title=ARM SBCs }}<br />
<br />
<br />
* '''iPAC-9x25 (Atmel ATSAM9X25 ARM9)'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/pc_compatible_sbcs/IPAC-9X25 iPAC-9x25 Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SBC/IPAC-9X25/ iPAC-9x25 Downloads] }}<br />
* '''PICO-IMX6 (Freescale i.MX6 ARM Cortex A9)'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/pc_compatible_sbcs/PICO-IMX6 PICO-IMX6 Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SBC/PICO-IMX6/ PICO-IMX6 Downloads] }}<br />
* '''RSB-4410 (Freescale i.MX6 ARM Cortex A9)'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/pc_compatible_sbcs/RSB-4410 RSB-4410 Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SBC/RSB-4410/ RSB-4410 Downloads] }}<br />
* '''SBC-0300 (TI AM383874 ARM Cortex A8)'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/pc_compatible_sbcs/SBC-0300 SBC-0300 Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SBC/SBC-0300/ SBC-0300 Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=SOM-250&diff=5300SOM-2502016-02-17T19:28:07Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.17.2016-1:24->AW+)| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=SOM-250ES ARM 200-Pin Carrier | desc=A collection of pages for the SOM-250ES ARM 200-Pin Carrier | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-250ES ARM 200-Pin SoM *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
The SoM-250ES is a compact, low-power SoM Carrier/Socket board with a 7” WVGA (800 x 480) or the optional 10" WSVGA (1024 X 600) color LCD and resistive touch screen. This versatile SoM Carrier/Socket board is ideal for evaluation and early development work. This Carrier is designed to work with all EMAC 200-pin SODIMM type SoMs. Note: The SoM-250ES is specifically designed for SoMs with Video & USB capability.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-250ES Website Link *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SOM-250ES Website Link }}<br />
<br />
{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-250ES SoM-250ES Web Link] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ SoM-250ES Downloads ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-250ES Downloads }}<br />
<br />
<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-250ES/Manual/SoM-250ES_User_Manual.pdf User Manual] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-250ES/DataSheets/SoM-250_Datasheet.pdf Datasheet] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-250ES/ Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=SOM-210&diff=5299SOM-2102016-02-17T19:24:21Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.17.2016-1:20->AW+)| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=SOM-210ES ARM 200-Pin Carrier | desc=A collection of pages for the SOM-210ES ARM 200-Pin Carrier | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-210ES ARM 200-Pin SoM *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
The SoM-210ES is an ultra compact SoM Carrier/Socket board with an optional 4.3 inch WQVGA (480 x 272) TFT color LCD and a resistive touch screen. The dimensions of the SoM-210 are 4.8” by 3.0”, about the same dimensions as that of popular touch cell phones. The SoM-210 is small enough to fit in a 2U rack enclosure. This versatile SoM Carrier/Socket board is ideal for evaluation and early development work. This Carrier is designed to work with all EMAC 200-pin SODIMM type SoMs. Note: The SoM-210 is specifically designed for SoMs with Video & USB capability.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-210ES Website Link *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SOM-210ES Website Link }}<br />
<br />
<br />
{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-210ES SoM-210ES Web Link] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ SoM-210ES Downloads ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-210ES Downloads }}<br />
<br />
<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-210ES/Manual/SoM-210ES_User_Manual.pdf User Manual] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-210ES/DataSheets/SoM-210_Datasheet.pdf Datasheet] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-210ES/ Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=SOM-210&diff=5298SOM-2102016-02-17T19:24:06Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.17.2016-1:20->AW+)| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=SOM-210ES ARM 200-Pin Carrier | desc=A collection of pages for the SOM-210ES ARM 200-Pin Carrier | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-210ES ARM 200-Pin SoM *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
The SoM-210ES is an ultra compact SoM Carrier/Socket board with an optional 4.3 inch WQVGA (480 x 272) TFT color LCD and a resistive touch screen. The dimensions of the SoM-210 are 4.8” by 3.0”, about the same dimensions as that of popular touch cell phones. The SoM-210 is small enough to fit in a 2U rack enclosure. This versatile SoM Carrier/Socket board is ideal for evaluation and early development work. This Carrier is designed to work with all EMAC 200-pin SODIMM type SoMs. Note: The SoM-210 is specifically designed for SoMs with Video & USB capability.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-210ES Website Link *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SOM-210ES Website Link }}<br />
<br />
{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-210ES SoM-210ES Web Link] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ SoM-210ES Downloads ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-210ES Downloads }}<br />
<br />
<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-210ES/Manual/SoM-210ES_User_Manual.pdf User Manual] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-210ES/DataSheets/SoM-210_Datasheet.pdf Datasheet] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-210ES/ Downloads] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=SOM-200&diff=5297SOM-2002016-02-17T19:19:52Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.17.2016-1:15->AW+)| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=SOM-200ES ARM 200-Pin Carrier | desc=A collection of pages for the SOM-200ES ARM 200-Pin Carrier | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-200ES ARM 200-Pin SoM *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
The SoM-200ES is versatile SoM Carrier/Socket board ideal for evaluation and early development work. This Carrier is designed to work with all EMAC 200-pin SODIMM type SoMs. Note: The SoM-200 is specifically designed for SoMs with Video & Touch capability.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-200ES Website Link *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SOM-200ES Website Link }}<br />
<br />
{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-200ES SoM-200ES Web Link] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ SoM-200ES Downloads ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-200ES Downloads }}<br />
<br />
<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-200ES/Manual/SoM-200ES_User_Manual.pdf User Manual] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-200ES/DataSheets/SoM-200ES_Datasheet.pdf Datasheet] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-200ES/ Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=SOM-150&diff=5296SOM-1502016-02-17T18:00:08Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.16.2016-11:50->AW+)| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=SOM-150ES ARM 144-Pin Carrier | desc=A collection of pages for the SOM-150ES ARM 144-Pin CarrierM | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-150ES ARM 144-Pin SoM *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
The SoM-150ES is versatile SoM Carrier/Socket board ideal for evaluation and early development work. This Carrier is designed to work with all EMAC 144-pin SODIMM type SoMs. <br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-150ES Website Link *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SOM-150ES Website Link }}<br />
<br />
<br />
<br />
<br />
{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-150ES SoM-150ES Web Link] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ SoM-150ES Downloads ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SOM-150ES Downloads }}<br />
<br />
<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-150ES/Manual/SOM-150ES_User_Manual.pdf User Manual] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-150ES/DataSheets/SoM-150_Datasheet.pdf Datasheet] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-150ES/ Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=SOM-A5D36&diff=5295SOM-A5D362016-02-17T17:49:01Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.17.2016-11:47->AW+)| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=SOM-A5D36 ARM 200-Pin SoM | desc=A collection of pages for the SOM-A5D36 ARM 200-Pin SoM | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-A5D36 ARM 200-Pin SoM *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
The SoM-A5D36 is a System on Module (SoM) based on the Atmel ARM Cortex A5 ATSAMA5D36 processor. Designed and manufactured in the USA, this wide temperature, fanless ARM 536 MHz SoM has 10/100/1000 BaseT Ethernet included along with up to 6 serial ports. It utilizes up to 4GB of eMMC Flash, up to 16MB of serial data flash, and up to 512MB of LP DDR2 RAM. A SoM is a small embedded module that contains the core of a microprocessor system.<br />
<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-A5D36 Website Link *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SOM-A5D36 Website Link }}<br />
<br />
<br />
{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-A5D36 SoM-A5D36 Web Link] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ SoM-A5D36 Downloads ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-A5D36 Downloads }}<br />
<br />
<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-A5D36/Manual/SoM-A5D36_User_Manual.pdf User Manual] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-A5D36/DataSheets/SoM-A5D36-Datasheet.pdf Datasheet] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ New Row ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtablenewrow}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************** SoM-A5D36 Carrier Boards ********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-3517 Carrier Boards }}<br />
<br />
<br />
*'''SoM-200GS'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-200GS SoM-200GS Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-200GS/ SoM-200GS Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************** SoM-A5D36 Wiki Links ********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-A5D36 Wiki Links }}<br />
<br />
<br />
{{:Templateimpl:Navti | [[SoM-A5D36_Getting_Started | SoM-A5D36 Getting Started]] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}</div>Awichmannhttps://wiki.emacinc.com/index.php?title=EMAC_HW&diff=5294EMAC HW2016-02-17T17:40:38Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.15.2016-11:45->AW+)| project=OE 5.0,AW,Review }}<br />
<br />
<br />
__NOTOC__<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=EMAC Hardware Wiki | desc=A collection pages for all EMAC hardware | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* ARM Hardware *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=ARM Hardware }}<br />
<br />
{{:Templateimpl:Navti | [[ARM_SOM | System on Module (SoM)]] }}<br />
{{:Templateimpl:Navti | [[ARM_PPC | Panel PC (PPC)]] }}<br />
{{:Templateimpl:Navti | [[ARM_SBC | Single Board Computer (SBC)]] }}<br />
{{:Templateimpl:Navti | [[ARM_SIB | Server In a Box (SIB Embedded Servers)]] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************** x86 Hardware ********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=x86 Hardware }}<br />
<br />
{{:Templateimpl:Navti | [[x86_SOM | System on Module (SoM)]] }}<br />
{{:Templateimpl:Navti | [[x86_PPC | Panel PC (PPC)]] }}<br />
{{:Templateimpl:Navti | [[x86_SBC | Single Board Computer (SBC)]] }}<br />
{{:Templateimpl:Navti | [[x86_SIB | Server In a Box (SIB Embedded Servers)]] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=AW | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=AW | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=AW | title=Page Title | desc=Description for SEO | project=OE 5 }}--></div>Awichmannhttps://wiki.emacinc.com/index.php?title=SOM-3354&diff=5293SOM-33542016-02-17T17:36:59Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.17.2016-11:30->AW+)|Awichmann| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=SOM-3354 ARM 200-Pin SoM | desc=A collection of pages for the SOM-3354 ARM 200-Pin SoM | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-3354 ARM 200-Pin SoM *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
This low power System on Module (SoM) is based on the TI AM3354 Cortex-A8 processor. Designed and manufactured in the USA, this wide temperature ARM based 1GHz SoM utilizes 16MB of Serial Data Flash, 4GB of eMMC Flash (up to 16GB optional) and has 512MB of DDR3 RAM. Additional Flash storage can be had using the modules SDIO interface allowing the use of external SD flash cards.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-3354 Website Link *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SOM-3354 Website Link }}<br />
<br />
{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-3354M SoM-3354 Web Link] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ SoM-3354 Downloads ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-3554 Downloads }}<br />
<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-3354M/Manual/SoM-3354M_User_Manual.pdf User Manual] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-3354M/DataSheets/SoM-3354-Datasheet.pdf Datasheet] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ New Row ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtablenewrow}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************** SoM-3354 Carrier Boards ********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-3554 Carrier Boards }}<br />
<br />
<br />
*'''SoM-200ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-200ES SoM-200ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-200ES/ SoM-200ES Downloads] }}<br />
<br />
<br />
*'''SoM-210ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-210ES SoM-210ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-210ES/ SoM-210ES Downloads] }}<br />
<br />
<br />
*'''SoM-212ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-212ES SoM-212ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-212ES/ SoM-212ES Downloads] }}<br />
<br />
<br />
*'''SoM-250ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-250ES SoM-250ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-250ES/ SoM-250ES Downloads] }}<br />
<br />
<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************** SoM-3354 Wiki Links ********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-3354 Wiki Links}}<br />
<br />
<br />
{{:Templateimpl:Navti | [[SoM-3354_Getting_Started | SoM-3354 Getting Started]] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=EMAC_HW&diff=5292EMAC HW2016-02-17T17:25:16Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.15.2016-11:45->AW+)|Awichmann| project=OE 5.0,AW,Review }}<br />
<br />
<br />
__NOTOC__<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=EMAC Hardware Wiki | desc=A collection pages for all EMAC hardware | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* ARM Hardware *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=ARM Hardware }}<br />
<br />
{{:Templateimpl:Navti | [[ARM_SOM | System on Module (SoM)]] }}<br />
{{:Templateimpl:Navti | [[ARM_PPC | Panel PC (PPC)]] }}<br />
{{:Templateimpl:Navti | [[ARM_SBC | Single Board Computer (SBC)]] }}<br />
{{:Templateimpl:Navti | [[ARM_SIB | Server In a Box (SIB Embedded Servers)]] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************** x86 Hardware ********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=x86 Hardware }}<br />
<br />
{{:Templateimpl:Navti | [[x86_SOM | System on Module (SoM)]] }}<br />
{{:Templateimpl:Navti | [[x86_PPC | Panel PC (PPC)]] }}<br />
{{:Templateimpl:Navti | [[x86_SBC | Single Board Computer (SBC)]] }}<br />
{{:Templateimpl:Navti | [[x86_SIB | Server In a Box (SIB Embedded Servers)]] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=AW | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=AW | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=AW | title=Page Title | desc=Description for SEO | project=OE 5 }}--></div>Awichmannhttps://wiki.emacinc.com/index.php?title=SOM-9G45&diff=5291SOM-9G452016-02-16T19:59:02Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.16.2016-12:38->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=SOM-9G45 ARM 200-Pin SoM | desc=A collection of pages for the SOM-9G45 ARM 200-Pin SoM | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-9G45 ARM 200-Pin SoM *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
The SoM-9G45 is a System-on-Module (SOM) based on either the Atmel ARM9 AT91SAM9G45 or AT91SAM9M10 processor. This Fanless ARM9, 400 MHz SoM has an Ethernet PHY included along with 4 serial ports. It utilizes up to 256MB of external DDR2 / SDRAM, 1GB of NAND Flash and includes an MMU which allows it to run Linux Operating System. A SoM is a small embedded module that contains the core of a microprocessor system.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ SoM-9G45 Website Link ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-9G45 Website Link }}<br />
<br />
{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-9G45M SoM-9G45 Web Link] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ SoM-9G45 Downloads ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-9G25 Downloads }}<br />
<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-9G45-9M10/Manual/SOM-9G45-9M10_User_Manual.pdf User Manual] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-9G45-9M10/DataSheets/SoM-9G45-Datasheet.pdf Datasheet] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ New Row ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtablenewrow}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************** SoM-9G45 Carrier Boards ********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-9G45 Carrier Boards }}<br />
<br />
*'''SoM-200ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-200ES SoM-200ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-200ES/ SoM-200ES Downloads] }}<br />
<br />
*'''SoM-210ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-210ES SoM-210ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-210ES/ SoM-210ES Downloads] }}<br />
<br />
*'''SoM-212ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-212ES SoM-212ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-212ES/ SoM-212ES Downloads] }}<br />
<br />
*'''SoM-250ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-250ES SoM-250ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-250ES/ SoM-250ES Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************** SoM-9G45 Wiki Links ********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-9G45 Wiki Links }}<br />
<br />
{{:Templateimpl:Navti | [[SoM-9G45_Getting_Started | SoM-9G45 Getting Started]] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmannhttps://wiki.emacinc.com/index.php?title=SOM-3517&diff=5290SOM-35172016-02-16T19:58:51Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.16.2016-12:52->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=SOM-3517 ARM 200-Pin SoM | desc=A collection of pages for the SOM-3517 ARM 200-Pin SoM | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-3517 ARM 200-Pin SoM *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
The SoM-3517M is based on the TI ARM Cortex-A8 processor. This fanless ARM Cortex, 600 MHz SoM has an Ethernet PHY included along with 4 serial ports. It utilizes up to 512MB of external DDR2 RAM, UP to 1GB of NAND Flash, up to 4GB of eMMC Flash.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-3517 Website Link *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SOM-3517 Website Link }}<br />
<br />
<br />
{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-3517M SoM-3517 Web Link] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ SoM-3517 Downloads ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-3517 Downloads }}<br />
<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-3517M/Manual/SoM-3517M_User_Manual.pdf User Manual] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-3517M/DataSheets/SoM-3517_Datasheet.pdf Datasheet] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ New Row ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtablenewrow}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************** SoM-3517 Carrier Boards ********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-3517 Carrier Boards }}<br />
<br />
*'''SoM-200ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-200ES SoM-200ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-200ES/ SoM-200ES Downloads] }}<br />
<br />
*'''SoM-210ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-210ES SoM-210ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-210ES/ SoM-210ES Downloads] }}<br />
<br />
*'''SoM-212ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-212ES SoM-212ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-212ES/ SoM-212ES Downloads] }}<br />
<br />
*'''SoM-250ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-250ES SoM-250ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-250ES/ SoM-250ES Downloads] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************** SoM-3517 Wiki Links ********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-3517 Wiki Links }}<br />
<br />
<br />
{{:Templateimpl:Navti | [[SoM-3517_Getting_Started | SoM-3517 Getting Started]] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}</div>Awichmannhttps://wiki.emacinc.com/index.php?title=SOM-9M10&diff=5289SOM-9M102016-02-16T19:51:50Z<p>Awichmann: </p>
<hr />
<div>{{todo| Review (02.16.2016-1:42->AW+)|Andrew Wichmann| project=OE 5.0,AW,Review }}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /**************************************** Page Description Text ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navpgtable | initials=AW | title=SOM-9M10 ARM 200-Pin SoM | desc=A collection of pages for the SOM-9M10 ARM 200-Pin SoM | project=OE 5.0 }}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-9M10 ARM 200-Pin SoM *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
The SoM-9M10 is a System-on-Module (SoM) based on the AT91SAM9M10 processor. This Fanless ARM9, 400 MHz SoM has an Ethernet PHY included along with 4 serial ports. It utilizes up to 256MB of external DDR2 / SDRAM, 1GB of NAND Flash and includes an MMU which allows it to run Linux Operating System. A SoM is a small embedded module that contains the core of a microprocessor system.<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************* SOM-9M10 Website Link *******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SOM-9M10 Website Link }}<br />
<br />
<br />
{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-9M10M SoM-9M10 Web Link] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ SoM-9M10 Downloads ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-9M10 Downloads }}<br />
<br />
<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-9G45-9M10/Manual/SOM-9G45-9M10_User_Manual.pdf User Manual] }}<br />
{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-9G45-9M10/DataSheets/SoM-9G45-Datasheet.pdf Datasheet] }}<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /************************************************ New Row ***********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtablenewrow}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************** SoM-9M10 Carrier Boards ********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-9M10 Carrier Boards }}<br />
<br />
<br />
*'''SoM-200ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-200ES SoM-200ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-200ES/ SoM-200ES Downloads] }}<br />
<br />
<br />
*'''SoM-210ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-210ES SoM-210ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-210ES/ SoM-210ES Downloads] }}<br />
<br />
<br />
*'''SoM-212ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-212ES SoM-212ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-212ES/ SoM-212ES Downloads] }}<br />
<br />
<br />
*'''SoM-250ES'''<br />
:{{:Templateimpl:Navti | [http://www.emacinc.com/products/system_on_module/SoM-250ES SoM-250ES Web Link] }}<br />
:{{:Templateimpl:Navti | [ftp://ftp.emacinc.com/SoM/SoM-250ES/ SoM-250ES Downloads] }}<br />
<br />
<br />
<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /******************************************** SoM-9M10 Wiki Links ********************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
{{:Templateimpl:navtableentry | title=SoM-9M10 Wiki Links }}<br />
<br />
{{:Templateimpl:Navti | [[SoM-9G45_Getting_Started | SoM-9M10 Getting Started]] }}<br />
<br />
{{:Templateimpl:navtend}}<br />
<br />
<br />
<br />
<br />
<br />
<!--__TOC__--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Background Information ****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:bg | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** General Information *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<!-- {{:Templateimpl:geninfo | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }} --><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Using/Working With ******************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:using | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!-- /*********************************************************************************************************/ --><br />
<!-- /***************************************** Examples *****************************************/ --><br />
<!-- /*********************************************************************************************************/ --><br />
<br />
<!--{{:Templateimpl:examples | initials=MD | title=Page Title | desc=Description for SEO | project=OE 5 }}--><br />
<br />
<!--</div>Awichmann