Skip to content

Fix flash_offset collision in mix.exs #35

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 17 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Start by creating a Mix project

Run "mix help" for more commands.

Edit the generated `mix.exs` to include the ExAtomVM dependency (`{:exatomvm, git: "https://github.com/atomvm/ExAtomVM/"}`), and add a properties list using the `atomvm` key containing a `start` and `flash_offset` entry:
Edit the generated `mix.exs` to include the ExAtomVM dependency (`{:exatomvm, git: "https://github.com/atomvm/ExAtomVM/"}`), and add a properties list using the `atomvm` key containing a `start` entry and optionally `esp32_flash_offset` and/or `stm32_flash_offset` entries (flash offset is not used by Raspberry Pi RP2 devices):

## elixir
defmodule MyProject.MixProject do
Expand All @@ -63,7 +63,8 @@ Edit the generated `mix.exs` to include the ExAtomVM dependency (`{:exatomvm, gi
deps: deps(),
atomvm: [
start: MyProject,
flash_offset: 0x210000
esp32_flash_offset: 0x250000,
stm32_flash_offset: 0x8080000
]
]
end
Expand Down Expand Up @@ -284,7 +285,8 @@ To use this Mix plugin, add `ExAtomVM` to the dependencies list in your `mix.exs
...
atomvm: [
start: HelloWorld,
flash_offset: 0x210000
esp32_flash_offset: 0x250000,
stm32_flash_offset: 0x8080000
]
]
end
Expand Down Expand Up @@ -319,16 +321,14 @@ The `atomvm.esp32.flash` task is used to flash your application to a micro-contr

> Note. Before running this task, you must flash the AtomVM virtual machine to the device. See the [Getting Started](https://www.atomvm.net/doc/master/getting-started-guide.html) section if the [AtomVM documentation](https://www.atomvm.net/doc/master/) for information about how to flash the AtomVM image to a device.

The `atomvm` properties list in the Mix project file (`mix.exs`) may contain the following entries related to this task:

| Key | Type | Default | Value |
|-----|------|----------|-------|
| `flash_offset` | Address in hexademical format | 0x210000 | The name of the module containing the `start/0` entrypoint function |
| `chip` | `esp32` | `esp32` | Chip type |
| `port` | device path | `/dev/ttyUSB0` | Port to which device is connected on host computer |
| `baud` | integer | 115200 | BAUD rate used when flashing to device |
The `atomvm` properties list in the Mix project file (`mix.exs`) may contain the following entries related to this task. These properties may also be over-ridden on the command line when running `mix` by using long-style flags:

Properties in the `mix.exs` file may be over-ridden on the command line using long-style flags (prefixed by `--`) by the same name as the properties key. For example, you can use the `--port` option to specify or override the `port` property in the above table.
| Key | Type | Default | Value | Command line override |
|-----|------|----------|------|-----------------------|
| `esp32_flash_offset` | integer (hexademical format) | `0x250000` | The flash offset address to begin flashing to | `--flash_offset`|
| `chip` | string | `auto` | ESP32 chip variant | `--chip` |
| `port` | device path | `/dev/ttyUSB0` | Port to which device is connected on host computer | `--port` |
| `baud` | integer | `115200` | BAUD rate used when flashing to device | `--baud` |

If the `IDF_PATH` environment variable is set, then the `esptool.py` from the [IDF SDK](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/index.html) installation will be used to flash the application to the ESP32 device. Otherwise, this plugin will attempt to use the `esptool.py` program from the user's `PATH` environment variable. The [ESP Tool](https://github.com/espressif/esptool) Python3 application can be installed from source or via many popular package managers. Consult your local OS documentation for more information.

Expand Down Expand Up @@ -370,14 +370,12 @@ The `atomvm.stm32.flash` task is used to flash your application to a micro-contr

> Note. Before running this task, you must flash the AtomVM virtual machine to the device. See the [Getting Started](https://www.atomvm.net/doc/master/getting-started-guide.html) section if the [AtomVM documentation](https://www.atomvm.net/doc/master/) for information about how to flash the AtomVM image to a device.

The `atomvm` properties list in the Mix project file (`mix.exs`) may contain the following entries related to this task:

| Key | Type | Default | Value |
|-----|------|----------|-------|
| `stflash_path` | string | undefined | The full path to the `st-flash` utility, if not in users PATH |
| `flash_offset` | Address in hexademical format | 0x8080000 | The beginning flash address to write to |
The `atomvm` properties list in the Mix project file (`mix.exs`) may contain the following entries related to this task. These properties may also be over-ridden on the command line when running `mix` by using long-style flags:

Properties in the `mix.exs` file may be over-ridden on the command line using long-style flags (prefixed by `--`) by the same name as the properties key. For example, you can use the `--stflash_path` option to specify or override the `stflash_path` property in the above table.
| Key | Type | Default | Value | Command line override |
|-----|------|---------|-------|-----------------------|
| `stflash_path` | string | undefined | The full path to the `st-flash` utility, if not in users PATH | `--stflash_path` |
| `stm32_flash_offset` | integer (hexademical format) | `0x8080000` | The beginning flash address to write to | `--flash_offset` |

Example:

Expand Down
2 changes: 1 addition & 1 deletion lib/mix/tasks/esp32_flash.ex
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ defmodule Mix.Tasks.Atomvm.Esp32.Flash do
baud = Map.get(options, :baud, Keyword.get(avm_config, :baud, "115200"))

flash_offset =
Map.get(options, :flash_offset, Keyword.get(avm_config, :flash_offset, 0x250000))
Map.get(options, :flash_offset, Keyword.get(avm_config, :esp32_flash_offset, 0x250000))

flash(idf_path, chip, port, baud, flash_offset)
else
Expand Down
2 changes: 1 addition & 1 deletion lib/mix/tasks/stm32_flash.ex
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ defmodule Mix.Tasks.Atomvm.Stm32.Flash do
stflash_path <- System.get_env("ATOMVM_MIX_PLUGIN_STFLASH", <<"">>) do

flash_offset =
Map.get(options, :flash_offset, Keyword.get(avm_config, :flash_offset, 0x8080000))
Map.get(options, :flash_offset, Keyword.get(avm_config, :stm32_flash_offset, 0x8080000))

flash(stflash_path, flash_offset)
else
Expand Down