embos on stm32 would crash in keil

Hi

I have setup a simple project to test embos with stm32f103rbt device, I just used the default settings, after changing the default complier warnings to MISRA compatible and changed the C standard to C99 and C++ to C++11 most of the errors would go away, But still there is two errors

.\Objects\marlin.axf: Error: L6218E: Undefined symbol Stack_Mem (referred from os_initsysstackinfo.o).
.\Objects\marlin.axf: Error: L6218E: Undefined symbol __initial_sp (referred from os_initsysstackinfo.o).

So after searching I think I should make these symbols exported in the startup assembly file, So I tried to use these lines in the startup assembly file like this

Stack_Size   EQU   0x00000400

; EXPORT the Stack_Mem and __initial_sp symbols for use in C files

EXPORT Stack_Mem

EXPORT __initial_sp

But it would generate an error like this

.\Objects\marlin.axf: error: L6002U: Could not open file .\objects\startup_stm32f10x_md.o: No such file or directory

another solution would be to comment  these lines 

OS_SysStackBaseAddr = (unsigned long) &Stack_Mem;
OS_SysStackSize = (unsigned int) ((unsigned long)&__initial_sp - (unsigned long)&Stack_Mem);
OS_SysStackLimit = (unsigned long) &__initial_sp;

in the OS_InitSysStackInfo function, Now the project would be build and when I try to debug it it would crash, so How should I test this os?

  • The os_initsysstackinfo module seems to still rely on the old assembler startup files. However, simply ignoring those values without know what this does will most likely always lead to errors/crashes.

    So the question is, what kind of startup file is in the project. If you have a startup_stm32f10x_md.s in the project, it is a bit strange, there is no object file found during linking. Does this fail to build? If it is an old style startup file, it should have this not found symbols. So you should investigate this issue.