-
Notifications
You must be signed in to change notification settings - Fork 33
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
[BUG] Base build EFM32ZG falls to the default handler #6
Comments
This issue still persists for me and its blocking development on my project. Going to try and build the same code I have for all of my starter kits and report what works and what does not. @ryankurte any idea what could cause this? It appears to be building for the correct processor and the code is dead simple, I am not sure what could be happening. |
Uhoh :-/ I have no idea sorry, we use a variant of this with the ZG but there must be some difference between the build args. Will see if I can get hold of a working version / might be able to email it to you to play with. |
Alright so I pulled out all of my EFM32 starter kits to test this code on. The EFM32 Gecko Starter kit (EFM32-G8xx-STK) with the EFM32G890F128-BGA112 MCU works with this code The EFM32 Happy Gecko Starter kit (SKSTK3400A) with the EFM32HG322F64 MCU Works with this code The EFM32 Leopard Gecko Starter Kit (EFM32LG-STK3600) with the EFM32LG990 works with this code The EFM32 Zero Gecko Starter Kit (EFM32ZG-STK3200) with the EFM32ZG222F32 works with this code.... so perhaps this is a specific chip issue? My custom board works fine in Simplicity Studio.... The EFM32ZG Custom board running a EFM32ZG108F8 works in Simplicity Studio but not with efm32-base. Flashed using a Jlink-Edu. |
@ryankurte I dont see anything in these cmake, make, or flash files that suggests what could be going on. Is there any other files worth checking out? Are the linker files and startup scripts in this project the same ones that ship with Simplicity Studio? Is there anything I can do at this point? |
Hmm, I differ all the files from the ZG you attached and they see to be the same except for the device name :-/ The files are (currently) the 2017 Gecko SDK suite v1.1 (emlib v5.2.2), which is one of the options when installing SDKs in simplicity studio. So, it should be. I also diffed against the 2016 exx32 SDK (emlib 4.4.1) and there were no notable changes. The linker file is basically just copied from the Could you upload the .dmp and .map files that should be output into your build directory? Grasping at straws, but, do you have a reset button or something on board you can try load then physically reset (see: errata? Alternately, |
The source I am running is the exact same as the one posted at the top of this bug request, a very trivial blinking LED code, as such all of the code is shareable of course. The code reports a size of over 4K but I have 8K program space so I doubt it is overfilling it. I have attached all output from the build directory. This board unfortunately does not have a physical reset button doing a |
So I got some spare time to re-look into this project and after a little tinkering around figured out the issue, now I just feel like an idiot. So it turns out there is a very good reason the code worked on all the starter kits but not on my EFM32ZG108F8 MCU, and that is because Silicon Labs ships the standard linker scripts (which where imported with this project) for their starter kits but generates custom linker scripts when you create a project for a specific chipset. I replaced the linker script in the efm32-base with the one simplicity studio generated and everything worked. The only differences I can tell where the sizes defined for storage and ram (8K instead of 32K). As such I don't think this is a bug with this project, though it should probably be documented that you need to modify the sizes on the linker scripts as they are not included by default. Sorry for wasting your time with this bug report. |
Awh no, sorry you had the issue and good work tracking that down! I'd definitely call this a bug 😂 In an internal version of this we require a FLASH/RAM_START/SIZE to be defined when you select the CPU, but that seems like a bit of overhead for every user. Do you think a note in the readme and an option to override the auto-discovered linker script would work well enough? |
Another possibility I can take a look into would be writing a small script that reads the Simplicity Studio XML files and auto creates the linker scripts much like simplicity studio does. This would then have to be done every time the SDK is updated but it would then let you pick the specific chip linker file. Just a thought. |
When using the default source file provided, only modified to use a different port/pin for the LED on this chipset and to have the printf + stdio removed, results in the device catching in the default handler (efm32-base/device/EFM32ZG/Source/GCC/startup_efm32zg.S:267) and hanging. This was tested on a custom board running a EFM32ZG108F8 MCU. Monitor reset halt does not work just traps in the handler, running a jump using the reset handler results in the same behavior. Please find attached the output if
make VERBOSE=1
as well as the very basic modifications I made to this source file just in case I introduced the problem.make.txt
main.c.txt
The text was updated successfully, but these errors were encountered: