Just a note to the list to get feedback on the split image and build 
dependencies. Feedback would be great, but I also just want to get this out 
there for understanding (myself mostly as its hurting my head). All if this 
stuff is buried in newt, so the user won't have to understand much of this, but 
here's the explanation for developers.


As an FYI when this is checked in, you will define a split app in your target 
by adding.


app=apps/my_ble_app

loader=@apache-mynewt-core/ble_loader


Of course non-split single images will still be available.


Dependencies and new build steps within Newt:


1) Build loader.elf - This is the app that runs as the stand alone loader 
image.  Its name is whatever you call it in your target (e.g. ble_loader.elf 
above), but here I'll call it loader.elf. It is built like a normal newt app 
and the existing newt .elf->.a->.o->.c dependencies work great.


2) Build application .a's - This is the object archives for the split 
application.  They are built like a normal newt app and the existing newt 
.a->.o->.c dependencies work great.


3) Build loader_rom.elf - the shared position dependent library that defines 
the symbols that the loader and app will share.   Newt will check dependency on 
loader .a's and app .a's and if any are newer than loader_rom.elf will rebuild 
loader_rom.elf  This elf-lib will be passed to the app for linking. NOTE: It's 
name will be based on the name of the loader= target (e.g. ble_loader_rom.elf 
in this example).


4) Build splitApp.a - is the archive of all the .as for the split app with the 
symbols in loader_rom.elf removed. Newt will check dependency on the app.a's 
and loader_rom.elf and if any are newer than splitApp.a, will rebuild it.  Its 
built by archiving all the app .a's into one big blob, and then removing the 
symbols that are in loader_rom.elf.


5) app.elf - This is the split application image that gets loaded into 
partition 2. Its dependent on splitApp.a and  loader_rom.elf  New will check 
dependencies on splitApp.a and loader_rom.elf and rebuild app.elf if either of 
these are newer than the existing app.elf


In a single image build, I will skip steps 1,3 and there will be no dependency 
on loader_rom.elf. I'll probably continue to do step 2,4,5 for single or split 
images even though its not strictly necessary since it will make the code more 
readable and should take negligible time.

Reply via email to