Packages
nerves
1.4.4
1.15.0
1.14.3
1.14.2
1.14.1
1.14.0
1.13.2
1.13.1
1.13.0
1.12.0
1.11.3
1.11.2
1.11.1
1.11.0
1.10.5
1.10.4
1.10.3
1.10.2
1.10.1
1.10.0
1.9.3
1.9.2
retired
1.9.1
1.9.0
1.8.0
1.7.17
1.7.16
1.7.15
1.7.14
retired
1.7.13
1.7.12
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
retired
1.7.1
retired
1.7.0
retired
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.1
1.2.0
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.11.0
0.10.1
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.3
0.8.2
0.8.1
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.4.0-rc.0
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
Craft and deploy bulletproof embedded software
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/firmware.image.ex
defmodule Mix.Tasks.Firmware.Image do
use Mix.Task
import Mix.Nerves.Utils
@shortdoc "Create a firmware image file"
@moduledoc """
Create a firmware image file that can be copied byte-for-byte to an SDCard
or other memory device.
## Usage
mix firmware.image [my_image.img]
If not supplied, the output image file will be based off the OTP application
name.
## Examples
```
# Create the image file
mix firmware.image my_image.img
# Write it to a MicroSD card in Linux
dd if=my_image.img of=/dev/sdc bs=1M
```
"""
@impl true
def run([file]) do
preflight()
debug_info("Nerves Firmware Image")
config = Mix.Project.config()
otp_app = config[:app]
target = mix_target()
images_path =
(config[:images_path] || Path.join([Mix.Project.build_path(), "nerves", "images"]))
|> Path.expand()
check_nerves_system_is_set!()
check_nerves_toolchain_is_set!()
fw = "#{images_path}/#{otp_app}.fw"
unless File.exists?(fw) do
Mix.raise("Firmware for target #{target} not found at #{fw} run `mix firmware` to build")
end
file = Path.expand(file)
image(fw, file)
end
def run([]) do
otp_app = Mix.Project.config()[:app]
file = "#{otp_app}.img"
run([file])
end
def run(_args) do
Mix.raise("""
mix firmware.image [my_image.img]
See mix help firmware.image for more info
""")
Mix.Task.run("help", ["firmware.image"])
end
defp image(fw, file) do
Mix.shell().info("Writing to #{file}...")
args = ["-a", "-i", fw, "-t", "complete", "-d", file]
cmd = "fwup"
shell(cmd, args)
end
end