Sourcery G++ (Lite)
EFM32STK comes with CodeSourcery examples so you don't have to bother with constructing your own startup code and linker script. Install the CodeSourcery toolchain(bare metal), then all you have to do is changing a couple of lines in the Makefile
TOOLDIR = /your/CodeSourcery/toolchain/root
GCCVERSION = x.x.x
You can get your compiler version by firing up
$ arm-none-eabi-gcc --version
All the examples would be compiled without any complaints and ready to go. You can find your executable image files in the 'exe' subdirectory
Segger embedded J-Link
Thanks to the segger J-Link module embedded in the EFM32 STK board, you can use segger linux driver. Actually the STK itself could be utilized as a (standard) j-link tool. Unlike other vendor specific J-Link tools, there seems to be no limitation in using this. It might be used to other ARM devices (ARM7, ARM9/11, Cortex-M) as well as EFM32G devices. I will give it a try later. (UPDATE: It seems that the embedded J-Link does not work as a standard J-Link tool. You cannot even change the target chain from SWD to JTAG without help of EnergyCommander, which runs only on Windows, not to mention detecting a device on its JTAG connector) Anyway, grab the segger linux driver here and install it. Then you can flash your STK board with the J-Link Commander(just run start):
J-Link>exec device = EFM32G890F128
J-Link>loadbin /your/image/file/directory/xxx.bin 0x0
J-Link>r
J-Link>g
When is comes to debugging, you want execute gdb server with SWD option, because the efm32g processor is not on the JTAG chain but on the SWD,
$ JLinkGDBServer -if SWD
then, gdb
$ arm-none-eabi-gdb /your/exe/directory/xxx.out
Unfortunately, when you connect the jlinkgdbserver,
(gdb) target remote localhost:2331
you will get the following error:
Remote 'g' packet reply is too long: 00000000000....
This is an known issue (at least for JLink_Linux_V422 with arm-2010.09-51-arm-none-eabi). You have to wait until they release a fixed version of linux driver. So for now, without gdb compatibility EFM32STK provides quite limited usage on linux. To make things worse, segger windows j-link driver does not work on virtual machine (vmware player).
Flowgraph generation for the examples
By adding a few lines in the Makefile provided with the examples, you can easily generate a flowgraph of the source, i.e., you may want to add, at the end of the Makefile,
CFLOWFLAGS = -a --omit-arguments --omit-symbol-names
CPPFLAGS = --cpp='arm-none-eabi-cpp -E -D $(DEVICE)'
cflow: $(C_SRC) Makefile
cflow -o $(LST_DIR)/$(PROJECTNAME).cflow \
$(CFLOWFLAGS)$(INCLUDEPATHS) $(CPPFLAGS) $(C_SRC)
Then execute :
make cflow
will generate cflow outout in the lst directory. It is needless to mention that you have to install cflow first before using it.
Hi,
ReplyDeleteenergyAware Commander is now available on linux, but you should be able to switch to SWD mode by issuing "si 1" in Jlink Commander.