合宙ESP32系列

2023-10-26

目录

源文档见:ESP32系列编译文档 - LuatOS 文档

本地编译详细步骤

准备环境

准备项目

获取源码

编译前的最后准备

编译

LuatOS-SoC通用固件格式soc介绍

定制固件里的库

PS:luat_conf_bsp.h问题汇总


源文档见:ESP32系列编译文档 - LuatOS 文档

本文档适合以下芯片:

  1. esp32c3
  2. esp32c2
  3. esp32
  4. esp32s3

使用本文档前,请确认以下信息:

  1. 大概率不需要这份文档,这是用于自行扩展固件的高级文档。
  2. 我们提供的固件包就包含编译好的固件
  3. 如果你只是想将已有的库添加到固件中,可以使用我们提供的在线云编译生成自定义固件。
  4. 如果你是在找刷机/编译lua脚本之类的应用型文档,那么这份文档不是你需要查看的内容。

视频教程链接B站每日喝粥

本地编译详细步骤

准备环境

  1. windows 10 x64, 其他版本自行解决idf安装问题, 需要idf5, 最新idf5!! 低版本编译不了!!
  2. 所有步骤均使用 CMD, 非 PowerShell, 若不知道这些是什么, 请先百度学习一下
  3. 起码2G的磁盘空间, 用于存放代码和中间文件

准备项目

建一个文件夹,用于存放编译所需要的全部文件

推荐使用 D:\github , 最低要求是 不能有空格,中文,特殊字符串, 且尽量短

获取源码

源码要2份, LuatOS主库及luatos-soc-idf5, 这是两个不同的仓库, 两个都需要!!

获取方式: 推荐git, 注册后下载zip也可以

必须按以下目录结构进行摆放, 以G:\bsp\ESP32\ 为例

D:\

    github\

        LuatOS\

            lua\

            luat\

            components\

            其他目录

        luatos-soc-idf5\

            luatos\

检查点, 路径正确的情况下, 以下文件路径必存在, 找不到就肯定是命名问题, 手动添加是徒劳的

  • G:\bsp\ESP32\LuatOS\lua\src\lgc.c
  • G:\bsp\ESP32\luatos-soc-idf5\luatos\include\luat_conf_bsp.h

LuatOS luatos-soc-idf5 都是固定目录名称, 都不可以改, 例如 LuatOS-master 就是错误的命名, 必须要改回 LuatOS

如果实在不方便把主库存放在 D:\github\LuatOS, 修改luatos-soc-idf5\luatos\CMakeLists.txt里面的LUATOS_ROOT值. 例如, 存放在 E:/abc/LuatOS, 则修改为

set(LUATOS_ROOT "E://abc/LuatOS/")

编译前的最后准备

安装 idf5

  1. 访问地址 https://dl.espressif.cn/dl/esp-idf/
  2. 下载idf5离线安装包 ESP-IDF v5.0 - Offline Installer
  3. 下载后双击启动, 按提示安装
  4. 安装完成后, 开始菜单会有idf5的快捷方式

编译

使用开始菜单或快捷方式, 进入idf5的CMD

g:

cd G:\bsp\ESP32\luatos-soc-idf5\luatos

idf.py fullclean

idf.py set-target esp32s3

idf.py build

(idf.py set-target 为设置要编译的芯片 后面输入自己要编译的型号,不要无脑输入esp32c3)

当出现Project build complete.字样则表示编译成功, 会生成 .soc 后的文件(G:\bsp\ESP32\luatos-soc-idf5\luatos), 使用LuaTools刷机即可

LuatOS-SoC通用固件格式soc介绍

详见:合宙Air103|自定义固件|在线云编译|本地编译|Windows|Linux|SoC|Git|luat_conf_bsp|elf| Info.json|FLS|官方demo|(1)、Air103编译_Medlar_CN的博客

定制固件里的库

打开

G:\bsp\ESP32\luatos-soc-idf5\luatos\include \luat_conf_bsp.h,

按需注释或取消注释。注意,如果功能太大导致固件放不下,会编译失败。

PS:luat_conf_bsp.h问题汇总

1、以下宏取消注释进行编译报错,暂不支持,提issue。

// SDIO 仅支持TF/SD卡的挂载

// #define LUAT_USE_SDIO 1

// #define LUAT_USE_OTP 1

错误提示:

G:/bsp/ESP32/LuatOS/components/romfs/luat_vfs_romfs.c:271:32: note: expected 'char *' but argument is of type 'romfs_file_t *' {aka 'struct romfs_file *'}
[1589/1592] Linking CXX executable luatos.elfFAILED: luatos.elf elf_src_esp32s3.c.obj
cmd.exe /C "cd . && G:\bsp\Espressif\tools\xtensa-esp32s3-elf\esp-2022r1-11.2.0\xtensa-esp32s3-elf\bin\xtensa-esp32s3-elf-g++.exe -mlongcalls  @CMakeFiles\luatos.elf.rsp -o luatos.elf  && cd ."
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_otp.c.obj):(.literal.l_otp_lock+0x0): undefined reference to `luat_otp_lock'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_otp.c.obj):(.literal.l_otp_erase+0x0): undefined reference to `luat_otp_erase'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_otp.c.obj):(.literal.l_otp_write+0x0): undefined reference to `luat_otp_write'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_otp.c.obj):(.literal.l_otp_read+0x0): undefined reference to `luat_otp_read'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_otp.c.obj): in function `l_otp_lock':
G:/bsp/ESP32/LuatOS/luat/modules/luat_lib_otp.c:117: undefined reference to `luat_otp_lock'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_otp.c.obj): in function `l_otp_erase':
G:/bsp/ESP32/LuatOS/luat/modules/luat_lib_otp.c:106: undefined reference to `luat_otp_erase'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_otp.c.obj): in function `l_otp_write':
G:/bsp/ESP32/LuatOS/luat/modules/luat_lib_otp.c:86: undefined reference to `luat_otp_write'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_otp.c.obj): in function `l_otp_read':
G:/bsp/ESP32/LuatOS/luat/modules/luat_lib_otp.c:52: undefined reference to `luat_otp_read'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_sdio.c.obj):(.literal.l_sdio_sd_format+0x4): undefined reference to `luat_sdio_sd_format'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_sdio.c.obj):(.literal.l_sdio_sd_umount+0x0): undefined reference to `luat_sdio_sd_unmount'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_sdio.c.obj):(.literal.l_sdio_sd_mount+0x4): undefined reference to `luat_sdio_sd_mount'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_sdio.c.obj):(.literal.l_sdio_write+0x0): undefined reference to `luat_sdio_sd_write'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_sdio.c.obj):(.literal.l_sdio_read+0x0): undefined reference to `luat_sdio_sd_read'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_sdio.c.obj):(.literal.l_sdio_init+0x0): undefined reference to `luat_sdio_init'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_sdio.c.obj): in function `l_sdio_sd_format':
G:/bsp/ESP32/LuatOS/luat/modules/luat_lib_sdio.c:136: undefined reference to `luat_sdio_sd_format'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_sdio.c.obj): in function `l_sdio_sd_umount':
G:/bsp/ESP32/LuatOS/luat/modules/luat_lib_sdio.c:122: undefined reference to `luat_sdio_sd_unmount'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_sdio.c.obj): in function `l_sdio_sd_mount':
G:/bsp/ESP32/LuatOS/luat/modules/luat_lib_sdio.c:106: undefined reference to `luat_sdio_sd_mount'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_sdio.c.obj): in function `l_sdio_write':
G:/bsp/ESP32/LuatOS/luat/modules/luat_lib_sdio.c:85: undefined reference to `luat_sdio_sd_write'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_sdio.c.obj): in function `l_sdio_read':
G:/bsp/ESP32/LuatOS/luat/modules/luat_lib_sdio.c:54: undefined reference to `luat_sdio_sd_read'
g:/bsp/espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/../lib/gcc/xtensa-esp32s3-elf/11.2.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: esp-idf/luat/libluat.a(luat_lib_sdio.c.obj): in function `l_sdio_init':
G:/bsp/ESP32/LuatOS/luat/modules/luat_lib_sdio.c:60: undefined reference to `luat_sdio_init'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
ninja failed with exit code 1, output of the command is in the g:\bsp\esp32\luatos-soc-idf5\luatos\build\log\idf_py_stderr_output_9004 and g:\bsp\esp32\luatos-soc-idf5\luatos\build\log\idf_py_stdout_output_9004

output文件: g:\bsp\esp32\luatos-soc-idf5\luatos\build\log\idf_py_stdout_output_9004,cmd命令行关闭后可以查询错误的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合宙ESP32系列 的相关文章

  • 为什么 debug.getinfo(1) 的 'name' 为 nil

    我正在尝试构建一个 lua 测试框架 让您知道有问题的函数 但是当我从 loadstring 切换到 G 我进行了切换 以便我的测试工具可以看到函数调用的结果 我的函数开始使用 nil 作为函数名称 Why can G在下面的代码中没有检测
  • 交互式 lua:命令行参数

    我想做 lua prog lua arg1 arg2 从命令行 在prog lua里面 我想说 比如 print arg1 arg2 n Lua 似乎没有 argv 1 等 而且我见过的处理命令行参数的方法似乎不成熟和 或麻烦 我错过了什么
  • 在我的 CentOS 机器上找不到wireshark init.lua

    所以我试图在我的 CentOS 7 服务器上获取一个与 tshark 一起使用的脚本 但我遇到了问题 该脚本在我的Windows笔记本电脑上运行良好 我只是将其放在appdata的plugins文件夹中 但我在linux上找不到类似的位置
  • 如何使 require() 采取文件的直接路径

    所以我有以下代码 问题是当我循环遍历数组中的每个文件并尝试要求文件路径时 它给我一个找不到模块的错误 local Commands function getCommands local readdir fs readdir local re
  • 支持 MingW32 的免费分析器好吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我在另一个帖子中问 如何分析我的东西 人们给了我很多很好的回复 除了当我尝试使用几个免费的分析器 例如
  • 编译 Lua - 创建 .so 文件?

    我正在 Centos 6 5 上编译 Lua 5 2 3 编译 安装工作正常 但是 我还需要编译另一个程序的开发库 我通常会通过这样做来安装它们 yum install lua devel 问题是安装 Lua 5 1 共享库 而不是 5 2
  • Lua解释器相当于Matlab“whos”命令吗?

    Octave Matlab IPython whos 命令的 Lua 等价物是什么 我正在尝试以交互方式学习 Lua 并想看看当前定义了哪些变量 Lua 中的所有全局变量都驻留在可用作全局变量的表中 G http www lua org m
  • ESP8266 NodeMCU 堆内存不足

    我正在尝试通过从我的笔记本电脑发送 POST 使用 node js 来使用 ESP8266 01 来切换 LED 我现在遇到内存问题 因为每当我发送 POST 请求时 ESP 中使用的内存就会增加 而堆内存会减少 并且当没有剩余内存时它会崩
  • Lua:setfenv() 与 _ENV

    Lua 切换有什么大不了的setfenv to ENV 在各种 新增内容 资料中 这一举措被认为是 Lua 5 1 和 5 2 版本之间最重要的变化之一 但是 PIL 和其他地方给出的示例可以修剪为以下内容 Lua 5 1 Lua 5 2
  • 设置私有 luarocks 存储库

    对于我的设置 我需要一个 luarocks rock 的私有存储库 我可以将它们安装在我的开发环境中 而无需连接到互联网 为 luarocks 设置远程存储库的步骤是什么 我可以使用 sftp 服务器吗 有人有过这样的经历吗 在深入研究这个
  • Lua 中的“主”函数?

    在 python 中 通常会定义一个 main 函数 以便允许脚本用作模块 如果需要 def main print Hello world return 0 if name main sys exit main 在Lua中 这个习语if n
  • 为什么这个 Lua 优化 hack 会提高性能?

    我正在寻找一个描述提高 Lua 性能的各种技术的文档 http www lua org gems sample pdf脚本代码 我很震惊竟然需要这样的技巧 虽然我引用的是 Lua 但我在 Javascript 中也见过类似的 hack 为什
  • 如何在表中表示 nil

    假设我想存储一个元素列表 包括一些零值 值的位置很重要 我需要表示列表中给定位置处不存在值 这里有一个问题 a 1 2 3 nil 4 for k v in ipairs a do print k v end print a 4 print
  • 如何更新lua中的时间以反映执行过程中系统时区的变化?

    Problem 我想修改awful widget textclockAwesome wm 中的小部件可以立即反映系统时区的更改 这个小部件和所有的 Awesome wm 配置都是用 lua 编写的 目前 如果系统时区发生更改 小部件将继续根
  • 如何在多个Lua State(多线程)之间传递数据?

    我在中启动Redis连接池redis lua 通过从 C 调用 我得到了redis lua state 此 Lua 状态全局启动一次 仅在其他线程中启动get从中 当有一个 HTTP 请求 工作线程 时 我需要从redis lua stat
  • Lua:冒号符号、“自我”和函数定义与调用

    我对定义 调用 Lua 函数时使用的冒号表示法感到非常困惑 我以为我已经明白了 直到我看到这段代码 function string PatternSafe str return str gsub pattern escape replace
  • Lua中如何获取目录列表

    我需要 LUA 中的目录列表 假设我的目录路径为 C Program Files 我需要该特定路径中所有文件夹的列表以及如何搜索该列表中的任何特定文件夹 Example 需要路径 C Program Files 中所有文件夹的列表 以下是上
  • 检查lua中是否存在目录?

    如何检查 lua 中是否存在目录 如果可能的话最好不使用 LuaFileSystem 模块 尝试做类似以下 python 行的事情 os path isdir path 这是一种在 Unix 和 Windows 上都适用的方式 无需任何外部
  • 为什么 LuaJIT 和 Lua 中的数字舍入格式不同?

    Using string format 据说遵循 Csprintf 在 LuaJIT 轮次中格式化数字与我尝试过的所有其他 Lua 解释器不同 lua v Lua 5 4 1 Copyright C 1994 2020 Lua org PU
  • lua http套接字超时

    LuaSocket HTTP 模块文档说可以在 HTTP 连接上设置超时 可以设置以下常量来控制 HTTP 模块的默认行为 PORT 用于连接的默认端口 PROXY 用于连接的默认代理 TIMEOUT 设置所有I O操作的超时时间 USER

随机推荐

  • view-source是一种协议,查看源码

    view source是一种协议 早期基本上每个浏览器都支持这个协议 后来Microsoft考虑安全性 对于WindowsXP pack2以及更高版本以后IE就不再支持此协议 但是这个方法在FireFox和Chrome浏览器都还可以使用 如
  • Linux驱动_spi驱动(ICM20608)

    参考 Linux SPI 驱动分析 1 结构框架 StephenZhou CSDN博客 linux spi驱动 Linux SPI 驱动分析 2 框架层源码分析 StephenZhou CSDN博客 spi message init SPI
  • sql server 加密_列级SQL Server加密

    列加密 创建一个新的数据库并创建CustomerInfo表 CREATE DATABASE CustomerData Go USE CustomerData GO CREATE TABLE CustomerData dbo Customer
  • 机器学习/深度学习--手写数字识别(MNIST数据集)

    import torch 导入torchvision的transform模块 用来处理数据集 from torchvision import transforms from torchvision import datasets from
  • WebRTC音视频通话-RTC直播本地视频及相册视频文件

    WebRTC音视频通话 RTC直播本地视频及相册视频文件 WebRTC音视频通话 RTC直播本地视频文件效果图如下 WebRTC音视频通话 RTC直播本地视频文件时候 用到了AVPlayer CADisplayLink 一 通过AVPlay
  • SpringBoot项目部署到阿里云服务器

    一 阿里云 01 开放端口 02 安装jdk 將jar包放到这个目录下 解压缩 并删除安装包 tar zxvf jdk 8u191 linux x64 tar gz rm f jdk 8u191 linux x64 tar gz 设置系统环
  • shell中 >&2含义

    echo this is a test gt 2 gt 2 也就是把结果输出到和标准错误一样 之前如果有定义标准错误重定向到某file文件 那么标准输出也重定向到这个file文件 其中 的意思 可以看成是 The same as 与 一样
  • webpack入门

    webpack入门 webpack简介 模块打包器 项目构建工具 自动化构建工具 将多种类型资源之间的依赖关系构建成统一的静态资源 打包上线部署 js css等 但不包括html 因为它认为html不算模块 四个核心概念 入口entry 输
  • springboot整合shiro实现认证授权源码

    shiro admin 介绍 springboot整合shiro实现前后端分离架构 swagger文档协调前端开发 源码地址 https gitee com liujinxin ark shiro admin 软件架构 架构说明 sprin
  • 【深度学习】 Python 和 NumPy 系列教程(一):Python基本数据类型:1、数字(整数、浮点数)及相关运算;2、布尔值

    目录 一 前言 二 实验环境 三 Python基本数据类型 1 数字 a 整数 int b 浮点数 float c 运算 运算符 增强操作符 代码整合 d 运算中的类型转换 e 运算函数abs max min int float 2 布尔值
  • 如何判断对象中是否存在某个键名

    之前遇到过很多这样的问题 如何去判断对象中是否存在某个键 从而对其进行下一步的操作 下面就就给大家介绍一种我目前了解的一种方法 首先你新建了一个新的对象 var obj 顺便复习一下上次讲的forEach循环 function get so
  • TCP 三次握手和四次挥手的面试题

    重新整理了一版 TCP 三次握手和四次挥手的面试题 2023最新版 任 TCP 虐我千百遍 我仍待 TCP 如初恋 巨巨巨巨长的提纲 发车 发车 img TCP 基本认识 TCP 头格式有哪些 我们先来看看 TCP 头的格式 标注颜色的表示
  • python 编码 —— codecs 库

    1 对文件读写 import codecs fout codecs open test html w encoding UTF 8 fout write fout write fout close 很自然地可将其改造为 with 结构 wi
  • 淘宝TDDL数据库分库分表

    淘宝TDDL数据库分库分表 2014 06 04 23 18 3334人阅读 评论 0 收藏 举报 分类 数据库 1 分库分表 而且分库规则非常灵活 2 主键生成策略 目前TDDL提供的id生成主要还是依托数据库来进行的 oracle可以直
  • 八大排序算法-归并排序

    归并排序的定义 是将两个 或两个以上 有序表合并成一个新的有序表 即把待排序序列分为若干个子序列 每个子序列是有序的 然后再把有序子序列合并为整体有序序列 归并排序的基本思想 设r i n 由两个有序子表r i m 和r m 1 n 组成
  • ref绑定到不同元素获取到不同对象

    ref如果绑定在组件中 那么通过this ref refname获取到的是一个组建对象 ref如果绑定在普通的元素中 那么通过this ref refname获取到的是一个元素对象
  • 云呐

    科技大数据时代 企业的信息化规划刻不容缓 固定资产管理系统做为一款企业资产方案系统 可完成对企业资产的系统化管理 充分发挥资产更高的实用价值 固定资产管理系统可将企业內部全部资产融合在一起 根据对固定资产的增加 改动 退出 迁移 删除 使用
  • 2016年4月28日(6985小时时),第一次签合同,里程碑

    这周四 我觉得是个历史性的事件 是个里程碑 说明 锲而不舍 金石可镂 虽然不多 2万
  • win11/ win10 C盘扩容教程

    win11 win10 C 盘扩容教程 1 写在前面 10月5号微软官方正式发布了win11操作系统 作为一名科技星人 我也是第一时间升级体验了一番 如何升级win11我就不多说了 晚上一搜教程非常的多 这里推荐使用win11升级助手升级
  • 合宙ESP32系列

    目录 源文档见 ESP32系列编译文档 LuatOS 文档 本地编译详细步骤 准备环境 准备项目 获取源码 编译前的最后准备 编译 LuatOS SoC通用固件格式soc介绍 定制固件里的库 PS luat conf bsp h问题汇总 源