驱动开发了解下

2023-05-16

目录

  • 前提
  • 环境说明
    • 网络环境
      • 网络环境1
      • 网络环境2
  • 启动开发板,tftp下载内核和驱动,nfs挂载文件系统
  • 开发流程1
    • 编写驱动程序
    • 修改Makefile
    • 编译
    • 创建拷贝
    • 加载驱动
      • modprobe加载驱动
      • depmod
      • 查看当前系统中存在的模块
      • 查看系统所有的设备
      • 创建设备节点文件
      • APP测试chrdevbase 设备操作
      • 卸载驱动模块
  • 开发流程2
    • nfs挂载测试
    • 驱动加载
  • 加载测试led驱动

前提

系统篇完结,移植好系统,搭建好nfs tftp环境,并测试通过。

环境说明

网络环境

这里我采用手机usb共享给电脑,然后开发板网线连接电脑网口。

  1. 之前我是有2台电脑,然后都连上wifi,然后有一台电脑实现wifi和网口实现网桥,这样是可以保证在同一网段的,wifi共享方式不能保证在同一网段,它会默认ip是192.168.137网段,
  2. 然后最近搞了个usb转网口的,在这里我就只采用一台电脑,开始也是尝试使用wifi和网口搭建网桥,然后发现我Windows主机不能上网了,可今天我使用了usb就很好的解决了这一问题,网速还挺可观,但这里也有一个问题,就是这样我好像连接不上samba,也传输不了文件,应该是Windows主机与虚拟机不在同一网段了。
    在这里插入图片描述
// 默认网关
192.168.210.61

//主机ip就没了
这也就导致Windows无法通过samba里连接虚拟机了

//网桥ip
192.168.210.245

//开发板 IP 地址 
192.168.210.150 

//服务器地址,也就是 Ubuntu 地址 
192.168.210.154 

在这里插入图片描述

网络环境1

采用电脑端开发驱动,可以采用vscode或source insight,看个人喜好。
这里我采用使用samba实现文件传输,好处就是我可以在linux里创建一个sanba文件夹,然后通过ip地址实现网路映射到Windows主机上,我这里把挂载nfs目录放在samba文件夹里,然后我可以在里面存放开发程序,就不用写一个程序就使用传输软件传到linux虚拟机这边。

网络环境2

在我认为这样不行时,我想到可以设置Windows主机与虚拟机之间的共享文件夹,如果不使用网络的话就安装安装VMwareTools。
在这里插入图片描述

在这里插入图片描述
然后就是安装VMwareTools,完成上面操作后,桌面上会有这玩意,你可以双击打开

在这里插入图片描述
在这里插入图片描述
安装时注意全选yes,然后一直回车。

flynnsinu@ubuntu:/usr/local/bin/vmware-tools-distrib$ sudo ./vmware-install.pl 
The installer has detected an existing installation of open-vm-tools packages 
on this system and will not attempt to remove and replace these user-space 
applications. It is recommended to use the open-vm-tools packages provided by 
the operating system. If you do not want to use the existing installation of 
open-vm-tools packages and use VMware Tools, you must uninstall the 
open-vm-tools packages and re-run this installer.
The packages that need to be removed are:
open-vm-tools
Packages must be removed with the --purge option.
The installer will next check if there are any missing kernel drivers. Type yes
if you want to do this, otherwise type no [yes] yes

INPUT: [yes]

Creating a new VMware Tools installer database using the tar4 format.

Installing VMware Tools.

In which directory do you want to install the binary files? 
[/usr/bin] 

INPUT: [/usr/bin]  default

What is the directory that contains the init directories (rc0.d/ to rc6.d/)? 
[/etc] 

INPUT: [/etc]  default

What is the directory that contains the init scripts? 
[/etc/init.d] 

INPUT: [/etc/init.d]  default

In which directory do you want to install the daemon files? 
[/usr/sbin] 

INPUT: [/usr/sbin]  default

In which directory do you want to install the library files? 
[/usr/lib/vmware-tools] 

INPUT: [/usr/lib/vmware-tools]  default

The path "/usr/lib/vmware-tools" does not exist currently. This program is 
going to create it, including needed parent directories. Is this what you want?
[yes] yes

INPUT: [yes]

In which directory do you want to install the documentation files? 
[/usr/share/doc/vmware-tools] 

INPUT: [/usr/share/doc/vmware-tools]  default

The path "/usr/share/doc/vmware-tools" does not exist currently. This program 
is going to create it, including needed parent directories. Is this what you 
want? [yes] yes

INPUT: [yes]

The installation of VMware Tools 10.3.22 build-15902021 for Linux completed 
successfully. You can decide to remove this software from your system at any 
time by invoking the following command: "/usr/bin/vmware-uninstall-tools.pl".

Before running VMware Tools for the first time, you need to configure it by 
invoking the following command: "/usr/bin/vmware-config-tools.pl". Do you want 
this program to invoke the command for you now? [yes] yes

INPUT: [yes]


You have chosen to install VMware Tools on top of an open-vm-tools package.  
You will now be given the option to replace some commands provided by 
open-vm-tools.  Please note that if you replace any commands at this time and 
later remove VMware Tools, it may be necessary to re-install the open-vm-tools.

The file /usr/bin/vmware-hgfsclient that this program was about to install 
already exists.  Overwrite? [no] yes

INPUT: [yes]

The file /sbin/mount.vmhgfs that this program was about to install already 
exists.  Overwrite? [no] yes

INPUT: [yes]

The file /usr/bin/vmhgfs-fuse that this program was about to install already 
exists.  Overwrite? [no] yes

INPUT: [yes]

Initializing...


Making sure services for VMware Tools are stopped.

Stopping VMware Tools services in the virtual machine:
   VMware User Agent (vmware-user):                                    done
   Unmounting HGFS shares:                                             done
   Guest filesystem driver:                                            done


The module vmci has already been installed on this system by another installer 
or package and will not be modified by this installer.

The module vsock has already been installed on this system by another installer
or package and will not be modified by this installer.

The module vmxnet3 has already been installed on this system by another 
installer or package and will not be modified by this installer.

The module pvscsi has already been installed on this system by another 
installer or package and will not be modified by this installer.

The module vmmemctl has already been installed on this system by another 
installer or package and will not be modified by this installer.

The VMware Host-Guest Filesystem allows for shared folders between the host OS 
and the guest OS in a Fusion or Workstation virtual environment.  Do you wish 
to enable this feature? [yes] yes

INPUT: [yes]

The vmxnet driver is no longer supported on kernels 3.3 and greater. Please 
upgrade to a newer virtual NIC. (e.g., vmxnet3 or e1000e)


Skipping configuring automatic kernel modules as no drivers were installed by 
this installer.


Skipping rebuilding initrd boot image for kernel as no drivers to be included 
in boot image were installed by this installer.

The configuration of VMware Tools 10.3.22 build-15902021 for Linux for this 
running kernel completed successfully.

Enjoy,

--the VMware team

出现这个Enjoy,就代表完成。

在这里插入图片描述

启动开发板,tftp下载内核和驱动,nfs挂载文件系统

使用网络环境2网速就是快。


开发流程1

也就是方便调试,可以在网络的基础上,针对于不完善的系统。

编写驱动程序

在这里插入图片描述

修改Makefile

系统篇编译的内核路径

KERNELDIR := /home/samba/flynnsin_linux/linux

在这里插入图片描述

编译

这里可以普通用户也可root用户

root@ubuntu:/mnt/hgfs/share/zzk_drive/01_chrdevbase# make
make -C /home/samba/flynnsin_linux/linux M=/mnt/hgfs/share/zzk_drive/01_chrdevbase modules
make[1]: 进入目录“/home/samba/flynnsin_linux/linux”
  CC [M]  /mnt/hgfs/share/zzk_drive/01_chrdevbase/chrdevbase.o
  Building modules, stage 2.
make[2]: 警告:文件“/mnt/hgfs/share/zzk_drive/01_chrdevbase/chrdevbase.o”的修改时间在未来 0.94 秒后
  MODPOST 1 modules
  CC      /mnt/hgfs/share/zzk_drive/01_chrdevbase/chrdevbase.mod.o
  LD [M]  /mnt/hgfs/share/zzk_drive/01_chrdevbase/chrdevbase.ko
make[2]: 警告:检测到时钟错误。您的创建可能是不完整的。
make[1]: 离开目录“/home/samba/flynnsin_linux/linux”

修改环境变量,当然这里也可以修改,linux文件夹下makefile

root@ubuntu:/mnt/hgfs/share/zzk_drive/01_chrdevbase# export ARCH=arm
root@ubuntu:/mnt/hgfs/share/zzk_drive/01_chrdevbase# export CROSS_COMPILE=arm-linux-gnueabihf-
root@ubuntu:/mnt/hgfs/share/zzk_drive/01_chrdevbase# export
declare -x ARCH="arm"
declare -x CLUTTER_IM_MODULE="xim"
declare -x COLORTERM="truecolor"
declare -x CROSS_COMPILE="arm-linux-gnueabihf-"

make

root@ubuntu:/mnt/hgfs/share/zzk_drive/01_chrdevbase# make
make -C /home/samba/flynnsin_linux/linux M=/mnt/hgfs/share/zzk_drive/01_chrdevbase modules
make[1]: 进入目录“/home/samba/flynnsin_linux/linux”
  Building modules, stage 2.
  MODPOST 1 modules
make[1]: 离开目录“/home/samba/flynnsin_linux/linux”
root@ubuntu:/mnt/hgfs/share/zzk_drive/01_chrdevbase# ls
1_chrdevbase.code-workspace  chrdevbase.c   chrdevbase.mod.c  chrdevbase.o  modules.order
chrdevbaseApp.c              chrdevbase.ko  chrdevbase.mod.o  Makefile      Module.symvers

当然你也可以使用这个make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
但推荐使用export

root@ubuntu:/mnt/hgfs/share/zzk_drive/01_chrdevbase# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4
make -C /home/samba/flynnsin_linux/linux M=/mnt/hgfs/share/zzk_drive/01_chrdevbase modules
make[1]: 进入目录“/home/samba/flynnsin_linux/linux”
  CC [M]  /mnt/hgfs/share/zzk_drive/01_chrdevbase/chrdevbase.o
  Building modules, stage 2.
make[2]: 警告:文件“/mnt/hgfs/share/zzk_drive/01_chrdevbase/chrdevbase.o”的修改时间在未来 1.1 秒后
  MODPOST 1 modules
  CC      /mnt/hgfs/share/zzk_drive/01_chrdevbase/chrdevbase.mod.o
  LD [M]  /mnt/hgfs/share/zzk_drive/01_chrdevbase/chrdevbase.ko
make[2]: 警告:检测到时钟错误。您的创建可能是不完整的。
make[1]: 离开目录“/home/samba/flynnsin_linux/linux”
root@ubuntu:/mnt/hgfs/share/zzk_drive/01_chrdevbase# ls
1_chrdevbase.code-workspace  chrdevbase.c   chrdevbase.mod.c  chrdevbase.o  modules.order
chrdevbaseApp.c              chrdevbase.ko  chrdevbase.mod.o  Makefile      Module.symvers
root@ubuntu:/mnt/hgfs/share/zzk_drive/01_chrdevbase# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean
make -C /home/samba/flynnsin_linux/linux M=/mnt/hgfs/share/zzk_drive/01_chrdevbase clean
make[1]: 进入目录“/home/samba/flynnsin_linux/linux”
  CLEAN   /mnt/hgfs/share/zzk_drive/01_chrdevbase/.tmp_versions
  CLEAN   /mnt/hgfs/share/zzk_drive/01_chrdevbase/Module.symvers
make[1]: 离开目录“/home/samba/flynnsin_linux/linux”

生成.ko文件即代表编译成功
编译app测试文件

root@ubuntu:/mnt/hgfs/share/zzk_drive/01_chrdevbase# arm-linux-gnueabihf-gcc chrdevbaseApp.c -o chrdevbaseApp
root@ubuntu:/mnt/hgfs/share/zzk_drive/01_chrdevbase# ls
1_chrdevbase.code-workspace  chrdevbaseApp.c  chrdevbase.ko     chrdevbase.mod.o  Makefile       Module.symvers
chrdevbaseApp                chrdevbase.c     chrdevbase.mod.c  chrdevbase.o      modules.order

创建拷贝

insmod和 modprobe,insmod 是最简单的模块加载命令,此命令用于加载指定的.ko 模块,比如加载 drv.ko
这个驱动模块,命 令如下: insmod drv.ko insmod 命令不能解决模块的依赖关系,比如 drv.ko 依赖 first.ko
这个模块,就必须先使用 insmod 命令加载 first.ko 这个模块,然后再加载 drv.ko 这个模块。但是 modprobe
就不会存在这 个问题,modprobe 会分析模块的依赖关系,然后会将所有的依赖模块都加载到内核中,因此 modprobe 命令相比
insmod 要智能一些。modprobe 命令主要智能在提供了模块的依赖性分析、 错误检查、错误报告等功能,推荐使用 modprobe
命令来加载驱动。modprobe 命令默认会去 /lib/modules/目录中查找模块,比如本书使用的
Linux kernel 的版本号为 4.1.15, 因此 modprobe 命令默认会到/lib/modules/4.1.15
这个目录中查找相应的驱动模块,一般自己制 作的根文件系统中是不会有这个目录的,所以需要自己手动创建。

就是mpoprobe可以自动加载依赖,当然这边还可以使用insmod加载,但推荐使用modprobe。

root@ubuntu:/home/samba/linux/nfs/rootfs/lib# mkdir modules
root@ubuntu:/home/samba/linux/nfs/rootfs/lib# cd modules/
root@ubuntu:/home/samba/linux/nfs/rootfs/lib/modules# mkdir 4.1.15
root@ubuntu:/home/samba/linux/nfs/rootfs/lib/modules# cd 4.1.15/
cp chrdevbase.ko chrdevbaseApp /home/samba/linux/nfs/rootfs/lib/modules/4.1.15/

加载驱动

modprobe加载驱动

/lib/modules/4.1.15 # modprobe chrdevbase.ko
modprobe: can't open 'modules.dep': No such file or directory

无法打开“modules.dep”这个文件,我们不用手动创建 modules.dep 这个文件。使用命令生成。

depmod

/lib/modules/4.1.15 # depmod
/lib/modules/4.1.15 # ls
chrdevbase.ko    modules.alias    modules.symbols
chrdevbaseApp    modules.dep

查看当前系统中存在的模块

/lib/modules/4.1.15 # modprobe chrdevbase.ko
chrdevbase init!
/lib/modules/4.1.15 # lsmod
Module                  Size  Used by    Tainted: G
chrdevbase              2036  0

查看系统所有的设备

cat /proc/devices

在这里插入图片描述

创建设备节点文件

/lib/modules/4.1.15 # mknod /dev/chrdevbase c 200 0
/lib/modules/4.1.15 # ls /dev/chrdevbase
/dev/chrdevbase
/lib/modules/4.1.15 # ls /dev/chrdevbase -l
crw-r--r--    1 0        0         200,   0 Apr  3 16:50 /dev/chrdevbase

APP测试chrdevbase 设备操作

/lib/modules/4.1.15 # ./chrdevbaseApp /dev/chrdevbase 1
chrdevbase open!
kernel senddata ok!
chrdevbase release!a!

/lib/modules/4.1.15 # ./chrdevbaseApp /dev/chrdevbase 2
chrdevbase open!
kernel recevdata:usr data!
chrdevbase release!

卸载驱动模块

/lib/modules/4.1.15 # rmmod chrdevbase.ko
chrdevbase exit!
/lib/modules/4.1.15 # lsmod
Module                  Size  Used by    Tainted: G

开发流程2

编写驱动那些环节一致。

nfs挂载测试

这里因为文件系统相对完善,有时我没需要加需求,我们可以使用这种方式测试。
这里把虚拟机上nfs目录挂载到开发板nfs_get目录。
nfsvers=3针对nfs版本号,这里要设置对,不然会有版本报错原因。

mount -t nfs -o nolock,nfsvers=3 192.168.129.154:/home/flynnsnu/linux/nfs nfs_get/

在这里插入图片描述

驱动加载

root@ATK-IMX6U:~/nfs_get/02_led# modprobe led.ko
modprobe: FATAL: Module led.ko not found in directory /lib/modules/4.1.15-g06f53e4

在这里插入图片描述
mknod /dev/led c 200 0
在这里插入图片描述
驱动程序

if(ledstat == LEDON) {	
		led_switch(LEDON);		/* 打开LED灯 */
		printk("on\r\n");
	} else if(ledstat == LEDOFF) {
		led_switch(LEDOFF);	/* 关闭LED灯 */
		printk("off\r\n");
	}

这里当初测试时是加载了正点原子出厂内核,led灯被用作呼吸灯,使用没有现象。

在这里插入图片描述

加载测试led驱动

/lib/modules/4.1.15 # ls
chrdevbase.ko    led.ko           modules.alias    modules.symbols
chrdevbaseApp    ledApp           modules.dep
/lib/modules/4.1.15 # modprobe led.ko
modprobe: module led.ko not found in modules.dep
/lib/modules/4.1.15 # depmod
/lib/modules/4.1.15 # ls
chrdevbase.ko    led.ko           modules.alias    modules.symbols
chrdevbaseApp    ledApp           modules.dep
/lib/modules/4.1.15 # modprobe led.ko
/lib/modules/4.1.15 # lsmod
Module                  Size  Used by    Tainted: G
led                     1838  0
/lib/modules/4.1.15 # cat /proc/devices
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  7 vcs
 10 misc
 13 input
 29 fb
 81 video4linux
 89 i2c
 90 mtd
116 alsa
128 ptm
136 pts
180 usb
189 usb_device
200 led
207 ttymxc
226 drm
250 ttyLP
251 watchdog
252 ptp
253 pps
254 rtc

Block devices:
  1 ramdisk
259 blkext
  7 loop
  8 sd
 31 mtdblock
 65 sd
 66 sd
 67 sd
 68 sd
 69 sd
 70 sd
 71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
179 mmc
/lib/modules/4.1.15 # mknod /dev/led c 200 0
/lib/modules/4.1.15 # ls /dev/led -l
crw-r--r--    1 0        0         200,   0 Apr  3 17:09 /dev/led
/lib/modules/4.1.15 # ./ledApp /dev/led 1
on
/lib/modules/4.1.15 # ./ledApp /dev/led 0
off
/lib/modules/4.1.15 # remod led.ko
-/bin/sh: remod: not found
/lib/modules/4.1.15 # rmmod led.ko
/lib/modules/4.1.15 #

就写到这,大致流程就是这样,后面就是驱动框架的搭建了。

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

驱动开发了解下 的相关文章

  • hallib_RTC

    RTC 一 配置参数 1 2 只有使能RTC之后才能选LSE 二 编写应用代码 1 在mspinit里面加上这个函数 xff0c 打开秒中断 xff0c 这个函数在 h文件里面 span class token function HAL R
  • hullib_Tim3TiggerAdc1

    Tim3TiggerAdc1 只有Tim3才可以用更新 xff08 TIM TRGO UPDATE xff09 触发adc xff0c 其他定时器都要用输出比较模式才可以 一 cubmax配置 1 配置tim3为500ms更新 xff0c
  • hullib_AdcBase

    AdcBase 也就是不用中断 xff0c 每次用软件触发的简单操作 一 cubmax配置 1 选好通道就可以了 xff0c 其他都不用管 二 需要编写的代码 1 在main函数while里面写上 span class token keyw
  • hullib_eeprom

    EEPROM 这个模拟iic真的搞了好久啊 xff0c 最后发现这个24c02写完之后至少要延时4ms再来读才可以 xff0c 要不然读的时候都是NACK 一 时序 自己看数据手册吧
  • hullib_PwmCapture

    PwmCapture 需要两个channel 一 cubemx配置 一个上升沿捕获 xff0c 一个下降沿捕获 打开中断 二 自己写的代码 1 开启两个通道的中断 span class token function HAL TIM IC S
  • 2021-03-16

    hullib Rtc 获取时间之后必须获取日期他才会有时间 HAL RTC GetTime amp hrtc amp sTime RTC FORMAT BIN HAL RTC GetDate amp hrtc amp sDate RTC F
  • hullib_PwmOutput

    hullib PwmOutput 一 cubmx需要配置的 1 这里一定是pwm Generation 而不是pwm outcompare 使用定时器的PWM模式只能在4个通道产生频率相同但占空比不同的输出信号 使用定时器的输出比较模式可以
  • 计算机类非全日制研究生

    北京市 10002 中国人民大学 院系所专业研究方向考试范围 159 信息学院 xff08 专业学位 xff09 085400 专业学位 电子信息 02 软件工程领域 xff08 非全 xff09 详情 159 信息学院 xff08 专业学
  • 史上最详细的Docker 镜像的制作-上传-拉取--部署(阿里云)

    Docker 镜像的制作 上传 拉取 部署 一 镜像 xff08 images xff09 1 什么是镜像 xff1f 2 镜像的组成和用途 xff08 1 xff09 Dockerfile xff08 2 xff09 scratch xf
  • 机动目标跟踪-Singer模型,当前统计模型,交互多模型与卡尔曼滤波的结合

    文章目录 非机动目标跟踪算法原理一 Singer 模型算法二 当前统计模型算法三 交互多模型算法 实验仿真一 低机动情况1 1 Singer模型参数设置1 2 当前统计模型参数设置1 3交互多模型参数设置1 4 对比分析 二 一般机动情况2
  • 用大白话解析函数调用,系统调用和API之间的关系

    一 官方的解释 大概了解一下 函数调用 函数调用是计算机编或运行时 xff0c 使用某个函数来完成相关命令 系统调用 系统调用是用户在程序中使用 访管指令 调用由操作系统提供的子功能集合 API 应用编程接口 xff08 Applicati
  • docker删除所有容器和镜像

    确保自己有权限 xff0c 一般先执行下面的命令获取管理员权限 span class token function sudo span span class token function su span 1 杀死运行的容器 xff1a sp
  • Docker镜像制作与仓库搭建

    Docker 1 xff0c docker镜像制作2 xff0c docker仓库搭建 1 xff0c docker镜像制作 docker官方和个人发布的镜像由于版本等各种原因 xff0c 漏洞较多 xff0c 已统计Docker Hub超
  • 2019年全国大学生电子设计竞赛赛题分享与浅析

    0 ti杯2019年全国大学生电子设计竞赛赛题已于今晨公布 其中赛题分为本科组与高职高专组 xff1a 本科组 xff1a A 电动小车动态无线充电系统 B 巡线机器人 C 线路负载及故障检测装置 D 简易电路特性测试仪 E 基于互联网的信
  • springboot整合canal实现对mysql数据库实时监控

    canal Canal介绍Mysql环境准备安装canalspringboot整合canal Canal介绍 官网地址 xff1a https github com alibaba canal canal k n l xff0c 译意为水道
  • tensorflow2.6.0安装 another metric with the same name already exists

    终端直接输入pip install tensorflow 61 61 2 6 0 但是这里有一点问题 span class token keyword import span os span class token keyword impo
  • Java编程心得体会

    初次学习Java编程的心得与体会 之前学习过c语言 xff0c python编程 xff0c 对比Java编程首先感觉到的区别就是Java环境配置比较复杂 xff0c 编程工具安装比较麻烦 课堂上老师讲到首先下载安装jdk xff0c 然后
  • Ubuntu18.04+ROS-melodic环境 px4+move_base仿真遇到的问题

    前前后后安了三个虚拟机 xff0c 折腾了快一个月了吧 第四次用双系统终于实现了 每次都有不同的坑 1 错误 xff1a gz symbol lookup error usr lib x86 64 linux gnu libgazebo c
  • 【谷粒学院】项目总结

    做谷粒学院这个项目大概花了2个多月的时间 xff0c 期间遇到了很多问题 xff0c 想要记录下来 xff0c 希望可以对别人有所帮助 首先谷粒学院项目我是不太推荐时间紧张的友友拿来做为毕设项目的 xff0c 原因是里面涉及到的技术 服务很

随机推荐

  • 完美解决make -f Makefile.unx报错问题 +Centos

    这里写自定义目录标题 本人亲测成功 导读 xff1a 我用这个命令主要是针对编译hadoop的 xff0c 其中有个isa l安装 xff0c 是英特尔 ISA L技术即 xff08 Intel Intelligent Storage Ac
  • 关于Gitee创建存储库多人协作流程

    关于Gitee创建存储库多人协作流程 主要解决在IDEA工具开发下通过Gtiee多人协作 xff0c 共同开发 前期准备 IDEA xff1a IDEA当前文档使用版本为2021 3 1 Git xff1a IDEA安装Gitee插件 流程
  • ajax上传文件,图片并显示与删除(spring boot)

    思路 xff1a 先上传文件然后在读出来 之前本人都是用form提交上传文件 xff0c 现在写个ajax的文件上传 先看下效果 xff1a 上传并在页面显示 关键代码 xff1a 在启动类里面加入 span class token com
  • opencv-python——调用摄像头或导入视频实现颜色识别并画框

    采用opencv进行颜色识别有个好处就是他的框可以是具有角度的长方体框 xff0c 不局限于平行点的 文章目录 颜色识别实现过程1 调用摄像头 导入视频或读入照片2 找出所需颜色对应的HSV阈值3 找出二值化后的图片中的特征点并进行画框 完
  • Ubuntu18.04——python2安装opencv4.1版本并代替ROS自带的低版本opencv

    软件环境 Ubuntu 18 04系统ROS melodic 查看安装ROS默认安装的CV2位置 改个名 xff0c 不要是cv2就ok xff1a 查看是否移除 可以发现还有一个cv2的so文件 xff0c 所以我们需要将这个也移除 改个
  • 直流电机驱动电路设计-----学习笔记

    直流电机驱动电路的设计目标 在直流电机驱动电路的设计中 xff0c 主要考虑一下几点 xff1a 1 功能 xff1a 电机是单向还是双向转动 需不需要调速 对于单向的电机驱动 xff0c 只要用一个大功率三极管或场效应管或继电器直接带动电
  • ROS——问题解决:rqt工具包中image_view消失;bash: rosrun rqt_image_view未找到命令

    重装rqt工具 span class token function sudo span span class token function apt get span span class token function install spa
  • VS Code——Git插件使用指南

    文章目录 一 基于VScode本地新建工程并上传到Github1 新建工程文件夹并用Vscode打开该文件夹2 初始化存储库3 暂存更改4 提交暂存更改5 同步到Github中6 在Github中查看项目 二 Git clone到本地后进行
  • Ubuntu18.04——查看CPU, GPU,内存利用率

    htop查看CPU和内存利用率 sudo apt install htop 启动htop htop 查看NVIDIA GPU利用率 nvidia smi 以每秒1次的刷新频率实时查看 nvidia smi l 1
  • Ubuntu18.04——基于X86和Arm安装并配置Realsense-ros环境

    文章目录 基础安装1 安装ROS2 安装Realsense驱动以及依赖库 xff08 1 xff09 X86安装librealsense更新 xff08 2 xff09 Arm编译安装librealsense xff08 或者Apt无法下载
  • 【Rt-Thread】STM32输出PWM

    1 实验目标 STM32输出不同频率的占空比为50 的PWM信号 xff0c 控制蜂鸣器音调 2 硬件部分 2 1 模块介绍 xff08 1 xff09 主控芯片 F405RGT6 xff08 2 xff09 蜂鸣器 低电平触发 2 2 接
  • 考研复试实用指南

    Preface 考研初试已经结束 xff0c 但是考研这场仗还没打完 xff0c 接下来 xff0c 我们将走入复试的战场 考研复试并不是走过场 xff0c 是有严格的淘汰比例的 xff1b 考研复试并不是关系网 xff0c 是有公开而透明
  • 2020oop第一次练习 6-3 字符串 - 6. 查找子串(BF算法) (10分)

    C语言标准函数库中包括 strstr 函数 xff0c 在主串中查找子串 作为练习 xff0c 我们自己编写一个功能与之相同的函数 函数原型 char StrStr const char txt const char pat 说明 xff1
  • 信号量——二值信号量

    信号量 二值信号量 信号量简介 信号量是操作系统的重要部分 xff0c 信号量一般用来进行资源管理和任务同步 FreeRTOS中信号量分为二值信号量 互斥信号量 计数信号量和递归互斥信号量 xff0c 应用场景各不同 二值信号量 二值信号量
  • switch case语句的用法

    switch case语句的用法 我们首先来看一下switch case 语句的一般形式是怎样的 span class token keyword switch span xff08 表达式 xff09 xff5b span class t
  • C++容器作为函数形参进行使用

    C 43 43 容器作为函数形参进行使用 如这个编程题 xff1a 该题是对容器的简单应用 xff0c 由于数组在定义的时候要么用列表初始化间接告诉编译器数组的大小 xff0c 要么在定义的时候直接定义它的大小如 xff1a int arr
  • 任正非被遗漏的讲话:怎么做一个谦虚的领导者?(转)

    任正非曾在市场大会做过一个叫 做谦虚的领导者 的讲话 xff0c 少有媒体和社会层面的关注 xff0c 甚至内部也未有什么波澜 但细看起来 xff0c 这个讲话基本上是华为的管理纲要 xff0c 如 xff1a 以利润为中心 xff1b 建
  • stm32f4 mpu6050与姿态解算(仅供自己学习使用,学习笔记)

    IMU原理及姿态融合算法详解 一 陀螺仪的组成原理1 xff09 加速度计2 xff09 陀螺仪3 xff09 磁力计 二 椭球拟合三 姿态的描述1 坐标系载体坐标系当地导航坐标系载体坐标系 2 四元数3 欧拉角4 xff09 旋转矩阵 四
  • 【计算机视觉】:(3)全景图像拼接

    图像映射与全景拼接 1 全景拼接基本流程2 图像映射流程2 1 提取特征点 xff0c 构建关键点描述符 xff08 SIFT特征提取 xff09 2 2 特征匹配 xff08 KNN或kd树匹配 xff09 2 3 根据图像变换特点 xf
  • 驱动开发了解下

    目录 前提环境说明网络环境网络环境1网络环境2 启动开发板 xff0c tftp下载内核和驱动 xff0c nfs挂载文件系统开发流程1编写驱动程序修改Makefile编译创建拷贝加载驱动modprobe加载驱动depmod查看当前系统中存