RISCV学习(2)玄铁C910处理器体验

news2025/1/30 16:42:49

笔者有幸参加了平头哥RISCV开发者大赛,体验了一下基于玄铁C910内核的矽速开发板。

1、开发板介绍

LicheePi 4A 是基于 Lichee Module 4A 核心板的 高性能 RISC-V Linux 开发板。

  • TH1520 为主控核心(4xC910@1.85G, RV64GCV,4TOPS@int8 NPU, 50GFLOP GPU)
  • 板载最大 16GB 64bit LPDDR4X,128GB eMMC,
  • 支持 HDMI+MIPI 双4K 显示输出,
  • 支持 4K 摄像头接入,
  • 支持双千兆网口(其中一个支持POE供电)
  • 4 个 USB3.0 接口,
  • 多种音频输入输出(由专用 C906 核心处理)。-

在这里插入图片描述

2、GCC工具链使用

GCC的工具链安装,参考Licheepi GCC工具链安装。

  • 查看gcc的工具链版本
root@lpi4a:~# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/riscv64-linux-gnu/10/lto-wrapper
Target: riscv64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 10.4.0-8revyos2.4' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=riscv64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libsanitizer --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-multilib --with-arch=rv64gcv0p7_zfh_xtheadc --with-abi=lp64d --enable-checking=release --build=riscv64-linux-gnu --host=riscv64-linux-gnu --target=riscv64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.4.0 (Debian 10.4.0-8revyos2.4)
  • 直接编译hello.c程序,提示需要设置xthreadc的版本,其实并不知道如何处理,经过查资料后发现,需要指明架构和二进制接口版本
gcc hello.c
Assembler messages:
Error: x ISA extension `xtheadc' must be set with the versions
  • 然后根据提示指明了架构,发现对应的头文件找不到,怀疑工具链没安装对,重新安装了,但是依然没什么用,之后又重启了,还是不行,看来还得继续找问题。
gcc hello.c   -march=rv64imc
In file included from /usr/include/features.h:513,
                 from /usr/include/riscv64-linux-gnu/bits/libc-header-start.h:33,
                 from /usr/include/stdio.h:27,
                 from hello.c:1:
/usr/include/riscv64-linux-gnu/gnu/stubs.h:14:11: fatal error: gnu/stubs-lp64.h: No such file or directory
   14 | # include <gnu/stubs-lp64.h>
  • 然后就看一下该文件的内容,以及去该目录下面搜索了有哪些文件
root@lpi4a:~# ls /usr/include/riscv64-linux-gnu/gnu/stubs.h
/usr/include/riscv64-linux-gnu/gnu/stubs.h
root@lpi4a:~# cat /usr/include/riscv64-linux-gnu/gnu/stubs.h
/* This file is automatically generated.
   This file selects the right generated file of `__stub_FUNCTION' macros
   based on the architecture being compiled for.  */

#include <bits/wordsize.h>

#if __WORDSIZE == 32 && defined __riscv_float_abi_soft
# include <gnu/stubs-ilp32.h>
#endif
#if __WORDSIZE == 32 && defined __riscv_float_abi_double
# include <gnu/stubs-ilp32d.h>
#endif
#if __WORDSIZE == 64 && defined __riscv_float_abi_soft
# include <gnu/stubs-lp64.h>
#endif
#if __WORDSIZE == 64 && defined __riscv_float_abi_double
# include <gnu/stubs-lp64d.h>
#endif
ls /usr/include/riscv64-linux-gnu/gnu/
lib-names-lp64d.h  lib-names.h  libc-version.h  stubs-lp64d.h  stubs.h
  • 看到这里就突然知道,需要指明对应的版本,不然相应的头文件找不到,果然和常规的GCC工具链使用还是有区别,增加了相应的abl版本后,发现march也需要版本,
gcc hello.c -march=rv64imc -mabi=lp64d
cc1: error: requested ABI requires '-march' to subsume the 'D' extension
  • 在架构方面增加了d,发现还是不对,提示第一个指令集是e/i/g,还得修改
gcc hello.c -march=rv64dimc -mabi=lp64d
gcc: error: '-march=rv64dimc': first ISA subset must be 'e', 'i' or 'g'
  • 然后修改了abl的,改成了e,发现abl的版本里面没有这个,必须是lp64d,所以又得改回去
gcc hello.c -march=rv64imc -mabi=lp64e
gcc: error: unrecognized argument in option '-mabi=lp64e'
gcc: note: valid arguments to '-mabi=' are: ilp32 ilp32d ilp32e ilp32f lp64 lp64d lp64dv lp64f lp64v; did you mean 'lp64'?

  • 最后在march指令集的后面增加d,可以了,终于gcc工具链可以正常使用了。
root@lpi4a:~# gcc hello.c -march=rv64imafd -mabi=lp64d
root@lpi4a:~#

  • readelf工具可以查看其out文件信息,RISC-V的machine的64位机器版本
root@lpi4a:~# readelf -a a.out
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Position-Independent Executable file)
  Machine:                           RISC-V
  Version:                           0x1
  Entry point address:               0x5b0
  Start of program headers:          64 (bytes into file)
  Start of section headers:          7168 (bytes into file)
  Flags:                             0x5, RVC, double-float ABI
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         10
  Size of section headers:           64 (bytes)
  Number of section headers:         28
  Section header string table index: 27
  • 再看看其他Section、Segment等信息
Section Headers:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
  [ 0]                   NULL             0000000000000000  00000000
       0000000000000000  0000000000000000           0     0     0
  [ 1] .interp           PROGBITS         0000000000000270  00000270
       0000000000000021  0000000000000000   A       0     0     1
  [ 2] .note.gnu.bu[...] NOTE             0000000000000294  00000294
       0000000000000024  0000000000000000   A       0     0     4
  [ 3] .note.ABI-tag     NOTE             00000000000002b8  000002b8
       0000000000000020  0000000000000000   A       0     0     4
  [ 4] .gnu.hash         GNU_HASH         00000000000002d8  000002d8
       0000000000000024  0000000000000000   A       5     0     8
  [ 5] .dynsym           DYNSYM           0000000000000300  00000300
       00000000000000c0  0000000000000018   A       6     2     8
  [ 6] .dynstr           STRTAB           00000000000003c0  000003c0
       000000000000007d  0000000000000000   A       0     0     1
  [ 7] .gnu.version      VERSYM           000000000000043e  0000043e
       0000000000000010  0000000000000002   A       5     0     2
  [ 8] .gnu.version_r    VERNEED          0000000000000450  00000450
       0000000000000030  0000000000000000   A       6     1     8
  [ 9] .rela.dyn         RELA             0000000000000480  00000480
       00000000000000c0  0000000000000018   A       5     0     8
  [10] .rela.plt         RELA             0000000000000540  00000540
       0000000000000030  0000000000000018  AI       5    21     8
  [11] .plt              PROGBITS         0000000000000570  00000570
       0000000000000040  0000000000000010  AX       0     0     16
  [12] .text             PROGBITS         00000000000005b0  000005b0
       0000000000000108  0000000000000000  AX       0     0     16
  [13] .rodata           PROGBITS         00000000000006b8  000006b8
       0000000000000015  0000000000000000   A       0     0     8
  [14] .eh_frame_hdr     PROGBITS         00000000000006d0  000006d0
       0000000000000014  0000000000000000   A       0     0     4
  [15] .eh_frame         PROGBITS         00000000000006e8  000006e8
       000000000000002c  0000000000000000   A       0     0     8
  [16] .preinit_array    PREINIT_ARRAY    0000000000001e08  00000e08
       0000000000000008  0000000000000008  WA       0     0     1
  [17] .init_array       INIT_ARRAY       0000000000001e10  00000e10
       0000000000000008  0000000000000008  WA       0     0     8
  [18] .fini_array       FINI_ARRAY       0000000000001e18  00000e18
       0000000000000008  0000000000000008  WA       0     0     8
  [19] .dynamic          DYNAMIC          0000000000001e20  00000e20
       00000000000001e0  0000000000000010  WA       6     0     8
  [20] .data             PROGBITS         0000000000002000  00001000
       0000000000000008  0000000000000000  WA       0     0     8
  [21] .got              PROGBITS         0000000000002008  00001008
       0000000000000048  0000000000000008  WA       0     0     8
  [22] .bss              NOBITS           0000000000002050  00001050
       0000000000000008  0000000000000000  WA       0     0     1
  [23] .comment          PROGBITS         0000000000000000  00001050
       0000000000000027  0000000000000001  MS       0     0     1
  [24] .riscv.attributes RISCV_ATTRIBUTE  0000000000000000  00001077
       0000000000000106  0000000000000000           0     0     1
  [25] .symtab           SYMTAB           0000000000000000  00001180
       0000000000000630  0000000000000018          26    47     8
  [26] .strtab           STRTAB           0000000000000000  000017b0
       000000000000033c  0000000000000000           0     0     1
  [27] .shstrtab         STRTAB           0000000000000000  00001aec
       000000000000010f  0000000000000000           0     0     1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
  L (link order), O (extra OS processing required), G (group), T (TLS),
  C (compressed), x (unknown), o (OS specific), E (exclude),
  D (mbind), p (processor specific)

There are no section groups in this file.

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  PHDR           0x0000000000000040 0x0000000000000040 0x0000000000000040
                 0x0000000000000230 0x0000000000000230  R      0x8
  INTERP         0x0000000000000270 0x0000000000000270 0x0000000000000270
                 0x0000000000000021 0x0000000000000021  R      0x1
      [Requesting program interpreter: /lib/ld-linux-riscv64-lp64d.so.1]
  RISCV_ATTRIBUT 0x0000000000001077 0x0000000000000000 0x0000000000000000
                 0x0000000000000106 0x0000000000000000  R      0x1
  LOAD           0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x0000000000000714 0x0000000000000714  R E    0x1000
  LOAD           0x0000000000000e08 0x0000000000001e08 0x0000000000001e08
                 0x0000000000000248 0x0000000000000250  RW     0x1000
  DYNAMIC        0x0000000000000e20 0x0000000000001e20 0x0000000000001e20
                 0x00000000000001e0 0x00000000000001e0  RW     0x8
  NOTE           0x0000000000000294 0x0000000000000294 0x0000000000000294
                 0x0000000000000044 0x0000000000000044  R      0x4
  GNU_EH_FRAME   0x00000000000006d0 0x00000000000006d0 0x00000000000006d0
                 0x0000000000000014 0x0000000000000014  R      0x4
  GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x0000000000000000 0x0000000000000000  RW     0x10
  GNU_RELRO      0x0000000000000e08 0x0000000000001e08 0x0000000000001e08
                 0x00000000000001f8 0x00000000000001f8  R      0x1

 Section to Segment mapping:
  Segment Sections...
   00
   01     .interp
   02     .riscv.attributes
   03     .interp .note.gnu.build-id .note.ABI-tag .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .plt .text .rodata .eh_frame_hdr .eh_frame
   04     .preinit_array .init_array .fini_array .dynamic .data .got .bss
   05     .dynamic
   06     .note.gnu.build-id .note.ABI-tag
   07     .eh_frame_hdr
   08
   09     .preinit_array .init_array .fini_array .dynamic

Dynamic section at offset 0xe20 contains 26 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000020 (PREINIT_ARRAY)      0x1e08
 0x0000000000000021 (PREINIT_ARRAYSZ)    8 (bytes)
 0x0000000000000019 (INIT_ARRAY)         0x1e10
 0x000000000000001b (INIT_ARRAYSZ)       8 (bytes)
 0x000000000000001a (FINI_ARRAY)         0x1e18
 0x000000000000001c (FINI_ARRAYSZ)       8 (bytes)
 0x000000006ffffef5 (GNU_HASH)           0x2d8
 0x0000000000000005 (STRTAB)             0x3c0
 0x0000000000000006 (SYMTAB)             0x300
 0x000000000000000a (STRSZ)              125 (bytes)
 0x000000000000000b (SYMENT)             24 (bytes)
 0x0000000000000015 (DEBUG)              0x0
 0x0000000000000003 (PLTGOT)             0x2008
 0x0000000000000002 (PLTRELSZ)           48 (bytes)
 0x0000000000000014 (PLTREL)             RELA
 0x0000000000000017 (JMPREL)             0x540
 0x0000000000000007 (RELA)               0x480
 0x0000000000000008 (RELASZ)             240 (bytes)
 0x0000000000000009 (RELAENT)            24 (bytes)
 0x000000006ffffffb (FLAGS_1)            Flags: PIE
 0x000000006ffffffe (VERNEED)            0x450
 0x000000006fffffff (VERNEEDNUM)         1
 0x000000006ffffff0 (VERSYM)             0x43e
 0x000000006ffffff9 (RELACOUNT)          5
 0x0000000000000000 (NULL)               0x0

Relocation section '.rela.dyn' at offset 0x480 contains 8 entries:
  Offset          Info           Type           Sym. Value    Sym. Name + Addend
000000001e08  000000000003 R_RISCV_RELATIVE                     5d2
000000001e10  000000000003 R_RISCV_RELATIVE                     680
000000001e18  000000000003 R_RISCV_RELATIVE                     640
000000002000  000000000003 R_RISCV_RELATIVE                     2000
000000002038  000000000003 R_RISCV_RELATIVE                     684
000000002030  000300000002 R_RISCV_64        0000000000000000 _ITM_deregisterTM[...] + 0
000000002040  000500000002 R_RISCV_64        0000000000000000 __cxa_finalize@GLIBC_2.27 + 0
000000002048  000600000002 R_RISCV_64        0000000000000000 _ITM_registerTMCl[...] + 0

Relocation section '.rela.plt' at offset 0x540 contains 2 entries:
  Offset          Info           Type           Sym. Value    Sym. Name + Addend
000000002018  000200000005 R_RISCV_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0
000000002020  000400000005 R_RISCV_JUMP_SLOT 0000000000000000 puts@GLIBC_2.27 + 0

The decoding of unwind sections for machine type RISC-V is not currently supported.

Symbol table '.dynsym' contains 8 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 00000000000005b0     0 SECTION LOCAL  DEFAULT   12 .text
     2: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND _[...]@GLIBC_2.34 (2)
     3: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_deregisterT[...]
     4: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND puts@GLIBC_2.27 (3)
     5: 0000000000000000     0 FUNC    WEAK   DEFAULT  UND _[...]@GLIBC_2.27 (3)
     6: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_registerTMC[...]
     7: 0000000000000684    52 FUNC    GLOBAL DEFAULT   12 main

Symbol table '.symtab' contains 66 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 0000000000000270     0 SECTION LOCAL  DEFAULT    1 .interp
     2: 0000000000000294     0 SECTION LOCAL  DEFAULT    2 .note.gnu.build-id
     3: 00000000000002b8     0 SECTION LOCAL  DEFAULT    3 .note.ABI-tag
     4: 00000000000002d8     0 SECTION LOCAL  DEFAULT    4 .gnu.hash
     5: 0000000000000300     0 SECTION LOCAL  DEFAULT    5 .dynsym
     6: 00000000000003c0     0 SECTION LOCAL  DEFAULT    6 .dynstr
     7: 000000000000043e     0 SECTION LOCAL  DEFAULT    7 .gnu.version
     8: 0000000000000450     0 SECTION LOCAL  DEFAULT    8 .gnu.version_r
     9: 0000000000000480     0 SECTION LOCAL  DEFAULT    9 .rela.dyn
    10: 0000000000000540     0 SECTION LOCAL  DEFAULT   10 .rela.plt
    11: 0000000000000570     0 SECTION LOCAL  DEFAULT   11 .plt
    12: 00000000000005b0     0 SECTION LOCAL  DEFAULT   12 .text
    13: 00000000000006b8     0 SECTION LOCAL  DEFAULT   13 .rodata
    14: 00000000000006d0     0 SECTION LOCAL  DEFAULT   14 .eh_frame_hdr
    15: 00000000000006e8     0 SECTION LOCAL  DEFAULT   15 .eh_frame
    16: 0000000000001e08     0 SECTION LOCAL  DEFAULT   16 .preinit_array
    17: 0000000000001e10     0 SECTION LOCAL  DEFAULT   17 .init_array
    18: 0000000000001e18     0 SECTION LOCAL  DEFAULT   18 .fini_array
    19: 0000000000001e20     0 SECTION LOCAL  DEFAULT   19 .dynamic
    20: 0000000000002000     0 SECTION LOCAL  DEFAULT   20 .data
    21: 0000000000002008     0 SECTION LOCAL  DEFAULT   21 .got
    22: 0000000000002050     0 SECTION LOCAL  DEFAULT   22 .bss
    23: 0000000000000000     0 SECTION LOCAL  DEFAULT   23 .comment
    24: 0000000000000000     0 SECTION LOCAL  DEFAULT   24 .riscv.attributes
    25: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS Scrt1.o
    26: 00000000000002b8    32 OBJECT  LOCAL  DEFAULT    3 __abi_tag
    27: 00000000000005b0     0 NOTYPE  LOCAL  DEFAULT   12 $xrv64i2p0_m2p0_[...]
    28: 00000000000005d2     0 NOTYPE  LOCAL  DEFAULT   12 load_gp
    29: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS crtstuff.c
    30: 00000000000005e0     0 NOTYPE  LOCAL  DEFAULT   12 $xrv64i2p0_m2p0_[...]
    31: 00000000000005e0     0 FUNC    LOCAL  DEFAULT   12 deregister_tm_clones
    32: 0000000000000610     0 FUNC    LOCAL  DEFAULT   12 register_tm_clones
    33: 0000000000000640     0 FUNC    LOCAL  DEFAULT   12 __do_global_dtors_aux
    34: 0000000000002050     1 OBJECT  LOCAL  DEFAULT   22 completed.0
    35: 0000000000001e18     0 OBJECT  LOCAL  DEFAULT   18 __do_global_dtor[...]
    36: 0000000000000680     0 FUNC    LOCAL  DEFAULT   12 frame_dummy
    37: 0000000000001e10     0 OBJECT  LOCAL  DEFAULT   17 __frame_dummy_in[...]
    38: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS hello.c
    39: 0000000000000684     0 NOTYPE  LOCAL  DEFAULT   12 $xrv64i2p0_m2p0_[...]
    40: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS crtstuff.c
    41: 0000000000000710     0 OBJECT  LOCAL  DEFAULT   15 __FRAME_END__
    42: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS
    43: 0000000000000570     0 OBJECT  LOCAL  DEFAULT  ABS _PROCEDURE_LINKA[...]
    44: 0000000000001e20     0 OBJECT  LOCAL  DEFAULT  ABS _DYNAMIC
    45: 00000000000006d0     0 NOTYPE  LOCAL  DEFAULT   14 __GNU_EH_FRAME_HDR
    46: 0000000000002028     0 OBJECT  LOCAL  DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
    47: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __libc_start_mai[...]
    48: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_deregisterT[...]
    49: 0000000000002000     0 NOTYPE  WEAK   DEFAULT   20 data_start
    50: 0000000000002058     0 NOTYPE  GLOBAL DEFAULT   22 __BSS_END__
    51: 0000000000002050     0 NOTYPE  GLOBAL DEFAULT   21 _edata
    52: 0000000000002050     0 NOTYPE  GLOBAL DEFAULT   21 __SDATA_BEGIN__
    53: 0000000000002000     0 NOTYPE  GLOBAL DEFAULT   20 __DATA_BEGIN__
    54: 0000000000002000     0 NOTYPE  GLOBAL DEFAULT   20 __data_start
    55: 0000000000002000     0 OBJECT  GLOBAL HIDDEN    20 __dso_handle
    56: 00000000000006b8     4 OBJECT  GLOBAL DEFAULT   13 _IO_stdin_used
    57: 0000000000002058     0 NOTYPE  GLOBAL DEFAULT   22 _end
    58: 00000000000005b0    34 FUNC    GLOBAL DEFAULT   12 _start
    59: 0000000000002800     0 NOTYPE  GLOBAL DEFAULT  ABS __global_pointer$
    60: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND puts@GLIBC_2.27
    61: 0000000000002050     0 NOTYPE  GLOBAL DEFAULT   22 __bss_start
    62: 0000000000000684    52 FUNC    GLOBAL DEFAULT   12 main
    63: 0000000000000000     0 FUNC    WEAK   DEFAULT  UND __cxa_finalize@G[...]
    64: 0000000000002008     0 OBJECT  GLOBAL HIDDEN    21 __TMC_END__
    65: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_registerTMC[...]

Histogram for `.gnu.hash' bucket list length (total of 2 buckets):
 Length  Number     % of total  Coverage
      0  1          ( 50.0%)
      1  1          ( 50.0%)    100.0%

Version symbols section '.gnu.version' contains 8 entries:
 Addr: 0x000000000000043e  Offset: 0x0000043e  Link: 5 (.dynsym)
  000:   0 (*local*)       0 (*local*)       2 (GLIBC_2.34)    1 (*global*)
  004:   3 (GLIBC_2.27)    3 (GLIBC_2.27)    1 (*global*)      1 (*global*)

Version needs section '.gnu.version_r' contains 1 entry:
 Addr: 0x0000000000000450  Offset: 0x00000450  Link: 6 (.dynstr)
  000000: Version: 1  File: libc.so.6  Cnt: 2
  0x0010:   Name: GLIBC_2.27  Flags: none  Version: 3
  0x0020:   Name: GLIBC_2.34  Flags: none  Version: 2

Displaying notes found in: .note.gnu.build-id
  Owner                Data size        Description
  GNU                  0x00000014       NT_GNU_BUILD_ID (unique build ID bitstring)
    Build ID: 04af9f13e57b18e206a946570b7a6c8f6a078c86

Displaying notes found in: .note.ABI-tag
  Owner                Data size        Description
  GNU                  0x00000010       NT_GNU_ABI_TAG (ABI version tag)
    OS: Linux, ABI: 4.15.0
Attribute Section: riscv
File Attributes
  • 最后这个目标板的架构
  Tag_RISCV_arch: "rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0_v0p7_zmmul1p0_zfh1p0_zfhmin1p0_xtheadba1p0_xtheadbb1p0_xtheadbs1p0_xtheadc1p0_xtheadcmo1p0_xtheadcondmov1p0_xtheadfmemidx1p0_xtheadfmv1p0_xtheadint1p0_xtheadmac1p0_xtheadmemidx1p0_xtheadmempair1p0_xtheadsync1p0"
  • 1
  • 1
  • 1
  • 1

注意事项:
1、安装是需要后面添加参数 --fix-missing(根据提示)
2、安装时系统可能会卡死,这时候安装包可能损坏,需要修复这个问题,dpkg --configure -a,
在这里插入图片描述
3、继续安装的时候,又会发现没有依赖或者依赖关系不对,需要apt --fix-broken install
在这里插入图片描述

3、参考

LicheePi Wiki

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

毕业图形采集【个人】

毕业图形采集【个人】 前言版权推荐毕业图形采集介绍步骤如何查看个人二维码 最后 前言 2023-10-15 12:09:57 以下内容源自《【个人】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://blog.csdn.ne…

【C++】笔试训练(六)

目录 一、选择题二、编程题1、不要二2、把字符串转换成整数 一、选择题 1、十进制变量i的值为100&#xff0c;那么八进制的变量i的值为&#xff08;&#xff09; A 146 B 148 C 144 D 142 答案&#xff1a;C 2、执行下面语句后的输出为 int I 1; if (I < 0)printf("…

LightGBM-平分卡

文章目录 一、数据集处理二、定义模型训练和画图 三、好人的概率/坏人的概率四、生成报告五、行为评分卡模型表现总结 一、数据集处理 import pandas as pd from sklearn.metrics import roc_auc_score,roc_curve,auc from sklearn.model_selection import train_test_split f…

【无人机】太阳能伪卫星VoLTE无人机设计(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

蓝桥杯(迷宫,C++)

输入&#xff1a; 思路&#xff1a; 1、注意输入用字符串。 2、采用广度搜素的方法来求解。 3、因为最后要求字典序最小且D<L<R<U,所以在遍历四个方向的时候&#xff0c; 先向下&#xff0c;再向左、右&#xff0c;最后向上。 #include<iostream> #include…

“历史性判决:SEC 放弃上诉!灰度赢得比特币ETF转换!“

"这一决定是在一场法律战和数月的预期之后做出的&#xff0c;可能标志着监管格局将转向批准现货比特币ETF。" 据路透社报道&#xff0c;一项重大进展是&#xff0c;美国证券交易委员会 (SEC) 决定不对最近法院支持 Grayscale Investments 比特币 ETF 转换计划的…

Python算法练习 10.15

leetcode 2130 链表的最大孪生和 在一个大小为 n 且 n 为 偶数 的链表中&#xff0c;对于 0 < i < (n / 2) - 1 的 i &#xff0c;第 i 个节点&#xff08;下标从 0 开始&#xff09;的孪生节点为第 (n-1-i) 个节点 。 比方说&#xff0c;n 4 那么节点 0 是节点 3 的孪…

Hadoop3教程(九):MapReduce框架原理概述

文章目录 简介参考文献 简介 这属于整个MR中最核心的一块&#xff0c;后续小节会展开描述。 整个MR处理流程&#xff0c;是分为Map阶段和Reduce阶段。 一般&#xff0c;我们称Map阶段的进程是MapTask&#xff0c;称Reduce阶段是ReduceTask。 其完整的工作流程如图&#xff…

(十一)Powershell调用java实验

先随便写个java类 package demo;public class Test {public static void main(String[] args) {int ret 123;System.out.println(ret);}}2.打包 直接结束&#xff0c;生成jar包 3.powershell调用 $p Start-Process java -ArgumentList -jar /Users/sixdog/Documents/windo…

基于Jaya优化算法的电力系统最优潮流研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【问题思考总结】为什么一点的泰勒展开可以在任意点逼近函数?【泰勒公式 泰勒定理的适用范围】

泰勒公式&#xff08;带皮亚诺余项的n阶泰勒公式&#xff09;指出了在一点可以用泰勒公式拟合出多项式函数进行无穷逼近&#xff0c;而因为只用到了一点n阶导数值&#xff0c;因此在该点n阶可导即可&#xff0c;是关于一个点的定性分析&#xff0c;一般用于求极限。 泰勒定理&…

Nginx:虚拟主机(原理+案例)

示意图&#xff1a; 虚拟主机 虚拟主机是一种特殊的互联网服务&#xff0c;让你的网站能够在互联网上被访问。通过虚拟主机&#xff0c;多个网站可以共享一个物理服务器的资源&#xff0c;包括 CPU、内存、硬盘存储和网络带宽。每个网站在虚拟主机上运行&#xff0c;就如同它们…

CSDN里的常用网址(2)

你问我为啥要写这篇&#xff0c;一是因为我自己总是记不住&#xff0c;二是想给大家提供便捷&#xff0c;懂了吧&#xff01; 1、需求广场https://download.csdn.net/taskCenter/home?utm_sourceupload_qplaza_infopage_windhttps://download.csdn.net/taskCenter/home?utm_…

C++笔记之一个轻量级的线程池库threadpool

C笔记之一个轻量级的线程池库threadpool code review! 抄自&#xff1a;https://github.com/lzpong/ 文章目录 C笔记之一个轻量级的线程池库threadpool1.threadpool.h2.使用&#xff1a;test2.cc3.使用&#xff1a;test1.cc4.代码 1.threadpool.h 2.使用&#xff1a;test2.cc…

【医学影像处理】基于MRIcron的dcm2nii批量dcm转nii格式

MRIcron下载 MRIcron下载官网 选择适合自己环境的版本&#xff0c;我使用的是windows版本 MRIcron介绍 MRICron是一款用于处理磁共振成像&#xff08;MRI&#xff09;数据的免费开源软件工具。它是一个功能强大的图像处理程序&#xff0c;主要用于可视化、分析和处理医学影…

代码更换了目录,没有任何变更,但Idea编辑器却提示所有代码都变更了?

开发环境&#xff1a; springboot 2.4.3idea 2020 问题描述&#xff1a; 1、代码copy到U盘了&#xff0c;今天用idea打开U盘代码&#xff0c;却提示所有代码都被修改了 2、diff 文件看了&#xff0c;其实并没有任何修改&#xff0c;因为就算不小心误改了&#xff0c;也不能全…

36.树与二叉树练习(2)(王道第5章综合练习)

试题1&#xff08;王道5.3.3节第16题&#xff09;&#xff1a; 设计算法将二叉树的叶结点按从左到右的顺序连成单链表&#xff0c;连接时使用叶结点的右指针域存放单链表指针。 借助遍历算法完成&#xff1a; //根据二叉树层次遍历序列构造单链表 void LevelOrdertoLinkList…

Qt事件传播机制 day8

Qt事件传播机制 day8 事件的接受和忽略 当空间忽略事件时&#xff0c;事件会继续往上传播&#xff0c;这里的传播指传播给父组件QEvent有accept()函数与ignore()函数 accept()&#xff1a;本组件处理该事件&#xff0c;这个事件就不会被继续传播给其父组件ignore()&#xff1…

spring boot Rabbit高级教程

消息可靠性 生产者重试机制 首先第一种情况&#xff0c;就是生产者发送消息时&#xff0c;出现了网络故障&#xff0c;导致与MQ的连接中断。 为了解决这个问题&#xff0c;SpringAMQP提供的消息发送时的重试机制。即&#xff1a;当RabbitTemplate与MQ连接超时后&#xff0c;…

分类预测 | MATLAB实现SSA-CNN-LSTM-Attention数据分类预测

分类预测 | MATLAB实现SSA-CNN-LSTM-Attention数据分类预测 目录 分类预测 | MATLAB实现SSA-CNN-LSTM-Attention数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现WOA-CNN-LSTM-Attention数据分类预测&#xff0c;运行环境Matlab2021b及以…