CH32V307VCT6 development board

Uživatelský avatar
Caster
Příspěvky: 494
Registrován: 11 zář 2019, 09:02

Re: CH32V307VCT6 development board

Příspěvek od Caster » 26 led 2026, 10:30

Díky, ty hlášky „invalid library: no header files found“ jsou jen tím, že máš v ~/Arduino/libraries/ rozbalené repozitáře, které nejsou Arduino knihovna. Nejde o chybu, jen o varování.

Zkus přeložit a pošli co hlásí překlad, výstup tohoto programu:

Kód: Vybrat vše

/*
  CH32V307VCT6 Bring-up (CH32duino / openwch/arduino_core_ch32)
  - Serial diagnostics
  - LED test (PB8/PB9 + LED_BUILTIN if present)
  - Ethernet "capability detection" (ETH.h / lwIP / WCHNet headers if present)

  Board: "CH32V307VCT6 EVT"
  FQBN:  WCH:ch32v:CH32V30x_EVT
  Core:  WCH ch32v (example seen: 1.0.4)

  Why this version:
  - Your compile log shows "invalid library: no header files found" for some folders in ~/Arduino/libraries/.
    That's not a compile error; it means those folders are NOT Arduino libraries.
  - Ethernet on CH32V307 is MAC+10M PHY built-in (not Wiznet Ethernet.h). Arduino-style ETH.h may not exist in this core,
    so we only detect what is available and tell you next steps.
*/

#pragma execution_character_set("utf-8")
#include <Arduino.h>

// ---------------- LED pin defaults ----------------
#ifndef LED_PB8
  #define LED_PB8 PB8
#endif
#ifndef LED_PB9
  #define LED_PB9 PB9
#endif

#ifdef LED_BUILTIN
  static const int LED_BUILTIN_PIN = LED_BUILTIN;
#else
  static const int LED_BUILTIN_PIN = -1;
#endif

// ---------------- Header detection helpers ----------------
#if defined(__has_include)
  #define HAS_INCLUDE(x) __has_include(x)
#else
  #define HAS_INCLUDE(x) 0
#endif

// 1) Arduino-style ETH wrapper (often NOT present for CH32)
#if HAS_INCLUDE(<ETH.h>)
  #include <ETH.h>
  #define HAS_CH32_ETH_H 1
#else
  #define HAS_CH32_ETH_H 0
#endif

// 2) Try to detect lwIP headers (names differ by ports; we only detect, we don't rely on them)
#if HAS_INCLUDE(<lwip/opt.h>)
  #define HAS_LWIP_OPT 1
#else
  #define HAS_LWIP_OPT 0
#endif

#if HAS_INCLUDE(<lwip/init.h>)
  #define HAS_LWIP_INIT 1
#else
  #define HAS_LWIP_INIT 0
#endif

#if HAS_INCLUDE(<lwip/netif.h>)
  #define HAS_LWIP_NETIF 1
#else
  #define HAS_LWIP_NETIF 0
#endif

#if HAS_INCLUDE(<netif/ethernet.h>)
  #define HAS_LWIP_ETHERNET 1
#else
  #define HAS_LWIP_ETHERNET 0
#endif

// 3) Try to detect WCHNet-ish headers (names vary a lot; again detection only)
#if HAS_INCLUDE(<WCHNET.h>)
  #define HAS_WCHNET_H 1
#elif HAS_INCLUDE(<wchnet.h>)
  #define HAS_WCHNET_H 1
#else
  #define HAS_WCHNET_H 0
#endif

// ---------------- Helpers ----------------
static void blink_pin(int pin, int times, int on_ms, int off_ms)
{
  if (pin < 0) return;
  pinMode(pin, OUTPUT);
  for (int i = 0; i < times; i++)
  {
    digitalWrite(pin, HIGH); delay(on_ms);
    digitalWrite(pin, LOW);  delay(off_ms);
  }
}

static void print_chip_info()
{
  Serial.println();
  Serial.println(F("=== CH32V307 Bring-up ==="));

#if defined(ARDUINO_ARCH_RISCV)
  Serial.println(F("Arch: RISC-V (ARDUINO_ARCH_RISCV)"));
#else
  Serial.println(F("Arch: (unknown / not ARDUINO_ARCH_RISCV)"));
#endif

#if defined(ARDUINO)
  Serial.print(F("ARDUINO = "));
  Serial.println(ARDUINO);
#endif

#if defined(F_CPU)
  Serial.print(F("F_CPU = "));
  Serial.print((unsigned long)F_CPU);
  Serial.println(F(" Hz"));
#endif

#if defined(BOARD_NAME)
  Serial.print(F("BOARD_NAME = "));
  Serial.println(BOARD_NAME);
#endif

#if defined(VARIANT_H)
  Serial.print(F("VARIANT_H = "));
  Serial.println(VARIANT_H);
#endif

  Serial.println(F("LED pins:"));
  Serial.print(F("  PB8 = ")); Serial.println((int)LED_PB8);
  Serial.print(F("  PB9 = ")); Serial.println((int)LED_PB9);
  if (LED_BUILTIN_PIN >= 0)
  {
    Serial.print(F("  LED_BUILTIN = ")); Serial.println(LED_BUILTIN_PIN);
  }
  else
  {
    Serial.println(F("  LED_BUILTIN not defined by this board/core"));
  }

  Serial.println(F("========================="));
  Serial.println();
}

static void print_ethernet_capabilities()
{
  Serial.println(F("=== Ethernet / Stack detection ==="));

#if HAS_CH32_ETH_H
  Serial.println(F("[OK] Found header: <ETH.h> (Arduino-style wrapper detected)"));
#else
  Serial.println(F("[NO] <ETH.h> not found (very common on WCH ch32v core 1.0.4)"));
#endif

  // lwIP detection
  Serial.print(F("[lwIP] <lwip/opt.h>: "));      Serial.println(HAS_LWIP_OPT ? F("YES") : F("NO"));
  Serial.print(F("[lwIP] <lwip/init.h>: "));     Serial.println(HAS_LWIP_INIT ? F("YES") : F("NO"));
  Serial.print(F("[lwIP] <lwip/netif.h>: "));    Serial.println(HAS_LWIP_NETIF ? F("YES") : F("NO"));
  Serial.print(F("[lwIP] <netif/ethernet.h>: "));Serial.println(HAS_LWIP_ETHERNET ? F("YES") : F("NO"));

  // WCHNet detection
  Serial.print(F("[WCHNet] WCHNET header: "));
  Serial.println(HAS_WCHNET_H ? F("YES") : F("NO"));

  Serial.println(F("----------------------------------"));
  Serial.println(F("If you see Arduino build warnings like:"));
  Serial.println(F("  \"invalid library: no header files found\""));
  Serial.println(F("it means you placed a NON-Arduino repo into ~/Arduino/libraries/."));
  Serial.println(F("Fix: move such folders out of ~/Arduino/libraries/ (e.g. to ~/src/)"));
  Serial.println(F("or convert them into a real Arduino library structure (library.properties + src/*.h/*.cpp)."));
  Serial.println(F("----------------------------------"));
  Serial.println();
}

#if HAS_CH32_ETH_H
static void try_init_ethernet_eth_h()
{
  Serial.println(F("[ETH] <ETH.h> is available -> trying ETH.begin()..."));

  // Some implementations return bool, some return void.
  // We'll attempt bool. If your ETH.begin() is void, compiler will complain -> paste error and I adjust.
  bool ok = ETH.begin();

  if (!ok)
  {
    Serial.println(F("[ETH] ETH.begin() failed / returned false."));
    Serial.println(F("[ETH] If your core uses different init API, paste the compiler/runtime output."));
    return;
  }

  Serial.println(F("[ETH] ETH.begin() OK, waiting for DHCP IP..."));
  unsigned long t0 = millis();
  while (millis() - t0 < 15000)
  {
    IPAddress ip = ETH.localIP();
    if (ip[0] != 0)
    {
      Serial.print(F("[ETH] IP: "));   Serial.println(ip);
      Serial.print(F("[ETH] GW: "));   Serial.println(ETH.gatewayIP());
      Serial.print(F("[ETH] MASK: ")); Serial.println(ETH.subnetMask());
      Serial.println(F("[ETH] Ready."));
      return;
    }

    // blink PB9 while waiting
    digitalWrite(LED_PB9, !digitalRead(LED_PB9));
    delay(250);
  }

  Serial.println(F("[ETH] No DHCP IP within 15s (check link/router/DHCP)."));
}
#endif

void setup()
{
  Serial.begin(115200);
  delay(250);

  Serial.println();
  Serial.println(F("Booting..."));
  delay(250);

  pinMode(LED_PB8, OUTPUT);
  pinMode(LED_PB9, OUTPUT);
  digitalWrite(LED_PB8, LOW);
  digitalWrite(LED_PB9, LOW);

  print_chip_info();

  // LED test
  Serial.println(F("[TEST] Blinking PB8 (5x)"));
  blink_pin(LED_PB8, 5, 120, 120);

  Serial.println(F("[TEST] Blinking PB9 (5x)"));
  blink_pin(LED_PB9, 5, 120, 120);

  if (LED_BUILTIN_PIN >= 0)
  {
    Serial.println(F("[TEST] Blinking LED_BUILTIN (3x)"));
    blink_pin(LED_BUILTIN_PIN, 3, 180, 180);
  }

  // Ethernet capability detection (based on your environment)
  print_ethernet_capabilities();

#if HAS_CH32_ETH_H
  try_init_ethernet_eth_h();
#else
  Serial.println(F("[ETH] Skipping init because <ETH.h> is not available in this core."));
  Serial.println(F("[ETH] Next step: use a CH32V307-specific LwIP/WCHNet example/port,"));
  Serial.println(F("      or install a real Arduino-wrapped CH32 Ethernet library (with library.properties + src/...)."));
#endif

  Serial.println(F("[DONE] setup() complete."));
}

void loop()
{
  // Heartbeat: PB8 toggles every 1s
  static unsigned long last = 0;
  if (millis() - last >= 1000)
  {
    last = millis();
    digitalWrite(LED_PB8, !digitalRead(LED_PB8));
  }

  // PB9: short pulse every 5s
  static unsigned long last2 = 0;
  if (millis() - last2 >= 5000)
  {
    last2 = millis();
    digitalWrite(LED_PB9, HIGH);
    delay(40);
    digitalWrite(LED_PB9, LOW);
  }
}

Richard
Příspěvky: 13
Registrován: 25 led 2026, 07:12
Bydliště: Volyně

Re: CH32V307VCT6 development board

Příspěvek od Richard » 26 led 2026, 11:26

Ahoj,

Řekl bych, že je to totožné.

loading library from /home/r/Arduino/libraries/ch32v307-lwip-main: invalid library: no header files foundloading library from /home/r/Arduino/libraries/ch32v307-main: invalid library: no header files found
FQBN: WCH:ch32v:CH32V30x_EVT
Using board 'CH32V30x_EVT' from platform in folder: /home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4
Using core 'arduino' from platform in folder: /home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4

Detecting libraries used...
/home/r/.arduino15/packages/WCH/tools/riscv-none-embed-gcc/8.2.0/bin/riscv-none-embed-g++ -march=rv32imafcxw -mabi=ilp32f -msmall-data-limit=8 -msave-restore -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -c -Os -DNDEBUG -Wunused -Wuninitialized -std=gnu++14 -fno-threadsafe-statics -fno-rtti -fno-exceptions -fno-use-cxa-atexit -I/home/r/Arduino/CH32V307-test1 -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/avr/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/ch32/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/ch32/lib/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/USER/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Core/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Debug/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Startup/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Peripheral/inc/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Peripheral/src/ -fpermissive -w -x c++ -E -CC -DCH32V30x -DARDUINO=10607 -DCH32V30x_C -DVARIANT_H="variant_CH32V307VCT6.h" -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/variants/CH32V30x/CH32V307VCT6 -o /dev/null -c /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/sketch/CH32V307-test1.ino.cpp
Generating function prototypes...
/home/r/.arduino15/packages/WCH/tools/riscv-none-embed-gcc/8.2.0/bin/riscv-none-embed-g++ -march=rv32imafcxw -mabi=ilp32f -msmall-data-limit=8 -msave-restore -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -c -Os -DNDEBUG -Wunused -Wuninitialized -std=gnu++14 -fno-threadsafe-statics -fno-rtti -fno-exceptions -fno-use-cxa-atexit -I/home/r/Arduino/CH32V307-test1 -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/avr/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/ch32/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/ch32/lib/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/USER/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Core/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Debug/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Startup/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Peripheral/inc/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Peripheral/src/ -fpermissive -w -x c++ -E -CC -DCH32V30x -DARDUINO=10607 -DCH32V30x_C -DVARIANT_H="variant_CH32V307VCT6.h" -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/variants/CH32V30x/CH32V307VCT6 -o /tmp/148489933/sketch_merged.cpp -c /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/sketch/CH32V307-test1.ino.cpp
/home/r/.arduino15/packages/builtin/tools/ctags/5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /tmp/148489933/sketch_merged.cpp

Compiling sketch...
/home/r/.arduino15/packages/WCH/tools/riscv-none-embed-gcc/8.2.0/bin/riscv-none-embed-g++ -march=rv32imafcxw -mabi=ilp32f -msmall-data-limit=8 -msave-restore -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -c -Os -DNDEBUG -w -std=gnu++14 -fno-threadsafe-statics -fno-rtti -fno-exceptions -fno-use-cxa-atexit -MMD -I/home/r/Arduino/CH32V307-test1 -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/avr/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/ch32/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/ch32/lib/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/USER/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Core/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Debug/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Startup/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Peripheral/inc/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Peripheral/src/ -fpermissive -DCH32V30x -DARDUINO=10607 -DCH32V30x_C "-DVARIANT_H=\"variant_CH32V307VCT6.h\"" -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/variants/CH32V30x/CH32V307VCT6 -o /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/sketch/CH32V307-test1.ino.cpp.o -c /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/sketch/CH32V307-test1.ino.cpp
Compiling libraries...
Compiling core...
/home/r/.arduino15/packages/WCH/tools/riscv-none-embed-gcc/8.2.0/bin/riscv-none-embed-gcc -march=rv32imafcxw -mabi=ilp32f -msmall-data-limit=8 -msave-restore -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -c -Os -DNDEBUG -w -std=gnu99 -MMD -I/home/r/Arduino/CH32V307-test1 -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/avr/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/ch32/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/ch32/lib/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/USER/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Core/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Debug/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Startup/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Peripheral/inc/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Peripheral/src/ -DCH32V30x -DARDUINO=10607 -DCH32V30x_C "-DVARIANT_H=\"variant_CH32V307VCT6.h\"" -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/variants/CH32V30x/CH32V307VCT6 -o /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/core/PeripheralPins.c.o -c /home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/variants/CH32V30x/CH32V307VCT6/PeripheralPins.c
/home/r/.arduino15/packages/WCH/tools/riscv-none-embed-gcc/8.2.0/bin/riscv-none-embed-g++ -march=rv32imafcxw -mabi=ilp32f -msmall-data-limit=8 -msave-restore -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -c -Os -DNDEBUG -w -std=gnu++14 -fno-threadsafe-statics -fno-rtti -fno-exceptions -fno-use-cxa-atexit -MMD -I/home/r/Arduino/CH32V307-test1 -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/avr/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/ch32/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino/ch32/lib/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/USER/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Core/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Debug/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Startup/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Peripheral/inc/ -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Peripheral/src/ -fpermissive -DCH32V30x -DARDUINO=10607 -DCH32V30x_C "-DVARIANT_H=\"variant_CH32V307VCT6.h\"" -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino -I/home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/variants/CH32V30x/CH32V307VCT6 -o /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/core/variant_CH32V307VCT6.cpp.o -c /home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/variants/CH32V30x/CH32V307VCT6/variant_CH32V307VCT6.cpp
Using precompiled core: /home/r/.cache/arduino/cores/778558e58b3221687e9d1d248abe21d8/core.a
Linking everything together...
/home/r/.arduino15/packages/WCH/tools/riscv-none-embed-gcc/8.2.0/bin/riscv-none-embed-g++ -march=rv32imafcxw -mabi=ilp32f -msmall-data-limit=8 -msave-restore -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -T /home/r/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V30x/SRC/Ld/Link.ld -nostartfiles -Xlinker --gc-sections -Wl,-Map,/home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/CH32V307-test1.ino.map --specs=nano.specs --specs=nosys.specs -o /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/CH32V307-test1.ino.elf -L/home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8 -Wl,--start-group /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/sketch/CH32V307-test1.ino.cpp.o /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/core/PeripheralPins.c.o /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/core/variant_CH32V307VCT6.cpp.o -lprintfloat -Wl,--whole-archive /home/r/.cache/arduino/cores/778558e58b3221687e9d1d248abe21d8/core.a -Wl,--no-whole-archive -lc -Wl,--end-group
/home/r/.arduino15/packages/WCH/tools/riscv-none-embed-gcc/8.2.0/bin/riscv-none-embed-objcopy -O binary /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/CH32V307-test1.ino.elf /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/CH32V307-test1.ino.bin
/home/r/.arduino15/packages/WCH/tools/riscv-none-embed-gcc/8.2.0/bin/riscv-none-embed-objcopy -O ihex /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/CH32V307-test1.ino.elf /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/CH32V307-test1.ino.hex
/home/r/.arduino15/packages/WCH/tools/riscv-none-embed-gcc/8.2.0/bin/riscv-none-embed-size -A /home/r/.cache/arduino/sketches/0EC89098935A3ACE799E98ADA419E6A8/CH32V307-test1.ino.elf
Sketch uses 9740 bytes (3%) of program storage space. Maximum is 262144 bytes.
Global variables use 540 bytes (0%) of dynamic memory, leaving 64996 bytes for local variables. Maximum is 65536 bytes.

Uživatelský avatar
Caster
Příspěvky: 494
Registrován: 11 zář 2019, 09:02

Re: CH32V307VCT6 development board

Příspěvek od Caster » 26 led 2026, 13:51

Díky, zkusil jsi program spustit ? Na sériovém monitoru (jede před USB) by jsi měl mít nějaký výpis, zkopíruj ho a pošli ho. V Arduino IDE se podívej, na kterém portu (COM) máš sériový výstup z desky.

Tohle, co jsi poslal, je pořád jen log z kompilace (a je úspěšný). Nevidím tam výstup ze Serial monitoru z běhu programu – tedy žádné:
  • Booting...
  • === CH32V307 Bring-up ===
  • === Ethernet / Stack detection ===
Takže program se zkompiloval, ale buď:
  1. neotevřel jsi Serial Monitor, nebo
  2. používáš jiné rozhraní než USB CDC (některé varianty potřebují UART piny), nebo
  3. Serial se sice posílá, ale na jiné rychlosti/portu.
Upravený program:
  • ETH.h v core 1.0.4 evidentně není používáno (jinak by se v „Detecting libraries used…“ ukázalo, že se přibalila knihovna/hlavička; tady se kompiluje jen core + sketch).
  • Přidáno delší čekání na Serial a jasný “spam” výstup (opakované hlášky), aby bylo poznat, že to opravdu běží.
  • Přidána volitelná možnost přepnout výstup na Serial1 (UART), kdyby tvůj board neměl Serial přes USB na tom, co Arduino IDE používá.
  • Přidán výpis i FQBN/core verzi (aspoň to, co jde přes makra) a informaci, že ETH.h nebylo nalezeno.
Když neuvidíš nic v Serial monitoru, zkus:
  • rychlost 115200
  • vybrat správný port
  • a pak přepnout USE_SERIAL1 na 1 a připojit USB-UART na piny TX/RX (Serial1) dle desky.

Kód: Vybrat vše

/*
  CH32V307VCT6 Bring-up (WCH ch32v core 1.0.4)
  Board: CH32V307VCT6 EVT (FQBN: WCH:ch32v:CH32V30x_EVT)

  Changes based on your logs:
  - ETH.h not available/used -> we only report that.
  - Add aggressive Serial output + optional Serial1 fallback.
  - Longer wait and repeated prints so you can confirm it runs.
*/

#pragma execution_character_set("utf-8")
#include <Arduino.h>

// ====== OUTPUT SELECT ======
// 0 = use Serial (default)
// 1 = use Serial1 (UART) if Serial over USB doesn't show anything
#define USE_SERIAL1 0

#if USE_SERIAL1
  #define DBG   Serial1
#else
  #define DBG   Serial
#endif

// ====== LED pins (adjust if needed) ======
#ifndef LED_PB8
  #define LED_PB8 PB8
#endif
#ifndef LED_PB9
  #define LED_PB9 PB9
#endif

#ifdef LED_BUILTIN
  static const int LED_BUILTIN_PIN = LED_BUILTIN;
#else
  static const int LED_BUILTIN_PIN = -1;
#endif

// ====== ETH.h detection (compile-time) ======
#if defined(__has_include)
  #if __has_include(<ETH.h>)
    #include <ETH.h>
    #define HAS_CH32_ETH_H 1
  #else
    #define HAS_CH32_ETH_H 0
  #endif
#else
  #define HAS_CH32_ETH_H 0
#endif

static void blink_pin(int pin, int times, int on_ms, int off_ms)
{
  if (pin < 0) return;
  pinMode(pin, OUTPUT);
  for (int i = 0; i < times; i++)
  {
    digitalWrite(pin, HIGH); delay(on_ms);
    digitalWrite(pin, LOW);  delay(off_ms);
  }
}

static void print_chip_info()
{
  DBG.println();
  DBG.println(F("=== CH32V307 Bring-up ==="));

#if defined(ARDUINO_ARCH_RISCV)
  DBG.println(F("Arch: RISC-V (ARDUINO_ARCH_RISCV)"));
#else
  DBG.println(F("Arch: (unknown / not ARDUINO_ARCH_RISCV)"));
#endif

#if defined(ARDUINO)
  DBG.print(F("ARDUINO macro = "));
  DBG.println(ARDUINO);
#endif

#if defined(F_CPU)
  DBG.print(F("F_CPU = "));
  DBG.print((unsigned long)F_CPU);
  DBG.println(F(" Hz"));
#endif

#if defined(VARIANT_H)
  DBG.print(F("VARIANT_H = "));
  DBG.println(VARIANT_H);
#endif

  DBG.println(F("LED pins:"));
  DBG.print(F("  PB8 = ")); DBG.println((int)LED_PB8);
  DBG.print(F("  PB9 = ")); DBG.println((int)LED_PB9);

  if (LED_BUILTIN_PIN >= 0)
  {
    DBG.print(F("  LED_BUILTIN = "));
    DBG.println(LED_BUILTIN_PIN);
  }
  else
  {
    DBG.println(F("  LED_BUILTIN not defined by this board/core"));
  }

  DBG.println();
  DBG.println(F("Ethernet header detection:"));
#if HAS_CH32_ETH_H
  DBG.println(F("  ETH.h: FOUND (will try ETH.begin())"));
#else
  DBG.println(F("  ETH.h: NOT FOUND (expected on WCH core 1.0.4; use LwIP/WCHNet instead)"));
#endif

  DBG.println(F("========================="));
  DBG.println();
}

#if HAS_CH32_ETH_H
static void try_init_ethernet()
{
  DBG.println(F("[ETH] Trying ETH.begin()..."));

  // If your ETH.begin() is void in your environment, compilation would fail.
  bool ok = ETH.begin();

  if (!ok)
  {
    DBG.println(F("[ETH] ETH.begin() failed / returned false."));
    return;
  }

  DBG.println(F("[ETH] ETH.begin() OK. Waiting for DHCP IP (15s)..."));
  unsigned long t0 = millis();
  while (millis() - t0 < 15000)
  {
    IPAddress ip = ETH.localIP();
    if (ip[0] != 0)
    {
      DBG.print(F("[ETH] IP: ")); DBG.println(ip);
      DBG.print(F("[ETH] GW: ")); DBG.println(ETH.gatewayIP());
      DBG.print(F("[ETH] MASK: ")); DBG.println(ETH.subnetMask());
      DBG.println(F("[ETH] Ready."));
      return;
    }
    digitalWrite(LED_PB9, !digitalRead(LED_PB9));
    delay(250);
  }
  DBG.println(F("[ETH] No DHCP IP within 15s."));
}
#endif

void setup()
{
  // --- Init debug port ---
#if USE_SERIAL1
  // NOTE: Serial1 pinout depends on board variant.
  // If you don't see output, you must connect USB-UART to the correct TX/RX pins of Serial1.
  DBG.begin(115200);
#else
  DBG.begin(115200);
#endif

  // Give time for monitor to attach
  delay(800);

  // "Spam" so you cannot miss it
  for (int i = 0; i < 5; i++)
  {
    DBG.println(F("Booting... (if you see this, Serial output works)"));
    delay(150);
  }

  // --- LEDs ---
  pinMode(LED_PB8, OUTPUT);
  pinMode(LED_PB9, OUTPUT);
  digitalWrite(LED_PB8, LOW);
  digitalWrite(LED_PB9, LOW);

  print_chip_info();

  DBG.println(F("[TEST] Blinking PB8 (5x)"));
  blink_pin(LED_PB8, 5, 120, 120);

  DBG.println(F("[TEST] Blinking PB9 (5x)"));
  blink_pin(LED_PB9, 5, 120, 120);

  if (LED_BUILTIN_PIN >= 0)
  {
    DBG.println(F("[TEST] Blinking LED_BUILTIN (3x)"));
    blink_pin(LED_BUILTIN_PIN, 3, 180, 180);
  }

#if HAS_CH32_ETH_H
  try_init_ethernet();
#else
  DBG.println(F("[ETH] Skipped: ETH.h not available in this core."));
  DBG.println(F("[ETH] Your 'invalid library: no header files found' warnings are from non-Arduino repos"));
  DBG.println(F("      in ~/Arduino/libraries/ (e.g. ch32v307-lwip-main). Move them out of libraries/."));
#endif

  DBG.println(F("[DONE] setup() complete."));
}

void loop()
{
  // Heartbeat: PB8 toggles every 1s
  static unsigned long last = 0;
  if (millis() - last >= 1000)
  {
    last = millis();
    digitalWrite(LED_PB8, !digitalRead(LED_PB8));
    DBG.println(F("[LOOP] alive"));
  }

  // PB9 pulse every 5s
  static unsigned long last2 = 0;
  if (millis() - last2 >= 5000)
  {
    last2 = millis();
    digitalWrite(LED_PB9, HIGH);
    delay(40);
    digitalWrite(LED_PB9, LOW);
  }
}

Richard
Příspěvky: 13
Registrován: 25 led 2026, 07:12
Bydliště: Volyně

Re: CH32V307VCT6 development board

Příspěvek od Richard » 26 led 2026, 14:12

Děkuji.
Jsem vůl(tuplovanej), vůbec mě nenapadlo to nasosnout do desky a spustit.
Hned na to vlítnu.

Jsi moc hodný za pomoc, nebráním se(vlastně nabízím nějaký revanš). Akorát píšeš termíny, kterým vůbec nerozumím.
Nedalo by se to psát více polopaticky(pro debily)?
Chci to pochopit, abych v budoucnu dokázal něco sesmolit sám.

S těmi knihovnami je to tak, že nešly nainstalovat ze zipu, tak jsem je rozbalil a šoupnul tam ručně.
Proto ta hláška? Na funkci to nemá vliv?

Richard
Příspěvky: 13
Registrován: 25 led 2026, 07:12
Bydliště: Volyně

Re: CH32V307VCT6 development board

Příspěvek od Richard » 26 led 2026, 14:41

Komentář z kompilace jsem sem nedával, sériový monitor nic.

Takže si myslím, že ho vůbec nemám zapojený.

Open On-Chip Debugger 0.11.0+dev-02415-gfad123a16-dirty (2023-10-11-14:01)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'sdi'
Warn : Transport "sdi" was already selected
Ready for Remote Connections
Info : WCH-LinkE mode:RV version 2.12
Info : wlink_init ok
Info : clock speed 6000 kHz
Info : [wch_riscv.cpu.0] datacount=2 progbufsize=8
Info : [wch_riscv.cpu.0] Examined RISC-V core; found 1 harts
Info : [wch_riscv.cpu.0] XLEN=32, misa=0x40901125
[wch_riscv.cpu.0] Target successfully examined.
Info : starting gdb server for wch_riscv.cpu.0 on 3333
Info : Listening on port 3333 for gdb connections
** Programming Started **
Info : device id = 0x72a22e08
Info : flash size = 288kbytes
Info : ROM 256 kbytes RAM 64 kbytes
** Programming Finished **
** Verify Started **
** Verified OK **

Richard
Příspěvky: 13
Registrován: 25 led 2026, 07:12
Bydliště: Volyně

Re: CH32V307VCT6 development board

Příspěvek od Richard » 26 led 2026, 15:40

No nic, vzdávám to. Nemám na to.
Propojil jsem D5 a D6 na desce s RX a TX na programátoru.
Sériová komunikace není, ani nejsem schopen zjistit, jestli je to spojeno.
Dokumentace žádná, takže ztráta času.
Rád bych se to naučil a udělal ten projekt, ale už mi tečou nervy.

Uživatelský avatar
Caster
Příspěvky: 494
Registrován: 11 zář 2019, 09:02

Re: CH32V307VCT6 development board

Příspěvek od Caster » 26 led 2026, 16:25

Jako začátečník jsi si vybral těžký projekt. Ani já jsem ještě s Ethernetem nikdy nepracoval. Jen pochopit jak se s mikrokontroléry pracuje mi trvalo 2-3 roky. Teď na oplátku mohu pomoci. Není pro mě problém zjistit v čem je problém. 4 kanálový digitální osciloskop, 8 kanálový logický analyzátor, anténní vektorový analyzátor do 3 GHz aj. 8-) . Pokud jsi z Prahy, mohl bych se na desku podívat. Určitě to spolu dáme dohromady :-).

Zkus testovací program, který sériový výstup přesměruje na LEDky na desce. Ty by po nahrání programu a jeho spuštění (po resetu) měly na začátku rychle blikat a pak jen pravidelně bliknout. Tím ověříme, že program běží ;-) Pak budeme řešit výstup na sériovou linku.

Testovací program ("přesměrování serial" -> LED PB8/PB9)

Kód: Vybrat vše

#pragma execution_character_set("utf-8")
#include <Arduino.h>

#ifndef LED_PB8
  #define LED_PB8 PB8
#endif
#ifndef LED_PB9
  #define LED_PB9 PB9
#endif

static void blink(int pin, int n, int on_ms, int off_ms)
{
  pinMode(pin, OUTPUT);
  for (int i=0;i<n;i++){
    digitalWrite(pin, HIGH); delay(on_ms);
    digitalWrite(pin, LOW);  delay(off_ms);
  }
}

void setup()
{
  // Start pattern: PB8 = 3 krát, PB9 = 2 krát, pak obě 1 dlouhý blik
  blink(LED_PB8, 3, 100, 100);
  delay(200);
  blink(LED_PB9, 2, 150, 150);
  delay(200);

  pinMode(LED_PB8, OUTPUT);
  pinMode(LED_PB9, OUTPUT);
  digitalWrite(LED_PB8, LOW);
  digitalWrite(LED_PB9, LOW);

  digitalWrite(LED_PB8, HIGH);
  digitalWrite(LED_PB9, HIGH);
  delay(400);
  digitalWrite(LED_PB8, LOW);
  digitalWrite(LED_PB9, LOW);
}

void loop()
{
  // Heartbeat: PB8 každou sekundu, PB9 každých 5 sekund krátký pulz
  static uint32_t t1 = 0, t2 = 0;
  uint32_t now = millis();

  if (now - t1 >= 1000) {
    t1 = now;
    digitalWrite(LED_PB8, !digitalRead(LED_PB8));
  }
  if (now - t2 >= 5000) {
    t2 = now;
    digitalWrite(LED_PB9, HIGH);
    delay(40);
    digitalWrite(LED_PB9, LOW);
  }
}

Richard
Příspěvky: 13
Registrován: 25 led 2026, 07:12
Bydliště: Volyně

Re: CH32V307VCT6 development board

Příspěvek od Richard » 26 led 2026, 16:30

Děkuji za trpělivost.

Vůbec nic to nedělá.

Richard
Příspěvky: 13
Registrován: 25 led 2026, 07:12
Bydliště: Volyně

Re: CH32V307VCT6 development board

Příspěvek od Richard » 26 led 2026, 17:54

Tak to vypadá, že je deska v (_!_).
Zkoušel jsem jednoduchý blink a nic.
Pak jsem zkoušel na desce 32v003 a tam to funguje.
Jen, jeden poznatek.
Nežere to zápis pinu jako "PDx" nýbrž je třeba zadat skutečné číslo pinu na pouzdře MCU např (PD0 je 10).

Richard
Příspěvky: 13
Registrován: 25 led 2026, 07:12
Bydliště: Volyně

Re: CH32V307VCT6 development board

Příspěvek od Richard » 26 led 2026, 19:09

Takže tvrdím, že deska je nefunkční.

Postupně jsem se pokoušel rozblikat ledky na všech pinech. Bez výsledku.

Kód: Vybrat vše

[/*
  Blink

  Turns an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://docs.arduino.cc/hardware/

  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman

  This example code is in the public domain.

  https://docs.arduino.cc/built-in-examples/basics/Blink/
*/
#define LEDboard1 58
#define LEDboard2 57

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  
  
  pinMode(LEDboard1, OUTPUT);
  pinMode(LEDboard2, OUTPUT);
  
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LEDboard1, HIGH); 
  digitalWrite(LEDboard2, HIGH);// turn the LED on (HIGH is the voltage level)
  delay(1000);                      // wait for a second
  digitalWrite(LEDboard1, LOW);
  digitalWrite(LEDboard2, LOW);   // turn the LED off by making the voltage LOW
  delay(1000);                      // wait for a second
}
/code]

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti