Christopher Collins created MYNEWT-477:
------------------------------------------

             Summary: 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
          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.4#6332)

Reply via email to