nrf51 の nano.specs で printf で float の値を表示する
float の値を printf に表示したいだけなのに時間がかかった…。
newlib-nano を使ってるので、
にあるとおり、
-u _printf_float
を ldflags に追加すれば良い。
mbed の cli 環境下で追加する。
[4]>_<X mbed --version 0.9.5 [4]>_<X mbed compile \? usage: make.py [-h] [-m MCU] [-t TOOLCHAIN] [--color] [--cflags CFLAGS] [--asmflags ASMFLAGS] [--ldflags LDFLAGS] [-c] [-o OPTIONS] [-p PROGRAM] [-n PROGRAM] [-j JOBS] [-v] [--silent] [-D MACROS] [-S] [-f GENERAL_FILTER_REGEX] [--automated] [--host HOST_TEST] [--extra EXTRA] [--peripherals PERIPHERALS] [--dep DEPENDENCIES] [--source SOURCE_DIR] [--duration DURATION] [--build BUILD_DIR] [-N ARTIFACT_NAME] [-d DISK] [-s SERIAL] [-b BAUD] [-L] [--rtos] [--rpc] [--eth] [--usb_host] [--usb] [--dsp] [--fat] [--ublox] [--testlib] [-l LINKER_SCRIPT] make.py: error: unrecognized arguments: ?
を見ると、--ldflags に値を渡せば良さそう。なんだけど、こいつが内側の make.py で呼び出している gcc.py に値を渡していないので、設定しても無駄。
mbed toolchain を直接弄って指定する。
## .temp/tools/toolchains/gcc.py if use_nano: self.ld.append("--specs=nano.specs") self.ld += ["-u _printf_float"] # 追加
あと同階層にある gcc.pyc は削除しておく。
ううう…。