So, I decided it’s a good idea to start from building STM32Stamp solution from .NET MF Porting Kit 4.3 (RTM QFE1).
But unfortunately it doesn’t build. I’m stuck with some strange errors.
I’ve added %VS120COMNTOOLS% to setenv_base.cmd to support MSVS2013 and added Keil 5.10 paths to \tools\Targets\Microsoft.Spot.system.mdk.targets file:
This command throws 43 warnings and 6 errors like those:
“f:\MicroFrameworkPK_v4_3\CLR\Libraries\CorLib\corlib_native_System_BitConverter.cpp”, line 99: Error: #1151: floating-point variable definition with initialiser is not permitted with --fpu=none
float input = stack.Arg0().NumericByRefConst().r4;
“f:\MicroFrameworkPK_v4_3\CLR\Libraries\CorLib\corlib_native_System_BitConverter.cpp”, line 199: Error: #1265: converting to and from floating-point type is not permitted with --fpu=none
stack.SetResult_R8(*p);
I’m not sure about -fpu=none for stm32f1… Need to check
I’ve not yet worked on native 4.3, but next week I will spend time on it for stm32f4. I will report to you. I still use keil 4.74 for netmf firmware
Ok, now I’m really lost
Maybe you just think that you have unmodified PK version?
Could you rename your MicroFrameworkPK_v4_3 folder to something like MicroFrameworkPK_v4_3_backup, reinstall PK (https://netmf.codeplex.com/downloads/get/790686) and then repeat my modifications and build steps and tell me if it works too?
Fresh 4.3 QFE1 + updating the MDK targets throws a single error…
So yes i have other changes (mainly F4 chnages) that enable me to build it.
I dont have time to find it at the moment but if you are still lost later on i will dig deeper.
They have fixed CLR/Libraries/CorLib/corlib_native_System_BitConverter.cpp file (Checking if TINYCLR_EMULATED_FLOATINGPOINT is defined and use CLR_INT64 type instead of double). Build doesn’t stop there, but now it stops at BuildScatterfile step.
Any ideas?
Here is the new output:
BuildScatterfile:
...
Processing file: c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\scatterfile_tinyclr_MDK.xml
BuildAXF:
"C:\Keil_v5\ARM\armcc\bin\armar.exe" --create -c -r c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\FLASH\release\STM32Stamp\lib\tmp_tinyclr.lib Core.lib Hardware.lib IOPort.lib RPC_stub.lib CorLib.lib SPOT.lib SPOT_Hardware.lib CLRStartup.lib CRC.lib WireProtocol.lib Graphics_stub.lib Debugger.lib Debugger_full.lib Diagnostics.lib HeapPersistence.lib SPOT_Messaging_stub.lib Messaging.lib I2C.lib InterruptHandler.lib SPOT_Serialization.lib Serialization.lib SPOT_Hardware_SerialPort.lib SPOT_Hardware_PWM.lib SPOT_Hardware_Usb.lib
"C:\Keil_v5\ARM\armcc\bin\armlink.exe" --keep *(.init_array) --no_keep_init_arrays --feedback c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\FLASH\release\STM32Stamp\bin\tinyclr_STM32Stamp_FLASH_release_MDK5.1.feedback --debug --remove --unmangled --info sizes,totals,veneers,unused,libraries --map --xref --symbols --callgraph --userlibpath c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\FLASH\release\STM32Stamp\lib --userlibpath c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\ANY_MEDIA\release\lib --libpath C:\Keil_v5\ARM\RV31\LIB --entry EntryPoint --symdefs c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\FLASH\release\STM32Stamp\bin\tinyclr.symdefs --list c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\FLASH\release\STM32Stamp\bin\tinyclr.map --output c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\FLASH\release\STM32Stamp\bin\tinyclr.axf --scatter c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\FLASH\release\STM32Stamp\bin\tinyclr_scatterfile.txt c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\FLASH\release\STM32Stamp\obj\Solutions\STM32Stamp\TinyCLR\tinyclr_dat.obj c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\FLASH\release\STM32Stamp\obj\Solutions\STM32Stamp\TinyCLR\allocator.obj c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\FLASH\release\STM32Stamp\obj\Solutions\STM32Stamp\TinyCLR\tinyclr.obj c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\FLASH\release\STM32Stamp\lib\InteropAssembliesTable.lib LargeBuffer_hal_stubs.lib virtualkey_hal_stubs.lib Crypto_stub.lib GlobalLock_hal_Cortex.lib TinyHal_Cortex.lib cpu_prestackinit_stubs.lib STM32_bootstrap.lib batterycharger_hal_stubs.lib batterymeasurement_hal_stubs.lib STM32_GPIO.lib STM32_Power.lib STM32_time.lib cpu_watchdog_stubs.lib system_initialization_hal.lib Watchdog_pal_stubs.lib asyncproccall_pal.lib blockstorage_pal.lib Buttons_pal.lib config_pal.lib heap_pal.lib piezo_pal_stubs.lib SimpleHeap_stubs.lib SimpleHeap_config_stubs.lib tinycrt_pal.lib fs_pal_stubs.lib Ink_pal_stubs.lib Gesture_pal_stubs.lib palevent_pal.lib Time_pal.lib FS_Config_stubs.lib TimeService_pal_stubs.lib backlight_hal_stubs.lib lcd_hal_stubs.lib cpu_cache_stubs.lib cpu_LCD_stubs.lib STM32_Flash.lib STM32_blconfig_STM32Stamp.lib BlockStorage_AddDevices_STM32Stamp.lib IO_Init_STM32Stamp.lib STM32_SPI.lib STM32_I2C.lib STM32_USART.lib STM32_USB.lib STM32_IntC.lib STM32_PWM.lib STM32_Analog.lib STM32_DA.lib COM_pal.lib DebuggerPort_SSL_config_stubs.lib events_pal.lib sockets_pal_stubs.lib usart_pal.lib usb_pal.lib i2c_pal.lib usb_pal_config_stub.lib MFUpdate_PAL_stub.lib ssl_pal_stubs.lib c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\FLASH\release\STM32Stamp\lib\tmp_tinyclr.lib
"c:\MicroFrameworkPK_v4_3\BuildOutput\THUMB2\MDK5.1\le\FLASH\release\STM32Stamp\bin\tinyclr_scatterfile.txt", line 13 (column 5): Warning: L6312W: Empty Execution region description for region ER_RAM_RO
EXEC : warning : L6310W: Unable to find ARM libraries. [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : warning : L6320W: Ignoring --keep command. Cannot find argument '__cpp_initialize__aeabi_'. [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __use_no_semihosting_swi (referred from allocator.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __aeabi_memclr (referred from tinyhal.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __aeabi_memcpy (referred from tinyhal.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __aeabi_memset (referred from tinyhal.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol _vsnprintf (referred from tinycrt.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol strcpy (referred from tinycrt.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol strncmp (referred from tinycrt.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol strncpy (referred from tinycrt.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __aeabi_memclr4 (referred from Debugger.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __aeabi_memcpy4 (referred from Debugger.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol strcmp (referred from ConfigHelper.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __aeabi_lasr (referred from core_fastcompile.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __aeabi_ldivmod (referred from core_fastcompile.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __aeabi_llsl (referred from core_fastcompile.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __aeabi_llsr (referred from core_fastcompile.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __aeabi_memmove (referred from core_fastcompile.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __aeabi_memmove4 (referred from core_fastcompile.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __aeabi_uldivmod (referred from core_fastcompile.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol bsearch (referred from core_fastcompile.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol memcmp (referred from core_fastcompile.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol strchr (referred from Diagnostics_fastcompile.obj). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
EXEC : error : L6218E: Undefined symbol __cpp_initialize__aeabi_ (referred from anon$$obj.o). [c:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp\TinyCLR\TinyCLR.proj]
Not enough information to produce a SYMDEFs file.
Not enough information to produce a FEEDBACK file.
Not enough information to list image symbols.
Finished: 3 information, 3 warning and 22 error messages.
I’ve missed another MDK path in tools\Targets\Microsoft.Spot.system.mdk.targets file. Finally I’ve managed to build something (didn’t flash to board yet) :dance:
@ Justin - Could you test that this solution works on your side too?
You are welcome. But I’m not sure if compiled code really run. I tried to flash it with ST-Link (tinyclr.bin\ER_FLASH to 0x08000000 and tinyclr.bin\ER_CONFIG to 0x08040000), but board doesn’t show any life signs, it just hangs and doesn’t respond even on JTAG. Have to do several power cycles before able to connect again.
I need to try reconfigure firmware to another USART and see if anything there.
Or maybe try to deploy program at 0x08042000 (Oberon pdf say so).
Btw, Netduino v.4.3.1 overlay have a lot of other changes/fixes too. I think it’s currently most frequently updated port.