platformio / platformio/platform-raspberrypi

Unable to use hardware/flash.h from pico-sdk

Open
#38 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
94
Forks
141
PR merge metrics
No merged PRs in 30d

Description

I hope this is the right place to open this issue.

When building something that uses functions from hardware/flash.h I get the following unresolved symbol:

.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld: .pio/build/rp2040/src/main.cpp.o: in function `save()':
main.cpp:(.text._Z4savev+0x12): undefined reference to `flash_range_erase(unsigned long, unsigned int)'
.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld: main.cpp:(.text._Z4savev+0x1e): undefined reference to `flash_range_program(unsigned long, unsigned char const*, unsigned int)'
collect2: error: ld returned 1 exit status
*** [.pio/build/rp2040/firmware.elf] Error 1

This same code works fine in the Arduino IDE (1.0) and arduino-cli. The two symbols referenced are calls I'm making of course.

Is there some build_flags= that I need to set in order to link against the proper library? I have tried the released version of platform-raspberrypi as well as pointing it directly at this github repo and the behavior is the same.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the reported main.cpp build for the rp2040 target and inspect the PlatformIO linker output for the unresolved flash_range_erase and flash_range_program symbols. Compare the PlatformIO setup with the working Arduino IDE and arduino-cli builds. Done means the firmware links successfully when using hardware/flash.h.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, raspberry-pi
Domain
build-system, embedded-iot
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.