Skip to content
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

POST_APPLICATION_ADDR macro for bootloader is not defined #315

Open
reiniercoetzer opened this issue Sep 10, 2021 · 1 comment
Open

POST_APPLICATION_ADDR macro for bootloader is not defined #315

reiniercoetzer opened this issue Sep 10, 2021 · 1 comment
Labels
bug Something isn't working

Comments

@reiniercoetzer
Copy link

reiniercoetzer commented Sep 10, 2021

Describe the bug
Hi Mbed team, @ladislas @Patater ,

We are using Mbed-OS 6.14 with Mbed-CLI2 and CMake to port a bootloader for our custom target.

In “target_overrides” we are simply using “target.restrict_size”: “0x20000” to basically use the managed bootloader. However, when we are compiling the bootloader application, it seems as though the POST_APPLICATION_ADDR macro is not being defined.

I followed this guide to port a custom target using Mbed-CLI2:
Porting custom boards - Porting | Mbed OS 6 Documentation

Could you maybe give some pointers as to why this is happening?

To Reproduce
Our custom_targets.json:

{
    "TS_PHOENIX": {
        "inherits": [
            "MCU_STM32WB55xG"
        ],
        "components_add": [
            "SPIF", "FLASH", "FLASHIAP"
        ],
        "detect_code": [
            "0839"
        ],
        "device_name": "STM32WB55RGVx",
        "config": {
            "update_file_name": {
                "help": "Value: Defines the update filename which is expected by the bootloader.",
                "value": "\"ts.bin\"",
                "macro_name": "TS_UPDATE_FILE_NAME"
            }
        }
    }

}

Our mbed_app.json:

{
    "target_overrides": {
        "*": {
            "target.restrict_size": "0x20000",
            "target.macros_add": ["NDEBUG=1"],
            "platform.stdio-flush-at-exit": false
        },
        "TS_PHOENIX": {
            "target.macros_add": ["TS_UPDATE_FILE_NAME=\"ts.bin\""],
            "spif-driver.SPI_CLK": "SPI_FLASH_SCK",
            "spif-driver.SPI_CS": "SPI_FLASH_CS",
            "spif-driver.SPI_MOSI": "SPI_FLASH_MOSI",
            "spif-driver.SPI_MISO": "SPI_FLASH_MISO"
        }
    }
}

Top-level CMakeLists.txt

cmake_minimum_required(VERSION 3.19.0 FATAL_ERROR)

set(MBED_PATH ${CMAKE_CURRENT_SOURCE_DIR}/mbed-os CACHE INTERNAL "")
set(MBED_CONFIG_PATH ${CMAKE_CURRENT_BINARY_DIR} CACHE INTERNAL "")
set(APP_TARGET VOYAGER-PHOENIX-BL)

include(${MBED_PATH}/tools/cmake/app.cmake)

add_subdirectory(${MBED_PATH})
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/TARGET_TS_PHOENIX)

add_executable(${APP_TARGET})

mbed_configure_app_target(${APP_TARGET})

project(${APP_TARGET})

target_sources(${APP_TARGET}
    PRIVATE
        main.cpp
)

target_include_directories(${APP_TARGET}
    PUBLIC
        .
)

target_link_libraries(${APP_TARGET}
    PRIVATE
        mbed-os
        mbed-core
        mbed-stm
        mbed-stm32wb
        mbed-ts-phoenix
        mbed-storage
)

mbed_set_post_build(${APP_TARGET})

option(VERBOSE_BUILD "Have a verbose build process")
if(VERBOSE_BUILD)
    set(CMAKE_VERBOSE_MAKEFILE ON)
endif()

Custom target CMakeListst.txt (based on the mbed-stm32wb55xg):

add_library(mbed-toolsense-phoenix INTERFACE)

target_sources(mbed-toolsense-phoenix
    INTERFACE
        PeripheralPins.c
        system_clock.c
)

target_include_directories(mbed-toolsense-phoenix
    INTERFACE
        .
)

target_link_libraries(mbed-toolsense-phoenix INTERFACE mbed-stm32wb55xg)

Compiling command line:

mbed-tools compile -m TS_PHOENIX -t GCC_ARM

And the last output from the build:

...
X-BL.dir/main.cpp.obj.d -o CMakeFiles/VOYAGER-PHOENIX-BL.dir/main.cpp.obj -c ../../../../main.cpp
../../../../main.cpp: In function 'int main()':
../../../../main.cpp:28:28: error: 'POST_APPLICATION_ADDR' was not declared in this scope
   28 |     mbed_start_application(POST_APPLICATION_ADDR);
      |                            ^~~~~~~~~~~~~~~~~~~~~
../../../../main.cpp: In function 'bool update(const char*)':
../../../../main.cpp:37:28: error: 'POST_APPLICATION_ADDR' was not declared in this scope
   37 |         apply_update(file, POST_APPLICATION_ADDR);
      |                            ^~~~~~~~~~~~~~~~~~~~~

Why is the macro not being defined?

Expected behavior
The simple bootloader application builds and POST_APPLICATION_ADDR=0x8020000

Desktop (please complete the following information):

  • OS: Ubuntu
  • Version: 20.04.2

Mbed (please complete the following information):

  • Device: custom board based on STM32WB55xG
  • Mbed OS Version: 6.14.0
  • Mbed CLI 2 Version: 7.34.0

Additional context
Add any other context about the problem here.

@reiniercoetzer reiniercoetzer added the bug Something isn't working label Sep 10, 2021
@LDong-Arm
Copy link
Contributor

Hi @reiniercoetzer, thanks for raising this issue. Macros for bootloader support are not currently generated, and the main issue is tracked in #156.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants