RT-Thread / rt-thread

RT-Thread is an open source IoT Real-Time Operating System (RTOS).
https://www.rt-thread.io
Apache License 2.0
10.54k stars 5.03k forks source link

🔨[BSP][ESP32-C3] task issue #5941

Open supperthomas opened 2 years ago

supperthomas commented 2 years ago

task issue as follow

supperthomas commented 2 years ago

fix IDF_PATH to local path 目前可以考虑将IDF_PATH路径修改成pkgs里面的软件包作为编译的时候的IDF_PATH. 不过尝试多次之后,效果不是很理想,也比较麻烦。 暂时不是很方便,后面再考虑,先把软件包提交上去。如果大伙有什么更好的办法,欢迎提供。目前需求是: 如何编译的时候将IDF_PATH 指定到本地package/rtt_esp_idf-latest 文件夹下面,而且可以顺利编译通过。

supperthomas commented 2 years ago

6247

supperthomas commented 2 years ago

新版ESP32_C3 BSP发布 https://club.rt-thread.org/ask/article/46de5889adf71acc.html

supperthomas commented 2 years ago

【ESP32C3】基于ESP32C3运行RT-THREAD

https://club.rt-thread.org/ask/article/6749217c538b42cd.html

supperthomas commented 1 year ago

【请社区公测】新版ESP32_C3 BSP发布 https://club.rt-thread.org/ask/article/46de5889adf71acc.html

supperthomas commented 1 year ago

@WCX1024979076 单独打开BLE 这个app_main没有定义。 https://github.com/RT-Thread/rt-thread/actions/runs/6709048939/job/18231225581

LINK rtthread.elf
/opt/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/11.2.0/../../../../riscv32-esp-elf/bin/ld: build/main/main.o: in function `main':
/home/runner/work/rt-thread/rt-thread/bsp/ESP32_C3/main/main.c:24: undefined reference to `app_main'
WCX1024979076 commented 1 year ago

这个需要参考readme里面将esp-idf的nimble样例程序加入到编译中

---Original--- From: "Supper @.> Date: Tue, Oct 31, 2023 23:59 PM To: @.>; Cc: @.**@.>; Subject: Re: [RT-Thread/rt-thread] 🔨[BSP][ESP32-C3] task issue (Issue #5941)

@WCX1024979076 单独打开BLE 这个app_main没有定义。 https://github.com/RT-Thread/rt-thread/actions/runs/6709048939/job/18231225581 LINK rtthread.elf /opt/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/11.2.0/../../../../riscv32-esp-elf/bin/ld: build/main/main.o: in function main': /home/runner/work/rt-thread/rt-thread/bsp/ESP32_C3/main/main.c:24: undefined reference toapp_main'
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

supperthomas commented 1 year ago

这个需要参考readme里面将esp-idf的nimble样例程序加入到编译中 ---Original--- From: "Supper @.> Date: Tue, Oct 31, 2023 23:59 PM To: @.>; Cc: @.**@.>; Subject: Re: [RT-Thread/rt-thread] 🔨[BSP][ESP32-C3] task issue (Issue #5941) @WCX1024979076 单独打开BLE 这个app_main没有定义。 https://github.com/RT-Thread/rt-thread/actions/runs/6709048939/job/18231225581 LINK rtthread.elf /opt/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/11.2.0/../../../../riscv32-esp-elf/bin/ld: build/main/main.o: in function main': /home/runner/work/rt-thread/rt-thread/bsp/ESP32_C3/main/main.c:24: undefined reference toapp_main' — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

image

这里用户自己操作起来问题会比较多,是不是可以提供一个step by step的步骤?

supperthomas commented 1 year ago

@WCX1024979076 https://club.rt-thread.org/ask/article/419a30e57384a239.html 可否看下能不能默认状态下打开BLE宏,编译能通过?

WCX1024979076 commented 1 year ago

好的,我看一下

---Original--- From: "Supper @.> Date: Wed, Nov 1, 2023 08:09 AM To: @.>; Cc: @.**@.>; Subject: Re: [RT-Thread/rt-thread] 🔨[BSP][ESP32-C3] task issue (Issue #5941)

@WCX1024979076 https://club.rt-thread.org/ask/article/419a30e57384a239.html 可否看下能不能默认状态下打开BLE宏,编译能通过?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

1078249029 commented 2 months ago

请问现在的工具链可以确保编译成功么?

我在使用esp官方的gcc编译链产生编译错误:

scons: Reading SConscript files ...
CROSS_TOOL= gcc
EXEC_PATH= /home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build/drivers/board.o
riscv32-esp-elf-gcc: fatal error: cannot read spec file 'nosys.specs': No such file or directory
compilation terminated.
scons: *** [build/drivers/board.o] Error 1
scons: building terminated because of errors.

然后我在rtconfig.py文件中指定nosys.specs位置 DEVICE = ' -nostartfiles -march=rv32imc --specs=/usr/lib/riscv32-esp-elf/riscv32-esp-elf/nosys.specs ' 之后又缺失cc1工具,当时使用脚本下载乐鑫的sdk被默认下载到/usr/lib里了,然后我又将cc1复制到了乐鑫默认sdk文件夹里cp /usr/lib/riscv32-esp-elf/libexec/gcc/riscv32-esp-elf/11.2.0/cc1 /home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin 然后又爆出标准库文件丢失的错误

scons: Reading SConscript files ...
CROSS_TOOL= gcc
EXEC_PATH= /home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build/drivers/board.o
In file included from drivers/board.c:12:
packages/ESP-IDF-latest/components/hal/include/hal/systimer_hal.h:9:10: fatal error: stdint.h: No such file or directory
    9 | #include <stdint.h>
      |          ^~~~~~~~~~
compilation terminated.
scons: *** [build/drivers/board.o] Error 1
scons: building terminated because of errors.

根据网上的信息很可能是工具链设置出错,但是我是根据目前最新的教程移植的,请问楼主您最近移植rtt到esp32c3了么?可以编译通过么?

下面是我的环境配置

gcc:

lzx@DESKTOP-EPJK785 ESP32_C3 (master) $ /home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin/riscv32-esp-elf-gcc -v
Using built-in specs.
COLLECT_GCC=/home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin/riscv32-esp-elf-gcc
Target: riscv32-esp-elf
Configured with: /builds/idf/crosstool-NG/.build/riscv32-esp-elf/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=riscv32-esp-elf --prefix=/builds/idf/crosstool-NG/builds/riscv32-esp-elf --exec_prefix=/builds/idf/crosstool-NG/builds/riscv32-esp-elf --with-local-prefix=/builds/idf/crosstool-NG/builds/riscv32-esp-elf/riscv32-esp-elf --with-headers=/builds/idf/crosstool-NG/builds/riscv32-esp-elf/riscv32-esp-elf/include --with-newlib --enable-threads=no --disable-shared --with-arch=rv32gc --with-abi=ilp32 --with-pkgversion='crosstool-NG esp-13.2.0_20230928' --disable-__cxa_atexit --enable-cxx-flags=-ffunction-sections --disable-libgomp --disable-libmudflap --disable-libmpx --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libstdcxx-verbose --with-gmp=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools --with-mpfr=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools --with-mpc=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools --with-isl=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools --enable-lto --enable-target-optspace --without-long-double-128 --disable-nls --enable-multiarch --enable-languages=c,c++ --disable-libstdcxx-verbose --enable-threads=posix --enable-gcov-custom-rtio --enable-libstdcxx-time=yes
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 13.2.0 (crosstool-NG esp-13.2.0_20230928)

rtconfig.py

import os

# toolchains options
ARCH        ='risc-v'
CPU         =''
CROSS_TOOL  ='gcc'

if os.getenv('RTT_CC'):
    CROSS_TOOL = os.getenv('RTT_CC')
print("CROSS_TOOL=",CROSS_TOOL)

if CROSS_TOOL == 'gcc':
    PLATFORM    = 'gcc'
    EXEC_PATH   = r'~/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin'
#    EXEC_PATH   = r'~/.espressif/tools/riscv32-esp-elf/esp-2021r2-patch5-8.4.0/riscv32-esp-elf/bin/'  # 三套编译链都试过了,后两套找不到ll库
#    EXEC_PATH   = r'~/.espressif/tools/riscv32-esp-elf/esp-13.2.0_20230928/riscv32-esp-elf/bin'
else:
    print('Please make sure your toolchains is GNU GCC!')
    exit(0)

if os.getenv('RTT_EXEC_PATH'):
    EXEC_PATH = os.getenv('RTT_EXEC_PATH')
EXEC_PATH = os.path.expanduser(EXEC_PATH)
print("EXEC_PATH=",EXEC_PATH)
BUILD = 'debug'

if PLATFORM == 'gcc':
    # toolchains
    PREFIX = 'riscv32-esp-elf-'
    CC = PREFIX + 'gcc'
    CXX = PREFIX + 'g++'
    AS = PREFIX + 'gcc'
    AR = PREFIX + 'ar'
    LINK = PREFIX + 'g++'
    TARGET_EXT = 'elf'
    SIZE = PREFIX + 'size'
    OBJDUMP = PREFIX + 'objdump'
    OBJCPY = PREFIX + 'objcopy'
    STRIP = PREFIX + 'strip'

    DEVICE  = ' -nostartfiles -march=rv32imc --specs=/usr/lib/riscv32-esp-elf/riscv32-esp-elf/nosys.specs '
    CFLAGS = DEVICE + '-gdwarf-4 -ggdb -Og'
    AFLAGS =  ' -c' + DEVICE + ' -x assembler-with-cpp'
    LFLAGS = DEVICE + ' -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0 -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,_start -T idf_port/ld/memory.ld -T idf_port/ld/sections.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.api.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.libgcc.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.version.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.eco3.ld -T packages/ESP-IDF-latest/components/soc/esp32c3/ld/esp32c3.peripherals.ld  -Wl,--wrap=_Unwind_SetEnableExceptionFdeSorting -Wl,--wrap=__register_frame_info_bases -Wl,--wrap=__register_frame_info -Wl,--wrap=__register_frame -Wl,--wrap=__register_frame_info_table_bases -Wl,--wrap=__register_frame_info_table -Wl,--wrap=__register_frame_table -Wl,--wrap=__deregister_frame_info_bases -Wl,--wrap=__deregister_frame_info -Wl,--wrap=_Unwind_Find_FDE -Wl,--wrap=_Unwind_GetGR -Wl,--wrap=_Unwind_GetCFA -Wl,--wrap=_Unwind_GetIP -Wl,--wrap=_Unwind_GetIPInfo -Wl,--wrap=_Unwind_GetRegionStart -Wl,--wrap=_Unwind_GetDataRelBase -Wl,--wrap=_Unwind_GetTextRelBase -Wl,--wrap=_Unwind_SetIP -Wl,--wrap=_Unwind_SetGR -Wl,--wrap=_Unwind_GetLanguageSpecificData -Wl,--wrap=_Unwind_FindEnclosingFunction -Wl,--wrap=_Unwind_Resume -Wl,--wrap=_Unwind_RaiseException -Wl,--wrap=_Unwind_DeleteException -Wl,--wrap=_Unwind_ForcedUnwind -Wl,--wrap=_Unwind_Resume_or_Rethrow -Wl,--wrap=_Unwind_Backtrace -Wl,--wrap=__cxa_call_unexpected -Wl,--eh-frame-hdr -Wl,--wrap=__gxx_personality_v0  -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0'
    CXXFLAGS = CFLAGS

    POST_ACTION = OBJCPY + ' -Oihex $TARGET rtthread.hex\n' + SIZE + ' $TARGET \n'
supperthomas commented 2 months ago

请问现在的工具链可以确保编译成功么?

我在使用esp官方的gcc编译链产生编译错误:

scons: Reading SConscript files ...
CROSS_TOOL= gcc
EXEC_PATH= /home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build/drivers/board.o
riscv32-esp-elf-gcc: fatal error: cannot read spec file 'nosys.specs': No such file or directory
compilation terminated.
scons: *** [build/drivers/board.o] Error 1
scons: building terminated because of errors.

然后我在rtconfig.py文件中指定nosys.specs位置 DEVICE = ' -nostartfiles -march=rv32imc --specs=/usr/lib/riscv32-esp-elf/riscv32-esp-elf/nosys.specs ' 之后又缺失cc1工具,当时使用脚本下载乐鑫的sdk被默认下载到/usr/lib里了,然后我又将cc1复制到了乐鑫默认sdk文件夹里cp /usr/lib/riscv32-esp-elf/libexec/gcc/riscv32-esp-elf/11.2.0/cc1 /home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin 然后又爆出标准库文件丢失的错误

scons: Reading SConscript files ...
CROSS_TOOL= gcc
EXEC_PATH= /home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build/drivers/board.o
In file included from drivers/board.c:12:
packages/ESP-IDF-latest/components/hal/include/hal/systimer_hal.h:9:10: fatal error: stdint.h: No such file or directory
    9 | #include <stdint.h>
      |          ^~~~~~~~~~
compilation terminated.
scons: *** [build/drivers/board.o] Error 1
scons: building terminated because of errors.

根据网上的信息很可能是工具链设置出错,但是我是根据目前最新的教程移植的,请问楼主您最近移植rtt到esp32c3了么?可以编译通过么?

下面是我的环境配置

gcc:

lzx@DESKTOP-EPJK785 ESP32_C3 (master) $ /home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin/riscv32-esp-elf-gcc -v
Using built-in specs.
COLLECT_GCC=/home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin/riscv32-esp-elf-gcc
Target: riscv32-esp-elf
Configured with: /builds/idf/crosstool-NG/.build/riscv32-esp-elf/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=riscv32-esp-elf --prefix=/builds/idf/crosstool-NG/builds/riscv32-esp-elf --exec_prefix=/builds/idf/crosstool-NG/builds/riscv32-esp-elf --with-local-prefix=/builds/idf/crosstool-NG/builds/riscv32-esp-elf/riscv32-esp-elf --with-headers=/builds/idf/crosstool-NG/builds/riscv32-esp-elf/riscv32-esp-elf/include --with-newlib --enable-threads=no --disable-shared --with-arch=rv32gc --with-abi=ilp32 --with-pkgversion='crosstool-NG esp-13.2.0_20230928' --disable-__cxa_atexit --enable-cxx-flags=-ffunction-sections --disable-libgomp --disable-libmudflap --disable-libmpx --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libstdcxx-verbose --with-gmp=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools --with-mpfr=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools --with-mpc=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools --with-isl=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools --enable-lto --enable-target-optspace --without-long-double-128 --disable-nls --enable-multiarch --enable-languages=c,c++ --disable-libstdcxx-verbose --enable-threads=posix --enable-gcov-custom-rtio --enable-libstdcxx-time=yes
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 13.2.0 (crosstool-NG esp-13.2.0_20230928)

rtconfig.py

import os

# toolchains options
ARCH        ='risc-v'
CPU         =''
CROSS_TOOL  ='gcc'

if os.getenv('RTT_CC'):
    CROSS_TOOL = os.getenv('RTT_CC')
print("CROSS_TOOL=",CROSS_TOOL)

if CROSS_TOOL == 'gcc':
    PLATFORM    = 'gcc'
    EXEC_PATH   = r'~/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin'
#    EXEC_PATH   = r'~/.espressif/tools/riscv32-esp-elf/esp-2021r2-patch5-8.4.0/riscv32-esp-elf/bin/'  # 三套编译链都试过了,后两套找不到ll库
#    EXEC_PATH   = r'~/.espressif/tools/riscv32-esp-elf/esp-13.2.0_20230928/riscv32-esp-elf/bin'
else:
    print('Please make sure your toolchains is GNU GCC!')
    exit(0)

if os.getenv('RTT_EXEC_PATH'):
    EXEC_PATH = os.getenv('RTT_EXEC_PATH')
EXEC_PATH = os.path.expanduser(EXEC_PATH)
print("EXEC_PATH=",EXEC_PATH)
BUILD = 'debug'

if PLATFORM == 'gcc':
    # toolchains
    PREFIX = 'riscv32-esp-elf-'
    CC = PREFIX + 'gcc'
    CXX = PREFIX + 'g++'
    AS = PREFIX + 'gcc'
    AR = PREFIX + 'ar'
    LINK = PREFIX + 'g++'
    TARGET_EXT = 'elf'
    SIZE = PREFIX + 'size'
    OBJDUMP = PREFIX + 'objdump'
    OBJCPY = PREFIX + 'objcopy'
    STRIP = PREFIX + 'strip'

    DEVICE  = ' -nostartfiles -march=rv32imc --specs=/usr/lib/riscv32-esp-elf/riscv32-esp-elf/nosys.specs '
    CFLAGS = DEVICE + '-gdwarf-4 -ggdb -Og'
    AFLAGS =  ' -c' + DEVICE + ' -x assembler-with-cpp'
    LFLAGS = DEVICE + ' -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0 -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,_start -T idf_port/ld/memory.ld -T idf_port/ld/sections.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.api.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.libgcc.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.version.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.eco3.ld -T packages/ESP-IDF-latest/components/soc/esp32c3/ld/esp32c3.peripherals.ld  -Wl,--wrap=_Unwind_SetEnableExceptionFdeSorting -Wl,--wrap=__register_frame_info_bases -Wl,--wrap=__register_frame_info -Wl,--wrap=__register_frame -Wl,--wrap=__register_frame_info_table_bases -Wl,--wrap=__register_frame_info_table -Wl,--wrap=__register_frame_table -Wl,--wrap=__deregister_frame_info_bases -Wl,--wrap=__deregister_frame_info -Wl,--wrap=_Unwind_Find_FDE -Wl,--wrap=_Unwind_GetGR -Wl,--wrap=_Unwind_GetCFA -Wl,--wrap=_Unwind_GetIP -Wl,--wrap=_Unwind_GetIPInfo -Wl,--wrap=_Unwind_GetRegionStart -Wl,--wrap=_Unwind_GetDataRelBase -Wl,--wrap=_Unwind_GetTextRelBase -Wl,--wrap=_Unwind_SetIP -Wl,--wrap=_Unwind_SetGR -Wl,--wrap=_Unwind_GetLanguageSpecificData -Wl,--wrap=_Unwind_FindEnclosingFunction -Wl,--wrap=_Unwind_Resume -Wl,--wrap=_Unwind_RaiseException -Wl,--wrap=_Unwind_DeleteException -Wl,--wrap=_Unwind_ForcedUnwind -Wl,--wrap=_Unwind_Resume_or_Rethrow -Wl,--wrap=_Unwind_Backtrace -Wl,--wrap=__cxa_call_unexpected -Wl,--eh-frame-hdr -Wl,--wrap=__gxx_personality_v0  -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0'
    CXXFLAGS = CFLAGS

    POST_ACTION = OBJCPY + ' -Oihex $TARGET rtthread.hex\n' + SIZE + ' $TARGET \n'

https://github.com/RT-Thread/rt-thread/actions/runs/10645398186/job/29511156571 请参考这个链接

1078249029 commented 2 months ago

请问现在的工具链可以确保编译成功么? 我在使用esp官方的gcc编译链产生编译错误:

scons: Reading SConscript files ...
CROSS_TOOL= gcc
EXEC_PATH= /home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build/drivers/board.o
riscv32-esp-elf-gcc: fatal error: cannot read spec file 'nosys.specs': No such file or directory
compilation terminated.
scons: *** [build/drivers/board.o] Error 1
scons: building terminated because of errors.

然后我在rtconfig.py文件中指定nosys.specs位置 DEVICE = ' -nostartfiles -march=rv32imc --specs=/usr/lib/riscv32-esp-elf/riscv32-esp-elf/nosys.specs ' 之后又缺失cc1工具,当时使用脚本下载乐鑫的sdk被默认下载到/usr/lib里了,然后我又将cc1复制到了乐鑫默认sdk文件夹里cp /usr/lib/riscv32-esp-elf/libexec/gcc/riscv32-esp-elf/11.2.0/cc1 /home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin 然后又爆出标准库文件丢失的错误

scons: Reading SConscript files ...
CROSS_TOOL= gcc
EXEC_PATH= /home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build/drivers/board.o
In file included from drivers/board.c:12:
packages/ESP-IDF-latest/components/hal/include/hal/systimer_hal.h:9:10: fatal error: stdint.h: No such file or directory
    9 | #include <stdint.h>
      |          ^~~~~~~~~~
compilation terminated.
scons: *** [build/drivers/board.o] Error 1
scons: building terminated because of errors.

根据网上的信息很可能是工具链设置出错,但是我是根据目前最新的教程移植的,请问楼主您最近移植rtt到esp32c3了么?可以编译通过么? 下面是我的环境配置 gcc:

lzx@DESKTOP-EPJK785 ESP32_C3 (master) $ /home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin/riscv32-esp-elf-gcc -v
Using built-in specs.
COLLECT_GCC=/home/lzx/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin/riscv32-esp-elf-gcc
Target: riscv32-esp-elf
Configured with: /builds/idf/crosstool-NG/.build/riscv32-esp-elf/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=riscv32-esp-elf --prefix=/builds/idf/crosstool-NG/builds/riscv32-esp-elf --exec_prefix=/builds/idf/crosstool-NG/builds/riscv32-esp-elf --with-local-prefix=/builds/idf/crosstool-NG/builds/riscv32-esp-elf/riscv32-esp-elf --with-headers=/builds/idf/crosstool-NG/builds/riscv32-esp-elf/riscv32-esp-elf/include --with-newlib --enable-threads=no --disable-shared --with-arch=rv32gc --with-abi=ilp32 --with-pkgversion='crosstool-NG esp-13.2.0_20230928' --disable-__cxa_atexit --enable-cxx-flags=-ffunction-sections --disable-libgomp --disable-libmudflap --disable-libmpx --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libstdcxx-verbose --with-gmp=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools --with-mpfr=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools --with-mpc=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools --with-isl=/builds/idf/crosstool-NG/.build/riscv32-esp-elf/buildtools --enable-lto --enable-target-optspace --without-long-double-128 --disable-nls --enable-multiarch --enable-languages=c,c++ --disable-libstdcxx-verbose --enable-threads=posix --enable-gcov-custom-rtio --enable-libstdcxx-time=yes
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 13.2.0 (crosstool-NG esp-13.2.0_20230928)

rtconfig.py

import os

# toolchains options
ARCH        ='risc-v'
CPU         =''
CROSS_TOOL  ='gcc'

if os.getenv('RTT_CC'):
    CROSS_TOOL = os.getenv('RTT_CC')
print("CROSS_TOOL=",CROSS_TOOL)

if CROSS_TOOL == 'gcc':
    PLATFORM    = 'gcc'
    EXEC_PATH   = r'~/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin'
#    EXEC_PATH   = r'~/.espressif/tools/riscv32-esp-elf/esp-2021r2-patch5-8.4.0/riscv32-esp-elf/bin/'  # 三套编译链都试过了,后两套找不到ll库
#    EXEC_PATH   = r'~/.espressif/tools/riscv32-esp-elf/esp-13.2.0_20230928/riscv32-esp-elf/bin'
else:
    print('Please make sure your toolchains is GNU GCC!')
    exit(0)

if os.getenv('RTT_EXEC_PATH'):
    EXEC_PATH = os.getenv('RTT_EXEC_PATH')
EXEC_PATH = os.path.expanduser(EXEC_PATH)
print("EXEC_PATH=",EXEC_PATH)
BUILD = 'debug'

if PLATFORM == 'gcc':
    # toolchains
    PREFIX = 'riscv32-esp-elf-'
    CC = PREFIX + 'gcc'
    CXX = PREFIX + 'g++'
    AS = PREFIX + 'gcc'
    AR = PREFIX + 'ar'
    LINK = PREFIX + 'g++'
    TARGET_EXT = 'elf'
    SIZE = PREFIX + 'size'
    OBJDUMP = PREFIX + 'objdump'
    OBJCPY = PREFIX + 'objcopy'
    STRIP = PREFIX + 'strip'

    DEVICE  = ' -nostartfiles -march=rv32imc --specs=/usr/lib/riscv32-esp-elf/riscv32-esp-elf/nosys.specs '
    CFLAGS = DEVICE + '-gdwarf-4 -ggdb -Og'
    AFLAGS =  ' -c' + DEVICE + ' -x assembler-with-cpp'
    LFLAGS = DEVICE + ' -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0 -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,_start -T idf_port/ld/memory.ld -T idf_port/ld/sections.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.api.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.libgcc.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.version.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.eco3.ld -T packages/ESP-IDF-latest/components/soc/esp32c3/ld/esp32c3.peripherals.ld  -Wl,--wrap=_Unwind_SetEnableExceptionFdeSorting -Wl,--wrap=__register_frame_info_bases -Wl,--wrap=__register_frame_info -Wl,--wrap=__register_frame -Wl,--wrap=__register_frame_info_table_bases -Wl,--wrap=__register_frame_info_table -Wl,--wrap=__register_frame_table -Wl,--wrap=__deregister_frame_info_bases -Wl,--wrap=__deregister_frame_info -Wl,--wrap=_Unwind_Find_FDE -Wl,--wrap=_Unwind_GetGR -Wl,--wrap=_Unwind_GetCFA -Wl,--wrap=_Unwind_GetIP -Wl,--wrap=_Unwind_GetIPInfo -Wl,--wrap=_Unwind_GetRegionStart -Wl,--wrap=_Unwind_GetDataRelBase -Wl,--wrap=_Unwind_GetTextRelBase -Wl,--wrap=_Unwind_SetIP -Wl,--wrap=_Unwind_SetGR -Wl,--wrap=_Unwind_GetLanguageSpecificData -Wl,--wrap=_Unwind_FindEnclosingFunction -Wl,--wrap=_Unwind_Resume -Wl,--wrap=_Unwind_RaiseException -Wl,--wrap=_Unwind_DeleteException -Wl,--wrap=_Unwind_ForcedUnwind -Wl,--wrap=_Unwind_Resume_or_Rethrow -Wl,--wrap=_Unwind_Backtrace -Wl,--wrap=__cxa_call_unexpected -Wl,--eh-frame-hdr -Wl,--wrap=__gxx_personality_v0  -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0'
    CXXFLAGS = CFLAGS

    POST_ACTION = OBJCPY + ' -Oihex $TARGET rtthread.hex\n' + SIZE + ' $TARGET \n'

https://github.com/RT-Thread/rt-thread/actions/runs/10645398186/job/29511156571 请参考这个链接

谢谢,根据action已经配好了。应该是我之前下载esp-if工具链冲突了。后期我看看能不能把spi和pwm的驱动给补上

supperthomas commented 2 months ago

ok, 感谢反馈

1078249029 commented 1 month ago

这是我写的spi驱动,大佬看看还有什么问题? @supperthomas