今日の教訓
とりあえず。
- OS起動前にグローバルイニシャライザーでOSの機能を使ってはいけない。
どういうことかというと、
void tick(uint32_t id)
{
}
Channel::Channel(long us)
{
gTicker(::tick,us);
}
というコードがあったとして、
Channel gChannel(22);
void main()
{
}
これは、うごかない。
こうすれば動く。
Channel* gChannel;
void main()
{
gChannel=new Channel(22);
}
ようは、どの時点でOSが起動しているのかをきちんと考えなさいということだな。mainが動く前に初期化してもダメというところで。組み込み向けOSだから、main前に何か初期化してるかもしれないもんね。
あとはD/A変換を何とかすれば音はなりそう。
ちょっと元気になってきた。