【SA8295P 源码分析】系列文章链接汇总 - 持续更新中
【SA8295P 源码分析】00 - 系列文章链接汇总 - 持续更新中
- 一、分区、下载、GPIO等杂项相关
- 二、开机启动流程代码分析
- 二、OpenWFD 显示屏模块
- 三、Touch Panel 触摸屏模块
- 四、QUPv3 及 QNX Host透传配置
- 五、Camera 摄像头模块(当前正在更新中...)
- 六、网络相关模块(NFS、VLAN、telnet)
- 七、网络相关模块(Ethernet MAC)
- 八、Security 安全策略(QNX secpol、Android SELinux)
- 九、Thermal 温控策略
- 十、QNX 侧常用的调试命令
- 2023年8月20日 Note Update:
有些粉丝看我有些内容写的比较深入,以为我是高通负责相应模块的内部人员,
澄清一下,我只是一个在做基于SA8295P
芯片项目的BSP
开发工程师,专栏参考代码是原生SA8295P
基线代码。
.
本专栏主要目的是:利用工作之外的时间去深入代码 分析底层的代码实现原理,来提高自身的技术能力。
实际工作中,有些人可能只是一个螺丝钉的角色,只对当前做的事精通,但其他模块领域一窍不通;
有些人,可能只是会调会配,但为什么要这样配这样调,可能就说不太清楚了。
这也是我想去解决的问题,兼顾知识广度和深度,会配,会调,也知道为什么要这样配这样调。
简单来说就是,我希望自已目前做的事,通过我自身的努力, 做到懂原理懂流程懂代码,而不是简单的代码搬运工。
要想做到这个程度,肯定很难,但我一定会努力,慢慢学习,总结,以更新博客。
.
本专栏文章内容主要是个人工作之外的自我学习总结分享,不敢及不会泄露公司相关的所有信息,不敢也不会泄露高通的代码文档!!!。
.
本专栏介绍如下:
【高通原生代码版本】:SA8295p-HQX-4-2-4-0_HLOS_dev_qnx.tar.gz
,SA8295_AU_LINUX_ANDROID_LA.AU.1.4.8.R1.10.00.00.1083.005
【文章类型】:晚上下班后在家、周末在家分析代码自学所产出的自学总结文档;协助粉丝兄弟咨询的问题调试分析总结
【涉及领域】:除Audio
外的其他所有BSP
模块(Audio
我也有相关的基础,但目前工作不会涉及,所以优先级放后)
【广度预期】:按由广到精的思路,先把 SA8295 各个模块做到满足工作需求,各模块做到会配、会调、会分析。
【深度预期】:精力有限,不可能所有模块都精通,目前先侧重三方面:系统启动流程 > 屏/TP > 摄像头,其他的模块会调会配会分析就够了。
【专栏更新时间】:持续学习总结,持续更新(毕竟由广到精,想要对SA2895平台有一定的了解,得持续学习,不是一时半会就能达成的)
.
老规矩,大家有啥遇到的问题,或者有哪个方面想了解的,也可以私信给我,如果我懂的且有时间的话,可以协助一起分析下。
私信时请说明:问题详细描述,预期现象,当前现象,当前分析进展 及 相关log
汇总链接:
《【SA8295P 源码分析】系列文章链接汇总》
《【SA8295P 源码分析】00 - 系列文章链接汇总》
本系列正文链接如下:
一、分区、下载、GPIO等杂项相关
- 《【SA8295P 源码分析】01 - SA8295P 芯片介绍》
- 《【SA8295P 源码分析】02 - SA8295P 整包镜像分析》
- 《【SA8295P 源码分析】41 - SA8295所有镜像位置、拷贝脚本、生成QFIL包》
- 《【SA8295P 源码分析】43 - SA8295 基线代码编译相关的问题 答疑》
- 《【SA8295P 源码分析】45 - 部分镜像解包方法详解:boot_la、boot、vendor_boot、dtb、NON-HLOS、super、persist、metadata、userdata》
- 《【SA8295P 源码分析】48 - QNX 侧GPIO 配置方法、中断配置、调试工具 详解》
- 《【SA8295P 源码分析】52 - 答疑之 QNX 创建镜像、Android定制修改selinux权限,user版本采用enforcing,userdebug版本permissive》
- 《【SA8295P 源码分析】60 - QNX Host 如何新增 android_test 分区给 Android GVM 挂载使用》
- 《【SA8295P 源码分析】62 - Android GVM Kernel 内核 make bootimage 过程分析》
- 《【SA8295P 源码分析】63 - defconfig 解析 之 修改 Kernel 宏控配置应该修改哪些 config 文件才会生效?》
- 《【SA8295P 源码分析】49 - Android编译报错:check_vintf.cpp For kernel requirements at matrix level 6》
二、开机启动流程代码分析
- 【试读】《【SA8295P 源码分析】03 - SA8295P QNX Host 上电开机流程分析》
- 《【SA8295P 源码分析】04 - SA8295P QNX Host 上电开机过程中的各组件功能介绍》
- 《【SA8295P 源码分析】05 - SA8295P QNX Host 上电开机过程 进一步梳理(结合代码)》
- 【试读】《【SA8295P 源码分析】06 - SA8295P XBL Loader 阶段 sbl1_main_ctl() 函数代码分析》
- 《【SA8295P 源码分析】07 - XBL Loader 解析 sbl1_config_table 规则分析》
- 《【SA8295P 源码分析】08 - XBL Loader 加载 SMSS、XBL Config、SHRM、CDT 、DDR、APDP、RamDump、OEM_MISC、AOP、QSEE过程分析》
- 《【SA8295P 源码分析】09 - XBL Loader 加载 QSEE、SEC、CPUCPFW、QHEE、APPSBL过程分析》
- 《【SA8295P 源码分析】53 - mifs.build.tmpl 脚本详解:启动QNX procnto-smp-instr微内核、启动QNX串口终端shell、加载解析并执行ifs2_la.img》
- 《【SA8295P 源码分析】54 - /ifs/bin/startupmgr 程序工作流程分析 及 script.c 介绍》
- 《【SA8295P 源码分析】55 - ifs2_la.img 镜像加载解析过程分析》
- 待更新:
(1)《【SA8295P 源码分析】VMM_Android 启动过程分析》
二、OpenWFD 显示屏模块
- 《【SA8295P 源码分析】70 - QAM8295P 原理图参考设计 之 DP、eDP 接口硬件原理分析》
- 《【SA8295P 源码分析】71 - QAM8295P 原理图参考设计 之 MIPI DSI 接口硬件原理分析》
- 《【SA8295P 源码分析】72 - WFD DP/eDP、MIPI DSI 显示屏软件代码该如何配置? 有什么差异?》
- 《【SA8295P 源码分析】73 - OpenWFD 显示驱动库 libDP2_COMMON.so 源码分析》
display bringup
配置及调试过程分析:
- 《【SA8295P 源码分析】10 - HQX Display(OpenWFD)qcdisplaycfg_ADP_STAR_LA.xml 配置文件解析》
- 《【SA8295P 源码分析】11 - HQX Display(OpenWFD)仪表屏、中控屏 Bringup 代码移植步骤》
- 《【SA8295P 源码分析】40 - OpenWFD 显示屏配置文件 graphics_ADP_STAR.conf 、qcdisplaycfg_ADP_STAR_LA.xml 的解析流程》
- 《【SA8295P 源码分析】56 - OpenWFD 显示驱动库 libDSI_MAX96789_0.so 调用及解析流程分析》
- 《【SA8295P 源码分析】57 - libDSI_MAX96789_0.so驱动库 之 QDI_Panel_Init 显示屏初始化函数 代码分析》
- 《【SA8295P 源码分析】58 - libDSI_MAX96789_0.so驱动库 之 QDI_Panel_SetPower上下电流程及QDI_Panel_GetInfo 获取显示屏信息等代码分析》
- 《【SA8295P 源码分析】59 - QNX如何 Dump 显示图像 之 surfacedump 功能 源码分析》
- 《【SA8295P 源码分析】61 - QNX如何 Dump 显示图像 之 echo surfacedump=n [m] > /dev/displaylog 命令代码调用流程分析》
- 《【SA8295P 源码分析】64 - QNX 与 Android GVM 显示 Dump 图片方法汇总》
- 《【SA8295P 源码分析】12 - HQX Display(OpenWFD)调试命令介绍》
- 待更新:
(1)《【SA8295P 源码分析】Android GVM 如何将图片给到QNX Host Disply 驱动显示》
openwfd
服务启动过程分析:
- 《【SA8295P 源码分析】37 - OpenWFD Server 启动流程 之 openwfd_server.c main()函数源码分析》
- 《【SA8295P 源码分析】38 - OpenWFD Server 启动流程 之 WFD_ClientMgr 初始化 之 WFD Device 设备初始化源码分析》
- 《【SA8295P 源码分析】39 - OpenWFD Server 启动流程 之 WFD_ClientMgr 初始化 之 WFD Port 端口初始化源码分析》
- 《【SA8295P 源码分析】42 - OpenWFD Server 启动流程 之 WFD_ClientMgr 初始化 之 Pipelines、ClientContexts 初始化源码分析》
- 《【SA8295P 源码分析】46 - OpenWFD Server 启动流程 之 /dev/openwfd_server_0 管道事务源码分析》
- 《【SA8295P 源码分析】50 - OpenWFD Server 启动流程 之 wfd_server_tpp 线程池源码分析》
三、Touch Panel 触摸屏模块
TP
触摸点坐标数据,上报到 Android
整个流程分三步:
-
QNX
侧TouchScreen
驱动获取坐标点上报给到Android
内核层
《【SA8295P 源码分析】15 - QNX侧 TouchScreen Panel (TP)触摸屏 Bringup 流程 及 源码分析》
《【SA8295P 源码分析】16 - QNX侧 TouchScreen Panel (TP)线程函数 tp_recv_thread() 源码分析》 -
Android
内核解析出数据,存在/dev/input/event0
对应的buffer[]
环形队列中,待用户空间读取节点时,通过copy_to_user
给到用户空间
《【SA8295P 源码分析】66 - Android 侧内核层 TouchScreen Panel(TP)触摸屏驱动生成 /dev/input/event0 源码分析》 -
Android
用户层输入子系统管理并获取到/dev/input/event0
的数据,此时坐标点数据到达Android
上层用户空间
《【SA8295P 源码分析】67 - Android 侧 模拟输入设备上报 input 事件 之 input 模拟点击坐标 实现源码分析 adb shell input tap 100 600》
《【SA8295P 源码分析】68 - Android 侧用户层 输入子系统获取 /dev/input/event0 节点数据 代码流程分析》
四、QUPv3 及 QNX Host透传配置
- 《【SA8295P 源码分析】13 - Android GVM 虚拟机 QUPv3 UART / SPI / I2C功能配置及透传配置》
- 《【SA8295P 源码分析】14 - Passthrough配置文件 /mnt/vm/images/linux-la.config 内容分析》
- 《【SA8295P 源码分析】17 - 设备虚拟化 之 Passthrough透传、Vdev Trap、HAB Socket 原理解析》
- 《【SA8295P 源码分析】33 - Android GVM USB 透传配置》
五、Camera 摄像头模块(当前正在更新中…)
-
《【SA8295P 源码分析】82 - SA8295P AIS Camera 模块 硬件原理图分析》
-
《【SA8295P 源码分析】18 - Camera Bringup 流程 及 源码分析》
-
《【SA8295P 源码分析】77 - QNX Camera 之 ais_server 服务 源码分析》
-
《【SA8295P 源码分析】78 - AIS Camera PM Event 电源事件处理函数 CameraPlatformPowerInit() 源码分析》
-
《【SA8295P 源码分析】79 - AIS Camera Event 事件处理函数 AisEngine::EventHandler() 源码分析》
-
《【SA8295P 源码分析】80 - AIS Camera libais_max96722.so 驱动库加载函数 之 CameraDeviceManager::Initialize() 源码分析》
-
《【SA8295P 源码分析】81 - AIS Camera Device 设备初始化 之 AisInputConfigurer::CreateInstance() 源码分析》
-
AisIFEConfigurer
模块初始化,接着调用AisIFEConfigurer::GlobalConfig()
进行配置 -
AisCSIConfigurer
模块初始化,接着调用AisCSIConfigurer::GlobalConfig()
、AisCSIConfigurer::GlobalStart()
进行配置 -
AisProcChainManager
模块初始化 -
AIS Camera Input
输入设备检测函数:AisInputConfigurer::GetInstance()->DetectAll()
-
AIS Server
服务事件循环处理函数:ais_server_create_client_ctxt()
六、网络相关模块(NFS、VLAN、telnet)
- 《【SA8295P 源码分析】19 - QNX Host NFS 文件系统配置》
- 《【SA8295P 源码分析】20 - GVM Android Kernel NFS Support 配置》
- 《【SA8295P 源码分析】51 - QNX NFS Server + Android NFS Client 完整配置》
- 《【SA8295P 源码分析】21 - Android GVM 虚拟网络 vlan 配置》
- 《【SA8295P 源码分析】44 - 如何替换 NON-HLOS.bin 中的 Wifi Firmware 固件》
- 《【SA8295P 源码分析】47 - AF66T - QCA6696 - QCA6390 - WIFI 功能导通》
- 《【SA8295P 源码分析】69 - Android 侧添加支持 busybox telnetd 服务》
七、网络相关模块(Ethernet MAC)
- 《【SA8295P 源码分析】22 - QNX Ethernet MAC 驱动 之 emac_entry / emac_attach() 函数源码分析》
- 《【SA8295P 源码分析】23 - QNX Ethernet MAC 驱动 之 emac1_config.conf 配置文件解析》
- 《【SA8295P 源码分析】24 - QNX Ethernet MAC 驱动 之 emac_pm_sys_pow_mon_thread_hdlr() 系统电源管理线程源码分析》
- 《【SA8295P 源码分析】25 - QNX Ethernet MAC 驱动 之 emac_isr_thread_handler() 中断处理函数 源码分析》
- 《【SA8295P 源码分析】26 - QNX Ethernet MAC 驱动 之 emac_rx_thread_handler() 数据接收线程 源码分析》
- 《【SA8295P 源码分析】27 - QNX Ethernet MAC 驱动 之 emac_tx_thread_handler() 数据发送线程 源码分析》
- 《【SA8295P 源码分析】28 - QNX Ethernet MAC 驱动 之 emac_mdio_link_monitor_thrd() MDIO监控线程 源码分析》
- 《【SA8295P 源码分析】29 - QNX Ethernet MAC 驱动 之 emac_resmgr_init() 资源管理器线程 resource manager 线程 源码分析》
- 《【SA8295P 源码分析】30 - QNX Ethernet MAC 驱动 之 emac_powerup() 上电流程 源码分析》
- 《【SA8295P 源码分析】31 - QNX Ethernet MAC 驱动 之 ifnet 接口emac_init、emac_start、emac_ioctl 源码分析》
- 《【SA8295P 源码分析】32 - QNX Ethernet Phy_Switch 驱动初始化 源码分析》
- 《【SA8295P 源码分析】35 - QNX侧 Marvell 88Q5152 Phy_Switch 导通实录(硬核)》
- 《【SA8295P 源码分析】65 - emac0-phy 与 emac1-switch兼容 方案实现》
- 《【SA8295P 源码分析】36 - MDIO Clause 22、Clause 45 条款介绍》
八、Security 安全策略(QNX secpol、Android SELinux)
- 《【SA8295P 源码分析】74 - QNX secpol 安全策略文件配置详解 及 secpol.bin 编译过程分析》
- 《【SA8295P 源码分析】75 - QNX GVM Secpol 安全策略文件 gvm_la.txt 内容分析解读》
九、Thermal 温控策略
《【SA8295P 源码分析】76 - Thermal 功耗 之 /dev/thermalmgr 相关调试命令汇总》
十、QNX 侧常用的调试命令
- 通过
qnx
进入fastboot
下载模式:reset -f
或 开机过程中串口下一直按Q
- 通过
qnx
串口进入Android GVM
的adb shell
环境:telnet 192.168.133.1
- 通过
Android GVM
的adb shell
环境 进入QNX shell
环境:busybox telnet 192.168.133.2
QNX
侧获取Android
开机log
:cat /dev/shmem/la_gvm.txt
QNX
杀死进程:slay xxxxx
,如slay vmm_service
QNX
重新可写挂载mnt
:mount -uw /mnt
QNX
侧启动log
路径:/dev/pdbg/qcore/bootlog
QNX
侧C
代码中运行 动态启动uart
:(void)system("devc-quipv3 -E -F -b9600 15");
- 查看
GPIO
状态:msmgpiotool dump
# msmgpiotool
commands:dumpinfo <gpio number> [tlmm] 示例:获取 tlmm 的GPIO0 信息 msmgpiotool info 0 info <gpio number> lpass 示例:获取 lpass 的GPIO0 信息 msmgpiotool info 0 lpassinfo <gpio number> ssc 示例:获取 ssc 的GPIO0 信息 msmgpiotool info 0 sscwrite <gpio number> <value> 示例:写 GPIO0 输出1 msmgpiotool write 0 1read <gpio> 示例:读 GPIO0 电平 msmgpiotool read 0 ===> GPIO 0 is Highrawread <gpio> 示例:读 GPIO0 电平 msmgpiotool read 0 ===> 1set-dir <gpio number> <value> 配置 输出输出模式: [0] Input, [1] Outputset-drive <gpio number> <value> 配置 GPIO 驱动能力, drive strength = [n] * 2mA for n[0..15]set-pull <gpio number> <value> 配置拉高拉低悬空: [0] No pull [1] Pull Down [2] Keeper [3] Pull Upset-func <gpio number> <value> 配置引脚函数,GPIO模式无此功能enable-irq <gpio number> <value> 使能 IRQ 中断:[0] Enable [1] Disableclear-irq <gpio> 清除 IRQ 状态set-pol <gpio number> <value> 配置 中断极性 [0] Inverted [1] Normalset-trigger <gpio number> <value> 配置边沿触发还是电平触发: [0] Level [1] Edge# msmgpiotool dump
OFFSET GPIO IN OUT DIR DRIVE PULL ALT FUNCTION TARGET IRQ POL TRIG STS
---------------------------------------------------------------------------------------------
f100000 0 High Low Out 8 mA No pull 1 NONE 0 1 Level 0
f101000 1 High Low Out 8 mA No pull 1 NONE 0 1 Level 0...... 省略 ......
f1e2000 226 High Low In 2 mA Pull down 0 NONE 0 1 Level 0
f1e3000 227 High Low In 2 mA Pull down 0 NONE 0 1 Level 0----------------------------------------LPASS TLMM GPIO Dump---------------------------------------OFFSET LPASS GPIO IN OUT DIR DRIVE PULL ALT FUNCTION HYSTERISIS CTL MISC CFG
---------------------------------------------------------------------------------------------------0x33c0000 0 Low Low Out 8 mA Pull down 0x2 Low 0x20x33c1000 1 Low Low Out 8 mA Pull down 0x2 Low 0x2...... 省略 ......0x33d1000 17 Low Low In 2 mA No pull 0x2 Low 0x00x33d2000 18 Low Low Out 8 mA Pull down 0x2 Low 0x0----------------------------------------SSC TLMM GPIO Dump---------------------------------------OFFSET SSC GPIO IN OUT DIR DRIVE PULL ALT FUNCTION HYSTERISIS CTL MISC CFG
-------------------------------------------------------------------------------------------------0x2b40000 0 Low Low In 2 mA No pull 0x0 Low 0x00x2b41000 1 Low Low In 2 mA No pull 0x0 Low 0x0...... 省略 ......0x2b52000 18 Low Low In 2 mA No pull 0x0 Low 0x00x2b53000 19 Low Low In 2 mA No pull 0x0 Low 0x0
相关文章:
【SA8295P 源码分析】系列文章链接汇总 - 持续更新中
【SA8295P 源码分析】00 - 系列文章链接汇总 - 持续更新中 一、分区、下载、GPIO等杂项相关二、开机启动流程代码分析二、OpenWFD 显示屏模块三、Touch Panel 触摸屏模块四、QUPv3 及 QNX Host透传配置五、Camera 摄像头模块(当前正在更新中...)六、网络…...
springBoot防止重复提交
两种方法, 一种是后端实现,较复杂,要通过自定义注解和AOP以及Redis组合实现 另一种是前端实现,简单,只需通过js,设置过期时间,一定时间内,多次点击按钮只生效一次 后端实现 自定义注…...
lvs-dr模式+keepalived
一,keepalived概述 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器&am…...
[C++]笔记-知识点总结
一.输入密码时候,隐藏密码 用函数getch(),头文件#include<conio.h>输入一个字符时候不会回显,getc会回显实现思路: 输入一个字符,由于不知道密码长度,所以设置为死循环,如果不是回车键,即将该字符添加到存放密码的数组里,顺便打印一个星号,如果输入的为回车键,由于getch…...
1.RabbitMQ介绍
一、MQ是什么?为什么使用它 MQ(Message Queue,简称MQ)被称为消息队列。 是一种用于在应用程序之间传递消息的通信方式。它是一种异步通信模式,允许不同的应用程序、服务或组件之间通过将消息放入队列中来进行通信。这…...
软考高级系统架构设计师系列论文七十三:论中间件在SIM卡应用开发中的作用
软考高级系统架构设计师系列论文七十三:论中间件在SIM卡应用开发中的作用 一、中间件相关知识点二、摘要三、正文四、总结一、中间件相关知识点 软考高级系统架构设计师:构件与中间件技术二、摘要 我曾于近期参与过一个基于SIM卡应用的开发项目,并在项目中担任系统分析的工作…...
【Java架构-包管理工具】-Maven进阶(二)
本文摘要 Maven作为Java后端使用频率非常高的一款依赖管理工具,在此咱们由浅入深,分三篇文章(Maven基础、Maven进阶、私服搭建)来深入学习Maven,此篇为开篇主要介绍Maven进阶知识,包含坐标、依赖、仓库、生…...
『C语言入门』分支和循环语句
文章目录 引言一、什么是语句?1.1表达式语句1.2赋值语句1.3函数调用语句1.4复合语句1.5空语句1.6控制语句 二、分支语句2.1 if语句2.1.1基本语法2.1.2使用else语句2.1.3嵌套if语句2.1.4多层if-else语句 2.2 switch语句2.2.1基本语法2.2.2示例2.2.3穿透 三、循环语句…...
【给自己挖个坑】三维视频重建(NSR技术)-KIRI Engine
文章目录 以下是我和AI的对话通过手机拍摄物体的视频,再根据视频生成三维模型,这个可实现吗我想开发类似上面的手机应用程序,如何开发呢 看了以上回答,还是洗洗睡吧NSR技术的实现原理是什么呢有案例吗我是名Java工程师,…...
Chrome历史版本下载和Selenium驱动版本下载
Python自动化必备: Selenium驱动版本下载 http://chromedriver.storage.googleapis.com/index.html Chrome浏览器历史版本下载 https://www.slimjet.com/chrome/google-chrome-old-version.php...
联合注入步骤
使用场景: 有回显,可以看到某些字段的回显信息 像下面的有具体的回显信息 一、判断注入位点 在原始的id(参数)的输入后面添加额外的条件 如果and 11 有结果,and10没有结果输出, 就说明我们添加的额外条件…...
后端项目开发:整合redis缓存
因为各种场合比如门户和后台,需要不同的redis配置,我们在common包配置通用的reids配置。 1.新建service目录,建立RedisService服务接口,同时编写工具类实现该接口。 public interface RedisService {/*** 保存属性*/void set(Str…...
美国访问学者签证好办吗?
近年来,随着国际交流与合作的不断深入,许多人对于美国访问学者签证的办理情况产生了浓厚的兴趣。那么,美国访问学者签证到底好办吗?让知识人网小编带您一起了解一下。 首先,美国作为世界上的科研、教育和创新中心之一&…...
Linux之基础IO文件系统讲解
基础IO文件系统讲解 回顾C语言读写文件读文件操作写文件操作输出信息到显示器的方法stdin & stdout & stderr总结 系统文件IOIO接口介绍文件描述符fd文件描述符的分配规则C标准库文件操作函数简易模拟实现重定向dup2 系统调用在minishell中添加重定向功能 FILE文件系统…...
Django主要特点
Django 是一个开源的 Python Web 开发框架,它提供了一系列的工具和功能,帮助开发人员快速、高效地构建 Web 应用程序。 以下是 Django 的一些主要特点: 1. 强大的 ORM(对象关系映射): Django 提供了一个…...
element-ui中的el-table合并单元格
描述: 在写项目的时候有时候会经常遇到把行和列合并起来的情况,因为有些数据是重复渲染的,不合并行列会使表格看起来非常的混乱,如下: 而我们想要的数据是下面这种情况,将重复的行进行合并,使表…...
自组织地图 (SOM) — 介绍、解释和实现
自组织地图 (SOM) — 介绍、解释和实现 一、说明 什么是SOM(self orgnize map)自组织地图,是GNN类似的图神经网络的概念。因为神经网络实质上可以解释为二部图的权重,因此无论GNN还是SOM都有共同的神经网络…...
Arduino程序设计(四)按键消抖+按键计数
按键消抖按键计数 前言一、按键消抖二、按键计数1、示例代码2、按键计数实验 参考资料 前言 本文主要介绍两种按键控制LED实验:第一种是采用软件消抖的方法检测按键按下的效果;第二种是根据按键按下次数,四个LED灯呈现不同的流水灯效果。 一…...
Module not found: Error: Can‘t resolve ‘vue-pdf‘ in ‘xxx‘
使用命令npm run serve时vue项目报错: Module not found: Error: Cant resolve vue-pdf in xxx 解决方案: 运行命令: npm install vue-pdf --save --legacy-peer-deps 即可解决。 再次顺利执行npm run serve...
ELK之LogStash介绍及安装配置
一、logstash简介 集中、转换和存储数据 Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。 Logstash 能够动态地采集、转换和传输数据,不受格式或复杂度的…...
docker学习(1)
1、容器与虚拟机的对比: 虚拟机(virtual machine)就是带环境安装的一种解决方案。 它可以在一种操作系统里面运行另一种操作系统,比如在Windows10系统里面运行Linux系统CentOS7。 应用程序对此毫无感知,因为虚拟机看…...
UE5 Niagara基础知识讲解
文章目录 前言官方文档发射器生成(Emitter Spawn)发射器更新(Emitter Update)Spawn Rate(生成速率)粒子生成(Particle Spawn)Initialize Particle(初始化粒子)粒子生命周期粒子颜色粒子大小Shape Location(形状位置)形状位置Add Velocity(添加速度)粒子速度Curl …...
缓存穿透、缓存击穿和缓存雪崩
👏作者简介:大家好,我是爱发博客的嗯哼,爱好Java的小菜鸟 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 📝社区论坛:希望大家能加入社区共同进步…...
自动化编排工具Terraform介绍(一)
Terraform是什么?: Terraform 是 HashiCorp 公司旗下的 Provision Infrastructure 产品, 是 AWS APN Technology Partner 与 AWS DevOps Competency Partner。Terraform 是一个 IT 基础架构自动化编排工具,它的口号是“Write, Plan, and Create …...
zhm_real/MotionPlanning运动规划库中A*算法源码详细解读
本文主要对zhm_real/MotionPlanning运动规划库中A*算法源码进行详细解读,即对astar.py文件中的内容进行详细的解读,另外本文是 Hybrid A * 算法源码解读的前置文章,为后续解读Hybrid A * 算法源码做铺垫。 astar.py文件中的源码如下ÿ…...
SpringMVC中Controller层获取前端请求参数的几种方式
SpringMVC中Controller层获取前端请求参数的几种方式 1、SpringMVC自动绑定2、使用RequestParam 注解进行接收3、RequestBody注解(1) 使用实体来接收JSON(2)使用 Map 集合接收JSON(3) 使用 List集合接收JSO…...
记Flask-Migrate迁移数据库失败的两个Bug——详解循环导入问题
文章目录 Flask-Migrate迁移数据库失败的两个Bug1、找不到数据库:Unknown database ***2、迁移后没有效果:No changes in schema detected. Flask-Migrate迁移数据库失败的两个Bug 1、找不到数据库:Unknown database ‘***’ 若还没有创建数…...
在线求助。。npm i 报错,连公司内部网,无法连外网
各位前端朋友 ,有没有遇到我这种npm i 报错的问题。 公司内网,无法连外网,使用公司内部的Nexus镜像源 我在公司内网执行npm i 报错,报network连接失败。 我都已经在npm设置了内部镜像源,它为啥还要去外网下载呢。而…...
TCP/UDP/IP协议简介
IP协议简介 特指为实现一个相互连接的网络系统上从源地址到目的地址传输数据包(互联网数据包) 所提供必要功能的协议 特点: 不可靠:不能保证IP数据包能够成功的到达它的目的地只能提供尽力而为的传输服务。 无连接:IP并不维护任何关于后续数…...
做个人网站怎么赚钱/最好的搜索引擎排名
基于VMware vSphere 5 企业虚拟化部署之四:安装ESXi 5 作者:杨坚 一、VMware Esxi 5.0不需要宿主机,直接在服务器上安装。对硬件有一些要求,CPU 必须支持64还需要支持Intel的VT技术或者AMD的AMD-V技术。内存最少2G以上。 从官…...
做设计时可以参考的网站/seo自学
http://acm.uestc.edu.cn/#/problem/show/1221 大意:围棋判定,能不能下一步棋使得对手死去至少一个棋子。对递归理解不深入导致开始不停RE(反复递归调用致使栈溢出),我去~~#include <iostream> #include <alg…...
全国有哪些做服装的网站/每日新闻快报
事件属性 在事件处理函数中,触发事件的事件对象(event参数值)具有如下几个属性 event.key 属性:属性值为在 session 或 localStorage 中被修改的数据键值。 event.oldValue 属性:属性值为在 sessionStorage 或 localS…...
企业网站买卖建设流程/电子商务网站建设规划方案
正则表达式是Python程序设计中非常实用的功能,本文就常用的正则表达式做一汇总,供大家参考之用。具体如下:一、字符串替换1.替换所有匹配的子串用newstring替换subject中所有与正则表达式regex匹配的子串result, number re.subn(regex, news…...
找人做建筑施工的网站/电脑优化
工作中的所有操作都在虚拟机中完成。虚拟机不登录QQ、微信、网络磁盘、CSDN等个人账户。渗透条件、开发环境和调试条件须要分离,从目标服务器下载的程序须要在单独的条件中测试和运行。渗透虚拟机应用代理IP上网。 物理机须要安装安全防护软件,安装最新的…...
WordPress模板首页文件是啥/南京seo培训
1.当某表中的字段里面是NULL,null,空格时候,如何查询 name is null 表示:NULL 和 空格 name ‘null’表示:null...