Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
dc42 authored Jan 1, 2018
1 parent 719d89f commit ddcc69d
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,4 @@
This is firmware for controlling 3D printers and related devices using electronics with Atmel ARM main processors. The minimum specification processor it is intended for is ARM Cortex M3 with 96Kb RAM such as the SAM3X8E.

General design principles:

* Unlike most other 3D printer firmwares, it is not intended to be portable to outdated processors with limited CPU power. So make good use of the power of modern inexpensive ARM processors to implement advanced features.
* "One binary to rule them all". For a given electronics board, all features of interest to many 3D printer owners are supported by a single binary. Users do not need to recompile the firmware unless they have unusual requirements.
* "G-code everywhere". All firmware configuration is done using gcodes in the config.g file. Most type of change can be done on the fly so that you can experiment with different configurations without even having to restart the printer.
* Use high-integrity coding standards to help ensure that the firmware is reliable. In particular, don't use dynamic memory allocation after the initialisation phase. The MISRA-C++ 2008 coding standard serves as a guide as to what is acceptable practice, but compliance to it is not rigidly enforced in order to allow features from later versions of the C++ language to be used.
* Use an appropriate degree of modularity. Too little modularity makes the code hard to understand and maintain. Too much makes it hard to introduce new features when the existing module boundaries turn out to be inappropriate.
* Use object-based and object-oriented design principles where it is appropriate. In particular, class data should normally be private. Use 'friend' sparingly or not at all.
This is firmware for controlling 3D printers and related devices using electronics based on ATSAM main processors.

RepRapFirmware has pioneered a number of advances in 3D printing including:

Expand All @@ -19,6 +10,15 @@ RepRapFirmware has pioneered a number of advances in 3D printing including:
* Simulation mode, for establishing an accurate print time before committing to a print
* Compensation for the variation in extruder steps/mm with speed that is a feature of common types of extruder (January 2018)

General design principles of RepRapFirmware:

* Unlike most other 3D printer firmwares, it is not intended to be run on outdated 8-bit processors with limited CPU power and RAM. So make good use of the power of modern inexpensive ARM processors to implement advanced features. The minimum specification processor it is intended for is ARM Cortex M3 with 96Kb RAM such as the SAM3X8E.
* "One binary to rule them all". For a given electronics board, all features of interest to most 3D printer owners are supported by a single binary. Users do not need to recompile the firmware unless they have unusual requirements.
* "G-code everywhere". All firmware configuration is done using gcodes in the config.g file. Most type of change can be done on the fly so that you can experiment with different configurations without even having to restart the printer.
* Use high-integrity coding standards to help ensure that the firmware is reliable. In particular, don't use dynamic memory allocation during normal operation, use it only during the initialisation and configuration phases. The MISRA-C++ 2008 coding standard serves as a guide as to what is acceptable practice, but compliance to it is not rigidly enforced in order to allow features from later versions of the C++ language to be used.
* Use an appropriate degree of modularity. Too little modularity makes the code hard to understand and maintain. Too much makes it hard to introduce new features when the existing module boundaries turn out to be inappropriate.
* Use object-based and object-oriented design principles where it is appropriate. In particular, class data should normally be private. Use 'friend' sparingly or not at all.

For documentation on supported gcodes and configuration, see https://duet3d.com/wiki. There is a tool for generating the config.g file and homing files at https://configurator.reprapfirmware.org/.

For compiling from source, see separate file BuildInstructions.md.
Expand Down

0 comments on commit ddcc69d

Please sign in to comment.