Administrator
发布于 2026-01-14 / 66 阅读
0
0

麒麟银河V10 SP1 配置 Visual Studio Code

华为擎云W515X用了几天,兼容性问题愈发严重,于是换了一台中科的T40D,处理器是海光C86-3G,独显为 Glenfly Arise 1020 ,解码终于正常了。搭配16GB DDR4内存 + 512GB固态 + 2T 机械硬盘目前体验良好,于是来学习编程吧。

IDE首选Visual Studio Code,可以在应用商店中一键安装,也可以到微软官网下载,x86架构不存在兼容性问题。

用C语言写hello world

在使用C语言写hello world前,记得先安装gcc、gdb、make等工具链,避免出现奇怪的错误。当年学习C语言时用的还是Visual C++ 6.0,后来写C#时候用的Visual Studio 2010,它们和现在的Visual Studio Code差别很大。前者自身就是完整开发环境,而Visual Studio Code更类似于一个浏览器,各种功能以插件形式存在,安装配置灵活,拓展性极强,缺点无法开箱即用。新手可以观看这个视频入门:Visual Studio Code for C/C++ on Linux (2021)

简单来说在Visual Studio Code中用C语言写hello world并编译运行需要这几个步骤:

  1. 在linux系统中安装工具链;

  2. 在Visual Studio Code中安装C/C++ 插件;

  3. 在Visual Studio Code添加文件夹。Visual Studio Code以文件夹为单位组织代码,需要注意;

  4. 在Visual Studio Code添加文件,撰写代码,按照提示生成launch.json与tasks.json,并酌情修改。

安装配置PlatformIO

PlatformIO据说比Arduino IDE更灵活、功能更强大。 安装拓展之前,首先安装Python依赖:

sudo apt install python3-venv

然后再安装PlatformIO即可。

在 PIO Home选择Embedded,搜索安装目标平台。我安装了 Raspberry Pi RP2040、Espressif 32和Nordic nRF52,它们每一个都包含了数量众多的开发板和开发示例。

回到PIO Home,选择Project Examples导入示例项目即可测试。比如Espressif 32的arduino-blink,这一阶段会一并下载工具链、SDK、framework等,需要耐心等待。

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

#include <Arduino.h>

// Set LED_BUILTIN if it is not defined by Arduino framework
#ifdef LED_BUILTIN
    #undef LED_BUILTIN
#endif

#ifndef LED_BUILTIN
    #define LED_BUILTIN 8
#endif

void setup()
{
  // initialize LED digital pin as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  // turn the LED on (HIGH is the voltage level)
  digitalWrite(LED_BUILTIN, HIGH);
  // wait for a second
  delay(1000);
  // turn the LED off by making the voltage LOW
  digitalWrite(LED_BUILTIN, LOW);
   // wait for a second
  delay(1000);
}

PlatformIO的ESP32库没有包含ESP32-C3 Supermii这个开发板,不过可以借用现成的lolin_c3_mini。注意需要修改板载LED对应的PIN脚。

编译时请点击左下角的“√”,也可以使用快捷键

  • ctrl+alt+b / cmd-shift-b / ctrl-shift-b Build Project

  • cmd-shift-d / ctrl-shift-d Debug project

  • ctrl+alt+u Upload Firmware

  • ctrl+alt+s Open Serial Port Monitor

注意,用快捷键可能会唤出多个build选择项,请选择 PlatformIO: Build 。首次构建可能没有这个选项,可以手动输入,或者点击左下角的“√”,构建过一次后下次就有了。

该项目Platformio.ini文件内容如下:

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter, extra scripting
;   Upload options: custom port, speed and extra flags
;   Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:esp-wrover-kit]
platform = espressif32
framework = arduino
board = esp-wrover-kit
monitor_speed = 115200
build_flags =
	; https://docs.espressif.com/projects/esp-idf/en/latest/get-started/get-started-wrover-kit.html#rgb-led
	-D LED_BUILTIN=2

[env:esp32doit-devkit-v1]
platform = espressif32
framework = arduino
board = esp32doit-devkit-v1
monitor_speed = 115200

[env:lolin32]
platform = espressif32
framework = arduino
board = lolin32
monitor_speed = 115200

[env:lolin_c3_mini]
platform = espressif32
framework = arduino
board = lolin_c3_mini
monitor_speed = 115200

[env:esp32-s3-devkitc-1]
platform = espressif32
framework = arduino
board = esp32-s3-devkitc-1
monitor_speed = 115200

[env:arduino_nano_esp32]
platform = espressif32
framework = arduino
board = arduino_nano_esp32

[env:adafruit_qtpy_esp32s3_n4r2]
platform = espressif32
board = adafruit_qtpy_esp32s3_n4r2
framework = arduino

直接build会生成Platformio.ini中所有开发板的程序,upload同理。可以参考项目文件中的README,仅构建并上传lolin_c3_mini配置程序:

$ pio run -e lolin_c3_mini -t upload

Processing lolin_c3_mini (platform: espressif32; framework: arduino; board: lolin_c3_mini)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/lolin_c3_mini.html
PLATFORM: Espressif 32 (6.12.0) > WEMOS LOLIN C3 Mini
HARDWARE: ESP32C3 160MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-builtin, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 3.20017.241212+sha.dcc1105b 
 - tool-esptoolpy @ 2.40900.250804 (4.9.0) 
 - tool-mkfatfs @ 2.0.1 
 - tool-mklittlefs @ 1.203.210628 (2.3) 
 - tool-mkspiffs @ 2.230.0 (2.30) 
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 33 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio/build/lolin_c3_mini/src/Blink.cpp.o
Linking .pio/build/lolin_c3_mini/firmware.elf
Retrieving maximum program size .pio/build/lolin_c3_mini/firmware.elf
Checking size .pio/build/lolin_c3_mini/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [          ]   4.1% (used 13508 bytes from 327680 bytes)
Flash: [==        ]  17.0% (used 222486 bytes from 1310720 bytes)
Building .pio/build/lolin_c3_mini/firmware.bin
esptool.py v4.9.0
Creating esp32c3 image...
Merged 2 ELF sections
Successfully created esp32c3 image.
Configuring upload protocol...
AVAILABLE: cmsis-dap, esp-bridge, esp-builtin, esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
Looking for upload port...
Auto-detected: /dev/ttyACM0
Uploading .pio/build/lolin_c3_mini/firmware.bin
esptool.py v4.9.0
Serial port /dev/ttyACM0
Connecting...
Chip is ESP32-C3 (QFN32) (revision v0.4)
Features: WiFi, BLE, Embedded Flash 4MB (XMC)
Crystal is 40MHz
USB mode: USB-Serial/JTAG
MAC: 88:56:a6:5f:c0:00
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00003fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00048fff...
SHA digest in image updated
Compressed 13248 bytes to 9562...
Writing at 0x00000000... (100 %)
Wrote 13248 bytes (9562 compressed) at 0x00000000 in 0.1 seconds (effective 725.7 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 146...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (146 compressed) at 0x00008000 in 0.0 seconds (effective 909.3 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 1235.7 kbit/s)...
Hash of data verified.
Compressed 232384 bytes to 130148...
Writing at 0x00010000... (12 %)
Writing at 0x0001ab38... (25 %)
Writing at 0x00021f89... (37 %)
Writing at 0x00027e70... (50 %)
Writing at 0x0002e484... (62 %)
Writing at 0x000342c8... (75 %)
Writing at 0x0003bebd... (87 %)
Writing at 0x00042b52... (100 %)
Wrote 232384 bytes (130148 compressed) at 0x00010000 in 1.0 seconds (effective 1883.5 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
============================================================================== [SUCCESS] Took 6.97 seconds ==============================================================================

Environment    Status    Duration
-------------  --------  ------------
lolin_c3_mini  SUCCESS   00:00:06.967
============================================================================== 1 succeeded in 00:00:06.967 ==============================================================================

至此ESP32-C3 Supermini就成功点亮了。


评论