arduinoソース階層化の概要


背景
最近、いくつかのオープンソースハードウェアをでたらめにいじっているが、arduinoはその一つで、以前から彼が下層部をカプセル化したと聞いていたが、シロユーザーに友好的で、彼のカプセル化の形式を知りたいと思っていた.
コード解析
IDE初期コード
私たちは最初にarduinoIDEをインストールした後、開いた初期インタフェースは以下の通りで、2つの空の関数がプレイヤーが記入するのを待っていて、他のコードは何もありません.
void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

次にarduinoインストールディレクトリを開き、コアコードがやっと関連部分を見つけました.main.cppでは、次のようにします.
#include 

//Declared weak in Arduino.h to allow user redefinitions.
int atexit(void (*func)()) { return 0; }

// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }

int main(void)
{
	init();

	initVariant();

#if defined(USBCON)
	USBDevice.attach();
#endif
	
	setup();
    
	for (;;) {
		loop();
		if (serialEventRun) serialEventRun();
	}
        
	return 0;
}

その他の関連コード
void setup(void);
void loop(void);

main.cppではsetup()関数が1回しか実行されないことがわかりますが、loop()関数はずっと実行され、arduinoソースコードではこの2つの関数が宣言されているだけで、関数エンティティにはプレイヤーがタスクコードを埋め込む必要があります.実はこのように全体のフレームワークはまだはっきりしていて、とても簡単で、底の仕事をして長い間、arduinoIDEの中のコードを見るだけで疑問と好奇心があるのは避けられません.彼の具体的なハードウェアパッケージコードを分析したいと思っていたが、C++コードを見て、後で補充する時間があった.