- 博客(702)
- 资源 (14)
- 收藏
- 关注
原创 SOPHON算能服务器SDK环境配置和相关库安装
于是我直接在google搜索:dkms.noarch 0:3.0.12-1.el7.rpm下载,找到如下网页。后面安装的libsophon以及sophon-mw都在SDK大包里面。在下载的SDK大包中找到下面的内容,然后拷贝到算能服务器中。其中在安装dkms的时候提示下面的错误。在前面下载的SDK大包中找到如下内容,然后把其中的四个拷贝到算能服务器上。然后使用下面的命令安装。然后使用下面的命令安装。
2024-03-19 14:21:31 325
原创 GCC的符号可见性: 解决Linux多个库同名符号冲突问题以及引用不同版本库的问题
某项目中因为使用到了不同版本库的问题,因此整理下GCC的符号可见性问题,方便自己以后再次使用。
2024-02-26 11:12:17 997
原创 SOPHON算能科技新版SDK环境配置以及C++ demo使用过程
推荐使用cmake中的find_package查找libsophon和sophon-mw的库包,并链接到自己的程序中。部分头文件不包含于libsophon,如bm_wrapper.hpp、utils.hpp。SoC模式下,原来/system下的软件库包,现位于/opt/sophon/下。SoC模式下,通过开机时的systemd服务,自动加载/opt/sophon/libsophon-current/data下的ko内核模块。如用户定义的自启动服务,并且依赖BM168X,请确保在ko加载后启动。
2024-02-20 16:16:04 1277
原创 yolov5导出onnx模型问题
我改完之后,输出变成x y w h box_score idxs label1_confidence label2_confidence .... labeln_confidence.原来的yolov5输出是x y w h box_score label1_confidence label2_confidence .... labeln_confidence.为了适配C++工程代码,我在导出onnx模型时,会把models/yolo.py里面的forward函数改成下面这样,
2024-01-31 17:55:08 698
原创 利用tpu-mlir工具将深度学习算法模型转成算能科技平台.bmodel模型的方法步骤
上图就是tpu-mlir的整体架构图,主要分两步, 一是通过将原始模型 转换成mlir文件, 二是通过将mlir文件转换成bmodel/cvimodel。如果要转INT8模型, 则需要调用生成校准表, 然后传给。如果INT8模型不满足精度需要, 可以调用生成量化表, 用来决定哪些层采用浮点计算, 然后传给生成混精度模型。
2024-01-24 16:31:52 1284 4
原创 程序员的周末——硬件设计中的Hello World__STM32核心板绘制
周末有时间,用Altium Designer 20绘制一个STM32核心板电路,走一遍原理图设计、原器件布局、布线、覆铜、电气规则检测等大体流程,下面简单记录下过程。
2024-01-19 16:35:03 999
原创 基于EasyDarwin、ffmpeg实现rtsp推流
某项目中测试时需要用到推流,于是用EasyDarwin、ffmpeg实现了RTSP推流,简单记录下过程,
2023-12-20 15:53:22 796
原创 error while loading shared libraries: libva.so.1: cannot open shared object file: No such file or di
然后问bing ai说要从github下载源码然后配置编译安装,太麻烦了,但是其实自己电脑中是有这个库的,只不过软连接的名字不一样,解决方法如下。这里可以看到自己电脑中是把 libva.so.2.100.0链接为libva.so.2,所以,那我再软连接个libva.so.1就行了,在做某项目的时候遇到这个问题,
2023-12-20 14:42:08 523
原创 父子进程继承问题:OSError: [Errno 88] Socket operation on non-socket错误记录
基本上没有什么有用信息,于是我想那我就去Python的flask库源码里面看看,然后我在flask库源码里面添加了打印,至于在哪些代码添加打印,从报错可以看到代码执行顺序,所以按照报错信息提示的代码执行流程去添加打印。这里很明显有个问题,就是我传进去的port是10000,然后第一次打印确实是10000,但是第二次打印为什么变成0了,于是去找第二行打印那里的代码。修改完之后再次执行程序,现在发现两行打印的端口号是统一的了,第二行打印不再是0了,程序也不再报错了,问题解决。然后我运行程序,发现打印内容如下。
2023-12-06 13:58:24 1008
原创 利用flask将yolov5算法封装成在线推理服务
本脚本主要参考了yolov5工程文件夹下面的detect.py,将yolov5算法封装成了一个在线的推理服务,可以接受app请求,然后推理图片,并将检测结果以json返回,该服务可以供数据标注平台请求。
2023-12-05 17:40:55 660
原创 利用opencv/暗通道方法检测图像是否有雾-利用opencv/暗通道方法对深度学习目标检测算法结果进行二次识别提高准确率
本来利用yolov5检测浓雾的,但是发现yolov5的检测结果会把一些正常天气检测成雾天,这种时候其实可以通过增加正常类,也就是将正常天气被误检成浓雾的图片当成一个正常类别去训练,但是不想标注图片,也不想重新训练算法了,因此想是不是可以用opencv对yolov5检测到的图像进行二次识别,从而提高准确率,结果发现是可以的。
2023-11-22 14:14:31 597
原创 conda环境使用过程中的两个错误记录
然后就是提示没有相应的包,我用screen -r连接到那个screen看了,他也激活conda环境了,问题原因在:我是在某个conda环境中执行的这个脚本,那相当于我在conda环境中开的screen,然后再在screen中激活另一个conda环境,这就不成功。具体根本原因我也没细究,为了项目进度,解决问题的方法就是,先退出当前的conda环境再激活某个screen,再进入另一个conda环境就好了,所以把上面的代码增加一行就好了。运行提示没有pynvml报的问题,于是那我当然用下面的命令去安装这个包,
2023-11-10 17:03:46 244
原创 搭建嵌入式GDB调试环境以及VSCode+gdbserver 图形化调试
然后我又试了下gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf的gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/bin这个目录下的gdbserver放到开发板上是可以用的。在不涉及到交叉编译的时候,--build、--host、--target是一样的,不需要特别设置。--target:编译出来的工具链生成的代码的运行平台。
2023-11-07 19:23:11 1613 2
原创 Linux开发板移植FTP服务器和OpenSSH时发现的问题
的时候,我就试了下FileZilla登录Linux开发板,然后发现竟然可以,怎么回事呀,我以为是开发板里面已经有vsftpd了,我top命令看了下到底有什么服务在运行,我在里面没找到vsftpd,但是看到了一个sftp-server,我猜测就是这个。今天闲着没事,想试一下在Linux开发板移植FTP服务器以及移植OpenSSH,具体操作就不说了,网上有的是,我想记录下自己在这个过程中发现的问题。于是我做了实验,把这个sftp-server给去掉,发现确实连接不上了,
2023-11-06 16:21:15 194
原创 Linux内核input子系统详解
函数,这里设置了中断处理函数是gtp_irq_handler,在gtp_irq_handler函数里面就是真正读取触摸屏数据的最底层的硬件函数了,里面就是调用i2c_transfer函数读取数据的了。假设nr设置为1,max_slots设置为5,那么督导的数据保存在:samp[0][0]、samp[0][1]、samp[0][2]、samp[0][3]、samp[0][4]和samp[1][0]、samp[1][1]、samp[1][2]、samp[1][3]、samp[1][4]中。
2023-11-03 16:47:57 515 2
原创 使用python_opencv比较图像差异/使用python_opencv找出两张图像的差异范围
发现效果还是不对,这是因为我想反了,其实diff图中,右下角黑色那块,黑色的的像素值低, 所以,我thresh不应该设置成230,要设置成20,这样保留的就是右下角那块黑色的了。其实增加了三个if判断,对矩形进行过滤之后,上面的那个图片已经能够检测出差异了,但是我还有其他图片,发现效果还是不好,单纯这种优化方法还是不够,还需要继续优化。其实从diff图来看,opencv已经能够很明显的发现右下角的差异了,那么说明用这种方法其实是可以解决我这个问题的,那为什么最后的效果不好呢,我看了下我的diff图,
2023-10-20 14:09:28 876 2
原创 Linux内核UART串口子系统驱动框架详解
具体看函数内部,申请了imx_uart结构体之后,显示解析了设备树获取了寄存器信息,然后设置这个uart_port结构体,然后uart_port结构体里面的ops操作结构体对应的是uart_ops结构体,这个uart_ops结构体里面对应的就是一些imx6ull自己的一些操作函数了,这就具体到底层硬件操作函数了,设置完这些东西之后就开始调用uart_add_one_port(&imx_reg, &sport->port)函数去添加一个port。
2023-10-19 14:28:07 2651 5
原创 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found (required by
出现上述错误的原因是安装了高版本的GCC之后没有更新软连接,只需要查找安装GCC时生成的最新动态库,然后添加软连接即可。然后我看了下/usr/lib64/libstdc++.so.6是链接到哪里去了,这个问题其实我之前遇到过,之前的博客笔记。然后看了下g++版本是8.5.0。在某项目中遇到下面的错误,
2023-10-08 10:58:55 2064
原创 Linux内核SPI子系统驱动框架详解
当我们在应用程序中调用比如write函数的时候,其实调用的就是spi设备驱动注册进去的file_operations结构体里面的write函数,也就是图中的spidev_write函数,这个spidev_write函数进一步调用的就是spi_write函数,这个spi_write函数就就是在SPI核心层定义的,然后spi_write函数进一步调用的就是SPI控制器驱动程序中的spi_sync函数。如上图所示是spi控制器和spi设备的软件架构图,左边是SPI控制器驱动软件结构,右边是SPI设备的软件结构,
2023-09-22 17:17:51 1262 5
原创 Can‘t find default configuration “arch/x86/configs/100ask_imx6ull_defconfig“!----编译内核时找不到配置文件
这说明make命令没有去arch/arm目录下查找配置文件,而是去了arch/x86目录下查找,make命令默认是去arch/$(ARCH)/configs/目录下查找配置文件的,环境变量,您可以告诉编译系统您正在编译的目标架构是ARM。这样,编译系统就会使用适合ARM架构的编译选项和工具链来编译代码。这个环境变量通常在编译Linux内核或其他针对特定架构的软件时使用。在arch这个目录下有配置文件,但是前面的报错是。所以,我需要设置一下ARCH环境变量,编译配置内核时,提示下面的错误。
2023-09-08 10:17:23 591
原创 Linux内核的GPIO子系统驱动框架详解以及基于pinctrl和gpio子系统的LED驱动程序
上图就是gpio子系统的层次结构图,在其他的驱动程序里面,我们可以直接用gpiod_set_value这种函数来设置引脚的值,这个函数是在gpio库里面定义的,gpio库起到一个承上启下的作用,然后这个gpiod_set_value函数最终调用的是chip->set(chip, gpio_chip_hwgpio(desc), value)函数,这里的chip就是在gpio驱动程序里面注册的结构体,这个结构体体里面就包含了一些对gpio的操作函数。base // 这个GPIO控制器的GPIO编号。
2023-09-06 20:02:15 1490 3
原创 Linux内核的pinctrl子系统驱动框架详解
然后在这个结构体中,分别包含了pins,还有一些操作函数,然后又调用了imx_pinctrl_probe_dt(pdev, info);首先设备树中的iomuxc节点会被转化成一个platform_device,然后根据compatible = "fsl,imx6ul-iomuxc"进行匹配时,imx6ul_pinctrl_probe函数会被调用,在这个函数中,先是取出了pinctrl_info = (struct imx_pinctrl_soc_info *) match->data;
2023-08-28 21:21:51 729
原创 vsocde里面远程连接服务器报could not esatablish connection xxxx
我在vscode里面远程连接服务器编辑代码时,正常我按F1选择了服务器IP地址,然后让我选在Linux,然后我再输入服务器密码,但是当我选择Linux系统之后直接没出让我输入服务器密码的输入框,而是直接报错。然后我打开known_hosts.old,把里面有关199服务器的哪一行删掉就好了。那应该是删除我电脑中保存的服务器的秘钥,我从上面的报错log里面可以看到一行这个。我直接问Bing AI,得到如下结果。然后vscode里面有下面的打印。那秘钥的路径应该就在。
2023-08-07 10:29:31 731
原创 利用微软Bing AI语言大模型辅助提高写代码、阅读代码、解bug的效率
有时候我们遇到问题会去Google搜索答案,但有些问题如果我们问Bing Ai可能会更好,Bing AI是结合了大语言模型和bing搜索,但这里不是说每次遇到问题都交给Bing AI,有时候可能其他方法更好,有时候可能Bing AI更好,我们可以把Bing AI作为工具或者方法的其中一种,可以和我们其他的方法或者工具结合起来,提高我们写代码、阅读代码、以及解决bug的效率,下面简单举一下我用Bing AI的例子。要想使用Bing AI,必须用微软的Edge浏览器,打开Edge浏览器,然后打开必应。
2023-08-03 10:44:44 2112 8
原创 GCC版本升高到11.3后编译之前同样的C++代码出现的若干错误
最开始我是用的低版本的gcc编译的onnxruntime,按照下面博客的方式编译的。后来某项目中用11.3.1版本的aarch64-linux-gnu-g++再次编译时出现了很多错误,记录一下。
2023-08-03 10:14:58 1005
原创 /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28‘ not found__为什么了解内核、Linux系统构建、驱动的相关知识对应用开发有帮助
正常这种时候要升级glibc库,不想升级,然后我发现他们给我的交叉编译工具链带着buildroot,那说明是他们自己生成的,于是我干脆不用他们的库,我直接去官网自己下载。某项目中,我要给别人封装一个算法的SDK接口,运行在RK3588平台上,然后客户给我的交叉编译工具链是。
2023-08-02 18:06:13 3756
原创 Linux内核的I2C驱动框架详解
目录1 I2C驱动整体框架图 2 I2C控制器2.1 I2C控制器设备--I2C控制器在内核中也被看做一个设备2.2 i2c控制器驱动程序2.3 platform_driver结构体中的probe函数做了什么2.3.1 疑问: i2cdev_notifier_call函数哪里来的2.3.2 疑问:为什么有两个probe2.3.3 疑问:of_i2c_register_devices(adap);和bus_for_each_drv(&i2c_bus_type, NULL, adap, __process_n
2023-07-31 17:25:22 3293
原创 Linux内核中实例化i2c设备的几种方法----./Linux-4.9.88/Documentation/i2c/instantiating-devices文件翻译
以下内容来自 ./Linux-4.9.88/Documentation/i2c/instantiating-devices,只是翻译成了中文。
2023-07-31 10:23:38 335
原创 Linux内核的platform总线驱动架构
我们写裸机程序的时候,思路是像下图这样的,这样的弊端就是我们要重复写设备驱动,简单的方法是就是每个平台的 I2C 控制器都提供一个统一的接口(也叫做主机驱动),每个设备的话也只提供一个驱动程序(设备驱动),每个设备通过统一的 I2C接口驱动来访问。这就是驱动的分隔,驱动只负责驱动,设备只负责设备,想办法将两者进行匹配即可。这个就是 Linux 中的总线(bus)、驱动(driver)和设备(device)模型,也就是常说的驱动分离。
2023-07-17 09:40:40 322
原创 利用langchain-ChatGLM、langchain-TigerBot实现基于本地知识库的问答应用
刷B站的时候,无意中看到吴恩达的一个langchain的教程,然后去github上搜了下,发现别人利用langchain和chatGLM做的基于本地知识库的问答应用挺好的,学习下。
2023-07-06 11:38:08 3442 1
原创 TigerBot和ChatGLM-6B大语言模型
直接运行CUDA_VISIBLE_DEVICES=0 python ./apps/web_demo.py然后利用公司的内网地址也不能访问,需要修改代码,将web_demo.py最后一行的。我服务器的cuda是11.0版本的,如果我改成pytorch-cuda=11.0发现找不到这个包。注意后面的MODEL_DIR是目录,不是模型文件名字,就把你下载的模型文件夹放这里就行了。这样下载之后是不包含大文件的,要先安装lfs,然后再下载。下载了11.7的cuda,然后安装了新版本的cuda。单卡推理用下面的命令。
2023-07-03 17:48:16 1020
原创 如何快速的阅读一本书
3 不要从头到尾认认真真的看,因为我们不可能把所有内容记住,我们可能只记住其中1%的精华部分。4 知识的沉淀,也就是输出,能够把这本书的内容说出来,那么说明你是有收获的。1 看着树皮,思考一下自己为什么读这本书,是为了解决什么问题。
2023-06-22 22:25:27 290
原创 conda环境的回滚、复制、迁移
conda环境可以通过list命令查看当前conda环境有哪些版本,可以看到使用方法:重点关注其中的-n和-r参数。然后我们可以使用如下命令可以看到当前的conda环境有两个版本然后可以使用如下命令回退到之前的版本。
2023-06-21 14:31:47 1215
原创 NXP IMX6ULL的官方文档、官方BSP、官方SDK、交叉编译工具链下载
买了块IMX6ULL的开发板,但是不想直接用开发板跟的程序,还有比如后面移植uboot和kernel的时候也想基于IMX6ULL官方的uboot和kernel做移植工作,所以自己先找一下怎么在官网下载这些东西。
2023-06-15 20:54:38 1777 5
ndjpnladcallmjemlbaebfadecfhkepb.zip
2020-08-04
2020-07-24-21-20-52-download-P3X-OneNote-2020.10.105.AppImage
2020-08-04
pytorch学习视频百度网盘链接.txt
2020-02-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人