From 3a1d8585b8c91960ebea0eb827e0fb7947d84738 Mon Sep 17 00:00:00 2001 From: Hasty Granbery Date: Thu, 3 Sep 2020 16:44:41 -0700 Subject: [PATCH 1/2] Rename linker script setting "part2linkerscript" to "splitapplinkerscript" This was a confusing name, only to become more so in the next commit, where it's really part 3. This maintains backwards compatibility with "bsp.part2linkerscript" directives in existing bsp.ymls, but prioritizes "splitapplinkerscript" --- newt/builder/targetbuild.go | 2 +- newt/pkg/bsp_package.go | 38 ++++++++++++++++++++++++------------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/newt/builder/targetbuild.go b/newt/builder/targetbuild.go index 57e4952cd1..5e8e5ab49c 100644 --- a/newt/builder/targetbuild.go +++ b/newt/builder/targetbuild.go @@ -579,7 +579,7 @@ func (t *TargetBuilder) Build() error { if err := t.buildLoader(); err != nil { return err } - linkerScripts = t.bspPkg.Part2LinkerScripts + linkerScripts = t.bspPkg.SplitAppLinkerScripts } // Execute the set of pre-link user scripts. diff --git a/newt/pkg/bsp_package.go b/newt/pkg/bsp_package.go index 55dd902826..e5a7587782 100644 --- a/newt/pkg/bsp_package.go +++ b/newt/pkg/bsp_package.go @@ -35,17 +35,17 @@ const BSP_YAML_FILENAME = "bsp.yml" type BspPackage struct { *LocalPackage - CompilerName string - Arch string - LinkerScripts []string - Part2LinkerScripts []string /* scripts to link app to second partition */ - DownloadScript string - DebugScript string - OptChkScript string - ImageOffset int - ImagePad int - FlashMap flashmap.FlashMap - BspV ycfg.YCfg + CompilerName string + Arch string + LinkerScripts []string + SplitAppLinkerScripts []string /* scripts to link app to second partition */ + DownloadScript string + DebugScript string + OptChkScript string + ImageOffset int + ImagePad int + FlashMap flashmap.FlashMap + BspV ycfg.YCfg } func (bsp *BspPackage) BspYamlPath() string { @@ -145,12 +145,24 @@ func (bsp *BspPackage) Reload(settings map[string]string) error { return err } - bsp.Part2LinkerScripts, err = bsp.resolveLinkerScriptSetting( - settings, "bsp.part2linkerscript") if err != nil { return err } + bsp.SplitAppLinkerScripts, err = bsp.resolveLinkerScriptSetting( + settings, "bsp.splitapplinkerscript") + if err != nil { + return err + } + + if len(bsp.SplitAppLinkerScripts) == 0 { + bsp.SplitAppLinkerScripts, err = bsp.resolveLinkerScriptSetting( + settings, "bsp.part2linkerscript") + if err != nil { + return err + } + } + bsp.DownloadScript, err = bsp.resolvePathSetting( settings, "bsp.downloadscript") if err != nil { From 7458a29a0b20de3f0c4a442ac8fd21ffc298b430 Mon Sep 17 00:00:00 2001 From: Hasty Granbery Date: Thu, 3 Sep 2020 16:45:18 -0700 Subject: [PATCH 2/2] Add "bsp.wholeapplinkerscript" linker script setting to allow larger split images --- newt/builder/targetbuild.go | 8 +++++++- newt/pkg/bsp_package.go | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/newt/builder/targetbuild.go b/newt/builder/targetbuild.go index 5e8e5ab49c..f1d1e775e0 100644 --- a/newt/builder/targetbuild.go +++ b/newt/builder/targetbuild.go @@ -426,7 +426,13 @@ func (t *TargetBuilder) buildLoader() error { /* Tentatively link the app (using the normal single image linker * script) */ - if err := t.AppBuilder.TentativeLink(t.bspPkg.LinkerScripts, + var appLinkerScripts []string + if len(t.bspPkg.WholeAppLinkerScripts) > 0 { + appLinkerScripts = t.bspPkg.WholeAppLinkerScripts + } else { + appLinkerScripts = t.bspPkg.LinkerScripts + } + if err := t.AppBuilder.TentativeLink(appLinkerScripts, t.extraADirs()); err != nil { return err diff --git a/newt/pkg/bsp_package.go b/newt/pkg/bsp_package.go index e5a7587782..3dc770734e 100644 --- a/newt/pkg/bsp_package.go +++ b/newt/pkg/bsp_package.go @@ -38,6 +38,7 @@ type BspPackage struct { CompilerName string Arch string LinkerScripts []string + WholeAppLinkerScripts []string /* scripts to tentatively link app for split image as though it had full use of both slots */ SplitAppLinkerScripts []string /* scripts to link app to second partition */ DownloadScript string DebugScript string @@ -145,6 +146,8 @@ func (bsp *BspPackage) Reload(settings map[string]string) error { return err } + bsp.WholeAppLinkerScripts, err = bsp.resolveLinkerScriptSetting( + settings, "bsp.wholeapplinkerscript") if err != nil { return err }