You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@mynewt.apache.org by "Sheela (JIRA)" <ji...@apache.org> on 2017/06/05 18:50:04 UTC
[jira] [Updated] (MYNEWT-477) newt - Split image requires split
startup .s file to be in BSP package
[ https://issues.apache.org/jira/browse/MYNEWT-477?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sheela updated MYNEWT-477:
--------------------------
Fix Version/s: (was: v1_1_0_rel)
> newt - Split image requires split startup .s file to be in BSP package
> ----------------------------------------------------------------------
>
> Key: MYNEWT-477
> URL: https://issues.apache.org/jira/browse/MYNEWT-477
> Project: Mynewt
> Issue Type: Bug
> Security Level: Public(Viewable by anyone)
> Components: Newt
> Reporter: Christopher Collins
> Assignee: Sterling Hughes
>
> It would be better if all the startup code could go in the MCU package. If the split startup file is put in the MCU package, a split image build results in an empty second-slot image and the following warning:
> {noformat}
> arm-none-eabi/bin/ld: warning: cannot find entry symbol Reset_Handler_split; defaulting to 0000000000042020
> {noformat}
> Newt thinks the second-stage app uses no symbols from the MCU package, so it doesn't include the MCU .a file in the final link phace. The app does use a symbol from the MCU app; namely Reset_Handler_split. This symbol is designated as the entry point in the split linker script, but not referenced anywhere else.
> The reason newt doesn't honor the linker script's reference to Reset_Handler_split has to do with the way it builds split images. Before performing the final link of the second-stage app, newt performs some "test links" to determine which packages and symbols are shared among the two apps. The test links are done using the regular stage 1 (loader) linker script. Hence, newt determines early that the second-stage app does not reference the MCU package at all.
> This problem does not occur when the split startup code is in the BSP package, because the second-stage app directly calls BSP functions in main(), namely bsp_init() (called via sysinit()). Therefore, newt recognizes that the app depends on the BSP package, and includes this package in the final link phase.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)