aboutsummaryrefslogtreecommitdiff
path: root/tools/build_system
AgeCommit message (Collapse)Author
2020-10-15rcar: add rcar platformNicolas Royer
This patch adds support for the rcar platform running on FreeRTOS. FreeRTOS source code is temporarily included into rcar product directory until armv8-a support is added to CMSIS-FreeRTOS repository. Change-Id: Ia828f903d52df236922fe7f6f548bce06ee131cc Signed-off-by: Tsutomu Muroya <tsutomu.muroya.jy@bp.renesas.com> Signed-off-by: Nicolas Royer <nroyer@baylibre.com>
2020-10-15arch: add armv8-a supportNicolas Royer
Change-Id: I4ba1332eeea2fd19d2ae60281e0894a1c262ea58 Signed-off-by: Tsutomu Muroya <tsutomu.muroya.jy@bp.renesas.com> Signed-off-by: Nicolas Royer <nroyer@baylibre.com>
2020-10-15arm: Arm toolchain does not support S-Record formatjimqui01
The armclang toolchain does not support S-Records. Change-Id: I9de19e9c857e7437782b959d583ce1fdb8188652
2020-09-08rules.mk: correct BUILD_PATH to allow build irrespective of formatUsama Arif
Without this patch, the BUILD_PATH cannot end with a /. With this patch, the end of BUILD_PATH does not matter. BUILD_PATH can be automatically generated by build systems, so it is important that any format is supported. Change-Id: Iba306f8ac29a528fa6a7dc0a37e3c3b7ef7d0309 Signed-off-by: Usama Arif <usama.arif@arm.com>
2020-07-24build: deprecate BS_FIRMWARE_NOTIFICATION_COUNTVijayenthiran Subramaniam
Commit 95b4de8 ("fwk: Initialize notifications statically") reworked notification initialization code to use maximum notification count from FMW_NOTIFICATION_MAX macro instead of BS_FIRMWARE_NOTIFICATION_COUNT. This reverts commit 704a318 to deprecate BS_FIRMWARE_NOTIFICATION_COUNT and NOTIFICATION_COUNT macros in the build system. Change-Id: Ida4e1464f841e1380257b7ffbfa32a429c8f536d Signed-off-by: Vijayenthiran Subramaniam <vijayenthiran.subramaniam@arm.com>
2020-07-16SCMI: Resource Permissions ModuleJim Quigley
This patch adds the SCMI Resource Permissions module to the firmware. Change-Id: I4dc738024eebc77f23b64095670ecbbb8e7f6e34 Signed-off-by: Jim Quigley <jim.quigley@arm.com>
2020-07-03tools: add build option for statisticsLukasz Luba
Add needed build option to support conditional firmware build with the statistics module. It also adds documentation for the new flags. The statistics are used by performance and power domain protocols. Change-Id: If375dc01aad9c555a39a9a85b6edebdc6c096138 Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
2020-06-30product/juno: Add Reset Domain module and driver.Girish Pathak
Arm platforms don't have proper reset domains. However to demonstrate reset domain module's functionality, this change adds a juno specific driver with UART as an example reset domain peripheral. As an simple example only autoreset functionality is implemented as explicit assert/de-assert complicates functionality of UART peripheral. Change-Id: I06330447f92534974f3c5997b44fcbf0897806f9 Signed-off-by: Girish Pathak <girish.pathak@arm.com> Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
2020-06-09armclang: Remove -Wno-missing-bracesChris Kay
This warning flag no longer triggers in more recent versions of Arm Compiler 6, so can be removed. Change-Id: I1ff1c965886d90860cca8b4e741f4a94c584f197 Signed-off-by: Chris Kay <chris.kay@arm.com>
2020-06-09misc: Switch from ISO C11 to GNU C11Chris Kay
We use a number of compiler extensions already, and the strict rules required for compliance with ISO C11 can be prohitive for embedded development. This commit moves our C variant from ISO C11 to GNU C11, which is compatible with all the toolchains we currently support. Change-Id: I58ce6479c4f8ca9039d957d08aadd3ebff4ac8fc Signed-off-by: Chris Kay <chris.kay@arm.com>
2020-06-05arch: Refactor architecture libraryChris Kay
This commit splits the "architecture" concept into two, more specific concepts: the vendor, and the architecture. This allows us to refactor architecture support into more common parts, and contain architecture-specific logic more cleanly. Some architectural functions and definitions have also been renamed to better reflect their origin and to maintain naming consistency. As architectures are generally not intended to be built independently of any firmware, the CI script no longer tries to build the architecture library. Change-Id: I04430e3a5503d29247517b869e36c180d6d21eaa Signed-off-by: Chris Kay <chris.kay@arm.com>
2020-06-05arch: Use generic `arch_` prefixChris Kay
Symbols originating from the architecture layer are now encouraged to use the unified `arch_` prefix to indicate their origin when context is not provided (such as when listing symbols exposed by a firmware image). Change-Id: I3ff23cb95ef225a3422b8daadeb671a7d0642d3e Signed-off-by: Chris Kay <chris.kay@arm.com>
2020-05-29juno/build: Make Juno Debug Unit optionalJim Quigley
This patch allows the Debug Unit to be removed from the firmware at build time if it is not required. Change-Id: I51511ecd5b41a8ba498d6c1eb5a0cb57125c0f0b Signed-off-by: Jim Quigley <jim.quigley@arm.com>
2020-05-22fwk: Deprecate fwk_put_event_and_wait API for single-threaded firmwareJim Quigley
This patch deprecates the fwk_put_event_and_wait API for builds with BUILD_HAS_MULTITHREADING=no. As this is a synchronous API it could have serious adverse effects on performance and throughput when used in single-threaded mode. Therefore, this API should not be used in the future in single-threaded mode. All future development should follow the deferred response architecture model. Change-Id: I6eccdf4fd901509df14a57a7f6246790061f8409 Signed-off-by: Jim Quigley <jim.quigley@arm.com>
2020-05-01tools: Enable building Fast ChannelsJim Quigley
This patch adds the tools requirements for building SCMI Fast Channels. Change-Id: I58080d36cf6426d5cad76a0a55b9c868b0c09598 Signed-off-by: Jim Quigley <jim.quigley@arm.com>
2020-05-01SCMI: Add NOTIFY_LEVEL/_LIMIT SCMI commandsJim Quigley
This patch adds the SCMI performance protocol NOTIFY_LIMITS and NOTIFY_LEVELS functionality. Change-Id: I2d0e3173696617e050a846fd6452c60e01ca94ac Signed-off-by: Jim Quigley <jim.quigley@arm.com>
2020-03-24fwk: Filter log messages by levelChris Kay
This commit introduces the ability to filter logs based on their criticality. Log messages that do not exceed the configured criticality are removed at preprocessing time. This, in turn, allows us to remove logging calls that do not meet the criticality requirement, reducing the size of the executable image and increasing the performance of release images. Change-Id: I56e14175b67a3e4e68fd03b8e457a802192898d1 Signed-off-by: Chris Kay <chris.kay@arm.com>
2020-03-24fwk/test: Refactor framework test build systemChris Kay
This refactoring cleans up the framework test makefiles, reducing the amount of boilerplate needed to create framework tests. The build system logic for the test framework has been adjusted so that framework source files are recompiled for each test case. This ensures that build flags can be set on a per-test-case basis, where currently the framework is built only once with only one set of build flags. This means test cases can selectively enable and disable the necessary features. In addition, the framework is compiled in its entirety for each test suite. This means that test suite no longer need to selectively identify the source files required to successfully build. Change-Id: I0d4c10b5903d47ee5f81bd70dc453331dd4d236f Signed-off-by: Chris Kay <chris.kay@arm.com>
2020-03-24build: Allow preprocessor flags to be configuredChris Kay
This commit also ensures the C, and not C++, preprocessor is used. Change-Id: I43b6e44a9da4fe7e52a9af41d892600a8e20fa31 Signed-off-by: Chris Kay <chris.kay@arm.com>
2020-03-23dbg: Add bring-up debugger build optionTarek El-Sherbiny
This patch adds a new build option that can be passed on the command line to enable compiling and including the bring-up debugger library into a multi-threaded firmware. Change-Id: I760640c53af865245c23a94be722438eca1612de Signed-off-by: Tarek El-Sherbiny <tarek.el-sherbiny@arm.com>
2020-03-16juno: Remove -Os/-flto for debug modeChris Kay
New adjustments to the maximum size of the SCP_BL2 image in Trusted Firmware-A means we now have far greater room for expansion. Change-Id: I9bc4791e5a2347f2d30bdcb3a482b5a3e6801e0a Signed-off-by: Chris Kay <chris.kay@arm.com>
2020-03-11armv7m: Re-enable unaligned accessesChris Kay
The Keil RTX libraries are compiled with unaligned accesses enabled, and so it is possible for RTX to trigger unaligned access violations with otherwise valid code. Unaligned accesses have been re-enabled to reduce the risk of encountering avoidable exceptions. Change-Id: I6b5867dda919db65033bfe6d889da0fd69ab4482 Signed-off-by: Chris Kay <chris.kay@arm.com>
2020-03-11bootloader: Don't access R/W memory when bootloadingChris Kay
The RAM firmware image is loaded from the beginning of SRAM, which overlaps read/write data used by the ROM firmware. This has the potential to corrupt ROM runtime data that is still being loaded in and out of memory while it is preparing to boot the image. This patch removes the image booting logic from the `msys_rom` and `juno_rom` modules and moves it to the `bootloader` module to ensure that the transfer is properly and safely contained and controlled. Other changes to reduce exploitability including updating the stack pointer to the one expected by the RAM firmware rather than permitting it to continue from where the ROM firmware left off, and relocating the vector table to the one embedded in the RAM firmware image, which prevents the core from using the exception handlers created during ROM boot (which are in the heap and may have been corrupted while loading the RAM firmware). Change-Id: I4413c1cd058ca93ef04177424f1f29561b10872f Signed-off-by: Chris Kay <chris.kay@arm.com>
2020-02-04framework: allow product to define notification countVijayenthiran Subramaniam
The default value of NOTIFICATION_COUNT is set to 64. On platforms that require a larger number of notification subscriptions, allow the product to define the value of NOTIFICATION_COUNT. Change-Id: I883d35879b1bd681203d768a8f96c7595ad05e8e Signed-off-by: Vijayenthiran Subramaniam <vijayenthiran.subramaniam@arm.com>
2020-01-03scp: Update copyright to 2020Nicola Mazzucato
All the relevant headers in files have been updated to 2020. Change-Id: I8ef14a4c87b65c87933ef79697dcb5fc5dda87d4 Signed-off-by: Nicola Mazzucato <nicola.mazzucato@arm.com>
2019-12-03build: Disable LTO for Juno ROMChris Kay
The Juno ROM is not pressured for size, and a bug in binutils currently prevents LD from wrapping functions when LTO is enabled. Change-Id: If0a0f22e22bb96a5a6d07f0fbd3b0ef980c6ea39 Signed-off-by: Chris Kay <chris.kay@arm.com>
2019-11-25build: Enable -Os flag in debug modeTarek El-Sherbiny
The Juno platform code size must be reduced to fit the memory requirements in debug mode. This change sets the compiler optimization flag to -Os to meet the requirements. Change-Id: Ifc315bece86f7d729cc31c7ad21725027d48039f Signed-off-by: Tarek El-Sherbiny <tarek.el-sherbiny@arm.com>
2019-11-25build: Enable LTO for GCCTarek El-Sherbiny
Enables GCC link-time optimization for Juno platform. Arm compiler 6 does not yet support LTO for static libraries. Change-Id: I024c3751259588c25ea5234eb42aceb149b15b80 Signed-off-by: Tarek El-Sherbiny <tarek.el-sherbiny@arm.com>
2019-09-11arch/armv7-m: Split exception table from handlersChris Kay
This commit splits out the exception table from the handlers it links to. We need to do this in order to wrap the reset handler function, which is needed for Juno (see the next commit). The current situation is that, when compiling the exception table, the compiler can determine the address of the reset function statically. This means that by the the time the linker has had a chance to wrap the reset handler function, the link between the exception table and the function has already occurred, making it impossible for the linker to link to our wrapper function instead. We need to alter this situation so that when the linker comes to a reference to the reset handler, it can link it to the wrapped handler instead. To do this, we need to make sure that the compiler cannot determine the location of the function by itself, which requires putting the table and the handler in separate compilation units. Change-Id: Id17ddea28a3f26323bef45f4ce8961d50b866c59 Signed-off-by: Chris Kay <chris.kay@arm.com>
2019-08-09bs: Add justification of compiler warning flagsChris Kay
This commit adds a basic security justification to the Makefile rules, explaining the reasons for increasing the compiler warnings used. Change-Id: Id867f90fc88014a1801ca341e6d1c0c75faa0f35 Signed-off-by: Chris Kay <chris.kay@arm.com>
2019-01-03copyright: Extend to 2019Ronald Cron
Change-Id: I73e35e5caa53544c7f3bcb0097f2ad79fb0e2122 Signed-off-by: Ronald Cron <ronald.cron@arm.com>
2018-12-10build: Name firmware bin and elf file by the name of the firmwareRonald Cron
Having different file names makes it easier to differentiate the firmware binaries. It also removes the need for renaming them when they are placed in a common directory. The firmware.bin binary file is still generated by the build system. A subsequent patch will remove its generation giving time to remove any dependency on it. Change-Id: Id38c20d667f802f18abf090b0c331b796c2ce23d Signed-off-by: Ronald Cron <ronald.cron@arm.com>
2018-11-21build: Add support for binary modulesNicola Mazzucato
Change-Id: I054a77d3295150c1e5445d430cabaad978e7e594 Signed-off-by: Nicola Mazzucato <nicola.mazzucato@arm.com>
2018-11-14build: Move doc targetChris Kay
The doc target in the top-level Makefile hides the target of the same name introduced in rules.mk. This commit moves the rules.mk target to the documentation Makefile where it cannot leak into the rest of the build system. Change-Id: I5f075c59978cc996dec9c48dd4ee40a90b11829a Signed-off-by: Chris Kay <chris.kay@arm.com>
2018-11-14build: Add include guards to .mk filesChris Kay
In order to prevent overwriting variable values and rules, all included .mk files must have include guards just as in C header files. This commit also removes the add_once macro, as it is no longer needed. Change-Id: Id751ebd6a7af2892a7a71df71a34e4ab68debcf7 Signed-off-by: Chris Kay <chris.kay@arm.com>
2018-11-14build: Use wildcard-based directory creation rulesChris Kay
The current rule for creating directories does not allow creation of directories through dependencies on demand. This patch moves away from the predefined build directories approach to a more flexible wildcard- based approach. Change-Id: Idfb40a1405a5812973b14a05da3cab183740c1e3 Signed-off-by: Chris Kay <chris.kay@arm.com>
2018-11-12rules.mk: Fix coding styleNicola Mazzucato
Change-Id: I6dfc37f7b1e74c19df46ac5ce68ad54233754416 Signed-off-by: Nicola Mazzucato <nicola.mazzucato@arm.com>
2018-10-18build: Disable generation of unaligned accessesChris Kay
CCR.UNALIGN_TRP is enabled, and will trap any unaligned access. We need to ensure the compiler does not generate them. Change-Id: Ia0166578c00fa53399aa9823eec8f166b70b0762 Signed-off-by: Chris Kay <chris.kay@arm.com>
2018-10-08arm: Enable garbage collection of unused functions/dataChris Kay
This patch adds flags enabling the linker to remove functions and data that are not referenced, substantially reducing the size of the final binary. Change-Id: I4b276eb27fed776de78f2dd22c9658609643cb6b Signed-off-by: Chris Kay <chris.kay@arm.com>
2018-10-08arm: Convert assembly files to CChris Kay
Minimizing the amount of assembly we use makes it easier to understand the early boot flow and how objects are placed in the ELF image. Additionally, arm_init_ccr() is no longer called before the C runtime initialization is done, and is instead called by main(). Change-Id: Ib539bd45fb707d6948cc925a024cce803051ff8a Signed-off-by: Chris Kay <chris.kay@arm.com>
2018-10-08build: Disable -Wdollar-in-identifier-extension warning flagChris Kay
This flag stops Arm Compiler 6 from complaining about the linker-defined symbols. Change-Id: Ide8b3c0315129d04fe1aa1d126cb7131dfd1d553 Signed-off-by: Chris Kay <chris.kay@arm.com>
2018-10-08build: Prefer -O2 to -O3Chris Kay
This change is being made to claw back some of the bloat caused by certain optimizations that are enabled by -O3. Change-Id: Ide36c162104be784dabbfec16974090591293dde Signed-off-by: Chris Kay <chris.kay@arm.com>
2018-09-17bs: Add support for Arm Compiler 6Chris Kay
Change-Id: Ib5a9f055b147433a55bbd09be69ae86e6dbf62f9 Signed-off-by: Chris Kay <chris.kay@arm.com>
2018-09-17arch: Move to Newlib's crt0Chris Kay
- Remove the custom crt0 initialization routines - Implement required Newlib symbols This includes _exit() and main() as well as __bss_start__, __bss_end__ and __stack, which are all used by newlib's crt0 routines. Change-Id: I229509c56bcccbfdbdf5700a5f048767aa9ecea5 Signed-off-by: Chris Kay <chris.kay@arm.com>
2018-08-23bs: Compile with extra warning flagsChris Kay
This patch enables a number of useful warning flags, namely -pedantic and -pedantic-errors. It also re-enables the strict aliasing warning. Change-Id: Id912e0dae914e6a9eebbeef727bd4447ebe18c21 Signed-off-by: Chris Kay <chris.kay@arm.com>
2018-08-22bs: Rename MODE_DEBUG to BUILD_MODE_DEBUGNicola Mazzucato
Renamed as all symbols/define exposed by the build system should have the prefix BUILD_ in their names. Change-Id: I8893121b32c31584a163a991547925cc028ee1c9 Signed-off-by: Nicola Mazzucato <nicola.mazzucato@arm.com>
2018-06-08Add the SCP-firmware frameworkRonald Cron
Please see doc/framework.md for details. Co-authored-by: Filipe Rinaldi <filipe.rinaldi@arm.com> Co-authored-by: Paul Beesley <paul.beesley@arm.com> Co-authored-by: Chris Kay <chris.kay@arm.com> Co-authored-by: Elieva Pignat <elieva.pignat@arm.com> Co-authored-by: Pedro Custodio <pedro.krewinkelcustodio@arm.com> Change-Id: I1744c60eca295c60b3fabcfafb522fbff5d7306c Signed-off-by: Ronald Cron <ronald.cron@arm.com>