全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS编译开发说明

3、RTOS编译开发说明

3.1、RTOS SDK与TinaLinux开发环境

RTOS SDK相关代码已集成到Tina Linux开发环境,Tina Linux开发环境下的rtos子目录即为RTOS开发环境。

├──brandy
├──bsp
├──build
├──buildroot
├──build.sh >build/top_build.sh
├──device
├──kernel
├──openwrt
├──out
├──platform
├──prebuilt
├──rtos	#RTOS环境
├──tee_kit
├──test
└──tools

3.2、RTOS编译

Tina集成了RTOS的编译、打包功能,而且适用于openwrt、buildroot等文件系统。这里以T113 S4平台作为例子进行阐述。

3.2.1、关联RTOS方案

TinaLinux的SDK中,SDK根目录下有device目录,该目录存放的是不同处理器平台及主板的配置,以SBC-T113S4_NAND为例,它是以T113_S4为主控制器的,其配置文件就存放在device/config/chips/t113_s4/configs/sbc_t113s4_nand目录下,那么该主板如何关联RTOS方案呢?

xxx@xxx:~/workspace/t113_tina5.0/t113_tinasdk5.0-v1/device/config/chips/t113_s4/configs/sbc_t113s4_nand$ tree -l
.
├── bin
│   ├── amp_dsp0.bin
│   └── amp_rv0.bin
├── BoardConfig.mk //关联RTOS项目的关键
├── board.dts -> linux-5.4/board.dts
├── bsp
│   ├── env.cfg
│   └── sys_partition.fex
├── buildroot
│   ├── BoardConfig.mk
│   ├── BoardConfig_nor.mk
│   ├── bootlogo.bmp
│   ├── env_nor.cfg
│   ├── swupdate
│   │   ├── env_ab.cfg
│   │   ├── sw-description-ab
│   │   ├── sw-description-ab-rdiff
│   │   ├── sw-description-recovery
│   │   ├── sw-description-recovery-sign
│   │   ├── sw-subimgs-ab.cfg
│   │   ├── sw-subimgs-ab-rdiff.cfg
│   │   ├── sw-subimgs-recovery.cfg
│   │   ├── sw-subimgs-recovery-secure.cfg
│   │   ├── sw-subimgs-recovery-sign.cfg
│   │   ├── sys_partition_ab.fex
│   │   └── sys_partition_recovery.fex
│   ├── sys_partition.fex
│   └── sys_partition_nor.fex
├── linux-5.4
│   ├── board_backup.dts
│   ├── board.dts
│   ├── board_lvds1024x600.dts
│   ├── board_lvds1024x768.dts
│   ├── board_old.dts
│   ├── board_spi4bit_drv30.dts
│   ├── board_spi4bit.dts
│   ├── board_spi_sbc-t113s_v1p0.dts
│   ├── board_tft1024x600.dts
│   ├── board_uart3.dts
│   ├── board_xr829_sbc-t113s_v1p1.dts
│   ├── config-5.4
│   ├── config-5.4-recovery
│   ├── config_uart3-5.4
│   ├── env.cfg
│   ├── env_uart3.cfg
│   └── sys_partition.fex
├── openwrt
│   ├── bootlogo.bmp
│   ├── sys_partition.fex
│   └── sys_partition_nor.fex
├── sys_config.fex
├── sys_config_old.fex
├── sys_config_uart3.fex
├── uboot-board_backup.dts
├── uboot-board.dts
├── uboot-board-lvds-lcd1024x600.dts
├── uboot-board_spi0_1wire.dts
├── uboot-board_spi_sbc-t113s_v1p0.dts
├── uboot-board_spi_sbc-t113s_v1p1.dts
└── uboot-board-tft-lcd1024x600.dts

在这些配置文件中有一个文件BoardConfig.mk,它就是关联RTOS应用的关键,这个文件的内容如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

配置RTOS方案名的关键字段LICHEE_RTOS_PROJECT_NAME:=xxxxx。以我司SBC-T113S主板为例,在BoardConfig.mk中配置的是t113_s4_c906_evb1_auto的RTOS方案。开发者可以通过修改LICHEE_RTOS_PROJECT_NAME字段,更改构建RTOS方案。
先进入Tina的rtos目录,rtos目录的内容如下:

├──board
├──envsetup.sh >tools/scripts/source_envsetup.sh
├──lichee
├──out
└──tools

执行如下指令进行RTOS的环境配置

source envsetup.sh	#配置环境变量

我们看到可以选择的RTOS方案,即是LICHEE_RTOS_PROJECT_NAME字段可以配置的RTOS方案。

last=t113_s4_c906_evb1_auto
You're building on Linux
Lunch menu... pick a combo:1. t113_i_c906_evb1_auto2. t113_s3p_c906_evb1_auto3. t113_s3p_c906_evb1_auto_fastboot4. t113_s3p_c906_evb1_auto_fastboot_video5. t113_s3p_c906_evb1_auto_non_os6. t113_s3p_c906_example_demo7. t113_s4_c906_evb1_auto8. t113_s4_c906_evb1_auto_fastboot_video9. t113_s4p_c906_evb1_autoWhich would you like? [Default t113_s4_c906_evb1_auto]:

从以上RTOS的方案中,可以看到有支持t113-i处理器的,也有支持t113_s4处理器的,当前默认是t113_s4_c906_evb1_auto,这个是基于t113_s4处理器的方案。另外,这个方案是可以添加的,如果主板是基于T113I的,可以把t113_i_c906_evb1_auto作为蓝本增加自己方案,如果主板是基于T113-S4的,可以把t113_i_c906_evb1_auto作为蓝本增加自己方案。如何添加方案请看本手册的第六章节。

3.2.2、单独编译RTOS方案

执行lunch_rtos进行编译方案选择后,可以通过mrtos_menuconfig进行方案的配置,配置完成后即可通过m或者mrtos指令进行RTOS的编译。

xxx@xxx:~/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos$ lunch_rtos
last=t113_s4_c906_evb1_autoYou're building on LinuxLunch menu... pick a combo:1. t113_i_c906_evb1_auto2. t113_s3p_c906_evb1_auto3. t113_s3p_c906_evb1_auto_fastboot4. t113_s3p_c906_evb1_auto_fastboot_video5. t113_s3p_c906_evb1_auto_non_os6. t113_s3p_c906_example_demo7. t113_s4_c906_evb1_auto8. t113_s4_c906_evb1_auto_fastboot_video9. t113_s4p_c906_evb1_autoWhich would you like? [Default t113_s4_c906_evb1_auto]: 7
select=7...
t113_s4_c906/evb1_auto
'/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/projects/t113_s4_c906/evb1_auto/defconfig' -> '/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/.config'
============================================
RTOS_BUILD_TOP=/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos
RTOS_TARGET_ARCH=riscv
RTOS_TARGET_CHIP=sun8iw20p1
RTOS_TARGET_DEVICE=t113_s4_c906
RTOS_PROJECT_NAME=t113_s4_c906_evb1_auto
============================================
Run mrtos_menuconfig to config rtos
Run m or mrtos to build rtos

以上提示我们通过mrtos_menuconfig可以进行应用的配置,执行结果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从配置情况看,和Linux的内核配置比较接近,也是可以配置各种驱动外设,见下图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

T113系列拥有双核Cortex-A7核心,也拥有RV64-C906核心,这两个核心使用的外设是共通的,因此选择C906选择外设的时候,要避开Cortex-A7已经使用的外设。例如:Cortex-A7核心已经把PE2/PE3这两个GPIO作为UART来使用,C906就不能再使用PE2/PE3。
另外,这里要明确的一点是:每个RTOS应用也是有对应的配置文件的,对于t113_s4_c906_evb1_auto这个项目的配置文件在如下目录:

TinaSDK所在目录/rtos/lichee/rtos/projects/t113_s4_c906/evb1_auto/defconfig

配置完成后即可执行m或者mrtos执行进行编译,指令执行结果如下:

xxx@xxx:~/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos$ mrtos
build rtos ...
===There isn't tina environment.===Note: will use shell command origin rather than the functon.Dark BuilderVersion (1.6.0 - BiCEP2 (Gravitational Waves))*[CC]     [SCRIPT]          build/t113_s4_c906_evb1_auto/img/sys_config.fex[CONF]   [Tina-RT-Builder] .dbuild/..//include/generated/t113_s4_c906_evb1_aut                                                                                                                                                             o/autoconf.h[LDS]    [Linker]          projects/t113_s4_c906/evb1_auto/freertos.ldsCC       build/t113_s4_c906_evb1_auto/arch/common/version.oLD       build/t113_s4_c906_evb1_auto/arch/common/obj-in.oLD       build/t113_s4_c906_evb1_auto/arch/obj-in.o[LD]     [Tina-RT-Builder] build/t113_s4_c906_evb1_auto/img/rt_system.elf
if [ -n /home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/bu                                                                                                                                                             ild/t113_s4_c906_evb1_auto/img/  ]; then mkdir -p /home/ping/workspace/t113_tina                                                                                                                                                             5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t113_s4_c906_evb1_auto/img; fi
Memory region         Used Size  Region Size  %age UsedRAM:      214096 B         6 MB      3.40%*[SYMS]   [Tina-RT-Builder] build/t113_s4_c906_evb1_auto/img/rt_system.syms*[IMAGE]  [Tina-RT-Builder] build/t113_s4_c906_evb1_auto/img/rt_system.bintext    data     bss     dec     hex filename134576   69048   10472  214096   34450 build/t113_s4_c906_evb1_auto/img/rt_syst                                                                                                                                                             em.elf
copying /home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/bu                                                                                                                                                             ild/t113_s4_c906_evb1_auto/img/rt_system.bin to /home/ping/workspace/t113_tina5.                                                                                                                                                             0/t113_tinasdk5.0-v1/rtos/board/t113_s4_c906/evb1_auto/bin/freertos.fex
#### make completed successfully
'/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t11                                                                                                                                                             3_s4_c906_evb1_auto/img/rt_system.bin' -> '/home/ping/workspace/t113_tina5.0/t11                                                                                                                                                             3_tinasdk5.0-v1/rtos/board/t113_s4_c906/evb1_auto/bin/rtos_riscv_sun8iw20p1.fex'
ping@embedall:~/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos$

从以上信息我们得到一些信息,编译出来的固件名字是freertos.fex/rtos_riscv_sun8iw20p1.fex,其实两个固件是一样的。固件是编译出来,但是这个固件如何打包到Tina生成的根文件系统中呢?请看下一章。

3.2.3、在Tina下编译RTOS方案

在TinaSDK根目录中,先选择好整体平台方案,见如下说明:

  • buildroot方案

1、首先使用如下命令选择整体平台方案

./build.sh config

2、然后RTOS相关操作命令如下

./build.sh rtos            #单独编译RTOS方案
./build.sh rtos menuconfig #修改RTOS配置文件
./build.sh rtos clean	#清除RTOS编译中间文件

注意:执行./build.sh不会编译RTOS

  • openwrt方案

1、首先使用如下命令选择整体平台方案

source build/envsetup.sh   #生效环境变量
lunch	#选择openwrt方案

2、执行make会先编译RTOS,再编译Tina

  • 快捷命令

在Tina根目录下,执行了source build/envsetup.sh配置环境后,可使用RTOS快捷命令进行RTOS的配置和编译等。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.3、RTOS固件打包

我们以编译openwrt方案为例,在的编译openwrt的过程中,会首先编译RTOS,然后将生成的镜像文件自动拷贝到对应平台方案中,并且rt_system.elf重名为amp_rv0.bin,见如下信息:

xxx@xxx:~/workspace/t113_tina5.0/t113_tinasdk5.0-v1$ make -j32
===There is tina environment.===Note: make is the shell functon in envsetup.sh.== action: openwrt_build, action_args: -j32 ==
========ACTION List: build_rtos ;========
options :
INFO: build rtos ...
Setup env done!
Run lunch_rtos to select project
last=t113_s4_c906_evb1_auto
select=t113_s4_c906_evb1_auto...
t113_s4_c906/evb1_auto
'/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/projects/t113_s4_c906/evb1_auto/defconfig' -> '/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/.config'
============================================
RTOS_BUILD_TOP=/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos
RTOS_TARGET_ARCH=riscv
RTOS_TARGET_CHIP=sun8iw20p1
RTOS_TARGET_DEVICE=t113_s4_c906
RTOS_PROJECT_NAME=t113_s4_c906_evb1_auto
============================================
Run mrtos_menuconfig to config rtos
Run m or mrtos to build rtos
build rtos ...Dark BuilderVersion (1.6.0 - BiCEP2 (Gravitational Waves))*[CC]     [SCRIPT]          build/t113_s4_c906_evb1_auto/img/sys_config.fex[CONF]   [Tina-RT-Builder] .dbuild/..//include/generated/t113_s4_c906_evb1_auto/autoconf.h[LDS]    [Linker]          projects/t113_s4_c906/evb1_auto/freertos.ldsCC       build/t113_s4_c906_evb1_auto/arch/common/version.oLD       build/t113_s4_c906_evb1_auto/arch/common/obj-in.oLD       build/t113_s4_c906_evb1_auto/arch/obj-in.o[LD]     [Tina-RT-Builder] build/t113_s4_c906_evb1_auto/img/rt_system.elf
if [ -n /home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t113_s4_c906_evb1_auto/img/  ]; then mkdir -p /home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t113_s4_c906_evb1_auto/img; fi
Memory region         Used Size  Region Size  %age UsedRAM:      214096 B         6 MB      3.40%*[IMAGE]  [Tina-RT-Builder] build/t113_s4_c906_evb1_auto/img/rt_system.bin*[SYMS]   [Tina-RT-Builder] build/t113_s4_c906_evb1_auto/img/rt_system.symstext    data     bss     dec     hex filename134576   69048   10472  214096   34450 build/t113_s4_c906_evb1_auto/img/rt_system.elf
copying /home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t113_s4_c906_evb1_auto/img/rt_system.bin to /home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/board/t113_s4_c906/evb1_auto/bin/freertos.fex
#### make completed successfully
'/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t113_s4_c906_evb1_auto/img/rt_system.bin' -> '/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/board/t113_s4_c906/evb1_auto/bin/rtos_riscv_sun8iw20p1.fex'
'/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t113_s4_c906_evb1_auto/img/rt_system.elf' -> '/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/device/config/chips/t113_s4/configs/sbc_t113s4_nand/bin/amp_rv0.bin'

然后在Tina环境中打包,确保RTOS编译固件amp_rv0.bin打包到根文件系统中。
说明:
1)buildroot需要执行./build.sh&&./build.sh pack命令
2)openwrt需要执行make&&pack命令
打包完成后,生产的固件位于tina5.0/out/t113_s4_linux_sbc_t113s4_uart0.img,可以使用PhoenixSuit工具烧录到主板上。

3.4、RISC-V核启动

进入主核Linux控制台后,执行如下命令即可完成RV核异构通信框架的初始化:

echo start>/sys/class/remoteproc/remoteproc1/state

注:T113-S4处理器包括了DSP HIFI核心,也包括了RISC-V核心,因此它应该具备remoteproc0/remoteproc1两个节点(这两个节点在内核的DTS中是可配置的,可以删除任何一个节点)。如果两个节点都在,那么remoteproc0节点是DSP核心,remoteproc1节点是RISC-V核心。

3.5、RTOS镜像文件更新

更新RTOS镜像文件的方法有以下两种:
1、Tina Linux环境下,按照RTOS编译、RTOS固件打包步骤重新编译固件,并烧录进开发板,之后再启动RV核。
2、通过adb push将新生成的镜像文件amp_rv0.bin推到/lib/firmware目录下,在Linux控制台依执行如下命令:

echo stop>/sys/class/remoteproc/remoteproc1/state	#关闭RV。
echo amp_rv0.bin>/sys/class/remoteproc/remoteproc1/firmware
echo start>/sys/class/remoteproc/remoteproc1/state	#启动RV

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

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

相关文章

十六.SpringCloudAlibaba极简入门-整合Grpc代替OpenFeign

前言 他来了他来了,停了快2个月了终于又开始更新文章啦,这次带来的绝对是干货!!!。由于公司项目进行重构的时候考虑到,OpenFeign做为服务通信组件在高并发情况下有一定的性能瓶颈,所以将其替换…

【Linux】环境变量详解

Linux环境变量 1.环境变量分类2.环境变量相关指令3.常用的环境变量4.环境变量的组织方式5.获取环境变量6.命令行参数 1.环境变量分类 按生命周期划分: 永久的:在环境变量脚本文件中配置,用户每次登录时会自动执行这些脚本,相当于永…

SpringBoot项目搭建IEDA2023.1.2

导入依赖 ——————————————————

L0G1000 Linux基础知识(包含ssh报错处理)

1.vscode通过ssh链接云服务器 按教程https://github.com/InternLM/Tutorial/tree/camp4/docs/L0/linux 出现报错,是ssh配置原因 [23:40:18.788] Log Level: 2 [23:40:18.807] SSH Resolver called for “ssh-remotessh.intern-ai.org.cn”, attempt 1 [23:40:18.8…

使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程

当涉及到图数据时,复杂性是不可避免的。无论是社交网络中的庞大互联关系、像 Freebase 这样的知识图谱,还是推荐引擎中海量的数据量,处理如此规模的图数据都充满挑战。 尤其是当目标是生成能够准确捕捉这些关系本质的嵌入表示时,…

测试标题1111

前言 本文是该专栏的第68篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,笔者有详细介绍京东滑块验证码的解决方法,感兴趣的同学,可以直接翻阅文章《Python如何解决“京东滑块验证码”(5)》进行查看。…

JDK8-17新特性

1.Java8新特性-Lambda表达式 2.1关于Java8新特性简介 Java 8是Java编程语言的一个重大版本更新,于2014年3月发布。它引入了许多新特性和改进,使得Java编程更加方便和高效。 下面是Java 8的主要新特性: Lambda表达式:Lambda表达式…

如何确保Python爬虫程序的稳定性和安全性?

在当今数字化时代,Python爬虫被广泛应用于数据采集和信息抓取。然而,确保爬虫程序的稳定性和安全性是开发过程中的重要考虑因素。本文将探讨如何通过技术手段和最佳实践来提高Python爬虫的稳定性和安全性,并提供代码示例。 稳定性保障 1. 异…

Axure二级菜单下拉交互实例

1.使用boxlabe进行基础布局 2.设置鼠标悬浮和选中状态 3.转换为动态面板 选中所有二级菜单,进行按钮组转换 选中所有二级菜单,进行动态面板转换 4.给用户管理增加显示/隐藏事件 1)选择toggle代表上拉和下拉切换加载 2)勾选Bring to Front,并选择Push/Pull Widgets代表收缩时…

基于智能推荐的图书电商系统的设计与实现

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

JavaScript实现Promise

第一步:编写constructor构造方法 const PENDING pending; const FULFILLED fulfilled; const REJECTED rejected;class MyPromise {#state PENDING;#result undefined;constructor(executor) {const resolve (data) > {this.#changeState(FULFILLED, data…

物理 + 人工智能 = 2024年诺贝尔物理学奖

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《热点时事》 期待您的关注 目录 引言 一、机器学习与神经网络的发展前景 二、机器学习和神经网络的研究与传统物理学的关系 结…

C++:异常

1. 异常的概念 C语言主要通过错误码的方式处理错误,错误码本质上就是对错误信息进行分类编号,拿到错误码以后还要去查询错误信息,比较麻烦。异常时抛出一个对象,这个对象可以涵盖更全面的信息。 异常处理机制允许程序中独立开发的…

南京邮电大学算法设计-二叉树先序遍历算法动态演示

二叉树先序遍历算法动态演示 一、课题内容和要求 (1)实验目的: 本实验通过手动输入二叉树结点信息,构建相应的二叉树,并通过图形化界面动态演示先序遍历算法的过程。通过本次实验,我可以深入理解二叉树的数据结构、先序遍历算法…

【开源免费】基于Vue和SpringBoot的在线考试系统(附论文)

本文项目编号 T 624 ,文末自助获取源码 \color{red}{T624,文末自助获取源码} T624,文末自助获取源码 网络的广泛应用给生活带来了十分的便利。所以把在线考试管理与现在网络相结合,利用java技术建设在线考试系统,实现…

高阶C语言之六:程序环境和预处理

本文介绍程序的环境,在Linux下对编译链接理解,较为简短,着重在于编译的步骤。 C的环境 在ANSI C(标准C语言)的任何一种实现中,存在两个不同的环境。 翻译环境:在这个环境中,源代码…

HarmonyOs鸿蒙开发实战(10)=>状态管理-对象数组的属性数据变更刷新UI,基于@Observed 和@ObjectLink装饰器

1.条件:基于HarmonyOs5.0.0版本. 2.功能要求:横向列表中每个景点的名称(eg: 第二项 “灵隐寺” ), 在通过天气接口拿到对应天气后,拼接到名称后面 > 变成(“灵隐寺” 天气)) 3.老规矩先看…

快速上手Mybatis Plus并速通MybatisPlus所有知识点

目录 一、简介 1.1 概况 1.2 特性 二、快速入门 1.建表 2.引依赖 3.application.ymal文件 4.定义mapper继承BaseMapper 5.总结 三、Mybatis Plus的使用 1.常见注解 1.1 TableName 1.2 TableId 1.3 TableField 2.常见配置 3.BaseMapper的基础CRUD方法 4.Wrapper…

使用代理解决前端跨域问题详解

目录 前言1. 什么是跨域问题?1.1 同源策略的定义1.2 跨域问题的表现 2. 解决跨域问题的常见方法3. 在 Vite 中配置代理解决跨域问题3.1 环境准备3.2 配置代理3.2.1 配置基础路径3.2.2 配置 Vite 代理3.2.3 参数解释 3.3 验证代理功能 4. 深入分析与注意事项4.1 代理…

使用MaxKB搭建知识库问答系统并接入个人网站(halo)

首发地址(欢迎大家访问):使用MaxKB搭建知识库问答系统并接入个人网站 前言 从OpenAI推出ChatGPT到现在,大模型已经渗透到各行各业,大模型也逐渐趋于平民化;从最开始对其理解、生成、强大的知识积累的惊叹&…