Hi,
This is my first post here so excuse me if this is not in the correct forum.
We have recently decided to move away completely from any Windows products within my company. As such, I am in the middle of trying to port over a few Atmel Studio 7 to my Ubuntu Mate 18.07.5 virtual machine. I need some assistance with interpreting what the output produced by Atmel Studio 7 is actually saying, how much of it is windows fluff and how much of it do I need for my Makefile on Linux?
I found the toolchains for linux on https://www.microchip.com/en-us/... . Do I even need them? My worry is that they don't seem to be regularly updated and I need the system to stay up-to-date with updates to gcc and other stuff. I need to compile with arm-none-eabi-gcc. If I install the required tools manually through the terminal on Linux, will I run into some weird bugs regarding compatibility with different versions? I was reading through the output and there's nothing that immediately jumps out at me that makes me think I need to get the toolchains from the microchip website.
An extract from the output:
------ Rebuild All started: Project: LCD_init, Configuration: Debug ARM ------
Build started.
Project "LCD_init.cproj" (default targets):
Target "PreBuildEvent" in file "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Avr.common.targets" from project "C:\Users\westman\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\stch\.ssh\boot_mcu_firmware\LCD_init\LCD_init.cproj" (target "Build" depends on it):
Task "Exec"
get_version_info.cmd > "C:\Users\westman\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\serstech\.ssh\boot_mcu_firmware\\LCD_init\src\git_version.h"
'git' is not recognized as an internal or external command,
operable program or batch file.
'git' is not recognized as an internal or external command,
operable program or batch file.
Done executing task "Exec".
Done building target "PreBuildEvent" in project "LCD_init.cproj".
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Compiler.targets" from project "C:\Users\westman\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\serstech\.ssh\boot_mcu_firmware\LCD_init\LCD_init.cproj" (target "Build" depends on it):
Task "RunCompilerTask"
Shell Utils Path C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils
C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils\make.exe all --jobs 2 --output-sync
Building file: ../src/ASF/sam0/drivers/port/port.c
Invoking: ARM/GNU C Compiler : 6.3.1
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-gcc.exe" -x c -mthumb -D__SAML21E18B__ -DDEBUG -DBOARD=USER_BOARD -DARM_MATH_CM0PLUS=true -DSPI_CALLBACK_MODE=true -DSYSTICK_MODE -DUSART_CALLBACK_MODE=true -DI2C_MASTER_CALLBACK_MODE=true -I"../src/ASF/common/boards" -I"../src/ASF/sam0/utils" -I"../src/ASF/sam0/utils/header_files" -I"../src/ASF/sam0/utils/preprocessor" -I"../src/ASF/thirdparty/CMSIS/Include" -I"../src/ASF/thirdparty/CMSIS/Lib/GCC" -I"../src/ASF/common/utils" -I"../src/ASF/sam0/utils/cmsis/saml21/include_b" -I"../src/ASF/sam0/utils/cmsis/saml21/source" -I"../src/ASF/sam0/drivers/system" -I"../src/ASF/sam0/drivers/system/clock/clock_saml21" -I"../src/ASF/sam0/drivers/system/clock" -I"../src/ASF/sam0/drivers/system/interrupt" -I"../src/ASF/sam0/drivers/system/interrupt/system_interrupt_saml21" -I"../src/ASF/sam0/drivers/system/pinmux" -I"../src/ASF/sam0/drivers/system/power/power_sam_l" -I"../src/ASF/sam0/drivers/system/power" -I"../src/ASF/sam0/drivers/system/reset/reset_sam_l" -I"../src/ASF/sam0/drivers/system/reset" -I"../src/ASF/common2/boards/user_board" -I"../src" -I"../src/config" -I"../src/ASF/sam0/drivers/port" -I"../src/ASF/sam0/drivers/sercom" -I"../src/ASF/sam0/drivers/sercom/spi" -I"../src/ASF/common2/services/delay" -I"../src/ASF/common2/services/delay/sam0" -I"../src/ASF/common/services/serial" -I"../src/ASF/sam0/drivers/sercom/usart" -I"../src/ASF/sam0/drivers/sercom/i2c" -I"../src/ASF/sam0/drivers/sercom/i2c/i2c_sam0" -O1 -fdata-sections -ffunction-sections -mlong-calls -g3 -Wall -mcpu=cortex-m0plus -c -pipe -fno-strict-aliasing -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -std=gnu99 -ffunction-sections -fdata-sections -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int -Wmain -Wparentheses -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef -Wshadow -Wbad-function-cast -Wwrite-strings -Wsign-compare -Waggregate-return -Wmissing-declarations -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations -Wpacked -Wredundant-decls -Wnested-externs -Wlong-long -Wunreachable-code -Wcast-align --param max-inline-insns-single=500 -MD -MP -MF "src/ASF/sam0/drivers/port/port.d" -MT"src/ASF/sam0/drivers/port/port.d" -MT"src/ASF/sam0/drivers/port/port.o" -o "src/ASF/sam0/drivers/port/port.o" "../src/ASF/sam0/drivers/port/port.c"
Finished building: ../src/ASF/sam0/drivers/port/port.c
blahblahblah a bunch of other similar statements
Building target: LCD_init.elf
Invoking: ARM/GNU Linker : 6.3.1
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-gcc.exe" -o LCD_init.elf src/ASF/common2/services/delay/sam0/systick_counter.o src/ASF/sam0/drivers/port/port.o src/ASF/sam0/drivers/sercom/i2c/i2c_sam0/i2c_master.o src/ASF/sam0/drivers/sercom/i2c/i2c_sam0/i2c_master_interrupt.o src/ASF/sam0/drivers/sercom/sercom.o src/ASF/sam0/drivers/sercom/usart/usart.o src/ASF/sam0/drivers/sercom/usart/usart_interrupt.o src/rvver.o src/ASF/sam0/drivers/sercom/spi/spi.o src/ASF/sam0/drivers/sercom/spi/spi_interrupt.o src/ASF/sam0/drivers/sercom/sercom_interrupt.o src/ASF/common2/boards/user_board/init.o src/ASF/common/utils/interrupt/interrupt_sam_nvic.o src/ASF/sam0/drivers/system/clock/clock_saml21/clock.o src/ASF/sam0/drivers/system/clock/clock_saml21/gclk.o src/ASF/sam0/drivers/system/interrupt/system_interrupt.o src/ASF/sam0/drivers/system/pinmux/pinmux.o src/ASF/sam0/drivers/system/system.o src/ASF/sam0/utils/cmsis/saml21/source/gcc/startup_saml21.o src/ASF/sam0/utils/cmsis/saml21/source/system_saml21.o src/ASF/sam0/utils/syscalls/gcc/syscalls.o src/main.o -mthumb -Wl,-Map="LCD_init.map" --specs=nano.specs -Wl,--start-group -larm_cortexM0l_math -lm -Wl,--end-group -L"../src/ASF/thirdparty/CMSIS/Lib/GCC" -Wl,--gc-sections -Wl,-section-start=.text=0x6100 -mcpu=cortex-m0plus -Wl,--entry=Reset_Handler -Wl,--cref -mthumb -T../src/ASF/sam0/utils/linker_scripts/saml21/gcc/saml21e18b_flash.ld
Finished building target: LCD_init.elf
In the first part there are a whole bunch of includes to things that I am embarrassed to say I don't know what they are for. Do I truly need all of that or is Atmel Studio including a bunch of bloat?
The second part that builds the .elf file is more clear to me, here I presume I only need to change the path in the Makefile into something appropriate?
Interpreting the building of LCD_init.elf:
What is the -L"../src/ASF/thirdparty/CMSIS/Lib/GCC" for? Is it something that is included in gcc or is it some Atmel Studio weirdness?
Treat me like a noob, because I am.
//J