diff --git a/README.md b/README.md index 088bbca..c94e066 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ laptops. - [Flashing firmware](./doc/flashing.md) - [Debugging](./doc/debugging.md) - [Creating a custom keyboard layout](./doc/keyboard-layout-customization.md) +- [Development environment](./doc/dev-env.md) - [Adding a new board](./doc/adding-a-new-board.md) ## Quickstart diff --git a/doc/dev-env.md b/doc/dev-env.md new file mode 100644 index 0000000..f983985 --- /dev/null +++ b/doc/dev-env.md @@ -0,0 +1,53 @@ +# Development environment + +## OS + +Linux is the only supported environment. Development is possible on a variety +of distros. It is recommended to use the latest Pop!\_OS or Ubuntu release. + +The build server uses Ubuntu 20.04. + +## IDE/Editor + +Any editor that has support for [EditorConfig] may be used. + +No specific IDE or editor is required or recommended. + +## Toolset + +EC development depends on using distro-provided packages for the most of the +toolset. + +A complete list of dependencies can be seen in `scripts/deps.sh`. + +### Cargo + +rustup manages the [Rust] toolchain, which includes cargo. Cargo is required +for building the tools. It is the only part of the development toolset that is +not installed through distro packages. + +### GNU Make + +[GNU Make] is used to automate the build process. It also provides targets for +using ecflash (for flashing) and ectool (for console). + +### SDCC + +[SDCC] is the only practical open source toolset on Linux for targeting the +8051 architecture (among others). It contains a collection of tools comparable +to what you would expect from GCC for other development targets. + +SDCC contains language extensions to support the 8051 architecture. Refer to +the [SDCC manual] for more information. + +Version 4.0.0 or newer should be used. + +**Note**: Fedora installs SDCC binaries to a non-standard location. Ensure that +`PATH` includes `/usr/libexec/sdcc`. + + +[EditorConfig]: https://editorconfig.org/ +[GNU Make]: https://www.gnu.org/software/make/ +[Rust]: https://www.rust-lang.org/ +[SDCC manual]: http://sdcc.sourceforge.net/doc/sdccman.pdf +[SDCC]: http://sdcc.sourceforge.net/