2019-11-26 22:02:55 +00:00
|
|
|
# Pigweed Embedded Oriented Software Libraries
|
2019-10-31 19:23:43 +00:00
|
|
|
|
|
|
|
Pigweed is a collection of embedded-focused libraries, which we call "modules".
|
|
|
|
These modules are designed for small-footprint MMU-less microcontrollers like
|
|
|
|
the ST Micro STM32L452 or the Nordic NRF82832. The modules are designed to
|
|
|
|
facilitate easy integration into existing codebases.
|
|
|
|
|
|
|
|
Pigweed is in the early stages of development.
|
|
|
|
|
2019-11-26 22:02:55 +00:00
|
|
|
# Getting Started
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ git clone sso://pigweed.googlesource.com/pigweed/pigweed ~/pigweed
|
|
|
|
$ cd ~/pigweed
|
2019-11-27 19:01:48 +00:00
|
|
|
$ env_setup/cipd/cipd.py auth-login # Once per machine.
|
2019-11-26 22:02:55 +00:00
|
|
|
$ . env_setup/setup.sh
|
|
|
|
```
|
|
|
|
|
2019-12-02 19:17:42 +00:00
|
|
|
If you're using Homebrew and you get an error saying
|
|
|
|
`module 'http.client' has no attribute 'HTTPSConnection'` then your
|
|
|
|
Homebrew Python was not set up to support SSL. Ensure it's installed with
|
|
|
|
`brew install openssl` and then run
|
|
|
|
`brew uninstall python && brew install python`. After that things should work.
|
|
|
|
|
2019-11-26 22:02:55 +00:00
|
|
|
The environment setup script will pull down the versions of tools necessary
|
|
|
|
to build Pigweed and add them to your environment. You can then build with
|
|
|
|
either GN or Bazel. You can also confirm you're getting the right versions
|
|
|
|
of tools—they should be installed under `env_setup/`.
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ which gn
|
|
|
|
~/pigweed/env_setup/cipd/tools/gn
|
|
|
|
$ gn gen out/host
|
|
|
|
$ ninja -C out/host
|
|
|
|
```
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ which bazel
|
|
|
|
~/pigweed/env_setup/cipd/tools/bazel
|
|
|
|
$ bazel test //...
|
|
|
|
```
|
|
|
|
|
|
|
|
And do the following to test on hardware. (The bazel build does not yet
|
|
|
|
support building for hardware.)
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ gn gen --args='pw_target_config = "//targets/stm32f429i-disc1/target_config.gni"' out/disco
|
|
|
|
$ ninja -C out/disco
|
|
|
|
```
|
|
|
|
|
|
|
|
If any of this doesn't work please
|
|
|
|
[file a bug](https://bugs.chromium.org/p/pigweed/issues/entry).
|