NUTTX移植到STM32
STM32移植NUTTX
- 1. Ubuntu下搭建开发环境
- 1.1 先决条件
- 1.2 下载 NuttX
- 1.3 使用Make 进行编译
- 1.4 烧录运行
- 2.通过NUTTX点亮LED
- 2.1 部署操作系统
- 2.2 修改配置文件
- 2.3 编译运行程序
开发板:DshanMCUF407
官方开发文档:安装 — NuttX latest 文档
参考文档:Nuttx学习笔记(一)-CSDN博客
1. Ubuntu下搭建开发环境
1.1 先决条件
环境: ubuntu 20.04 ,首先进行基础环境安装;
执行以下命令安装软件包:
sudo apt install \
bison flex gettext texinfo libncurses5-dev libncursesw5-dev xxd \
git gperf automake libtool pkg-config build-essential gperf genromfs \
libgmp-dev libmpc-dev libmpfr-dev libisl-dev binutils-dev libelf-dev \
libexpat1-dev gcc-multilib g++-multilib picocom u-boot-tools util-linux
KConfig 前端:
sudo apt install kconfig-frontends
NuttX 配置系统使用 KConfig,它通过一系列基于菜单的交互式前端(软件包的一部分)公开。
工具链:
sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi
1.2 下载 NuttX
mkdir nuttxspace
cd nuttxspace
git clone https://github.com/apache/nuttx.git nuttx
git clone https://github.com/apache/nuttx-apps apps
git clone https://bitbucket.org/nuttx/tools.git
cd tools/kconfig-frontends
./configure
make
sudo make install
sudo ldconfig
1.3 使用Make 进行编译
现在我们已经安装了 Apache NuttX 先决条件并下载了源代码, 我们已经准备好将源代码编译成一个可执行的二进制文件,该文件可以 在嵌入式主板上运行。
初始化配置:
第一步是初始化给定板的 NuttX 配置,基于 预先存在的配置。要列出所有支持的配置,找到自己适合的型号,可以执行以下操作:
cd nuttx
./tools/configure.sh -L | less
如果找到了自己适合的型号,则可以执行以下命令:
cd nuttx
./tools/configure.sh -l stm32f4discovery:nsh
然后,您可以使用基于菜单的配置系统自定义配置:
cd nuttx
make menuconfig
构建NUTTX:
cd nuttx
make
如果要清理之前构建的,则需要使用 以下命令:
make clean
make distclean
注意: 以上操作如有报错,跟据提示安装相应软件即可。
1.4 烧录运行
在运行之前我们应提前安装 openocd 以使用STLink进行烧录:
sudo apt install openocd
还可以直接在网上下载压缩包,传到Ubuntu解压即可,跟据提示进行相应操作:
官网下载:OpenOCD - Open On-Chip Debugger download | SourceForge.net
解压后进入目录中,并且在终端打开:
tar -jxvf openocd-0.12.0.zip
cd openocd-0.12.0
./configure --enable-stlink
之后可以使用./configure实现这个配置。
出现问题:configure: error: libusb-1.x is required for the ST-Link Programme:
sudo apt-get install libusb-1.0.0-dev
之后我们可以执行以下命令,去掉一些无用的报错警告:
./configure --disable--werror
设置完以后进行软件安装:
sudo make install
安装好OpenOCD后,我们需要根据操作系统,设置访问debug适配器的权限。在Linux系统上,通常会涉及etc/udev/rules.d文件夹的操作。OpenOCD会附带一个通用规则文件60-openocd.rules,位置在于OpenOCD解压后的文件夹contrib目录中。这个时候我们需要把我们的60-openocd.rules拷贝过去。
sudo cp 60-openocd.rules /etc/udev/rules.d/
之后我们可以看看openocd的服务,可以输入–help来实现:
Open On-Chip Debugger 0.12.0-rc1
Licensed under GNU GPL v2
For bug reports, readhttp://openocd.org/doc/doxygen/bugs.html
Open On-Chip Debugger
Licensed under GNU GPL v2
--help | -h display this help
--version | -v display OpenOCD version
--file | -f use configuration file <name>
--search | -s dir to search for config files and scripts
--debug | -d set debug level to 3| -d<n> set debug level to <level>
--log_output | -l redirect log output to file <name>
--command | -c run <command>
如果没有输入 -f
或者是-c
的选项命令,OpenOCD会试图读取openocd.cfg
这个配置文件。如果我们需要指定配置文件,比如我们需要部署到这个STM32F103这个板子,我们需要输入这个:
openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c init -c "reset halt" -c "program nuttx.bin exit 0x08000000"
-
openocd
:启动 OpenOCD 调试器。 -
-f interface/stlink.cfg
:指定调试器接口配置文件。 -
-target/stm32f1x.cfg
:指定目标芯片配置文件。 -
-c init
:初始化调试会话。 -
-c "reset halt"
:重置并停止芯片。 -
-c "program nuttx.bin exit 0x08000"
:烧录固件到芯片并退出调试会话。
访问 NuttShell:
那么这个时候我们已经将系统烧录进去了,然后我们可以打开minicom,我们终端的指令是在串口打印出来的,所以我们需要有一个USB-TTL来进行连接,然后:
sudo minicom -D /dev/ttyUSB
在执行此命令前,需要提前安装 minicom:
sudo apt install minicom
运行如下图所示:
2.通过NUTTX点亮LED
上一节我们介绍了如何搭建开发环境,知道了如何编译烧录程序到开发板,此节我们通过STM32F103C8T6进行实践通过NUTTX点亮LED灯。
2.1 部署操作系统
如果之前编译过,在开始之前,我们要先清除之前的构建配置:
cd nuttx
make clean
make distclean
之后选择stm32f1上部署我们的操作系统:
./tools/configure.sh stm32f103-minimum/userled
2.2 修改配置文件
然后进入menuconfig修改配置文件:
make menuconfig
具体配置如下图所示:
进入Board Selection:
选择目标开发板:
然后我们退回到上一级目录下,进入到“Device Drivers”目录下:
进入到“Device Drivers”目录后,在进入"LED Support"目录:
进入"LED Support"目录后如下配置:
然后在退回到上一级,进入“Application Configuration”目录下:
进入“Application Configuration”目录后,在进入"Examaple"目录,选中"LED driver example":
接着回退到上一级目录,进入“NSH Library”目录下:
进入“NSH Library”目录后,再进入到“Disable Individual commands”目录:
进入到“Disable Individual commands”目录后,向下找到 “Disable printf”,空格键取消掉选中 :
完成配置以后,保存并退出。
2.3 编译运行程序
修改完配置文件后,我们执行"make"命令,一得到nuttx.bin文件,如下图所示:
得到bin文件以后,我们就可以执行以下命令烧录到开发板:
openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c init -c "reset halt" -c "program nuttx.bin exit 0x08000000"
烧录完以后,我们可以打开minicom,我们终端的指令是在串口打印出来的,所以我们需要有一个USB-TTL
来进行连接,然后执行以下命令:
sudo minicom -D /dev/ttyUSB0
注意: 如果不知到自己使用的哪个串口,可以执行以下命令对比接入串口前后的设别情况:
ls /dev/tty*
进入串口后,我这里出现了一个名为"/dev/ttyUSB0"的端口。
运行入如下所示:
这里是输入"leds"自动执行leds的程序,LED灯开始闪烁,如需手动控制LED灯的亮灭需输入以下命令:
LED灯亮:
printf \x00 > /dev/userleds
LED灯灭:
printf \x01 > /dev/userleds
相关文章:
NUTTX移植到STM32
STM32移植NUTTX 1. Ubuntu下搭建开发环境1.1 先决条件1.2 下载 NuttX1.3 使用Make 进行编译1.4 烧录运行 2.通过NUTTX点亮LED2.1 部署操作系统2.2 修改配置文件2.3 编译运行程序 开发板:DshanMCUF407 官方开发文档:安装 — NuttX latest 文档 参考文档&…...
.NET 9.0 WebApi 发布到 IIS 详细步骤
微软表示,.NET 9 是迄今为止性能最高的 .NET 版本,对运行时、工作负载和语言方面进行了 1,000 多项与性能相关的改进,并采用了更高效的算法来生成更好的代码。 .NET 9 是 .NET 8 的继任者,特别侧重于云原生应用和性能。 作为标准期…...
麒麟 kylin v10 server 升级openssh 9.9p1
准备升级工作 yum install gcc make perl zlib zlib-devel pam pam-devel备份原有的ssh目录,以备后用 cp -r /etc/ssh /etc/ssh.bak cp /etc/pam.d/sshd /etc/pam.d/sshd.before cp /etc/ssh/sshd_config /etc/ssh/sshd_config.before解压源码压缩包 tar -zxf o…...
ollama+FastAPI部署后端大模型调用接口
ollamaFastAPI部署后端大模型调用接口 记录一下开源大模型的后端调用接口过程 一、ollama下载及运行 1. ollama安装 ollama是一个本地部署开源大模型的软件,可以运行llama、gemma、qwen等国内外开源大模型,也可以部署自己训练的大模型 ollama国内地…...
设计模式 行为型 策略模式(Strategy Pattern)与 常见技术框架应用 解析
策略模式(Strategy Pattern)核心思想是将算法的实现从使用该算法的类中分离出来,作为独立的对象,通过接口来定义算法家族,这样就可以很容易地改变或扩展算法。通过这种方式,可以避免在客户端代码中使用大量…...
2025资源从哪里来!
方案规划告诉你资源最好的答案? 方案一、如果你不知道啥资源可以到这里面找到初步的答案? 哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 在这个网站你可以找到你对应的专业-对应的路线-对应的资源-对应的百度网盘里面全是免费的资源------------------惊喜不&…...
Alist-Sync-Web 网盘自动同步,网盘备份相互备份
Alist-Sync-Web 一个基于 Web 界面的 Alist 存储同步工具,支持多任务管理、定时同步、差异处理等功能。 如果好用,请Star!非常感谢! GitHub Gitee DockerHub 功能特点 📱 美观的 Web 管理界面🔄 支持多任…...
【FlutterDart】 listView.builder例子二(14 /100)
上效果图 上代码: import package:flutter/material.dart;class ListRoles extends StatelessWidget {ListRoles({super.key});final List<String> entries <String>[, -, *, /];final List<int> colorCodes <int>[600, 500, 100, 50];o…...
《shared_ptr源码剖析》
【shared_ptr导读】上一节,我们为大家介绍了unique_ptr的底层原理和实现。相对于unique_ptr,shared_ptr也是被大家广泛使用的智能指针,shared_ptr内部的原理是怎样的?shared_ptr是多线程安全的吗? 本文将以Centos标准库…...
关于markdown实现页面跳转(调查测试:csdn(博客编写效果、发布效果)、typroa中md转pdf的使用情况)
一-方法介绍 [点击跳转到标题0](#1) <a href"#2">正文2</a>### <span id"2">标题0</span>二、跳转测试区 点击跳转到标题0 正文2 三、测试结果 场景MDspan-可标题写博客时候,右侧显示区效果可以发布博客的效果可以…...
入门级容器技术解析:Docker和K8s的区别与关系
目录 🎯学习小目标: 关于容器 传统物理机🖥️ 虚拟机💻 为什么使用容器技术呢?🤔 容器技术🥃 Docker—容器化平台 K8s(Kubernetes)—容器编排系统 Docker和K8s有什么关系和区别&#…...
《Rust权威指南》学习笔记(五)
高级特性 1.在Rust中,unsafe是一种允许绕过Rust的安全性保证的机制,用于执行一些Rust默认情况下不允许的操作。unsafe存在的原因是:unsafe 允许执行某些可能被 Rust 的安全性检查阻止的操作,从而可以进行性能优化,如手…...
数据库软考历年上午真题与答案解析(2018-2024)
本题考查计算机总线相关知识。 总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束。 根据总线连接设备范围的不同, 分为:1.片内总线:芯片内部的总线; 2.系统…...
HTML5 文件上传(File Upload)详解
HTML5 文件上传(File Upload)详解 HTML5 提供了强大的文件上传功能,允许用户通过网页选择文件并上传到服务器。以下是关于文件上传控件的详细说明。 1. 基本的文件上传控件 使用 <input> 标签的 type"file" 属性可以创建一…...
构建属于你的七牛云文件上传工具:Qiniu Uploader 详解(从 0 到 1 实现)
GitHub 仓库地址:https://github.com/hahala2333/qiniu-upload 📚 简介 在现代 Web 开发中,静态资源的上传和管理是不可避免的需求。为了简化将本地资源上传到七牛云存储的过程,我们构建了 Qiniu Uploader 工具。它具备灵活的配置…...
Spring Boot 项目中集成 Kafka-03
在 Spring Boot 项目中集成 Kafka 有多种方式,适应不同的应用场景和需求。以下将详细介绍几种常用的集成方法,包括: 使用 Spring Kafka (KafkaTemplate 和 KafkaListener)使用 Spring Cloud Stream 与 Kafka Binder使用 Spring for Apache K…...
如何在2025年创建一个网站:使用US Domain Center和WordPress的终极指南
在本指南中,我们将向你展示如何正确地使用US Domain Center和WordPress创建一个网站。无论你是要启动一个个人博客,还是一个在线商店,我们都会提供简单易懂的步骤指导。无需技术技能 — — 只需按照我们的简单步骤操作,你就能在今…...
LLM 训练中存储哪些矩阵:权重矩阵,梯度矩阵,优化器状态
LLM 训练中存储哪些矩阵 目录 LLM 训练中存储哪些矩阵深度学习中梯度和优化器是什么在 LLM 训练中通常会存储以下矩阵: 权重矩阵:这是模型的核心组成部分。例如在基于 Transformer 架构的 LLM 中,每一层的多头注意力机制和前馈神经网络都会有相应的权重矩阵。以 BERT 模型为…...
【JVM】总结篇之对象内存布局 执行引擎
文章目录 对象内存布局对象的实例化对象的内存布局对象的方问定位 执行引擎 对象内存布局 对象的实例化 new对象流程?(龙湖地产) 对象创建方法,对象的内存分配。(360安全) 1.判断对象对应的类是否加载、链…...
机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型
机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型 目录 机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型1 过拟合和欠拟合1.1 过拟合1.2 欠拟合 2 正则化惩罚2.1 概念2.2 函数2.3 正则化种类 3 K折交叉验证3.1 概念3.2 图片理解3.3 函数导入3.4 参数理解 4 训练模型K折交…...
【图像处理】OpenCv + Python 实现 Photoshop 中的色彩平衡功能
前言 这是使用 python 和 OpenCv 实现的 Photoshop 中色彩平衡功能的代码,可以设置阴影,高光和中间调的色调参数来调整图片的色彩平衡。 参考文章二也有 python 版本的代码实现,虽然中间调的部分貌似没有实现,但是理论部分讲解还…...
基于vue框架的的校园快递管理系统x0xm0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
系统程序文件列表 项目功能:学生,校园跑腿,快递代取,代取进度,评价信息 开题报告内容 基于Vue框架的校园快递管理系统开题报告 一、研究背景与意义 随着电子商务的蓬勃发展,校园快递业务急剧增长,成为校园生活中不可或缺的一部分。然而&a…...
【Vim Masterclass 笔记05】第 4 章:Vim 的帮助系统与同步练习(L14+L15+L16)
文章目录 Section 4:The Vim Help System(Vim 帮助系统)S04L14 Getting Help1 打开帮助系统2 退出帮助系统3 查看具体命令的帮助文档4 查看帮助文档中的主题5 帮助文档间的上翻、下翻6 关于 linewise7 查看光标所在术语名词的帮助文档8 关于退…...
智能体(Agent)如何具备自我决策能力的机理与实现方法
一、智能体自我决策能力的机理 从人工智能和控制理论的角度看,智能体能够“自我决策”的核心在于其 “感知–认知–行动” 的循环过程,以及在此过程中引入自主学习与自主优化的机制。经过优化与补充,智能体具备自我决策能力的机理可以分解为…...
Redis 数据库源码分析
Redis 数据库源码分析 我们都知道Redis是一个 <key,value> 的键值数据库,其实也就是一个 Map。如果让我来实现这样一个 Map,我肯定是用数组,当一个 key 来的时候,首先进行 hash 运算,接着对数据的 length 取余&…...
vue3 css实现文字输出带光标显示,文字输出完毕,光标消失的效果
Vue实现过程如下: <template><div ><p ref"dom_element" class"typing" :class"{over_fill: record_input_over}"></p></div> </template> <script setup> import {onMounted, ref} from…...
【Leetcode】731. 我的日程安排表 II
文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 实现一个程序来存放你的日程安排。如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排。 当三个日程安排有一些时间上的交叉时(例如三个日程…...
浅谈棋牌游戏开发流程四:核心业务逻辑(二)——房间匹配与对局流程
一、前言:让玩家轻松坐上“牌桌” 在上一篇文章中,我们深入探讨了用户系统与登录流程,了解了如何让“陌生人”转变为游戏中的“正式玩家”。接下来,我们将迈向游戏的核心环节——房间匹配与对局流程。这是玩家实际参与游戏、互动…...
大学生HTML5期末作业 Web前端网页制作 html5+css3+js html+css网页设计 美食 美食模版2个页面
大学生HTML5期末作业 Web前端网页制作 html5css3js htmlcss网页设计 美食 美食模版2个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修…...
Java100道面试题
1.JVM内存结构 1. 方法区(Method Area) 方法区是JVM内存结构的一部分,用于存放类的相关信息,包括: 类的结构(字段、方法、常量池等)。字段和方法的描述,如名称、类型、访问修饰符…...
MySQL 日志简介
总览 MySQL Server 有以下⼏种⽇志,可以记录服务器正在发⽣的活动。 ⽇志类型⽇志信息 ⼀般查询⽇志 (General query log) 已建⽴的客⼾端连接和从客⼾端接收到的语句 错误⽇志 (Error log) mysqld在启动、运⾏或停⽌时遇到的问题 慢查询⽇志 (Slow query log) 执⾏…...
ubuntu清理磁盘
ubuntu清理磁盘脚本: #!/bin/bash#shell脚本用#作注释行,但是第一行的#!/bin/bash例外sudo apt-get clean sudo rm -rf /tmp/* sudo rm -rf /var/cache/*cd /var/log/ sudo du -h -d 1 rm -rf ./*cd ~/.cache sudo du -h -d 1 rm -rf ./*apt…...
鸿蒙APP之从开发到发布的一点心得
引言: 做鸿蒙开发大概有1年左右时间了,从最开始的看官方文档、看B站视频,到后来成功发布两款个人APP(房贷计算极简版、时简时钟 轻喷,谢谢)。简单描述一下里边遇到的坑以及一些经历吧。 学习鸿蒙开发 个…...
C++二十三种设计模式之享元模式
C二十三种设计模式之享元模式 一、组成二、特点三、目的四、缺点五、示例代码 一、组成 抽象享元类:声明操作方法。 具体享元类:使用内部数据和外部数据来实现操作方法。 享元管理者类:创建和管理具体享元对象。 二、特点 1、创建享元对象…...
基于Python的音乐播放器 毕业设计-附源码73733
摘 要 本项目基于Python开发了一款简单而功能强大的音乐播放器。通过该音乐播放器,用户可以轻松管理自己的音乐库,播放喜爱的音乐,并享受音乐带来的愉悦体验。 首先,我们使用Python语言结合相关库开发了这款音乐播放器。利用Tkin…...
基于32单片机的智能语音家居
一、主要功能介绍 以STM32F103C8T6单片机为控制核心,设计一款智能远程家电控制系统,该系统能实现如下功能: 1、可通过语音命令控制照明灯、空调、加热器、窗户及窗帘的开关; 2、可通过手机显示和控制照明灯、空调、窗户及窗帘的开…...
【C语言程序设计——入门】C语言入门与基础语法(头歌实践教学平台习题)【合集】
目录😋 ⚙️C语言环境配置:Windows配置C语言环境(超级详细) <第1关:程序改错> 任务描述 相关知识 1. 头文件的引用 2. 基本语法规则 编程要求 测试说明 通关代码 测试结果 <第2关:scanf 函数>…...
基于Springboot的知名作家交流系统
博主介绍:java高级开发,从事互联网行业多年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实…...
服务器数据恢复—离线盘数超过热备盘数导致raidz阵列崩溃的数据恢复
服务器数据恢复环境&故障: 一台配有32块硬盘的服务器在运行过程中突然崩溃不可用。经过初步检测,基本上确定服务器硬件不存在物理故障。管理员重启服务器后问题依旧。需要恢复该服务器中的数据。 服务器数据恢复环境: 1、将服务器中硬盘…...
conda安装及demo:SadTalker实现图片+音频生成高质量视频
1.安装conda 下载各个版本地址:https://repo.anaconda.com/archive/ win10版本: Anaconda3-2023.03-1-Windows-x86_64 linux版本: Anaconda3-2023.03-1-Linux-x86_64 Windows安装 环境变量 conda -V2.配置conda镜像源 安装pip conda…...
内蒙古水系详细很全shp格式arcgis软件无偏移坐标下载后内容测评
标题中的“内蒙古水系详细很全shp格式arcgis软件无偏移坐标”指的是一个地理信息系统(GIS)数据集,该数据集详细记录了内蒙古地区的水系信息,并以ESRI公司的标准矢量数据格式——Shapefile(.shp)进行存储。S…...
RK3588平台开发系列讲解(系统篇)Linux Kconfig的语法
文章目录 一、什么是Kconfig二、config模块三、menuconfig四、menu 和 endmenu五、choice 和 endchoice六、source七、depends on八、default九、help十、逻辑表达式沉淀、分享、成长,让自己和他人都能有所收获!😄 一、什么是Kconfig Kconfig的语法及代码结构非常简单。本博…...
c#使用SevenZipSharp实现压缩文件和目录
封装了一个类,方便使用SevenZipSharp,支持加入进度显示事件。 双重加密压缩工具范例: using SevenZip; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.…...
【C++数据结构——查找】二叉排序树(头歌实践教学平台习题)【合集】
目录😋 任务描述 相关知识 1. 二叉排序树的基本概念 2. 二叉排序树节点结构体定义 3. 创建二叉排序树 4. 判断是否为二叉排序树 5. 递归查找关键字为 6 的结点并输出查找路径 6. 删除二叉排序树中的节点 测试说明 通关代码 测试结果 任务描述 本关任务&a…...
C# 服务生命周期:Singleton、Scoped、Transient
文章目录 1、概念:服务生命周期单例 (Singleton) :作用域 (Scoped) :瞬态 (Transient) : 2、对 Scoped 和 Transient 进一步辨析Scoped 生命周期Transient 生命周期选择哪种生命周期 1、概念:服务生命周期 单例 (Singleton) : 整个应用程序生命周期中只有一个实例被创建并共享…...
如何让用户在网页中填写PDF表格?
在网页中让用户直接填写PDF表格,可以大大简化填写、打印、扫描和提交表单的流程。通过使用复选框、按钮和列表等交互元素,PDF表格不仅让填写过程更高效,还能方便地在电脑或移动设备上访问和提交数据。 以下是在浏览器中显示可填写PDF表单的四…...
w140体育馆使用预约平台的设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
Linux(Ubuntu)下ESP-IDF下载与安装完整流程(4)
接前一篇文章:Linux(Ubuntu)下ESP-IDF下载与安装完整流程(3) 本文主要看参考官网说明,如下: 快速入门 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 Linux 和 macOS 平台工具链的标准设置 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 前边几回讲解了第一步 —— …...
PDF预览插件
PDF预览插件 可用于当前页面弹窗形式查看,可增加一些自定义功能 pdf预览插件 代码块: pdfobject.js <div class="pdfwrap"><div class="item"><h3>笑场</h3><div class="tags"><p>李诞</p><i&…...
【微服务】2、网关
Spring Cloud微服务网关技术介绍 单体项目拆分微服务后的问题 服务地址问题:单体项目端口固定(如黑马商城为8080),拆分微服务后端口各异(如购物车808、商品8081、支付8086等)且可能变化,前端难…...