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 は削除しておく。
ううう…。