- 博客(67)
- 资源 (6)
- 收藏
- 关注
原创 RKNN开发环境搭建(ubuntu22.04)
在RV1106G3平台上,成功验证了多个技术流程。首先,通过Conda安装了Miniconda,并创建了RKNN-Toolkit2环境,基于Python 3.8进行后续操作。接着,克隆并安装了rknn-toolkit2,成功运行了RKNN模块。随后,克隆了yolov5项目,创建了yolov5环境,并安装了相关依赖,测试了模型检测功能,并将模型转换为ONNX格式。确认了rknpu2驱动版本为v0.9.2以上,并替换了驱动文件。在RKNN-Toolkit2环境中,将ONNX模型转换为RKNN格式。最后,克隆了l
2025-05-16 14:21:57
1082
原创 RV1106G3的fastboot调试
本文详细描述了在幸狐的Luckfox Pico Ultra硬件平台上,使用官方SDK进行系统优化和YOLOv5s模型部署的过程。首先,硬件板卡使用幸狐的SDK进行EMMC非Fastboot配置时功能正常,但Fastboot配置编译失败,通过修改设备树中的ramdisk大小解决了编译问题,但运行时仍报错。幸狐提供的Fastboot烧录文件可正常运行,表明硬件支持Fastboot。随后,使用官方SDK版本rv1106_rv1103_240813进行编译和调试,发现EMMC Fastboot启动失败,通过修改U-
2025-05-16 13:52:50
1055
原创 Hi3516A的gpio控制备忘
特别的数据寄存器的对应不是从bit0开始算,而是从bit2开始算,即gpioX组的0管脚偏移地址为0x004,1管脚偏移地址为0x008,2管脚偏移地址为0x010,3管脚偏移地址为0x020,4管脚偏移地址为0x040,5管脚偏移地址为0x080,6管脚偏移地址为0x0100,7管脚偏移地址为0x200。” 中介绍了gpio的基地址(gpio0 = 0x20140000),包括方向地址(偏移0x400)和数据地址(偏移0),mw 0x20140008 0 //管脚gpio0-1电平设置为低。
2025-05-05 19:58:50
150
原创 拆机片norflash作为zynq的启动设备,JTAG烧写不能成功
后来分析不能启动的主要原因是,这个norflash里边的程序是7035的,后来我用在7020的板子上。同项目的程序重复烧写当然就没有问题的。对于拆机片的情况,需要先把启动模式改为jtag模式,然后jtag正常的烧写最小系统,烧写成功后,则需要再次把最小系统改为norflash模式,后续的要更换最小系统也不用再切为jtag了。之前使用jtag为zynq烧写norflash没有任何问题,本次刚好使用了先前项目中的拆下来的norflash,巧的是zynq的信号不一样,fsbl之类的的程序当然也不一样了。
2025-01-18 17:56:04
258
原创 linux下cpu多核运行程序以及运行时间统计
这个代码在测试单核运行的代码时,时间是对的,但是使用多核运行时,发现这个代码统计的时间是我实际手机计时的2倍,怀疑是该函数统计了本程序对所有cpu的占用时间,即双核的时间。代码中的线程属性设置cpu核心为2和3,进程以cpu核心0来运行,实际运行在核心2和3上。提供了更多的功能和更高的精度,是现代 C 语言编程中推荐的时间测量函数。因此,可得结论:在进程和线程都指定运行的cpu核心时,以线程为准。由于其较低的精度和对多线程支持的限制,在现代编程中使用较少。测试时间和手机测试的一致。
2024-08-30 19:11:44
1416
3
原创 atlas200 AI的PCIE试玩
fpga到cpu的速度是1000MB,pcie3.0 4x的理论速度为2000MB;cpu到fpga的速度是1250MB,pcie3.0 4x的理论速度为2000MB。HI3559AV100和FPGA 7K690T的PCIE接口调试记录-续_hi3559 + fpga-CSDN博客。
2024-01-25 20:23:01
1451
11
原创 使用vmware,在ubuntu18.04中使用笔记本的摄像头
win10系统中,在左下的搜索栏,搜索“相机”,点击进入即可打开相机,并正常显示图像。注意:如果相机连接到了虚拟机,则不能显示正常。步骤5:重新打开相机工具,可以正常显示图像。步骤1:在windows中检查相机状态。按照上述操作之后在系统中可找到设备。按照以上步骤,等待虚拟机的自动启动。步骤2:在ubuntu中连接相机。使用ubuntu自带的茄子工具,但是显示没有发现设备!步骤3:使用工具打开相机。
2023-12-30 20:57:35
1950
原创 HI3559AV100和FPGA 7K690T的PCIE接口调试记录-续
上文上一篇文中PCIE实测速度和理论计算有较大偏差,经过尝试后有所提升。
2023-12-14 10:22:04
1289
原创 HI3559AV100和FPGA 7K690T的PCIE接口调试记录
HI3559AV100和690t之间使用pcie2.0 x2接口连接,3559作为RC端,690T作为EP端,驱动使用XDMA。系统主要功能是FPGA采集srio接口过来的图像数据,再通过pcie把数据传递给3559,3559再实现图像数据的存储、AI处理、编码输出等。由结果得知,实测的RC读速度为500MB/s,而理论的pcie2.0 X2速度为1000MB/s。由结果得知,实测的RC写速度为670MB/s,而理论的pcie2.0 X2速度为1000MB/s。修改后,多次测试rc可以直接检测到ep。
2023-12-13 10:05:59
1552
2
原创 HI3559AV100下对emmc总线速率的调整
先前使用3559开发板时,一直没觉得emmc会是个问题,但是最近一个国产化的项目中3559配合的是一款国产128G的emmc,因为板上面积限制,走线有点限制,导致uboot启动emmc有时候会失败。
2023-11-25 11:01:40
1911
2
原创 M300使用心得
3)目前多个项目使用linux系统,无异常。除了视频编解码和AI能力没有使用,其他的外设功能基本都是有使用,QT做显示等完全可以胜任。2)提供的操作系统为linux4.4,也可以适配国产的翼辉SylixOS,但是不提供技术支持。1)CPU架构和主要IP为自主研发,晶圆生产在台积电。1)功耗确实很低,外设丰富,且内置ddr,设计简便。2)提供了SDK,使用简单,技术支持也很到位。
2023-06-14 11:03:26
235
原创 UBUNTU右击文件夹无终端的解决方法
我们知道在ubuntu下 CTRL+ALT+T可以打开终端,但是这样打开的终端默认路径是“~”,即当前用户的家目录,使用pwd可以查看。这样使用非常不方便,具体操作方法如下:第一步:安装软件sudo apt-get install nautilus-open-terminal第二步:重新加载文件管理器nautilus -q第三部:验证完成以上两步后,文件夹中右键就会显示有open in terminal选项。如果还不行,可以重启一下虚拟机。...
2022-05-03 17:44:51
5625
原创 UDP传输大量数据的性能优化
在做一个UDP传输视频数据的项目时,数据码率波动在10Mbps~100Mbps,平均在60Mbps,遇到接收端存在丢包问题,通过下面的方法可以解决。步骤1、修改socket的缓冲区大小默认的socket缓冲区大小为164K,通过setsockopt使用SO_RCVBUF来设置接收缓冲区,通过setsockopt使用SO_SNDBUF来设置发送缓冲区,本项目我设置为1M(可以再调整)。步骤2、修改linux系统udp缓冲区大小通过rmem_max来设置系统中udp缓存的上限,sysctl -w
2022-03-26 15:26:05
9729
原创 ubuntu18.04安装vivado的usb cable driver
详细安装可以参考官网的UG973。懒人福利,具体章节示例如下:使用过程中可能会遇到,jtag连接板卡失败问题:解决办法如下:修改虚拟机USB配置,选择USB3.1,默认的是USB2.0。(此过程可以不关闭虚拟机,选择USB3.1后会自动关机并恢复开机)...
2022-03-01 17:25:26
807
原创 petalinux2020.1编译系统后不能看到mtd分区
使用petalinux2020.1建立QSPI启动的最小系统时,在petalinux-config中Subsystem AUTO Hardware Settings的flash setting中设置分区参数,参考如下:然后完成u-boot、kernel、rootfs等配置后,就可以编译petalinux-build。烧录完成后系统打印显示错误如下:[ 7.193832] zynqmp-qspi ff0f0000.spi: rx bus width not found[ 7...
2022-02-24 14:07:54
2668
原创 MPSOC网络加载调试
板卡状态:QSPI FLASH :256MBCPU :4EV(带VCU/GPU)开发工具:petalinux2020.1;调试步骤:步骤0: petalinux正常的生成所有文件步骤1: 打包uboot,fsbl,bit生成boot.BIN步骤2: jtag烧录boot.BIN步骤3: ...
2022-02-22 13:50:45
464
原创 EV PS DP接口调试记录
概述: Ev系列的PS有高速接口DP接口,最大可以输出4K P30,PL也有DP接口,最大输出可以达到4K P60,但是需要买lisence。我们项目最大1920*1200 P60,所以选择的是PS的DP接口。该接口最开始在黑金开发板上验证正常,然后才自己做的板。调试中发现自己的板卡dp不能显示,但是在黑金开发板和zcu106开发板上可以显示。调试步骤:1、显示屏不亮 自己的显示器需要pwm控制亮度,而默认的为p...
2022-02-19 14:36:10
1600
原创 zynqMP平台在vitis2020.1下烧录QSPI flash各种失败和错误的治疗方法
在zynqMP硬件平台上,使用vitis2020.1烧录QSPI时报各种的错误和失败,之前在zynq7000上没有遇到烧录问题,着实让人烦恼,经过各种验证和追查之后总结出了一套包治各种QSPI烧录异常的方法。烧录需要的文件:1)fsbl.elf,该文件是从2019.2版本开始启用,之前是不需要这个文件的。2) BOOT.BIN,该文件是含有fsbl、uboot、bit、kernel、rootfs等。方法和步骤:1)启动MO...
2022-01-26 12:05:59
10325
1
原创 UBUNTU18.04增加SWAP分区
petalinux编译时经常遇到卡死现象,可能是电脑内存不足导致的,可以增加swap分区空间来 解决。查看命令free -M扩容swap分区具体方法如下:sudo touch /largeswapfilesudo fallocate -l 10G /largeswapfilels -lh /largeswapfilesudo chmod 600 /largeswapfilels -lh /largeswapfilesudo mkswap /largeswapfil
2022-01-17 11:45:55
938
原创 君正M300编译器安装
安装环境:Ubuntu18.04安装命令:apt-get install gcc-mips-linux-gnu测试:mips-linux-gnu-gcc -dumpmachine,返回“mips-linux-gnu”表示正常。
2021-12-27 15:30:39
997
原创 petalinux2020.1 petalinux-build 出现qemu问题
问题:petalinux-build全局编译的时候出现error,开头是qemu,且报错Fetcher failure for URL: 'gitsm://github.com/…解决方法:在工程文件夹内找到……/components/yocto/layers/meta-xilinx/meta-xilinx-bsp/recipes-devtools/qemu 这个文件夹,打开“qemu-xilinx.inc”,把 REPO ?= “gitsm: //github.com/Xilinx/qe.
2021-12-22 11:17:40
1435
1
原创 FPGA设计滤波器的资源评估
1、基本需求fpga设计1路1200阶的fir 滤波器。2、评估阶数 1200 个数 1 FPGA主时钟 200 单位M,提高可以减少资源 数据速率 50 单位M,降低可以减少资源 数据位宽 16 bit DSP的位宽 18*18 如果数据位宽超过则需要资源翻倍 IQ路数 2 一路I和一路Q 滤波器是否对称 2 1为不对称,2为对称 滤波器是否半...
2021-11-18 11:42:52
1553
原创 linux mac到mac直连原理和方法
基本原理:伪装phy 操作的的返回值,以及为phy的属性填充等。一、uboot修改1)driver/net/zynq_gem.c static int phy_detection(struct udevice *dev) 这个函数中的两处 phyread(priv, priv->phyaddr, PHY_DETECT_REG, &phyreg); ...
2021-11-12 15:44:24
4364
原创 json-c-0.15编译过程记录
问题1:提示安装cmake ubuntu下安装:apt install cmake 版本号:cmake (2.8.12.2) 问题2:cmake ../json-c-0.15报错CMake Error at tests/CMakeLists.txt:42 (target_sources) 怀疑可能与cmake版本号有关,尝试安装新的cmake版本,因为ubuntu系统自动安装的不会是最新的。 后证实,确实是要更换cmake的版本。问题3:安装cmake...
2021-10-14 09:27:18
665
原创 嵌入式linux网页功能实现
采用json数据格式,实现cgi与ajax的数据交换,POST方式。操作过程网上一大堆,这里主要说一下,我自己调试遇到的问题。问题1: 参考之前完成的一个模板,网页无法正常应答;但是模板工作正常。 解决:在cgi代码中不要随意使用printf添加各种的调试信息,这个会影响网页那边的解析。 如果非要打印的话,可以把需要打印的消息内容保存成一个日志文件。问题2: 下载大于1M的文件时,下载报错,显示文件过大。 解决:需要更改...
2021-10-13 15:52:31
435
原创 zynq更换ps的输入时钟频率
一般使用的zynq的ps时钟为33.333333MHz,如下图:但有时候也会遇到其他频率的,如下图:虽然不知道为啥要换来换去,但是人家设计没毛病啊,官方要求只要在30M~60M之间都行,如下图:既然如此,就得修改吧。在uboot中,主要修改设备树有两个地方,cpu的修改完全是因为ps-clk被修改,因为锁相环是倍频再分频,不一定能达到33M的主频。修改完成后编译uboot,烧录再启动,发现串口全是乱码,把fsbl的打印打开,发现是正常的,所以肯定是uboot...
2021-07-20 22:33:33
4173
3
原创 ZYNQ UBOOT中设备树pinctrl设置
在uboot的设备树中一般使用默认的配置即可,但是有些时候默认配置使用的管脚可能和我们实际的不一样,比如,一般的网口是enet0,而我有个项目使用的是enet1,参考enet0的配置时,发现默认的设备树中没有enet1的pin_ctrl,因此需要参考enet0的来仿写enet1。 仿写时主要的信息不太明确的一般是“groups”属性,例如enet0的 mux { function = "ethernet0"; ...
2021-07-20 11:10:05
1472
1
原创 uartlite 双工时发数错误
1、测试环境 跑linux;使用uartlite,波特率设置为230400;发送端按32字节,间隔20ms循环发送,pc接收; 接收端,pc发送按256字节,间隔20ms; 连续测试,pc接收1万包,32万字节。2、问题和现象 当双向工作时,pc接收到的数据有百分之2的误包率,错误方式很规则,都是第二字节和第一字节相同; 当pc不发送时,连续测试无丢包,无错字节。3、分析...
2021-06-29 22:16:00
608
原创 zynq-dr e0002000.usb: Unable to init USB phy, missing?
问题:zynq 7030板卡使用usb设备驱动时,报错如题。最终的定位:硬件问题。解决过程:usb驱动在之前的一个7020板卡上使用过时没问题的,除了fsbl要更改,再换掉PL代码就可以的。当时也不怀疑自己,只是由于硬件工程师很忙,所以自己先定位。查看各大佬和官方的论坛,搜集到一下方法:1)驱动中增加USB控制器的复位查看自己的最小系统,确实是reset管脚没有勾选,并硬件连接到PL一个比较随意的管脚上;在内核中修改代码增加管脚控制,结果是无效,依然报上述错误。附:增加复位的代码位置为/
2021-05-21 11:31:12
892
原创 RTP包识别
RTP特征 选用理由 备注 UDP协议 必须UDP协议 UDP端口号 rtp是偶数端口,rtcp端口比rtp端口号大1 不排除,乱使用端口号 UDP载荷长度 不小于12 RTP头 版本号(V) 始终为2 扩展位(X) 扩展位要是使能了长度会变大 配合udp包长 CC 跟在固定头后面CSRC识别符的数目,默认设为0 配合udp包长 PT 7bit,可取值有限,且同一RTP时,
2021-04-25 17:15:18
631
原创 国产化率计算
国产化率指的是国内生产的占比。一般统计的有国产化数量占比和国产化价值占比两种;两者相辅相成。例如:国产数量为3,国外数量为1,总数量为4,则国产化数量占比为75%。国产价值为11+11+12=4,国外产价值为1100=100,总价值为104,则国产化价值占比为3.8%。由上可知,国产化数量占比和国产化价值占比关联性不大,所以国产化率需要两者都考虑,因此我们常见的国产化叫法应该是“双85”等。还有更严格的为100%国产化,即没有一个是国外产的,当然也就不存在数量占比和价值占比的问题了。...
2021-04-25 17:08:55
6071
原创 嵌入式linux的ext4文件系统更新
一般的嵌入式linux桌面系统都比较大,所以会选择tf卡作为存储介质,它的容量大,在开发阶段使用也方便。但是在客户那边使用时,我们有时需要更新系统,这里有两种方案:1)文件系统双分区第一分区为fat系统,存放uboot、设备树和kernel;第二分区为ext4系统,存放文件系统;第三分区和第二分区相同。使用方法:在需要更新时,把需要更新的文件系统放入第三分区,并修改启动命令行从第三分区启动,重启后就可以从第三分区启动;下次更新时,和上边方法相同,再从第二分区启动。一般的启动命令会放在设备树
2021-04-02 13:11:14
1411
3
原创 在u-boot 中自定义命令
1.在 common 目录下,新建一个文件 cmd_hello.c,输入如下代码:#include<command.h>#include<common.h>static int do_hello(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]){printf (“hello world!\ \ n”);return 0;}U_BOOT_CMD(hello, 1, 0, do_hello," sho
2021-03-24 17:46:40
326
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人