Singleton パターン - Wikipedia
組み込みの最小構成な(mallocが無い)環境ではwikipediaの例はうまく動かない。
関数の中でstaticに宣言するとnewで確保されるようだ。
解決方法としては、Singletonクラスのprivateでstaticに宣言し、適当な場所に実態を置いておく。
こうすると、Singletonコンストラクタが呼ばれるのはグローバル変数の初期化時のはずなので、いつ初期化されるかわからない、という事態も避けることができるはず。
まぁSingletonのコンストラクタにタイミングクリチカルな処理なんて書くな、という話なのだが。
***
久しぶりにSTM32F1で遊んでる。なぜかUSART bootloader経由でプログラムを書き込むプログラムを作るところから始めてしまった。
ウチの環境ST-Link(Nucleo割った)が使えないので、USART bootloaderが使えるとF1とかもそのまま使えるので便利。かな。
STM32F0あたりだとPIC16F88より安い(チップ単体比)ので、ごく小規模なモノなら気兼ねなく使えるかも。
STBee mini使うの久しぶりすぎてだいぶ手こずった。
今回はprintfはおろか、USARTといった文字出力系の初期化もしていないので、バイナリサイズは極めて小さいが、デバッグはかなり手間取る。
バイナリサイズが小さいのは転送速度が遅い(max115.2kbaud+オーバーヘッドがでかい)で相殺されてるので書き込み速度はUSB DFUを使った100k程度のバイナリと体感であまり変わらない。ビルドは早い気がする。
0 件のコメント:
コメントを投稿