Skip to content

Commit

Permalink
Added Arduino Nano RP2040 Connect support
Browse files Browse the repository at this point in the history
  • Loading branch information
cmaglie committed Apr 14, 2021
1 parent 85e84e2 commit ed06362
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 0 deletions.
Binary file not shown.
3 changes: 3 additions & 0 deletions modules/nina/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import (

"github.com/arduino/FirmwareUpdater/programmers/avrdude"
"github.com/arduino/FirmwareUpdater/programmers/bossac"
"github.com/arduino/FirmwareUpdater/programmers/rp2040load"
"github.com/arduino/FirmwareUpdater/utils/context"
)

Expand All @@ -44,6 +45,8 @@ func Run(ctx *context.Context) {
programmer = &bossac.Bossac{}
} else if strings.Contains(filepath.Base(ctx.ProgrammerPath), "avrdude") {
programmer = avrdude.NewAvrdude(ctx)
} else if strings.Contains(filepath.Base(ctx.ProgrammerPath), "rp2040load") {
programmer = rp2040load.NewRP2040Load(ctx)
} else {
log.Fatal("Programmer path not specified correctly, programmer path set to: " + ctx.ProgrammerPath)
}
Expand Down
50 changes: 50 additions & 0 deletions programmers/rp2040load/rp2040load.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package rp2040load

import (
"log"
"os"

"github.com/arduino/FirmwareUpdater/utils/context"
"github.com/arduino/arduino-cli/arduino/serialutils"
"github.com/arduino/arduino-cli/executils"
"github.com/arduino/go-paths-helper"
)

type RP2040Load struct {
rp2040LoadPath *paths.Path
portName string
}

func NewRP2040Load(ctx *context.Context) *RP2040Load {
return &RP2040Load{
rp2040LoadPath: paths.New(ctx.ProgrammerPath),
portName: ctx.PortName,
}
}

func (b *RP2040Load) Flash(filename string) error {
log.Println("Entering board into bootloader mode")
port, err := serialutils.Reset(b.portName, true)
if err != nil {
return err
}

log.Println("Flashing " + filename)
if err := b.invoke("-v", "-D", filename); err != nil {
log.Fatalf("Error flashing %s: %s", filename, err)
}

b.portName, err = serialutils.WaitForNewSerialPortOrDefaultTo(port)
log.Println("Board is back online " + b.portName)
return err
}

func (b *RP2040Load) invoke(args ...string) error {
cmd, err := executils.NewProcessFromPath(b.rp2040LoadPath, args...)
if err != nil {
return err
}
cmd.RedirectStdoutTo(os.Stdout)
cmd.RedirectStderrTo(os.Stderr)
return cmd.Run()
}
1 change: 1 addition & 0 deletions utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ func GetCompatibleWith(name string, rootPath string) map[string][]firmware {
knownBoards["mkrvidor4000"] = combo{match: "(NINA)", loader: "NINA/Firmware.*mkrvidor.*", avoid: "uno"}
knownBoards["uno2018"] = combo{match: "(NINA)", loader: "NINA/Firmware.*unowifi.*", prefer: "uno", avoid: "mkr"}
knownBoards["mkrnb1500"] = combo{match: "SARA", loader: "SARA/SerialSARAPassthrough*"}
knownBoards["nanorp2040connect"] = combo{match: "(NINA).*(Nano_RP2040_Connect)", loader: "NINA/Firmware.*nanorp2040connect.*"}

listAll := false

Expand Down

0 comments on commit ed06362

Please sign in to comment.