User:Btodoroff2/sandbox

=Backup for Moderator Protection=

This is a community driven manual for customizing and developing the newly released Numworks calculator.

To readers new to Wikibooks
There is no “Errata” document published for this book. This book is an evolving work, and any errors are likely to be fixed when pointed out or otherwise found. If there is a possible error to investigate, use the discussion link at the top of the page with questionable information so that it can be investigated. If any information in this book contradicts official documentation or specifications, the reader may make the assumption that the official documentation is correct, unless there is documented, verifiable proof to the contrary.

Structure of This Book
This book is setup expecting you to jump to the sections you want to understand. The chapters are roughly organized to guide you from setting up a development environment to deep understanding of the platform, but no effort has yet been made to ensure and front-to-back reading is seamless.

Programming Examples
It should go without saying that programming examples included with this book are released under the GNU Free Documentation License. Each example is intended to stand independently to demonstrate the immediate concept at hand, and examples should be heavily commented (more than “usual” code) to illustrate the how and why things are done.

Examples should also be tested, and cleanly work when copied and pasted for use. No warnings should be emitted, and examples should be kept up-to-date with current best practices and stadards, when possible. Any depreciated code should be clearly marked as such, when demonstrating historical methods.

Prior Experience
The reader is assumed to have prior experience programming in the C/C++ language on embedded ARM systems, but no prior experience with the Numworks platform is required. However, we are exploring and developing a new platform, so instead of complaining about gaps, please ask constructive questions in the talk page and contribute what you learn.

Table of Contents

 * 1) /Getting your development environment set up/
 * 2) /Understanding the Calculation application/
 * 3) /Adding your own application to the calculator/

The Numworks SDK
Numworks has gone and done a wonderful thing - they've published the entire source code and SDK for the calculator on GitHub and are actively maintain it with the latest releases and bug fixes. Anyone who has played around with the idea of writing their own code for a graphing calculator know that this is an amazing 180&deg; about face from the typical calculator manufacturer. An overview and the GitHub link are available on the Numworks SDK page, but the documentation is understandably sparse, so let's get you up and running with a functioning development environment.

Windows 10 using Msys2
Windows may no be the ideal open source embedded development platform, but it sure is prolific and is an easy starting point. Thanks to the Msys2 project, it's fairly easy to get a Linux-style development environment up and running for Epsilon (the Numworks operating system).

Installing and configuring Msys2
Download and run the Msys2 installer by following the instructions at http://www.msys2.org/. This section will assume you installed the 64-bit Msys2 environment at c:/msys64, and you'll need to adjust the listed paths if you installed somewhere else. This will get you a functioning command line, but without any development tools (not even, gasp, vi). So next up is to get the development tool chain installed by entering this command:

Next, you'll need to add the mingw64 tools to your path as well as the ARM complier for the ARM M4 processor used by the calculator. You'll install the compiler in a few steps, but we'll add the path while we are here. Edit ~/.bash_profile and add a line at the end with this command then save and exit Msys2.

Reopen the Msys2 terminal and type. If all worked, you should see the /mingw64/bin and /c/arm/bin paths listed among several others.

Installing the ARM compiler
Work in Progress...