Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Target stm init gcc alignement #3074

Merged
merged 12 commits into from
Oct 28, 2016

Conversation

jamike
Copy link
Contributor

@jamike jamike commented Oct 19, 2016

Description

With TOOLCHAIN GCC, Zero initialization is done twice for some STM target (at startup and in __start)
To Align the startup with other toolchain, the zero bss in startup is removed and mbed_sdk_init is performing again some init already done in SystemInit as for other toolchain

Status

READY

Steps to test or reproduce

All tests relative to STM target on TOOLCHAIN GCC_ARM are passed

zero bss is done in libc init after call to _start.
zero bss is done in libc init after call _start.
@bridadan
Copy link
Contributor

/morph test

@bridadan
Copy link
Contributor

@mbed-bot: TEST

HOST_OSES=ALL
BUILD_TOOLCHAINS=ALL
TARGETS=ALL

@mbed-bot
Copy link

Result: SUCCESS

Your command has finished executing! Here's what you wrote!

/morph test

Output

mbed Build Number: 0

All builds and test passed!

@mbed-bot
Copy link

[Build 1053]
FAILURE: Something went wrong when building and testing.

@LMESTM
Copy link
Contributor

LMESTM commented Oct 20, 2016

Tested on my side and definitely solves issues with GCC_ARM (HAL internal timeout not properly working on specific test cases)

@bridadan
Copy link
Contributor

Failure is from a different platform, not related to your changes 👍

Gotta love that diff! 😄

Test results look ok, @0xc0170 or @c1728p9 would you like to do a quick review? This is a bit low-level for me I think.

/* Call the application's entry point.*/
bl main
bl exit
// bl main
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason this code was left in?

Copy link
Contributor

@0xc0170 0xc0170 Oct 26, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jamike Please respond. we should not leave any dead code

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, I will push a update of the serie with a dedicated commit for STM32F0 specific changes

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jamike I checked the commit messages, cant find a relevant info, why are you keeping this dead code in this file (line 86 and 88) ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry, I missed your points as there is dead code in all family. For sure , I see no reason to keep dead code. So I update the patch list and remove the dead code introduced by my patches.


/* Call the clock system intitialization function.*/
bl SystemInit
/* Call static constructors */
bl __libc_init_array
// bl __libc_init_array
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also this. remove it, specify a reason why in the commit message.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, I will push a update of the serie with a dedicated commit for STM32F0 specific changes and do the same the specific changes in STM32F1

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, I will push a update of the serie with a dedicated commit for STM32F0 specific changes and do the same the specific changes in STM32L1

zero bss is done in libc init after call to _start.
zero bss is done in libc init after call to _start.
zero bss is done in libc init after call to _start.
@jamike jamike force-pushed the TARGET_STM_INIT_GCC_ALIGNEMENT branch from 7f1012a to 2309a2e Compare October 26, 2016 13:09
    zero bss, C++ init and the call to main.
    Remove direct call to __libc_init_array and main not needed
    as _start is beeing called.
zero bss is done in libc init after call to _start.
zero bss is done in libc init after call to _start.
zero bss, C++ init and the call to main.
Remove direct call to __libc_init_array and main not needed
as _start is beeing called.
zero bss is done in libc init after call to _start.
Zero bss is done after the call to _start.
system_init, stops all on going timer.
gcc _start , perform zero initialized.
=> HAL_Init must be done again also in GCC toolchain
@jamike jamike force-pushed the TARGET_STM_INIT_GCC_ALIGNEMENT branch from 2309a2e to 4a69072 Compare October 27, 2016 08:53
@bridadan
Copy link
Contributor

/morph test

@bridadan
Copy link
Contributor

@mbed-bot: TEST

HOST_OSES=ALL
BUILD_TOOLCHAINS=ALL
TARGETS=ALL

@mbed-bot
Copy link

Result: SUCCESS

Your command has finished executing! Here's what you wrote!

/morph test

Output

mbed Build Number: 959

All builds and test passed!

@mbed-bot
Copy link

[Build 1068]
SUCCESS: Building succeeded and tests were run! Be sure to check the test results

@dinau
Copy link
Contributor

dinau commented Oct 28, 2016

Just FYI and for my information.
_start, _mainCRTStartup and memory clear problem:
#1432

dinau

@0xc0170 0xc0170 merged commit 4a4d09f into ARMmbed:master Oct 28, 2016
oter pushed a commit to oter/mbed-os that referenced this pull request Nov 21, 2016
Release mbed OS 5.2.2 and mbed lib v129

Known issues in this release

There is currently a DNS resolution failure in Thread mode with this release. This causes a failure in the
mbed-os-example-client. This will be fixed in a subsequent release. This can be worked around by reverting
to mbed-os-5.2.0

Ports for Upcoming Targets

3011: Add u-blox Sara-N target. ARMmbed#3011
3099: MAX32625 ARMmbed#3099
3151: Add support for FRDM-K82F ARMmbed#3151
3177: New mcu k22512 fixing pr 3136 ARMmbed#3177

Fixes and Changes

2990: [tools] Parallel building of tests ARMmbed#2990
3008: NUCLEO_F072RB: Fix wrong timer channel number on pwm PB_5 pin ARMmbed#3008
3013: STM32xx - Change how the ADC internal pins are checked before pinmap_ ARMmbed#3013
3023: digital_loop tests update for STM32 ARMmbed#3023
3041: [nRF5] - added implementation of API of serial port flow control configuration. ARMmbed#3041
3092: [tools + tests] Adding parallelized build option for iar and uvision exporters ARMmbed#3092
3084: [nrf5] fix in Digital I/O : a gpioe pin was uninitialized badly ARMmbed#3084
3009: TRNG enabled. TRNG APIs implemented. REV A/B/C/D flags removed. Warnings removed ARMmbed#3009
3139: Handle [NOT_SUPPORTED] exception in make.py ARMmbed#3139
3074: Target stm init gcc alignement ARMmbed#3074
3140: [tests] Replacing getchar with RawSerial getc in greentea-client ARMmbed#3140
3158: Added support for 6lowpan PAN ID filter to mbed mesh api configuration ARMmbed#3158
2988: Update of can_api.c fixing ARMmbed#2987 ARMmbed#2988
3175: Updating IAR definition for the NCS36510 for IAR EW v7.8 ARMmbed#3175
3170: [tests] Preventing test from printing before Greentea __sync ARMmbed#3170
3169: [Update of ARMmbed#3014] Usb updates ARMmbed#3169
3143: CFStore fix needed for the Cloud Client ARMmbed#3143
3135: lwip - Fix memory leak in k64f cyclic-buffer overflow ARMmbed#3135
3048: Make update.py test compile examples prior to updating mbed-os version. ARMmbed#3048
3162: lwip/nsapi - Clean up warnings in network code ARMmbed#3162
3161: nsapi - Add better heuristic for the default record of DNS queries ARMmbed#3161
3173: [Exporters] Add a device_name to microbit entry in targets.json ARMmbed#3173
3072: i2c_loop tests update for STM32 ARMmbed#3072
2958: Allowing mbed_app.json files to be discovered for tests. ARMmbed#2958
2969: [nRF52] - switch irq priorities of driver handlers to the lowest level ARMmbed#2969
3078: lwip: Allow several configuration macros to be set externally (bis) ARMmbed#3078
3165: Add address type checks to NanostackInterface ARMmbed#3165
3166: nsapi_dns: Provide 2 IPv6-hosted default servers ARMmbed#3166
3171: [tools] Fixing project.py -S printing problem ARMmbed#3171
3172: [Exporters] New export-build tests ARMmbed#3172
3184: ARMmbed#3183 Compiler warning in trng_api.c with K64F  ARMmbed#3184
3185: Update tests to fix build failures. Also make the code similar to oth ARMmbed#3185
3104: [NuMaker] Support CAN and fix PWM CLK error ARMmbed#3104
3182: Exporter documentation ARMmbed#3182
3186: MultiTech mDot - add back SPI3 pins ARMmbed#3186
3187: [Export-Make] Use internal class variable for resolving templates in makefiles ARMmbed#3187
3195: [Exporters - Make-based] Quote the shell call in mkdir and rmdir ARMmbed#3195
3204: [Export build-test] Directory traversal error ARMmbed#3204
3189: [Exporters - Make-based] Force make exporter to search PATH for compilers ARMmbed#3189
3200: Using Popen for uVision and unifying the structure of the build function ARMmbed#3200
3075: nsapi - Add standardized return types for size and errors ARMmbed#3075
3221: u-blox odin w2 drivers update ARMmbed#3221
aisair pushed a commit to aisair/mbed that referenced this pull request Apr 30, 2024
Ports for Upcoming Targets

3011: Add u-blox Sara-N target. ARMmbed/mbed-os#3011
3099: MAX32625 ARMmbed/mbed-os#3099
3151: Add support for FRDM-K82F ARMmbed/mbed-os#3151
3177: New mcu k22512 fixing pr 3136 ARMmbed/mbed-os#3177

Fixes and Changes

3008: NUCLEO_F072RB: Fix wrong timer channel number on pwm PB_5 pin ARMmbed/mbed-os#3008
3013: STM32xx - Change how the ADC internal pins are checked before pinmap_ ARMmbed/mbed-os#3013
3041: [nRF5] - added implementation of API of serial port flow control configuration. ARMmbed/mbed-os#3041
3084: [nrf5] fix in Digital I/O : a gpioe pin was uninitialized badly ARMmbed/mbed-os#3084
3009: TRNG enabled. TRNG APIs implemented. REV A/B/C/D flags removed. Warnings removed ARMmbed/mbed-os#3009
3074: Target stm init gcc alignement ARMmbed/mbed-os#3074
2988: Update of can_api.c fixing #2987 ARMmbed/mbed-os#2988
3173: [Exporters] Add a device_name to microbit entry in targets.json ARMmbed/mbed-os#3173
2969: [nRF52] - switch irq priorities of driver handlers to the lowest level ARMmbed/mbed-os#2969
3184: #3183 Compiler warning in trng_api.c with K64F  ARMmbed/mbed-os#3184
3104: [NuMaker] Support CAN and fix PWM CLK error ARMmbed/mbed-os#3104
3186: MultiTech mDot - add back SPI3 pins ARMmbed/mbed-os#3186
3075: nsapi - Add standardized return types for size and errors ARMmbed/mbed-os#3075
3221: u-blox odin w2 drivers update ARMmbed/mbed-os#3221
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants