Linux学习笔记5---WSL2编译裸机程序并烧录至SD卡
在用WLS进行开发的时候发现在mnt/底下竟然识别不了U盘!!也识别不了SD卡!!那程序不就不能烧录到SD卡上了???那还开发个锤子。
在网上查找了一些相关资料,发现可以通过Win32DiskImager在Windows系统下烧录SD卡。将软件安装到电脑上。
Win32DiskImager下载链接:Win32 Disk Imager download | SourceForge.net
正点原子的imxdownload由于包含了烧录的功能,但在WLS上无法识别SD卡,因此无法使用,所以可以将imxdownload的烧录功能都取消,让程序生成一个可烧录的镜像文件即可。
imxdownload.c(正点原子官方.c文件中修改)
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "imxdownload.h"#define SHELLCMD_LEN (200)
#define BIN_OFFSET (3072)
#define SD_BIN_OFFSET (1024)
#define BIN_OFFSET2 (BIN_OFFSET+SD_BIN_OFFSET)/* 此宏指明是否打印u-boot.imx的IVT DCD表信息,不同的开发板其IVT和DCD* 表的数据是不同的,因此需要获取所使用的开发板的IVT和DCD表信息,最* 简单的方法就是读取开发板配套资料里面的u-boot.imx的前1KB数据,理论上* 应该读取3KB的数据,但是表信息远远没有3K这么多,因此读1KB即可 */
#define PRINT_TAB 0
/** 介绍: 此软件是针对NXP的IMX6U系列芯片的,软件用来烧写bin文件到SD卡里面,* 本软件会自动添加IVT、DCD等信息到原始的bin文件里面,主要用于裸机和uboot的烧写。* 使用方法: 1、编译好原始的二进制bin文件,如,u-boot.bin等,并将编译好的.bin文件和本* 软件放置到同一个目录下!!!!* 2、执行命令sudo ./imxdownload <soucre_bin> <sd_device>* 如烧写u-boot.bin到/dev/sdd中即可使用如下所示命令:* sudo ./imxdownload u-boot.bin /dev/sdd*//** 输出一些信息*/
void message_print(void)
{ printf("I.MX6ULL bin merge software\r\n");printf("Edit by:trueLink\r\n");printf("Date:2022/11/26\r\n");printf("Version:V1.0\r\n");printf("log:V1.0 initial version,support 256MB、512MB DDR3\r\n");
}int main(int argc, char *argv[])
{FILE *fp;unsigned char *buf,*buf2;unsigned char *cmdbuf;int nbytes, filelen;int i = 0, j = 0;int ddrsize = 0; /* 0为512MB,1为256MB,2为128MB...... */message_print();if((argc != 2) && (argc != 3)){printf("Error Usage! Reference Below:\r\n");printf("sudo ./%s <-512m or -256m> <source_bin> \r\n", argv[0]);return -1;}/* 查找参数,获取DDR容量 */for(i = 0; i < argc; i++){char *param = argv[i];if(param[0] != '-')continue;if(strcmp(param, "-256m") == 0) /* 256MB */ddrsize = 1;else if(strcmp(param, "-512m") == 0) /* 512MB */ddrsize = 0;}if(argc == 2) /* 三个参数,也就是不输入DDR容量的话默认为512MB */ddrsize = 0;/* 打开bin文件 */fp = fopen(argv[1], "rb"); /* 以二进制只读方式打开bin文件 */if(fp == NULL){printf("Can't Open file %s\r\n", argv[1]);return -1;}/* 获取bin文件长度 */fseek(fp, 0L, SEEK_END);filelen = ftell(fp);fseek(fp, 0L, SEEK_SET);printf("file %s size = %dBytes\r\n", argv[1], filelen);/* 读取bin文件到缓冲区buf中 */buf = malloc(filelen + BIN_OFFSET);if(buf == NULL){printf("Mem Malloc Failed!\r\n");free(buf);fclose(fp);return -1;}memset(buf, 0, filelen + BIN_OFFSET); /* 清零 *//* 读取bin源码文件 */fread(buf + BIN_OFFSET, 1, filelen, fp);/* 关闭文件 *///fclose(fp); //buf2//buf2///buf2 = malloc(filelen + BIN_OFFSET2);if(buf2 == NULL){printf("Mem Malloc Failed!\r\n");free(buf2);fclose(fp);return -1;}memset(buf2, 0, filelen + BIN_OFFSET2); /* 清零 *//* 复制bin源码文件 */memcpy(buf2 + BIN_OFFSET2, buf + BIN_OFFSET, filelen);/* 关闭文件 */fclose(fp);#if PRINT_TABprintf("IVT DCD Table:\r\n");for(i = 0; i < 1024/32; i++){for(j = 0; j < 8; j++){printf("0X%08X,",*(int *)(buf + BIN_OFFSET + (((i * 8) + j) * 4)));}printf("\r\n");} free(buf);return 0;
#endif/* 添加IVT DCD等表信息到bin文件里面 */if(ddrsize == 0) { /* 512MB */printf("Board DDR SIZE: 512MB\r\n");memcpy(buf, imx6_512mb_ivtdcd_table, sizeof(imx6_512mb_ivtdcd_table));}else if (ddrsize == 1) { /* 256MB */printf("Board DDR SIZE: 256MB\r\n");memcpy(buf, imx6_256mb_ivtdcd_table, sizeof(imx6_256mb_ivtdcd_table));}/* 现在我们已经在buf中构建好了可以用于下载的bin文件,将buf中的数据保存到* 到一个文件中,文件命名为load.imx*/printf("Delete Old load.imx\r\n");system("rm -rf load.imx"); /* 先删除旧的load.imx文件 */printf("Create New load.imx\r\n");system("touch load.imx"); /* 创建新的load.imx文件 */fp = fopen("load.imx", "wb"); /* 打开laod.imx */if(fp == NULL){printf("Cant't Open load.imx!!!\r\n");free(buf);fclose(fp);return -1;}nbytes = fwrite(buf, 1, filelen + BIN_OFFSET, fp);if(nbytes != (filelen + BIN_OFFSET)){printf("File Write Error!\r\n");free(buf);fclose(fp);return -1;}printf("load.imx is complete.\r\n");free(buf);fclose(fp); //buf2////* 添加IVT DCD等表信息到bin文件里面 */if(ddrsize == 0) { /* 512MB */printf("Board DDR SIZE: 512MB\r\n");memcpy(buf2+SD_BIN_OFFSET, imx6_512mb_ivtdcd_table, sizeof(imx6_512mb_ivtdcd_table));}else if (ddrsize == 1) { /* 256MB */printf("Board DDR SIZE: 256MB\r\n");memcpy(buf2+SD_BIN_OFFSET, imx6_256mb_ivtdcd_table, sizeof(imx6_256mb_ivtdcd_table));}//新建一个可直接烧录到SD的bin文件 load.binprintf("Delete Old load.img\r\n");system("rm -rf load.img"); /* 先删除旧的load.img */printf("Create New load.img\r\n");system("touch load.img"); /* 创建新的load.img */fp = fopen("load.img", "wb"); /* 打开laod.img */if(fp == NULL){printf("Cant't Open load.img!!!\r\n");free(buf2);fclose(fp);return -1;}nbytes = fwrite(buf2, 1, filelen + BIN_OFFSET2, fp);if(nbytes != (filelen + BIN_OFFSET2)){printf("File Write Error!\r\n");free(buf2);fclose(fp);return -1;}printf("load.bin is complete.\r\n");free(buf2);fclose(fp); //屏蔽烧录命令/* 构建烧写的shell命令 */// cmdbuf = malloc(SHELLCMD_LEN);// sprintf(cmdbuf, "sudo dd iflag=dsync oflag=dsync if=load.imx of=%s bs=512 seek=2",argv[2]); // printf("Download load.imx to %s ......\r\n", argv[2]);// /* 执行上面的shell命令 */// system(cmdbuf);// free(cmdbuf);return 0;
}
imxdownload.h (未修改正点原子官方.h文件)
#ifndef _IMXDOWNLOAD_H
#define _IMXDOWNLOAD_H
/* IMX6U IVT DCD表信息 暂时定义为1K Bytes,此表是读取的u-boot.imx前1K Bytes* imx6_ivedcd_table[9]是指明代码长度的,本应该根据实际的代码长度来修改* 这里为了方便,就直接定义为2M Bytes,即*/const int imx6_512mb_ivtdcd_table[256] = {
0X402000D1,0X87800000,0X00000000,0X877FF42C,0X877FF420,0X877FF400,0X00000000,0X00000000,
0X877FF000,0X00200000,0X00000000,0X40E801D2,0X04E401CC,0X68400C02,0XFFFFFFFF,0X6C400C02,
0XFFFFFFFF,0X70400C02,0XFFFFFFFF,0X74400C02,0XFFFFFFFF,0X78400C02,0XFFFFFFFF,0X7C400C02,
0XFFFFFFFF,0X80400C02,0XFFFFFFFF,0XB4040E02,0X00000C00,0XAC040E02,0X00000000,0X7C020E02,
0X30000000,0X50020E02,0X30000000,0X4C020E02,0X30000000,0X90040E02,0X30000000,0X88020E02,
0X30000C00,0X70020E02,0X00000000,0X60020E02,0X30000000,0X64020E02,0X30000000,0XA0040E02,
0X30000000,0X94040E02,0X00000200,0X80020E02,0X30000000,0X84020E02,0X30000000,0XB0040E02,
0X00000200,0X98040E02,0X30000000,0XA4040E02,0X30000000,0X44020E02,0X30000000,0X48020E02,
0X30000000,0X1C001B02,0X00800000,0X00081B02,0X030039A1,0X0C081B02,0X0B000300,0X3C081B02,
0X44014801,0X48081B02,0X302C4040,0X50081B02,0X343E4040,0X1C081B02,0X33333333,0X20081B02,
0X33333333,0X2C081B02,0X333333F3,0X30081B02,0X333333F3,0XC0081B02,0X09409400,0XB8081B02,
0X00080000,0X04001B02,0X2D000200,0X08001B02,0X3030331B,0X0C001B02,0XF3526B67,0X10001B02,
0X630B6DB6,0X14001B02,0XDB00FF01,0X18001B02,0X40172000,0X1C001B02,0X00800000,0X2C001B02,
0XD2260000,0X30001B02,0X23106B00,0X40001B02,0X4F000000,0X00001B02,0X00001884,0X90081B02,
0X00004000,0X1C001B02,0X32800002,0X1C001B02,0X33800000,0X1C001B02,0X31800400,0X1C001B02,
0X30802015,0X1C001B02,0X40800004,0X20001B02,0X00080000,0X18081B02,0X27020000,0X04001B02,
0X2D550200,0X04041B02,0X06100100,0X1C001B02,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000
};const int imx6_256mb_ivtdcd_table[256] = {
0X402000D1,0X87800000,0X00000000,0X877FF42C,0X877FF420,0X877FF400,0X00000000,0X00000000,
0X877FF000,0X00076000,0X00000000,0X40E801D2,0X04E401CC,0X68400C02,0XFFFFFFFF,0X6C400C02,
0XFFFFFFFF,0X70400C02,0XFFFFFFFF,0X74400C02,0XFFFFFFFF,0X78400C02,0XFFFFFFFF,0X7C400C02,
0XFFFFFFFF,0X80400C02,0XFFFFFFFF,0XB4040E02,0X00000C00,0XAC040E02,0X00000000,0X7C020E02,
0X30000000,0X50020E02,0X30000000,0X4C020E02,0X30000000,0X90040E02,0X30000000,0X88020E02,
0X30000C00,0X70020E02,0X00000000,0X60020E02,0X30000000,0X64020E02,0X30000000,0XA0040E02,
0X30000000,0X94040E02,0X00000200,0X80020E02,0X30000000,0X84020E02,0X30000000,0XB0040E02,
0X00000200,0X98040E02,0X30000000,0XA4040E02,0X30000000,0X44020E02,0X30000000,0X48020E02,
0X30000000,0X1C001B02,0X00800000,0X00081B02,0X030039A1,0X0C081B02,0X04000000,0X3C081B02,
0X3C013C01,0X48081B02,0X38324040,0X50081B02,0X28304040,0X1C081B02,0X33333333,0X20081B02,
0X33333333,0X2C081B02,0X333333F3,0X30081B02,0X333333F3,0XC0081B02,0X09409400,0XB8081B02,
0X00080000,0X04001B02,0X2D000200,0X08001B02,0X3030331B,0X0C001B02,0XF352433F,0X10001B02,
0X630B6DB6,0X14001B02,0XDB00FF01,0X18001B02,0X40172000,0X1C001B02,0X00800000,0X2C001B02,
0XD2260000,0X30001B02,0X23104300,0X40001B02,0X47000000,0X00001B02,0X00001883,0X90081B02,
0X00004000,0X1C001B02,0X32800002,0X1C001B02,0X33800000,0X1C001B02,0X31800400,0X1C001B02,
0X30802015,0X1C001B02,0X40800004,0X20001B02,0X00080000,0X18081B02,0X27020000,0X04001B02,
0X2D550200,0X04041B02,0X06100100,0X1C001B02,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,0X00000000,
};#endif
1、修改程序后再WLS上编译出新的imxdownload执行文件,
gcc imxdownload.c -o imxdownload2
修改后的文件可在此处下载: 【免费】imxdownload修改文件资源-CSDN文库
2、 把imxdownload2复制到需要烧录的工程下
执行:
./imxdownload2 led.bin
注:led.bin是工程中需要的.bin文件
此时,生成了.imx (可在Linux下用dd命令烧录), img (可在windows下用Win32DiskImager烧录SD卡)。load.img的内容是在load.imx基础上偏移了1K 字节,这样可以直接烧录到SD卡。
3、Win32DiskImager烧录SD卡
使用Win32DiskImager打开需要烧录的.imx文件进行,点击“写入”即可。
写入成功后将SD卡插回开发板上,选择SD卡启动,程序成功运行。
上述方法简单好用对新手友好,但多了一步烧录的步骤,如果觉得繁琐可以参考
解决WSL烧录SD卡问题_wsl如何连接sd卡-CSDN博客文章,可以利用命令在WLS上直接调用Windows上的软件进行烧录。
如果想在WLS上识别到SD卡,可参考下面文章进行设置。
WSL2连接USB存储设备(保姆级教程,真正做到你奶奶来了也能成功)_wsl2 usb-CSDN博客
参考文献:
WSL2编译IMX6ULL裸机程序烧录至SD卡_wsl u盘 /dev/sd-CSDN博客
相关文章:
Linux学习笔记5---WSL2编译裸机程序并烧录至SD卡
在用WLS进行开发的时候发现在mnt/底下竟然识别不了U盘!!也识别不了SD卡!!那程序不就不能烧录到SD卡上了???那还开发个锤子。 在网上查找了一些相关资料,发现可以通过Win32DiskImager…...
React 第二十九章 React 和 Vue 描述页面的区别
面试题:React 和 Vue 是如何描述 UI 界面的?有一些什么样的区别? 标准且浅显的回答: React 中使用的是 JSX,Vue 中使用的是模板来描述界面 前端领域经过长期的发展,目前有两种主流的描述 UI 的方案…...
Dnspy附加进程调试---代码被优化及无法获取局部变量
代码被优化或者无法获取局部变量的效果图如下: 当你在调试的时候,看到这种情况还是挺恼火的,经过查阅资料后,发现可以这种解决: 参考链接:Making an Image Easier to Debug dnSpy/dnSpy Wiki GitHub 假设…...
Redis---------实现更改数据业务,包括缓存更新,缓存穿透雪崩击穿的处理
三种更新策略 内存淘汰是Redis内存的自动操作,当内存快满了就会触发内存淘汰。超时剔除则是在存储Redis时加上其有限期(expire),有限期一过就会自动删除掉。而主动更新则是自己编写代码去保持更新,所以接下来研究主动更新策略。 主动更新策略…...
蓝牙小车的具体实现
title: 蓝牙小车开发时的一些细节 cover: >- https://tse1-mm.cn.bing.net/th/id/OIP-C.BrSgB91U1MPHGyaaZEqcbwHaEo?w273&h180&c7&r0&o5&dpr1.3&pid1.7 abbrlink: 842d5faf date: tags: #小车基本运动之最重要的—PWM ##1.PWM(Pulse …...
污染修复乙级设计资质中关于设计成果保护的规定
关于污染修复乙级设计资质中设计成果的保护,虽然直接针对该资质的设计成果保护规定可能未在公开资料中有详细阐述,但根据中国知识产权法律体系和行业惯例,设计成果作为智力成果的一部分,主要受以下几个方面的法律保护:…...
##10 卷积神经网络(CNN):深度学习的视觉之眼
文章目录 前言1. CNN的诞生与发展2. CNN的核心概念3. 在PyTorch中构建CNN4. CNN的训练过程5. 应用:使用CNN进行图像分类5. 应用:使用CNN进行时序数据预测代码实例7. 总结与展望前言 在深度学习的领域中,卷积神经网络(CNN)已经成为视觉识别任务的核心技术。自从AlexNet在2…...
Linux下添加自己的服务脚本(service)
systemd服务文件(service file)是用来定义和配置systemd服务的文件,通常以.service为后缀。以下是service文件的详细格式和内容说明: 1 文件路径 /etc/systemd/system(供系统管理员和用户使用)系统服务,开机不需要登录就能运行的程序/usr/lib/systemd/system(供发行版…...
C++:内存管理
C:内存管理 一、C/C内存分布二、C语言中动态内存管理方式:malloc/calloc/realloc/free三、C内存管理方式1.new/delete操作内置类型2.new和delete操作自定义类型 四、operator new与operator delete函数(重点)五、new和delete的实现原理1.内置…...
Veeam - 数据保护和管理解决方案_Windows平台部署备份还原VMware手册
Veeam - - 数据保护和管理解决方案 Veeam Backup & Replication Console Veeam Data Platform Veeam Backup & Replication是一款强大的虚拟机备份、恢复和复制解决方案 安全备份、干净恢复和数据弹性 — 即时交付 在混合云中随时随地管理、控制、备份和恢复您的所有数…...
易基因:Nature子刊:ChIP-seq等揭示c-di-AMP与DasR互作以调控细菌生长、发育和抗生素合成|项目文章
大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 c-di-AMP是一种在细菌信号中普遍存在且至关重要的核苷酸第二信使,对于大多数c-di-AMP合成生物体来说,c-di-AMP稳态及其信号转导的分子机制非常值得关注。 2024年…...
stm32学习探究:利用TB6612驱动直流电机
在这篇文章中,我们将探讨如何使用STM32微控制器和TB6612FNG直流电机驱动模块来驱动直流电机。TB6612FNG是一款基于MOSFET的H桥集成电路,能够独立双向控制两个直流电机,非常适合用于小型机器人或双轮车等项目。 一、TB6612FNG 驱动模块介绍 …...
SpringBatch快速入门
Job监听 Spring Batch的Job监听是一种机制,用于在Job的不同阶段插入自定义的逻辑。它允许开发人员在Job开始、结束、失败等不同的事件发生时执行特定的操作。 具体来说,Spring Batch提供了以下几个Job监听器: JobExecutionListenerÿ…...
下载Node.js及其他环境推荐nvm
文章目录 项目场景:下载Node.js环境配置配置环境变量 安装脚手架安装依赖安装淘宝镜像安装 cnpm(我需要安装)nvm 安装 Node.js (推荐) 项目场景: 提示:这里简述项目相关背景: 项目…...
STM32 ADC学习
ADC Analog-to-Digital Converter,即模拟/数字转换器 常见ADC类型 分辨率和采样速度相互矛盾,分辨率越高,采样速率越低。 ADC的特性参数 分辨率:表示ADC能辨别的最小模拟量,用二进制位数表示,比如8,10…...
详解AI作画算法原理
在人工智能领域,AI作画技术已经成为一个引人入胜的研究方向。AI作画算法利用机器学习技术,尤其是深度学习,来生成具有艺术性的图像。本文将深入剖析AI作画的基本原理,包括其技术架构、关键组件以及工作流程。 引言 AI作画技术不…...
每日Attention学习3——Cross-level Feature Fusion
模块出处 [link] [code] [PR 23] Cross-level Feature Aggregation Network for Polyp Segmentation 模块名称 Cross-level Feature Fusion (CFF) 模块作用 双级特征融合 模块结构 模块代码 import torch import torch.nn as nnclass BasicConv2d(nn.Module):def __init__(…...
华为eNSP学习—IP编址
IP编址 IP编址子网划分例题展示第一步:机房1的子网划分第二步:机房2的子网划分第三步:机房3的子网划分IP编址 明确:IPv4地址长度32bit,点分十进制的形式 ip地址构成=网络位+主机位 子网掩码区分网络位和主机位 学此篇基础: ①学会十进制与二进制转换 ②学会区分网络位和…...
数据库的要求
本来我是不准备写数据库的。而且是准备从零开始,学习python,学完语言学,会c和写作技法,再来学习数据库 那样做的复杂度是天量的,按部就班什么的具备,因为你完全不清楚什么时候就有这个基础和条件࿰…...
Spring MVC(二)
1. 注解RequestMapping修饰类 在Spring MVC中一般都是使用注解RequestMapping来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置的映射地址作用一致。在上一节的内容中,我们通过注解RequestMapping改进…...
ECP44304T-76是一款增强型通信处理器吗?
ABB ECP44304T-76是一款增强型通信处理器,专为ABB的PLC控制系统设计。 这款通信处理器的主要功能是提供PLC与其他设备或网络之间的通信接口。它支持多种通讯协议,包括但不限于Profibus、Ethernet、Modbus等,使得PLC可以轻松集成到复杂的工业…...
mongoDB分组查询
完整代码 //根据医院编号 和 科室编号 ,查询排班规则数据Overridepublic Map<String, Object> getRuleSchedule(long page, long limit, String hoscode, String depcode) {//1 根据医院编号 和 科室编号 查询Criteria criteria Criteria.where("hosco…...
【Java 刷题记录】位运算
位运算 33. 位1的个数 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中 设置位 的个数(也被称为汉明重量)。 示例 1: 输入:n 11 输出:3 解释…...
WINDOWS下zookeeper突然无法启动但是端口未占用的解决办法(用了WSL)
windows下用着用着时候突然zookeeper启动不了了。netstat查也没有找到端口占用,就是起不来。控制台报错 java.lang.reflect.UndeclaredThrowableException: nullat org.springframework.util.ReflectionUtils.rethrowRuntimeException(ReflectionUtils.java:147) ~…...
【LLM第三篇】名词解释:RLHF——chatgpt的功臣
RLHF (Reinforcement Learning from Human Feedback) ,直译为:“来自人类反馈的强化学习”。RLHF是一种结合了强化学习和人类反馈的机器学习方法,主要用于训练大模型以执行复杂的任务,尤其是当这些任务难以通过传统的奖励函数来精…...
基于Opencv的车牌识别系统(毕业设计可用)
系统架构 图像采集:首先,通过摄像头等设备捕捉车辆图像。图像质量直接影响后续处理的准确性,因此高质量的图像采集是基础。 预处理:对获取的原始图像进行预处理,包括灰度化、降噪、对比度增强和边缘检测等。这些操作旨…...
Leetcode—295. 数据流的中位数【困难】
2024每日刷题(132) Leetcode—295. 数据流的中位数 实现代码 class MedianFinder { public:MedianFinder() {}void addNum(int num) {if(maxHeap.empty() || num < maxHeap.top()) {maxHeap.push(num);} else {minHeap.push(num);}if(maxHeap.size(…...
JavaWeb之过滤器(Filter)与监听器(Listener)
前言 过滤器(Filter) 1.什么是过滤器 2.过滤器的语法格式 3.使用场景 3.1.如何防止用户未登录就执行后续操作 3.2.设置编码方式--统一设置编码 3.3.加密解密(密码的加密和解密) 3.4.非法文字筛选 3.5.下载资源的限制 监听器(Listener) 1.什么是监听器 2.监听器分类…...
video.js的请求头问题
为了防止视频被轻易下载,我们项目需要在请求视频地址的时候,增加token识别,避免url一粘贴到浏览器地址上就能被盗。 明明一开始就找到的方法: // ts-ignorevideojs.Vhs.xhr.beforeRequest function (options) {options.headers …...
leetcode 1235
leetcode 1235 代码 class Solution { public:int jobScheduling(vector<int>& startTime, vector<int>& endTime, vector<int>& profit) {int n startTime.size();vector<vector<int>> jobs(n);for(int i0; i<n; i){jobs[i] …...
游戏怎么做充值网站/国家认可的赚钱软件
前端字体网站收藏 Fonts 提供免费字体以及基于字体的工具的网站 Github项目地址 Design Resources For Developers 网站 描述Google Fonts包含约1000个免费授权的字体家族库DaFont免费可下载字体的存档Use & Modify包含优美、高雅、朋克、专业、不…...
赣州专业做网站/网站推广排名优化
问题设置:我有一个不平衡的数据集,其中98%的数据属于A类,2%属于B类.我训练了一个DecisionTreeClassifier(来自sklearn),class_weights设置为与以下设置平衡:dtc_settings {criterion: entropy,min_samples_split: 100,min_sample…...
北京展览馆网站建设/免费的行情网站app
你有没有碰到过OpenStack中,VM失去IP地址的问题?如果有的话,你知道那可能是什么问题 ——特别是如果你拥有大量的节点和VM。你的客户会因为没有明显原因却断了与VM的连接而感到 挫败。甚至云的支持团队会为log文件里没有提示却出现问题感到挫…...
服装类的网站建设/软文公司代写
哈佛大学推荐,2020年最新python教程,全面、丰富而详细的Python学习教程,让你轻轻松松学习Python,让学习也变成是一件容易的事。 如果你处于想学python或者正在学习python,在这小编分享一波哈佛大学推荐,202…...
网站建设公司 电话销售没什么效果/网站的营销推广方案
$(window).scroll(function() { }); window的滚动事件不触发以及offset().top数据乱的原因? 如果你的css中:html,body的高度样式如果设置为100%,那么$(window).scroll方法将检测不到正确的滚出高度(0),导致…...
廊坊网站快速排名优化/郑州网站设计
互联互通社区专注于IT互联网交流与学习,旨在打造最具价值的IT互联网智库中心。为丰富互联互通社区社区内容,给广大的关注者更丰富、更精彩、更时尚的阅读体验,互联互通社区视频号现已上线。互联互通社区-视频号,网罗IT互联网圈内的…...