当前位置: 首页 > news >正文

U-boot(一):Uboot命令和tftp

        本文主要基于S5PV210探讨uboot。

uboot
        部署:uboot(180~400K的裸机程序)在Flash(可上电读取)、OS在FLash(nand)
        启动过程:上电后先执行uboot、uboot初始化DDR和Flash,将OS从Flash中读到DDR中启动OS,uboot结束
        特点:开机直接启动,引导操作系统内核启动并给内核传参

        uboot对Flash和DDR管理:uboot在Flash起始地址(扇区0/1,SoC决定,大小512KB/1MB),环境变量大小32KB左右,kernel大小3MB/5MB,rootfs大小2/3G,其余为自由分区,各分区紧挨排布,不堆叠

tftp服务器搭建

        预备:

                windows10

                unbuntu14.04

                S5PV210开发板

        网络配置:

               windows10配置:以太网配置IP:192.168.100.99,255.255.255.0,192.168.100.1

                ubuntu配置:NAT网卡连接网络,桥接网卡(网络模式选择以太网对应模式):192.168.100.100,255.255.255.0,192.168.100.1

                uboot(已烧录ubbot到210的sd卡)

set ipaddr    192.168.100.27set gatewayip 192.168.100.1set serverip  192.168.100.100save

         uboot的IP配置及网络测试

   

           ubuntu部署tftp

apt-get install tftp-hpa tftpd-hpa xinetd -yvim /etc/default/tftpd-hpa# /etc/default/tftpd-hpaTFTP_USERNAME="tftp"
TFTP_DIRECTORY="/root/tftp_file"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"vim /etc/xinetd.d/tftpservice tftp
{socket_type = dgramwait = yesdisable = nouser = rootprotocol = udpserver = /usr/sbin/in.tftpdserver_args = -s /root/tftp_file#log_on_success += PID HOST DURATION#log_on_failure += HOSTper_source = 11cps =100 2flags =IPv4
}service tftpd-hpa startmkdir /root/tftp_filechmod 777 /root/tftp_file测试cd ~touch /root/tftp_file/a.txttftp 127.0.0.1get a.txtquitls /root/a.txtroot目录下有下载完成的a.txt(来自/root/tftp_file)

          tftp测试

ububtu:上传zImage到/root/tftp_fileuboot:tftp 30008000 zImagemovi read kernel 30008000bootm 30008000

      

uboot命令
        基础
                bdinfo:查看开发板基础信息             

x210 # bdinfo
arch_number = 0x00000998
env_t       = 0x00000000
boot_params = 0x30000100
DRAM bank   = 0x00000000
-> start    = 0x30000000
-> size     = 0x10000000
DRAM bank   = 0x00000001
-> start    = 0x40000000
-> size     = 0x10000000
ethaddr     = 00:40:5C:26:0A:5B
ip_addr     = 192.168.1.88
baudrate    = 115200 bps


                version:查看uboot版本

x210 # versionU-Boot 1.3.4-dirty (May 21 2016 - 18:17:00) for x210


                print/printenv:打印环境变量
                set/setenv:设置(删除)环境变量
                save/saveenv:保存环境变量
                reset:重启
                poweroff:关机
                注意:设置和打印和删除的环境变量均为uboot启动时从flash中读到DDR中的环境变量,save可将set设置的命令同步到flash中

        ddr
                md:打印内存值
                md [.b, .w, .l] address [# of objects]
                b:byte(1字节),w:word(2字节),l:long(4字节)
                address:起始地址,后跟字节长度
        

x210 # help md
md [.b, .w, .l] address [# of objects]- memory displayx210 # md.b 30000000
30000000: f2 28 3e 74 83 cc 34 9a ae 9a 98 a2 c6 d7 49 9b    .(>t..4.......I.
30000010: ff ab bb b1 db fa 55 3c 9f ff ff f4 7e be ff d1    ......U<....~...
30000020: f3 fc 3f d7 fe ff fe e2 9f b7 de eb 9f ff ae ef    ..?.............
30000030: 8e f5 de e7 3d f9 7c e2 6e f8 1f f8 dc ed 7e fd    ....=.|.n.....~.
x210 # md.w 30000000
30000000: 28f2 743e cc83 9a34 9aae a298 d7c6 9b49    .(>t..4.......I.
30000010: abff b1bb fadb 3c55 ff9f f4ff be7e d1ff    ......U<....~...
30000020: fcf3 d73f fffe e2fe b79f ebde ff9f efae    ..?.............
30000030: f58e e7de f93d e27c f86e f81f eddc fd7e    ....=.|.n.....~.
30000040: afbf fb93 7d6d 41ef febf edd8 6ffb 4bee    ....m}.A.....o.K
30000050: c259 79ed dd59 ae78 c718 cdca 2f49 fcea    Y..yY.x.....I/..
30000060: fdb5 8e6a 3def e3be 6eab feed def7 eeab    ..j..=...n......
30000070: f6f1 f6be 0935 59bd f0ff eab6 0f9b dc5b    ....5..Y......[.
x210 # md.l 30000000
30000000: 743e28f2 9a34cc83 a2989aae 9b49d7c6    .(>t..4.......I.
30000010: b1bbabff 3c55fadb f4ffff9f d1ffbe7e    ......U<....~...
30000020: d73ffcf3 e2fefffe ebdeb79f efaeff9f    ..?.............
30000030: e7def58e e27cf93d f81ff86e fd7eeddc    ....=.|.n.....~.
30000040: fb93afbf 41ef7d6d edd8febf 4bee6ffb    ....m}.A.....o.K
30000050: 79edc259 ae78dd59 cdcac718 fcea2f49    Y..yY.x.....I/..
30000060: 8e6afdb5 e3be3def feed6eab eeabdef7    ..j..=...n......
30000070: f6bef6f1 59bd0935 eab6f0ff dc5b0f9b    ....5..Y......[.
30000080: 1141df55 9f98bd6a e3d83e9e 39fcabf5    U.A.j....>.....9
30000090: ac479f9a dca771e2 6b61c763 cec95d3d    ..G..q..c.ak=]..
300000a0: a4c8ceff ffbbebaa ea22aebf fa8ecf9e    ..........".....
300000b0: ed7bfffe a1277d2b f4b4ff56 cb81deff    ..{.+}'.V.......
300000c0: d59d27e4 af0d3eed beed2ebf b399b789    .'...>..........
300000d0: 5cd5bd57 ffa8bef9 b52cf9a9 ede94ff6    W..\......,..O..
300000e0: 3eedc9f7 9ecab7ff 6a0bf777 6b1b46f9    ...>....w..j.F.k
300000f0: 73e639bb 255a8ccf 2ebfb8cb 7a3a5d37    .9.s..Z%....7]:z
x210 # 


                nm:修改指定内存地址的数据
                nm [.b, .w, .l] address

x210 # md.b 30000000
30000000: f2 28 3e 74 83 cc 34 9a ae 9a 98 a2 c6 d7 49 9b    .(>t..4.......I.
30000010: ff ab bb b1 db fa 55 3c 9f ff ff f4 7e be ff d1    ......U<....~...
30000020: f3 fc 3f d7 fe ff fe e2 9f b7 de eb 9f ff ae ef    ..?.............
30000030: 8e f5 de e7 3d f9 7c e2 6e f8 1f f8 dc ed 7e fd    ....=.|.n.....~.
x210 # nm.b 30000000
30000000: f2 ? 11
30000000: 11 ? q
x210 # md.b 30000000
30000000: 11 28 3e 74 83 cc 34 9a ae 9a 98 a2 c6 d7 49 9b    .(>t..4.......I.
30000010: ff ab bb b1 db fa 55 3c 9f ff ff f4 7e be ff d1    ......U<....~...
30000020: f3 fc 3f d7 fe ff fe e2 9f b7 de eb 9f ff ae ef    ..?.............
30000030: 8e f5 de e7 3d f9 7c e2 6e f8 1f f8 dc ed 7e fd    ....=.|.n.....~.


                mm:递归修改指定内存地址的数据
                mm [.b, .w, .l] address
       

x210 # mm.b 30000000
30000000: 11 ? f2
30000001: 28 ? 11
30000002: 3e ? q
x210 # md.b 30000000
30000000: f2 11 3e 74 83 cc 34 9a ae 9a 98 a2 c6 d7 49 9b    ..>t..4.......I.
30000010: ff ab bb b1 db fa 55 3c 9f ff ff f4 7e be ff d1    ......U<....~...
30000020: f3 fc 3f d7 fe ff fe e2 9f b7 de eb 9f ff ae ef    ..?.............
30000030: 8e f5 de e7 3d f9 7c e2 6e f8 1f f8 dc ed 7e fd    ....=.|.n.....~.


                mw:指定的数据填充内存
                mw [.b, .w, .l] address value [count]
                value:数据 count:数据的长度

x210 # mw.b 30000000 668899 2
x210 # md.b 30000000
30000000: 99 99 3e 74 83 cc 34 9a ae 9a 98 a2 c6 d7 49 9b    ..>t..4.......I.
30000010: ff ab bb b1 db fa 55 3c 9f ff ff f4 7e be ff d1    ......U<....~...
30000020: f3 fc 3f d7 fe ff fe e2 9f b7 de eb 9f ff ae ef    ..?.............
30000030: 8e f5 de e7 3d f9 7c e2 6e f8 1f f8 dc ed 7e fd    ....=.|.n.....~.
x210 # mw.b 30000000 668899 4
x210 # md.b 30000000
30000000: 99 99 99 99 83 cc 34 9a ae 9a 98 a2 c6 d7 49 9b    ......4.......I.
30000010: ff ab bb b1 db fa 55 3c 9f ff ff f4 7e be ff d1    ......U<....~...
30000020: f3 fc 3f d7 fe ff fe e2 9f b7 de eb 9f ff ae ef    ..?.............
30000030: 8e f5 de e7 3d f9 7c e2 6e f8 1f f8 dc ed 7e fd    ....=.|.n.....~.
x210 # 

 
                cp将原地址数据复制到目标地址
                cp [.b, .w, .l] source target count

x210 # md.b 30000000
30000000: 99 99 99 99 83 cc 34 9a ae 9a 98 a2 c6 d7 49 9b    ......4.......I.
30000010: ff ab bb b1 db fa 55 3c 9f ff ff f4 7e be ff d1    ......U<....~...
30000020: f3 fc 3f d7 fe ff fe e2 9f b7 de eb 9f ff ae ef    ..?.............
30000030: 8e f5 de e7 3d f9 7c e2 6e f8 1f f8 dc ed 7e fd    ....=.|.n.....~.
x210 #  md.b 30008000
30008000: f2 28 7f f7 9f ef ff ba bf ba f8 eb d6 f7 ba ff    .(..............
30008010: ff ab f3 e3 db fa 4d 3e df df c6 f6 be ab ee f9    ......M>........
30008020: f7 fc bf ff 7f ff bf e3 bf 9f df ef 97 ff ee e3    ................
30008030: 8e f5 de ef 39 f9 fe e7 ff ff ff fa ff ff ff fb    ....9...........
x210 # cp.b  30000000 30008000 4    
x210 # md.b 30008000
30008000: 99 99 99 99 9f ef ff ba bf ba f8 eb d6 f7 ba ff    ................
30008010: ff ab f3 e3 db fa 4d 3e df df c6 f6 be ab ee f9    ......M>........
30008020: f7 fc bf ff 7f ff bf e3 bf 9f df ef 97 ff ee e3    ................
30008030: 8e f5 de ef 39 f9 fe e7 ff ff ff fa ff ff ff fb    ....9...........


                cmp:比较两个地址段数据
                cmp [.b, .w, .l] addr1 addr2 count

x210 # md.b 30000000
30000000: 99 99 99 99 83 cc 34 9a ae 9a 98 a2 c6 d7 49 9b    ......4.......I.
30000010: ff ab bb b1 db fa 55 3c 9f ff ff f4 7e be ff d1    ......U<....~...
30000020: f3 fc 3f d7 fe ff fe e2 9f b7 de eb 9f ff ae ef    ..?.............
30000030: 8e f5 de e7 3d f9 7c e2 6e f8 1f f8 dc ed 7e fd    ....=.|.n.....~.
x210 # md.b 30008000
30008000: 99 99 99 99 9f ef ff ba bf ba f8 eb d6 f7 ba ff    ................
30008010: ff ab f3 e3 db fa 4d 3e df df c6 f6 be ab ee f9    ......M>........
30008020: f7 fc bf ff 7f ff bf e3 bf 9f df ef 97 ff ee e3    ................
30008030: 8e f5 de ef 39 f9 fe e7 ff ff ff fa ff ff ff fb    ....9...........
x210 # md.b 30009000
30009000: 5e f3 dd ff d7 f9 db e5 dc 9f df e7 f3 73 fd f4    ^............s..
30009010: 3c ff b6 ef c7 f5 bf f4 6f fd a6 f7 ff f2 a5 f7    <.......o.......
30009020: f7 ff ff ff f6 d7 e9 f3 cf 3f b3 ef ff 7f fc e1    .........?......
30009030: dc fd 77 f3 cd ff fd fb ed 93 ff ef 3f ff fe ec    ..w.........?...
x210 # cmp.b 30000000 30008000 1
Total of 1 byte were the same
x210 # cmp.b 30000000 30009000 1
byte at 0x30000000 (0x99) != byte at 0x30009000 (0x5e)
Total of 0 bytes were the same
x210 # 

        网络
                ipaddr:地址
                serverip:tftp服务器地址
                dhcp:自动获取地址
                ping:查看网络

        启动
                boot:读取环境变量bootcmd启动Linux
                bootz:启动 zImage 
                bootm: 启动 uImage 
                Image为内核映像文件
                zImage为映像压缩文件
                uImage是uboot映像文件,在zImage前加上64字节头,说明内核的版本、加载位置、生成时间、大小等信息

        flash
                nand scrub:擦除整个NAND,擦除bad block标记
                nand erase addr1 count:擦除NAND,count擦除字节数
                nand write addr offset count:内存数据写入NAND,offset是偏移地址
                nand read addr offset count :NAND数据读取到内存
                nand bad:测试NAND FLASH坏块    

                mmc info 设备的信息

x210 # mmcinfo
Device: S3C_HSMMC0
Manufacturer ID: 11
RCA: 0
OEM: 100
Name: 004GA 
Tran Speed: 52000000
Rd Block Len: 512
MMC version 4.0
High Capacity: Yes
Size: 3776MB (block: 7733248)
Bus Width: 4-bit


                mmc rescan [mode] 扫描开发板上MMC设备,包括EMMC和SD卡
                mmc list 查看开发板MMC设备

x210 # mmc list
S3C_HSMMC0_dev0
S3C_HSMMC2_dev1


                mmc dev 切换当前MMC设备:mmc dev [dev] [part]
                [dev]切换MMC设备号,[part]分区号
                mmc part查看分区
                mmc read 读取mmc设备数据 

                movi init  初始化moviNAND并显示信息
                movi read  {u-boot | kernel} {addr} [bytes(hex)] 读取某地址sd/mmc信息
                movi write {fwbl1 | u-boot | kernel} {addr} [bytes(hex)]写入数据sd/mmc的某地址

相关文章:

U-boot(一):Uboot命令和tftp

本文主要基于S5PV210探讨uboot。 uboot 部署&#xff1a;uboot(180~400K的裸机程序)在Flash(可上电读取)、OS在FLash(nand) 启动过程&#xff1a;上电后先执行uboot、uboot初始化DDR和Flash,将OS从Flash中读到DDR中启动OS,uboot结束 特点&#xff1a;…...

代码随想录算法训练营第五十三天丨 动态规划part14

1143.最长公共子序列 思路 本题和动态规划&#xff1a;718. 最长重复子数组 (opens new window)区别在于这里不要求是连续的了&#xff0c;但要有相对顺序&#xff0c;即&#xff1a;"ace" 是 "abcde" 的子序列&#xff0c;但 "aec" 不是 &quo…...

pdf增强插件 Enfocus PitStop Pro 2022 mac中文版功能介绍

Enfocus PitStop Pro mac是一款 Acrobat 插件&#xff0c;主要用于 PDF 预检和编辑。这个软件可以帮助用户检查和修复 PDF 文件中的错误&#xff0c;例如字体问题、颜色设置、图像分辨率等。同时&#xff0c;Enfocus PitStop Pro 还提供了丰富的编辑工具&#xff0c;可以让用户…...

uniapp app tabbar 页面默认隐藏

1.在page.json 中找到tabbar visible 默认为true,设为false则是不显示 uni.setTabBarItem({ index: 1, //列表索引 visible:true //显示或隐藏 })...

深度学习 YOLO 实现车牌识别算法 计算机竞赛

文章目录 0 前言1 课题介绍2 算法简介2.1网络架构 3 数据准备4 模型训练5 实现效果5.1 图片识别效果5.2视频识别效果 6 部分关键代码7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于yolov5的深度学习车牌识别系统实现 该项目较…...

即时通讯技术文集(第23期):IM安全相关文章(Part12) [共15篇]

为了更好地分类阅读 52im.net 总计1000多篇精编文章&#xff0c;我将在每周三推送新的一期技术文集&#xff0c;本次是第23 期。 [- 1 -] 理论联系实际&#xff1a;一套典型的IM通信协议设计详解&#xff08;含安全层设计&#xff09; [链接] http://www.52im.net/thread-283-…...

为什么UI自动化难做?—— 关于Selenium UI自动化的思考

在快速迭代的产品、团队中&#xff0c;UI自动化通常是一件看似美好&#xff0c;实际“鸡肋”&#xff08;甚至绝大部分连鸡肋都算不上&#xff09;的工具。原因不外乎以下几点&#xff1a; 1 效果有限 通常只是听说过&#xff0c;就想去搞UI自动化的团队&#xff0c;心里都认…...

Python小白之“没有名称为xlwings‘的模块”

题外话&#xff1a;学习和安装Python的第一个需求就是整理一个Excel&#xff0c;需要读取和写入Excel 背景&#xff1a;取到的模板代码&#xff0c;PyCharm本地运行报错&#xff1a;没有名称为xlwings的模块 解决办法&#xff1a;这类报模板找不到的错&#xff0c;即是模块缺…...

RK3588 学习教程1——获取linux sdk

上手rk3588前&#xff0c;需要先拥有一块开发板&#xff0c;这样可以少走很多弯路。个人推荐买一块itx3588j的板子。挺好用&#xff0c;接口丰富&#xff0c;可玩性高。 sdk可以直接在firefly官网下载&#xff0c;不用管什么版本&#xff0c;下载下来后直接更新即可&#xff0…...

保护您的Google账号安全:检查和加固措施

简介&#xff1a;随着我们在日常生活中越来越依赖于Google账号&#xff0c;我们的个人信息和敏感数据也变得越来越容易受到威胁。为了确保您的Google账号的安全性&#xff0c;本文将介绍一些简单但有效的方法&#xff0c;帮助您检查和加固您的Google账号。 --- 在数字时代&am…...

「Verilog学习笔记」优先编码器Ⅰ

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 分析编码器的功能表&#xff1a; 当使能El1时&#xff0c;编码器工作&#xff1a;而当E10时&#xff0c;禁止编码器工作&#xff0c;此时不论8个输入端为何种状态&…...

java实现TCP通信(socket)服务端-客户端

我在写的时候&#xff0c;我的需求就很简单&#xff0c;写一个服务端&#xff0c;去让别人进行请求&#xff0c;借鉴了很多聊天室什么的&#xff0c;越搞越复杂。 期间也使用到了 BufferedReader中readLine&#xff08;&#xff09;方法&#xff0c;进行获取客户端传来的数据&…...

企业信息模糊搜索API的使用及应用场景

前言 随着企业数据的不断增加&#xff0c;如何高效地搜索和管理这些数据成为了企业管理者关注的重要问题。而企业信息模糊搜索API的出现&#xff0c;为企业提供了一种高效的解决方案。本文将介绍企业信息模糊搜索API的使用及应用场景。 一、什么是企业信息模糊搜索API&#x…...

.net6+aspose.words导出word并转pdf

本文使用net6框架&#xff0c;aspose.word破解激活并兼容net6&#xff0c;导出word模板并兼容识别html并给其设置字体&#xff0c;前端直接浏览器下载&#xff0c;后端保存文件并返回文件流&#xff0c;还有批量导出并压缩zip功能 1、安装Aspose.Words的nuget包选择21.8.0 版本…...

深度学习 植物识别算法系统 计算机竞赛

文章目录 0 前言2 相关技术2.1 VGG-Net模型2.2 VGG-Net在植物识别的优势(1) 卷积核&#xff0c;池化核大小固定(2) 特征提取更全面(3) 网络训练误差收敛速度较快 3 VGG-Net的搭建3.1 Tornado简介(1) 优势(2) 关键代码 4 Inception V3 神经网络4.1 网络结构 5 开始训练5.1 数据集…...

《深入浅出进阶篇》洛谷P4147 玉蟾宫——悬线法dp

上链接&#xff1a;P4147 玉蟾宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P4147 上题干&#xff1a; 有一个NxM的矩阵&#xff0c;每个格子里写着R或者F。R代表障碍格子&#xff0c;F代表无障碍格子请找出其中的一个子矩阵&#xff0c…...

社区论坛小程序源码系统,功能齐全,页面简洁,前端+后端+完整部署教程

现如今&#xff0c;社区论坛已经成为人们交流思想&#xff0c;分享经验&#xff0c;获取信息的重要平台。近年来&#xff0c;小程序的出现更是改变了传统的网站建设方式&#xff0c;让用户体验更加便捷&#xff0c;高效。今天源码小编来和大家分享一款社区论坛小程序源码系统&a…...

大数据开发面试(一)

1、Kafka 和 Flume 的应用场景&#xff1f; Kafka 和 Flume 的应用场景如下&#xff1a; Kafka&#xff1a;定位消息队列&#xff0c;适用于多个生产者和消费者共享一个主题队列的场景。适用于需要高吞吐量、可扩展性和容错能力的场景。主要用于大数据处理、实时数据流分析和日…...

softmax的高效CUDA编程和oneflow实现初步解析

本文参考了添加链接描述,其中oneflow实现softmax的CUDA编程源代码参考链接添加链接描述 关于softmax的解读以及CUDA代码实现可以参考本人之前编写的几篇文章添加链接描述,添加链接描述,添加链接描述 下面这个图片是之前本人实现的softmax.cu经过接入python接口,最终和pytor…...

如何解决 Node.js 20 升级中未预期的请求问题

在 Tubi&#xff0c;我们使用 Node.js 为 Web/OTT 应用进行服务端渲染及代理请求。近来&#xff0c;为了从新版本的性能改进和新功能中受益&#xff0c;我们将 Node.js 从 14.x 版本升级到了 20.x。 升级像 Node.js 这样的基础设施绝非易事&#xff0c;尤其是有着许多第三方依…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...