Here are some troubleshooting hints – please let me know if you
have any other questions that should be answered here.
There is also a design FAQ with some questions and answers on
the design of Tollos.
- churn reports that “‘arm-none-eabi-gcc’
is not recognized as an internal or external command, operable program
or batch file.”
This occurs when CodeSourcery is installed without selecting the
‘add to PATH’ option. Either reinstall CodeSourcery, accepting the
default option for the sixth step, or add the CodeSourcery binaries
directory to the PATH environment variable manually. The binaries
directory might be:
C:\Program Files\CodeSourcery\Sourcery G++ Lite\bin
- churn compiles OK then reports that:
arm-none-eabi-ld: C:\Program Files\CodeSourcery\Sourcery G++ Lite\lib\gcc\arm-
none-eabi\4.5.2\thumb2\libgcc.a: No such file: No such file or directory
This is because for some reason the linker cannot find this file
automatically and it has to be included explicitly. With different
versions of CodeSourcery its location changes. Change the value
of the variable ‘eabi’ near the top of charm.bat from 4.5.2
to the version of your CodeSourcery.
- After compiling my application the .bin
file is empty (size=0).
This is because of an undocumented behaviour of the linker. It can
happen if the application does not use any of the Tollos system functions.
There are two workarounds:
- Include a call to a system function (e.g., sysPause(0)) in
- Extract the file tollos.o from tollos.a and add its name
to the list of files and libraries passed to the linker before the
library name tollos.a.
The extract command for CodeSourcery G++ EABI is
arm-none-eabi-ar x tollos.a tollos.o
- After a Watchdog reset, normal (external)
resets appear to reset the board twice.
This is a known problem (see this mbed forum thread). Removing then restoring the power to the board
will revert to normal behaviour.
- The I2C clock on channel 2 runs twice as fast
In lpc17xx i2c.c the I2C SetClock function has an error; in the
case of I2Cx == LPC I2C2, the line
temp = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_I2C1) / target_clock;
temp = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_I2C2) / target_clock;
This has been corrected in the copy shipped with Tollos, but if you
are using a different copy the error may still be there.
- After I flash my version of psample into the
Olimex STM32-H103 board, while it runs (as seen by the flashing LED),
I lose control of the JTAG.
This only seems to happen with OpenOCD (please let me know if you
have the same problem using another flash tool). The JTAG code seems
to get confused when the code running on the microcontroller does
a WFI (Wait For Interrupt).
A simple workaround for this is to change sysPowerIO(SYSTEM SLEEP)
(in xSysIO.c) to just return immediately (e.g., comment out the
call to __WFI()).