HiFive1を使って、PCとのシリアル通信を実行する。
やり方は非常に簡単だ。プログラムはArduinoのサンプルからコピーしてきた。
void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.print("RISC-V HiFive1 Start\r\n"); } void loop() { // put your main code here, to run repeatedly: int c; if (Serial.available() > 0) { c = Serial.read(); Serial.write(c); } }
HiFive1のバグか、そもそも仕様なのか、setup()内で大量にprintをしていると途中で固まる気がする。

これ、最初はあまり気が付かなかったのだけれども、そのままC++のプログラムなんだな。
loop()はmain()内で何度も動作しているし、setup()はmain()の最初で動作している。
Serialはクラスとして定義されており、Serial.print()はクラスのメンバ関数として定義されている。
~/.arduino15/packages/sifive/hardware/riscv/1.0.2には、HiFive1用の各種関数群などが用意されている。
- cores/arduino/UARTClass.h
23:#include "HardwareSerial.h" 25:class UARTClass : public HardwareSerial
- cores/arduino/HardwareSerial.h
class HardwareSerial : public Stream
- cores/arduino/Stream.h
class Stream : public Print
- cores/arduino/Print.h
class Print
{
...
size_t print(const __FlashStringHelper *);
size_t print(const String &);
size_t print(const char[]);
size_t print(char);
size_t print(unsigned char, int = DEC);
size_t print(int, int = DEC);
size_t print(unsigned int, int = DEC);
size_t print(long, int = DEC);
size_t print(unsigned long, int = DEC);
size_t print(double, int = 2);
size_t print(const Printable&);
...
};