卿小小

  • 2025-03-26
  • 回复了主题帖: >>征集 | 晒电机控制痛点与难题,一起寻求最优解!

    从抗干扰的角度分享一个我的应用案例: 【应用背景】 在高压测试领域中,冲击电压设备常用于一次设备的耐压检测。通常情况下,冲击电压的电压极性调整((正负电压)是通过调整整流桥的极性完成的。 初始设计方案考虑了步进电机和直流电机两种方案。 【两种电机方案简单比较】 在我的构想中,步进电机需要增加驱动板,能够实现精确的步数控制位置,可以实现较高精度的定位与控制; 而直流电机除了需要额外选用减速齿轮,还需要通过限位开关用来辅助完成PID控制,确保整流桥旋转调整到位; 除此之外,两种方案都需要使用直流电源。 【实际应用比较】 在实际使用中,步进电机完败。 为什么呢?因为冲击电压实验瞬间会释放强烈电磁干扰,并且还会产生地电位抬升,用不了几次驱动板就直接烧坏。我尝试增加TVS、压敏电阻、放电管之类的保护元件,无用。 而直流电机的方案,靠着它“简单”的控制方式,平稳安全的运行。 【方案选用】 从可靠性的角度,最后选用直流电机方案。 当然,并不是说直流电机方案没有缺点:比如需要增加额外的机械安装空位以满足PID控制的容错率;运行一年或两年需要手动微调限位开关(累计的机械运行误差)等,从应用的角度来讲,只要它抗干扰能力足够强,这些都是小缺点。

  • 2025-03-10
  • 回复了主题帖: 【microchip PolarFire SoC FPGA 套件】④求助:如何通过FPGA驱动SoC GPIO?

    您可以繼續開展後續測試,關於SoC接口(GPIO/UART等)可以單獨發帖。

  • 回复了主题帖: 【microchip PolarFire SoC FPGA 套件】④求助:如何通过FPGA驱动SoC GPIO?

    帖子内容质量很棒,对于您的问题做如下解答: 1.对于流水灯的功能来讲,驱动逻辑侧的7个LED已经够了;后续如果有呼吸灯或者其他的LED控制,同样限定在这7个LED里; 2.对于MSS侧的LED(第8个LED),如果想要驱动它,已经属于SoC的GPIO功能开发,需要进行SoC的管脚分配和软件驱动; 3.你的工程完成了SoC的管脚分配,尚未进行软件驱动GPIO,对于这个GPIO来讲,它处于常高或者常低的状态不变; 4.SoC创建新的项目应用(选用官网模板即可),编译后生成可执行文件并下载到FPGA中,可以实现第8个LED的点亮; 5.另外,关于复位的处理,可以考虑添加系统复位模块,不一定要连接到物理管脚。   其实,该FPGA可以对标Xilinx-Zynq系列进行理解:前面7个LED[06:00]是PL侧的IO,第8个LED[07]是PS侧的GPIO。

  • 2025-02-17
  • 发表了主题帖: 【Raspberry Pi 5体验】+12.Home Assistant安装与简单测试(zmj)

    【Raspberry Pi 5体验】+12.Home Assistant安装与简单测试(zmj) Home Assistant是一个开源的智能家居平台,它能连接不同厂商的设备进行家电控制。 在Raspberry Pi 5上使用Home Assistant系统,可以通过以下步骤完成安装和基础测试。 1. 硬件准备 • MicroSD卡:至少32GB,建议使用Application Class 2(A2)级别的卡,性能更优。 • SD卡读卡器:用于将操作系统写入MicroSD卡。 • 以太网线:用于安装过程中的网络连接,虽然安装后可以切换到Wi-Fi,但以太网更稳定。 2. 安装Home Assistant操作系统 下载并安装Raspberry Pi Imager: • 访问树莓派官方网站下载Raspberry Pi Imager。 • 安装完成后打开该工具。 【图】烧录软件 选择操作系统: • 在Raspberry Pi Imager中,点击“Choose OS”。 • 选择“Other specific-purpose OS” > “Home assistants and home automation” > “Home Assistant”。 • 选择与树莓派5匹配的Home Assistant OS版本。 【图】选择系统 选择存储设备: • 将MicroSD卡插入计算机的SD卡读卡器中。 • 点击“Choose Storage”,选择MicroSD卡作为目标存储设备。 写入操作系统: • 点击“Next”,开始将Home Assistant OS写入MicroSD卡。 • 写入过程需要几分钟(根据实际网络状况会略有不同),完成后弹出MicroSD卡。 3. 启动树莓派的Home Assistant系统 启动系统 •插入MicroSD卡: 将写入好的MicroSD卡插入树莓派5的MicroSD卡槽中。 •连接网络: 使用以太网线将树莓派连接到路由器。 •供电并启动:• 连接电源适配器,启动树莓派。 •等待系统启动:• 树莓派启动后,Home Assistant会自动开始运行,首次启动可能需要5-10分钟。 【图】Home Assistant系统状态  

  • 2025-02-16
  • 发表了主题帖: 【Raspberry Pi 5体验】+11.流媒体服务器体验(zmj)

    【Raspberry Pi 5体验】+11.流媒体服务器体验(zmj) 人们生活环境充满各种流式传输网络摄像头的场景。对于实时流媒体服务器等连续应用,树莓派只需要很少的电力。可以与 Raspicam 相机模块、USB 摄像头或其他网络视频信号进行通信。该系统是一个 RTMP、HLS 和 SRT 服务器。此次体验如何将树莓派设置为流媒体服务器以使用 HLS 流媒体。你需要一个视频源才能把它作为流媒体服务器使用。 本文实现将树莓派用作流媒体服务器,将视频流(摄像头的实时视频/网络视频等)重新串流到社交网络。 (没有公网IP,仅实现了局域网视频流的流媒体服务推送) 1. 安装 该应用程序是 datarhei Restreamer,是 datarhei Core 的图形用户界面。datarhei Core 在底层运行著名的媒体框架 FFmpeg。 开始使用 datarhei Restreamer 的最简单方法是安装官方的 Docker 容器。通过 Docker Hub 的程序下载和安装是通过 docker pull 命令自动进行的。安装后,Restreamer 立即启动。 如果没有树莓派,可以使用 datarhei Restreamer GitHub 页面上的其他 Docker 容器之一(例如,支持 AMD64 或 GPU Cuda)。 datarhei Restreamer 和 datarhei Core 都是 Apache 许可证 2.0 下的开源软件。 安装命令: docker run -d --restart=always --name restreamer \ -v /opt/restreamer/config:/core/config -v /opt/restreamer/data:/core/data \ --privileged \ -p 8080:8080 -p 8181:8181 \ -p 1935:1935 -p 1936:1936 \ -p 6000:6000/udp \ datarhei/restreamer:rpi-latest 无论使用哪条命令,只需要 --privileged 选项来访问本地设备,如 USB 摄像头。 2. 设置 设置包括登录注册和详细设置。 2.1 登录注册 安装后,将 Raspberry Pi 连接到本地网络。然后在浏览器中进入" http://ip:8080/ui "打开基于 Web 的 GUI,ip是树莓派的IP地址。 2.2 详细设置 详细设置如下,基本按部就班的设置就可以了。 1.用户注册 Docker 命令将带有登录名和密码的配置数据永久保存在 `/opt/restreamer/config` 文件夹中。 2.视频设置 该向导将帮助用户从头开始创建一个视频源。这可以是一个 USB 视频源、树莓派摄像头,或者是一个网络源,如 IP 摄像头或来自网络的 m3u8 文件。HLS、RTMP 和实时 SRT 协议都可以使用。该向导可以帮助正确配置视频分辨率和声音。在最后一步,可以分配不同 知识共享Creative Commons 许可证。 3.直播后台(仪表板设置) 成功创建视频信号后,自动进入仪表板,它是所有其他设置的中心起点。要看到程序的全部功能,可以在系统偏好中切换到专家模式。 仪表板包含以下内容: 视频信号设置。 RTMP、SRT、HLS 服务器和快照的活动内容 URL。 用于重新流式传输的所有活动发布服务。 启动向导来创建额外的视频源。 系统菜单。 实时视频信号统计。 实时系统监控。 4.平台推送 理论上讲,填写自己的公网IP,选择合适的推送平台,即可完成平台推送。 实际由于没有公网IP,仅实现了局域网视频流的流媒体服务推送。 【图】用户注册 【图】设置虚拟视频流 【图】测试视频直播推送效果: 【图】后台进程详情: 【图】其他测试虚拟视频直播 【图】结束直播 【图】平台推送 //------END

  • 发表了主题帖: 【Raspberry Pi 5体验】+10.yolo-v3测试(zmj)

    【Raspberry Pi 5体验】+10.yolo-v3测试(zmj) YOLO是You Look once的简称,是目标检测算法中比较常用的一种算法。YOLO-V3是目标检测算法中的YOLO算法的第三个版本。在这个版本中其实并没有太多的创新点,更多的是借鉴了前两个版本,但是却在保持速度的同时,在精度上做了优化。 YOLO-V3所使用的主干特征提取网络为Darknet53,它作为一个单独的神经网络作用在图像上,将图像划分成多个区域并且预测边界框和每个区域的概率。 1. 安装YOLO 安装YOLO的过程十分简单,下载darknet后编译即可。 //------darknet https://pjreddie.com/darknet/ //------安装指令 //---下载并进入darknet目录 git clone https://github.com/pjreddie/darknet cd darknet //---编译安装 make //------下载权重模型并测试 //---yolov3-tiny wget https://pjreddie.com/media/files/yolov3-tiny.weights ./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg //---yolov3 wget https://pjreddie.com/media/files/yolov3.weights ./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg 2. 模型下载及测试 测试yolov3-tiny和yolov3这两种模型。 2.1 下载测试 //------下载权重模型并测试 //---yolov3-tiny wget https://pjreddie.com/media/files/yolov3-tiny.weights ./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg //---yolov3 wget https://pjreddie.com/media/files/yolov3.weights ./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg //------Log信息 zhaomeijing@raspberrypi5:~/workspace/04_yolo/darknet$ ./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg layer filters size input output 0 conv 16 3 x 3 / 1 416 x 416 x 3 -> 416 x 416 x 16 0.150 BFLOPs 1 max 2 x 2 / 2 416 x 416 x 16 -> 208 x 208 x 16 2 conv 32 3 x 3 / 1 208 x 208 x 16 -> 208 x 208 x 32 0.399 BFLOPs 3 max 2 x 2 / 2 208 x 208 x 32 -> 104 x 104 x 32 4 conv 64 3 x 3 / 1 104 x 104 x 32 -> 104 x 104 x 64 0.399 BFLOPs 5 max 2 x 2 / 2 104 x 104 x 64 -> 52 x 52 x 64 6 conv 128 3 x 3 / 1 52 x 52 x 64 -> 52 x 52 x 128 0.399 BFLOPs 7 max 2 x 2 / 2 52 x 52 x 128 -> 26 x 26 x 128 8 conv 256 3 x 3 / 1 26 x 26 x 128 -> 26 x 26 x 256 0.399 BFLOPs 9 max 2 x 2 / 2 26 x 26 x 256 -> 13 x 13 x 256 10 conv 512 3 x 3 / 1 13 x 13 x 256 -> 13 x 13 x 512 0.399 BFLOPs 11 max 2 x 2 / 1 13 x 13 x 512 -> 13 x 13 x 512 12 conv 1024 3 x 3 / 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BFLOPs 13 conv 256 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 256 0.089 BFLOPs 14 conv 512 3 x 3 / 1 13 x 13 x 256 -> 13 x 13 x 512 0.399 BFLOPs 15 conv 255 1 x 1 / 1 13 x 13 x 512 -> 13 x 13 x 255 0.044 BFLOPs 16 yolo 17 route 13 18 conv 128 1 x 1 / 1 13 x 13 x 256 -> 13 x 13 x 128 0.011 BFLOPs 19 upsample 2x 13 x 13 x 128 -> 26 x 26 x 128 20 route 19 8 21 conv 256 3 x 3 / 1 26 x 26 x 384 -> 26 x 26 x 256 1.196 BFLOPs 22 conv 255 1 x 1 / 1 26 x 26 x 256 -> 26 x 26 x 255 0.088 BFLOPs 23 yolo Loading weights from yolov3-tiny.weights...Done! data/dog.jpg: Predicted in 0.873869 seconds. dog: 57% car: 52% truck: 56% car: 62% bicycle: 59% zhaomeijing@raspberrypi5:~/workspace/04_yolo/darknet$ ./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg layer filters size input output 0 conv 32 3 x 3 / 1 608 x 608 x 3 -> 608 x 608 x 32 0.639 BFLOPs 1 conv 64 3 x 3 / 2 608 x 608 x 32 -> 304 x 304 x 64 3.407 BFLOPs 2 conv 32 1 x 1 / 1 304 x 304 x 64 -> 304 x 304 x 32 0.379 BFLOPs 3 conv 64 3 x 3 / 1 304 x 304 x 32 -> 304 x 304 x 64 3.407 BFLOPs 4 res 1 304 x 304 x 64 -> 304 x 304 x 64 5 conv 128 3 x 3 / 2 304 x 304 x 64 -> 152 x 152 x 128 3.407 BFLOPs 6 conv 64 1 x 1 / 1 152 x 152 x 128 -> 152 x 152 x 64 0.379 BFLOPs 7 conv 128 3 x 3 / 1 152 x 152 x 64 -> 152 x 152 x 128 3.407 BFLOPs 8 res 5 152 x 152 x 128 -> 152 x 152 x 128 9 conv 64 1 x 1 / 1 152 x 152 x 128 -> 152 x 152 x 64 0.379 BFLOPs 10 conv 128 3 x 3 / 1 152 x 152 x 64 -> 152 x 152 x 128 3.407 BFLOPs 11 res 8 152 x 152 x 128 -> 152 x 152 x 128 12 conv 256 3 x 3 / 2 152 x 152 x 128 -> 76 x 76 x 256 3.407 BFLOPs 13 conv 128 1 x 1 / 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BFLOPs 14 conv 256 3 x 3 / 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BFLOPs 15 res 12 76 x 76 x 256 -> 76 x 76 x 256 16 conv 128 1 x 1 / 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BFLOPs 17 conv 256 3 x 3 / 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BFLOPs 18 res 15 76 x 76 x 256 -> 76 x 76 x 256 19 conv 128 1 x 1 / 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BFLOPs 20 conv 256 3 x 3 / 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BFLOPs 21 res 18 76 x 76 x 256 -> 76 x 76 x 256 22 conv 128 1 x 1 / 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BFLOPs 23 conv 256 3 x 3 / 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BFLOPs 24 res 21 76 x 76 x 256 -> 76 x 76 x 256 25 conv 128 1 x 1 / 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BFLOPs 26 conv 256 3 x 3 / 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BFLOPs 27 res 24 76 x 76 x 256 -> 76 x 76 x 256 28 conv 128 1 x 1 / 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BFLOPs 29 conv 256 3 x 3 / 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BFLOPs 30 res 27 76 x 76 x 256 -> 76 x 76 x 256 31 conv 128 1 x 1 / 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BFLOPs 32 conv 256 3 x 3 / 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BFLOPs 33 res 30 76 x 76 x 256 -> 76 x 76 x 256 34 conv 128 1 x 1 / 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BFLOPs 35 conv 256 3 x 3 / 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BFLOPs 36 res 33 76 x 76 x 256 -> 76 x 76 x 256 37 conv 512 3 x 3 / 2 76 x 76 x 256 -> 38 x 38 x 512 3.407 BFLOPs 38 conv 256 1 x 1 / 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BFLOPs 39 conv 512 3 x 3 / 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BFLOPs 40 res 37 38 x 38 x 512 -> 38 x 38 x 512 41 conv 256 1 x 1 / 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BFLOPs 42 conv 512 3 x 3 / 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BFLOPs 43 res 40 38 x 38 x 512 -> 38 x 38 x 512 44 conv 256 1 x 1 / 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BFLOPs 45 conv 512 3 x 3 / 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BFLOPs 46 res 43 38 x 38 x 512 -> 38 x 38 x 512 47 conv 256 1 x 1 / 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BFLOPs 48 conv 512 3 x 3 / 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BFLOPs 49 res 46 38 x 38 x 512 -> 38 x 38 x 512 50 conv 256 1 x 1 / 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BFLOPs 51 conv 512 3 x 3 / 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BFLOPs 52 res 49 38 x 38 x 512 -> 38 x 38 x 512 53 conv 256 1 x 1 / 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BFLOPs 54 conv 512 3 x 3 / 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BFLOPs 55 res 52 38 x 38 x 512 -> 38 x 38 x 512 56 conv 256 1 x 1 / 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BFLOPs 57 conv 512 3 x 3 / 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BFLOPs 58 res 55 38 x 38 x 512 -> 38 x 38 x 512 59 conv 256 1 x 1 / 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BFLOPs 60 conv 512 3 x 3 / 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BFLOPs 61 res 58 38 x 38 x 512 -> 38 x 38 x 512 62 conv 1024 3 x 3 / 2 38 x 38 x 512 -> 19 x 19 x1024 3.407 BFLOPs 63 conv 512 1 x 1 / 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BFLOPs 64 conv 1024 3 x 3 / 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BFLOPs 65 res 62 19 x 19 x1024 -> 19 x 19 x1024 66 conv 512 1 x 1 / 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BFLOPs 67 conv 1024 3 x 3 / 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BFLOPs 68 res 65 19 x 19 x1024 -> 19 x 19 x1024 69 conv 512 1 x 1 / 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BFLOPs 70 conv 1024 3 x 3 / 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BFLOPs 71 res 68 19 x 19 x1024 -> 19 x 19 x1024 72 conv 512 1 x 1 / 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BFLOPs 73 conv 1024 3 x 3 / 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BFLOPs 74 res 71 19 x 19 x1024 -> 19 x 19 x1024 75 conv 512 1 x 1 / 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BFLOPs 76 conv 1024 3 x 3 / 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BFLOPs 77 conv 512 1 x 1 / 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BFLOPs 78 conv 1024 3 x 3 / 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BFLOPs 79 conv 512 1 x 1 / 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BFLOPs 80 conv 1024 3 x 3 / 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BFLOPs 81 conv 255 1 x 1 / 1 19 x 19 x1024 -> 19 x 19 x 255 0.189 BFLOPs 82 yolo 83 route 79 84 conv 256 1 x 1 / 1 19 x 19 x 512 -> 19 x 19 x 256 0.095 BFLOPs 85 upsample 2x 19 x 19 x 256 -> 38 x 38 x 256 86 route 85 61 87 conv 256 1 x 1 / 1 38 x 38 x 768 -> 38 x 38 x 256 0.568 BFLOPs 88 conv 512 3 x 3 / 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BFLOPs 89 conv 256 1 x 1 / 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BFLOPs 90 conv 512 3 x 3 / 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BFLOPs 91 conv 256 1 x 1 / 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BFLOPs 92 conv 512 3 x 3 / 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BFLOPs 93 conv 255 1 x 1 / 1 38 x 38 x 512 -> 38 x 38 x 255 0.377 BFLOPs 94 yolo 95 route 91 96 conv 128 1 x 1 / 1 38 x 38 x 256 -> 38 x 38 x 128 0.095 BFLOPs 97 upsample 2x 38 x 38 x 128 -> 76 x 76 x 128 98 route 97 36 99 conv 128 1 x 1 / 1 76 x 76 x 384 -> 76 x 76 x 128 0.568 BFLOPs 100 conv 256 3 x 3 / 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BFLOPs 101 conv 128 1 x 1 / 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BFLOPs 102 conv 256 3 x 3 / 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BFLOPs 103 conv 128 1 x 1 / 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BFLOPs 104 conv 256 3 x 3 / 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BFLOPs 105 conv 255 1 x 1 / 1 76 x 76 x 256 -> 76 x 76 x 255 0.754 BFLOPs 106 yolo Loading weights from yolov3.weights...Done! data/dog.jpg: Predicted in 21.122667 seconds. dog: 100% truck: 92% bicycle: 99% zhaomeijing@raspberrypi5:~/workspace/04_yolo/darknet$ 2.2 测试结果展示及分析 yolov3-tiny测试结果: yolov3测试结果: 序号 名称 精度 时间(单位:秒) 1 yolov3-tiny 低 快:0.873869 2. yolov3 高 慢:21.122667 通过测试结果可以得知yolov3-tiny的速度最快但是精度不高,yolov3的精度更高但是耗时。   //------end

  • 发表了主题帖: 【Raspberry Pi 5体验】+09.视频推流功能测试(zmj)

    【Raspberry Pi 5体验】+09.视频推流功能测试(zmj) Raspberry Pi 5 借助mjpg-streamer实现视频推流。 1. mjpg-streamer下载及编译 下载编译流程如下: //------mjpg-streamer //---下载 git clone https://github.com/jacksonliam/mjpg-streamer.git cd mjpg-streamer cd mjpg-streamer-experimental gcc -v //---依赖项/依赖库的安装 sudo apt install cmake sudo apt-get install -y cmake libjpeg62-turbo-dev //---编译安装mjpg-streamer(需要sudo权限才能安装) sudo apt install cmake make all sudo make install //---测试指令 sudo /usr/local/bin/mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 1280x720 -y" -o "output_http.so" 部分测试配置(自动)如下所示: 设备:/dev/video0 分辨率:1280*720(720P) 帧率:1帧/秒(此种情况下节省网络带宽,降低CPU占用率) 格式:YUYV 端口:8080 //---访问方式(PC端和手机端均OK,IP地址是:192.168.5.177): http://192.168.5.177:8080/?action=stream 2. 测试结果 Raspberry Pi 5 视频推流最终呈现效果是网页端实时刷新(1帧/秒)摄像头结果,同一局域网内在PC端和手机端均能正常查看推流效果。 //---测试指令 sudo /usr/local/bin/mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 1280x720 -y" -o "output_http.so" 部分测试配置(自动)如下所示: 设备:/dev/video0 分辨率:1280*720(720P) 帧率:1帧/秒(此种情况下节省网络带宽,降低CPU占用率) 格式:YUYV 端口:8080 //---访问方式(PC端和手机端均OK): A.家中IP地址是:192.168.1.103 http://192.168.1.103:8080/?action=stream B.单位IP地址是:192.168.7.25 http://192.168.1.103:8080/?action=stream //------测试Log zhaomeijing@raspberrypi5:~/workspace/09_uvc/mjpg-streamer/mjpg-streamer-experimental$ \ > ./mjpg_streamer -h ----------------------------------------------------------------------- Usage: ./mjpg_streamer -i | --input "<input-plugin.so> [parameters]" -o | --output "<output-plugin.so> [parameters]" [-h | --help ]........: display this help [-v | --version ].....: display version information [-b | --background]...: fork to the background, daemon mode ----------------------------------------------------------------------- Example #1: To open an UVC webcam "/dev/video1" and stream it via HTTP: ./mjpg_streamer -i "input_uvc.so -d /dev/video1" -o "output_http.so" ----------------------------------------------------------------------- Example #2: To open an UVC webcam and stream via HTTP port 8090: ./mjpg_streamer -i "input_uvc.so" -o "output_http.so -p 8090" ----------------------------------------------------------------------- Example #3: To get help for a certain input plugin: ./mjpg_streamer -i "input_uvc.so --help" ----------------------------------------------------------------------- In case the modules (=plugins) can not be found: * Set the default search path for the modules with: export LD_LIBRARY_PATH=/path/to/plugins, * or put the plugins into the "/lib/" or "/usr/lib" folder, * or instead of just providing the plugin file name, use a complete path and filename: ./mjpg_streamer -i "/path/to/modules/input_uvc.so" ----------------------------------------------------------------------- zhaomeijing@raspberrypi5:~/workspace/09_uvc/mjpg-streamer/mjpg-streamer-experimental$ \ > sudo /usr/local/bin/mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 1280x720 -y" -o "output_http.so" MJPG Streamer Version: git rev: 310b29f4a94c46652b20c4b7b6e5cf24e532af39 i: Using V4L2 device.: /dev/video0 i: Desired Resolution: 1280 x 720 i: Frames Per Second.: -1 i: Format............: YUYV i: JPEG Quality......: 80 i: TV-Norm...........: DEFAULT UVCIOC_CTRL_ADD - Error at Pan (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Tilt (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Pan Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Pan/tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Focus (absolute): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Pan (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Tilt (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Pan Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Pan/tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Focus (absolute): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at LED1 Mode: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at LED1 Frequency: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Disable video processing: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Raw bits per pixel: Inappropriate ioctl for device (25) o: www-folder-path......: disabled o: HTTP TCP port........: 8080 o: HTTP Listen Address..: (null) o: username:password....: disabled o: commands.............: enabled ^[^Csetting signal to stop //手动Ctrl+C退出// i: cleaning up resources allocated by input thread o: cleaning up resources allocated by server thread #00 force cancellation of threads and cleanup resources done zhaomeijing@raspberrypi5:~/workspace/09_uvc/mjpg-streamer/mjpg-streamer-experimental$ 【图】测试结果:网页和手机均可以正常访问视频推流  

  • 2025-02-11
  • 回复了主题帖: 免费申请: PolarFire SoC FPGA Discovery 套件

    Microchip 的FPGA平台,感觉非常棒。

  • 发表了主题帖: 【Raspberry Pi 5体验】+08.I2C测试-LM75A温度传感器(zmj)

    【Raspberry Pi 5体验】+08.I2C测试-LM75A温度传感器(zmj) 树莓派的GPIO接口功能十分丰富,支持I2C/UART/SPI等接口。此处测试I2C接口,测试目标为温度芯片LM75A。 //------树莓派手册 https://www.raspberrypi.com/documentation/computers/raspberry-pi.html //------LM75A连接I2C1 3V3 power ------ VCC GPIO 2(SDA) ------ SDA数据 GPIO 3(SCL) ------ SCL时钟 Ground ------ GND 【图】GPIO(40-Pin)状态 1. I2C简介 1.1 I2C总线简介 I2C总线(Inter IC bus)是由Philips公司开发的一种通用数据总线。 两根通信线:SCL(Serial Clock串行时钟线)、SDA(Seriak Data串行数据线)。 工作模式为同步、半双工,带数据应答。 同步(因为它有单独的时钟线)、半双工(SDA只有一根线,并且还要来回通信)通用的I2C总线,可以使各种设备的通信标准统一,对于厂家来说,使用成熟的方案可以缩短芯片设计周期、提高稳定性,对于应用者来说,使用通用的通信协议可以避免学习各种各样的自定义协议,降低了学习和应用的难度。 【图】树莓派5-I2C总线简介 1.2 I2C工具 i2c-tools工具用来测试I2C总线十分便捷。 //------安装I2C工具 sudo apt-get install -y python-smbus sudo apt-get install -y i2c-tools 1.2 I2C总线检测 通过“i2cdetect -l”可以扫描I2C总线,然后依次读取每个I2C总线设备列表,完成I2C总线检测。 【检测脚本:check_i2c.sh】 zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$ cat check_i2c.sh #!/bin/bash echo "//------************************************************" # ------ echo "//------There are 4 i2c devices" echo "//---cmd: ls /dev/i2c/*" echo "//---result:" ls /dev/ | grep "i2c" # i2c-1 # i2c-11 # i2c-12 ls /dev/i2c* # ------ echo "//------You'll detect 2 i2c adapter" echo "//---cmd: i2cdetect -l" echo "//---result:" i2cdetect -l # i2c-1 i2c Renesas RIIC adapter I2C adapter # i2c-11 i2c Renesas RIIC adapter I2C adapter # i2c-12 i2c Renesas RIIC adapter I2C adapter # ------ echo "//------Now Test spidev2.0...." echo "//---cmd: i2cdetect -r -y 1/11/12" echo "//---result:" echo "//--- i2c-1" i2cdetect -r -y 1 echo "//--- i2c-11" i2cdetect -r -y 11 echo "//--- i2c-12" i2cdetect -r -y 12 echo "//------************************************************" zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$ source ./check_i2c.sh //------************************************************ //------There are 4 i2c devices //---cmd: ls /dev/i2c/* //---result: i2c-1 i2c-11 i2c-12 /dev/i2c-1 /dev/i2c-11 /dev/i2c-12 //------You'll detect 2 i2c adapter //---cmd: i2cdetect -l //---result: i2c-1 i2c Synopsys DesignWare I2C adapter I2C adapter i2c-11 i2c 107d508200.i2c I2C adapter i2c-12 i2c 107d508280.i2c I2C adapter //------Now Test spidev2.0.... //---cmd: i2cdetect -r -y 1/11/12 //---result: //--- i2c-1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- //--- i2c-11 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- 3a -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- //--- i2c-12 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- //------************************************************ zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$ 2. I2C读取温度传感器LM75 2.1 LM75简介 LM75A/LM75B是一个高速I2C接口的温度传感器,可以在-55℃~+125℃的温度范围内将温度直接转换为数字信号,并可实现0.125℃的精度。MCU可以通过I2C总线直接读取其内部寄存器中是数据。LM75有三个可选的逻辑地址引脚,使得同一总线上课同时连接8个器件而不发生地址冲突。 //------LM75 a.接口:I2C b.器件地址:7bit从机地址,1001xxx c.默认地址:0x48 【图】LM75温度传感器 2.2 测试 I2C总线扫描设备节点使用i2cdetec指令,I2C总线设备读取使用的是i2cget指令,i2cdump可以批量获取I2C总线上的设备数值。 a.扫描I2C总线/列出所有I2C设备节点:i2cdetect -l i2c-1 i2c Synopsys DesignWare I2C adapter I2C adapter i2c-11 i2c 107d508200.i2c I2C adapter i2c-12 i2c 107d508280.i2c I2C adapter b.扫描I2C-1总线设备:i2cdetect -y 1 c.读取I2C-1总线的0x48设备:i2cget -f -y 0x1 0x48 |---0x1a(换算成十进制是26摄氏度) d.将数值读取与格式转换通过shell脚本完成lm75.sh,代码如下: #!/bin/sh # ------ getTEMP() { i2cget -f -y 0x1 0x48 0x00 } # ------ temp='getTEMP' ; Value=$($temp) ; Result=$(printf "%d" "$Value") ; # ------ echo "//------------------------------------------------" date echo "" echo "Temperature read from LM75 @ i2c-1_0x48 : $Result ." echo "" read -n1 -p "Press any key to exit!" echo "" # ------ e.使用i2cdump工具获取i2c-3总线的LM75(0x48)所有寄存器值,即多次温度值。 zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$ cat lm75.sh #!/bin/sh # ------ getTEMP() { i2cget -f -y 0x1 0x48 0x00 } # ------ temp='getTEMP' ; Value=$($temp) ; Result=$(printf "%d" "$Value") ; # ------ echo "//------------------------------------------------" date echo "" echo "Temperature read from LM75 @ i2c-1_0x48 : $Result ." echo "" read -n1 -p "Press any key to exit!" echo "" # ------ zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$ source ./lm75.sh //------------------------------------------------ Tue 30 Apr 01:23:34 CST 2024 Temperature read from LM75 @ i2c-1_0x48 : 22 . Press any key to exit! zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$ i2cdump -f -y 1 0x48 No size specified (using byte-data access) 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 00: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... 10: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... 20: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... 30: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... 40: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... 50: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... 60: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... 70: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... 80: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... 90: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... a0: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... b0: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... c0: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... d0: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... e0: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... f0: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff ?.KP....?.KP.... zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$ 【图】树莓派5读取LM75A温度 //------end

  • 发表了主题帖: 【Raspberry Pi 5体验】+07.USB摄像头功能测试(zmj)

    【Raspberry Pi 5体验】+07.USB摄像头功能测试(zmj) 本篇主要介绍在Raspberry Pi 5测试USB摄像头。 1. 摄像头接口和设备 摄像头设备位于” /dev/video*“(此处仅连接了USB摄像头)。 //------查看摄像头设备节点 //---测试指令 a.通过设备列表查看 ls -la /dev/video* b.通过v4l2-ctl工具查看 v4l2-ctl --list-devices c.通过media0检查有效摄像头节点 media-ctl -d /dev/media3 -p d.无效指令:libcamera-hello无法检测UVC,貌似支持CSI接口摄像头 libcamera-hello --list-cameras //---检查结果 USB 2.0 Camera: USB Camera (usb-xhci-hcd.0-2.1): /dev/video0 /dev/video1 /dev/media3 //------示例Log信息 zhaomeijing@raspberrypi5:~/workspace/09_uvc$ lsusb Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub zhaomeijing@raspberrypi5:~/workspace/09_uvc$ ls -la /dev/video* crw-rw----+ 1 root video 81, 18 Apr 26 18:15 /dev/video19 crw-rw----+ 1 root video 81, 0 Apr 26 18:15 /dev/video20 crw-rw----+ 1 root video 81, 1 Apr 26 18:15 /dev/video21 crw-rw----+ 1 root video 81, 2 Apr 26 18:15 /dev/video22 crw-rw----+ 1 root video 81, 3 Apr 26 18:15 /dev/video23 crw-rw----+ 1 root video 81, 4 Apr 26 18:15 /dev/video24 crw-rw----+ 1 root video 81, 5 Apr 26 18:15 /dev/video25 crw-rw----+ 1 root video 81, 6 Apr 26 18:15 /dev/video26 crw-rw----+ 1 root video 81, 7 Apr 26 18:15 /dev/video27 crw-rw----+ 1 root video 81, 8 Apr 26 18:15 /dev/video28 crw-rw----+ 1 root video 81, 9 Apr 26 18:15 /dev/video29 crw-rw----+ 1 root video 81, 10 Apr 26 18:15 /dev/video30 crw-rw----+ 1 root video 81, 11 Apr 26 18:15 /dev/video31 crw-rw----+ 1 root video 81, 12 Apr 26 18:15 /dev/video32 crw-rw----+ 1 root video 81, 13 Apr 26 18:15 /dev/video33 crw-rw----+ 1 root video 81, 14 Apr 26 18:15 /dev/video34 crw-rw----+ 1 root video 81, 15 Apr 26 18:15 /dev/video35 crw-rw----+ 1 root video 81, 16 Apr 26 18:15 /dev/video36 crw-rw----+ 1 root video 81, 17 Apr 26 18:15 /dev/video37 zhaomeijing@raspberrypi5:~/workspace/09_uvc$ lsusb Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 1b3f:2008 Generalplus Technology Inc. Usb Audio Device Bus 001 Device 003: ID 0c45:6362 Microdia USB 2.0 Camera Bus 001 Device 002: ID 1a40:0801 Terminus Technology Inc. USB 2.0 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub zhaomeijing@raspberrypi5:~/workspace/09_uvc$ dmesg | tail -23 [148218.886321] usb 1-2: new high-speed USB device number 2 using xhci-hcd [148219.034490] usb 1-2: New USB device found, idVendor=1a40, idProduct=0801, bcdDevice= 1.00 [148219.034496] usb 1-2: New USB device strings: Mfr=0, Product=1, SerialNumber=0 [148219.034499] usb 1-2: Product: USB 2.0 Hub [148219.082777] hub 1-2:1.0: USB hub found [148219.082819] hub 1-2:1.0: 4 ports detected [148219.370336] usb 1-2.1: new high-speed USB device number 3 using xhci-hcd [148219.548936] usb 1-2.1: New USB device found, idVendor=0c45, idProduct=6362, bcdDevice= 0.00 [148219.548944] usb 1-2.1: New USB device strings: Mfr=2, Product=1, SerialNumber=0 [148219.548947] usb 1-2.1: Product: USB 2.0 Camera [148219.548949] usb 1-2.1: Manufacturer: Sonix Technology Co., Ltd. [148219.694326] usb 1-2.3: new full-speed USB device number 4 using xhci-hcd [148219.815720] usb 1-2.3: config 1 has an invalid interface number: 3 but max is 2 [148219.815725] usb 1-2.3: config 1 has no interface number 1 [148219.816405] usb 1-2.3: New USB device found, idVendor=1b3f, idProduct=2008, bcdDevice= 1.00 [148219.816409] usb 1-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [148219.816412] usb 1-2.3: Product: Usb Audio Device [148219.816415] usb 1-2.3: Manufacturer: Generalplus [148219.851468] input: Generalplus Usb Audio Device as /devices/platform/axi/1000120000.pcie/1f00200000.usb/xhci-hcd.0/usb1/1-2/1-2.3/1-2.3:1.3/0003:1B3F:2008.0001/input/input5 [148219.910418] hid-generic 0003:1B3F:2008.0001: input,hidraw0: USB HID v2.01 Device [Generalplus Usb Audio Device] on usb-xhci-hcd.0-2.3/input3 [148220.026566] usb 1-2.1: Found UVC 1.00 device USB 2.0 Camera (0c45:6362) [148220.054790] usbcore: registered new interface driver uvcvideo [148220.079573] usbcore: registered new interface driver snd-usb-audio zhaomeijing@raspberrypi5:~/workspace/09_uvc$ ls -la /dev/video* crw-rw----+ 1 root video 81, 19 Apr 28 11:25 /dev/video0 crw-rw----+ 1 root video 81, 20 Apr 28 11:25 /dev/video1 crw-rw----+ 1 root video 81, 18 Apr 26 18:15 /dev/video19 crw-rw----+ 1 root video 81, 0 Apr 26 18:15 /dev/video20 crw-rw----+ 1 root video 81, 1 Apr 26 18:15 /dev/video21 crw-rw----+ 1 root video 81, 2 Apr 26 18:15 /dev/video22 crw-rw----+ 1 root video 81, 3 Apr 26 18:15 /dev/video23 crw-rw----+ 1 root video 81, 4 Apr 26 18:15 /dev/video24 crw-rw----+ 1 root video 81, 5 Apr 26 18:15 /dev/video25 crw-rw----+ 1 root video 81, 6 Apr 26 18:15 /dev/video26 crw-rw----+ 1 root video 81, 7 Apr 26 18:15 /dev/video27 crw-rw----+ 1 root video 81, 8 Apr 26 18:15 /dev/video28 crw-rw----+ 1 root video 81, 9 Apr 26 18:15 /dev/video29 crw-rw----+ 1 root video 81, 10 Apr 26 18:15 /dev/video30 crw-rw----+ 1 root video 81, 11 Apr 26 18:15 /dev/video31 crw-rw----+ 1 root video 81, 12 Apr 26 18:15 /dev/video32 crw-rw----+ 1 root video 81, 13 Apr 26 18:15 /dev/video33 crw-rw----+ 1 root video 81, 14 Apr 26 18:15 /dev/video34 crw-rw----+ 1 root video 81, 15 Apr 26 18:15 /dev/video35 crw-rw----+ 1 root video 81, 16 Apr 26 18:15 /dev/video36 crw-rw----+ 1 root video 81, 17 Apr 26 18:15 /dev/video37 zhaomeijing@raspberrypi5:~/workspace/09_uvc$ libcamera-hello --list-cameras No cameras available! zhaomeijing@raspberrypi5:~/workspace/09_uvc$ v4l2-ctl --list-devices pispbe (platform:1000880000.pisp_be): /dev/video20 /dev/video21 /dev/video22 /dev/video23 /dev/video24 /dev/video25 /dev/video26 /dev/video27 /dev/video28 /dev/video29 /dev/video30 /dev/video31 /dev/video32 /dev/video33 /dev/video34 /dev/video35 /dev/video36 /dev/video37 /dev/media0 /dev/media1 rpivid (platform:rpivid): /dev/video19 /dev/media2 USB 2.0 Camera: USB Camera (usb-xhci-hcd.0-2.1): /dev/video0 /dev/video1 /dev/media3 zhaomeijing@raspberrypi5:~/workspace/09_uvc$ media-ctl -d /dev/media3 -p Media controller API version 6.6.20 Media device information ------------------------ driver uvcvideo model USB 2.0 Camera: USB Camera serial bus info usb-xhci-hcd.0-2.1 hw revision 0x0 driver version 6.6.20 Device topology - entity 1: USB 2.0 Camera: USB Camera (1 pad, 1 link) type Node subtype V4L flags 1 device node name /dev/video0 pad0: Sink <- "Extension 3":1 [ENABLED,IMMUTABLE] - entity 4: USB 2.0 Camera: USB Camera (0 pad, 0 link) type Node subtype V4L flags 0 device node name /dev/video1 - entity 8: Extension 3 (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 2":1 [ENABLED,IMMUTABLE] pad1: Source -> "USB 2.0 Camera: USB Camera":0 [ENABLED,IMMUTABLE] - entity 11: Processing 2 (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Camera 1":0 [ENABLED,IMMUTABLE] pad1: Source -> "Extension 3":0 [ENABLED,IMMUTABLE] - entity 14: Camera 1 (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 pad0: Source -> "Processing 2":0 [ENABLED,IMMUTABLE] zhaomeijing@raspberrypi5:~/workspace/09_uvc$ 【图】USB摄像头状态 2. USB摄像头测试 将USB摄像头插入开发板,将自动安装 uvc 添加设备节点。 USB 2.0 Camera: USB Camera (usb-xhci-hcd.0-2.1): /dev/video0 /dev/video1 /dev/media3 USB摄像头测试内容包括设备节点检测、视频、拍照,测试指令如下: //------USB摄像头 a.确认USB摄像头的设备节点,此处为/dev/video0。 v4l2-ctl --list-devices b.查看摄像头支持的格式与分辨率 v4l2-ctl --list-formats-ext -d /dev/video0 c.摄像头预览(视频640 x 480) gst-launch-1.0 v4l2src device=/dev/video0 ! \ "video/x-raw, width=640, Height=480, framerate=(fraction)30/1" ! \ queue ! glimagesink d.摄像头预览(视频1920 x 1080) gst-launch-1.0 v4l2src device=/dev/video0 ! \ video/x-raw,format=YUY2,width=1920,height=1080 ! \ queue ! glimagesink e.摄像头预览(拍照) gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=3 ! \ jpegenc ! filesink location=~/pic_of_video0.jpg 【图】-USB摄像头测试正常  

  • 2025-02-10
  • 发表了主题帖: 【Raspberry Pi 5体验】+06.Nginx实现内网穿透(zmj)

    【Raspberry Pi 5体验】+06.Nginx实现内网穿透(zmj) 通过Nginx+Cpolar实现内网穿透,随时随地访问树莓派5的本地站点。 //------Cpolar官网 https://www.cpolar.com/ //------Cpolar内网穿透教程(官网) https://www.cpolar.com/blog/cpolar-quick-start-tutorial-centos-series 1. Nginx安装 在树莓派安装Nginx也是很简单,通过apt命令可以直接安装。 先更新仓库 sudo apt update 安装更新 sudo apt upgrade 更新完成后安装Nginx软件 sudo apt install nginx 启动Nginx sudo /ect/init.d/nginx start 测试Nginx(浏览器输入树莓派局域网ip或者局域网ip:80端口即可访问Nginx) 192.168.5.177 或则 192.168.5.177:80 【测试Nginx】 2. Cpolar安装与配置 2.1 安装Cpolar //------使用cpolar一键安装脚本: https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash //------cpolar服务配置 向系统添加cpolar服务 sudo systemctl enable cpolar 启动cpolar服务 sudo systemctl start cpolar 查看服务状态 sudo systemctl status cpolar 重启cpolar命令(需要的时候使用) sudo systemctl restart cpolar 然后在外部浏览器使用树莓派局域网ip+:9200端口即可出现cpolar管理界面 192.168.5.177:9200 【cpolar安装与服务配置】 【测试Cpolar(cpolar管理界面)】 2.2 注册Cpolar,申请套餐 在Cpolar官网注册申请账号,申请套餐(此处申请了免费套餐)。 //------Cpolar官网 https://www.cpolar.com/ 【选择免费套餐】 2.3 创建隧道 输入官网注册的账号登陆即可对隧道进行操作,下图为cpolar系统状态。 配置域名访问Nginx 我们在cpolar管理界面创建一个随机的80的隧道: 隧道名称:可自定义,注意不要重复 协议:http 本地地址:80 端口类型:随机域名 地区:China 点击“创建”,即出现可以实现内网穿透的隧道。 查看隧道状态:(含HTTP和HTTPS两种协议的公网地址,以及SSH访问地址) 3. 内网穿透测试 3.1 SSH测试 使用“ 2.3 创建隧道”的SSH隧道,直接进行SSH远程访问测试。 //------SSH隧道 tcp://3.tcp.vip.cpolar.cn:11481 //---参数说明 1.端口:11481 2.地址:3.tcp.vip.cpolar.cn //---测试正常 ssh -p 11481 zhaomeijing@3.tcp.vip.cpolar.cn 3.2 网页访问测试 使用“ 2.3 创建隧道”的HTTPS隧道((raspberrypi5_zmj_01),直接进行HTTPS访问测试。 //------使用浏览器访问HTTPS隧道((raspberrypi5_zmj_01) https://2206f3bf.r2.cpolar.cn 注:本地未开启任何实质内容, 因此登录结果显示“404”。 【网页访问测试】 //------end

  • 发表了主题帖: 【Raspberry Pi 5体验】+05.samba功能测试(zmj)

    【Raspberry Pi 5体验】+05.samba功能测试(zmj) Samba(简称SMB)是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。通过使用它可以实现Windows和Linux之间的文件共享。 当开启samba服务后,就可以通过samba服务远程将树莓派的存储资源挂载在自己的电脑上,像浏览自己电脑上的资源一样浏览树莓派上的资源。 1. samba的安装与配置 SMB 协议基本是所有设备都支持,在树莓派上实现samba安装与配置的流程如下: //------samba安装与配置 //---在根目录创建 share_samba 目录用于共享 sudo mkdir /share_samba sudo chmod -R 777 /share_samba //---安装 Samba sudo apt install samba samba-common-bin -y //---备份原始配置文件,养成备份好习惯 sudo cp -rf /etc/samba/smb.conf /etc/samba/smb.conf_bak //---编辑配置文件(添加samba共享信息) sudo vim smb.conf # ------------------------ [global] guest account = nobody [RPI5] comment = RPi5_zmj path = /share_samba browsable = yes writable = yes guest ok = yes create mask = 0777 directory mask = 0777 # ------------------------ //---创建samba用户及密码 sudo smbpasswd -a zhaomeijing //---测试配置文件是否有错误(Linux的testparm命令,用于测试Samba的设置是否正确无误) testparm //---重启 samba 服务 sudo /etc/init.d/smbd restart 或者 sudo samba restart //------详细Log zhaomeijing@raspberrypi5:~/workspace/03_samba$ sudo mkdir /share_samba zhaomeijing@raspberrypi5:~/workspace/03_samba$ sudo chmod -R 777 /share_samba zhaomeijing@raspberrypi5:~/workspace/03_samba$ sudo apt install samba samba-common-bin -y zhaomeijing@raspberrypi5:~/workspace/03_samba$ ls -la /etc/samba/ total 48 drwxr-xr-x 3 root root 4096 Apr 16 14:30 . drwxr-xr-x 173 root root 12288 Apr 16 13:58 .. -rw-r--r-- 1 root root 8 Oct 10 2023 gdbcommands -rw-r--r-- 1 root root 8851 Apr 16 14:30 smb.conf drwxr-xr-x 2 root root 4096 Oct 10 2023 tls zhaomeijing@raspberrypi5:~/workspace/03_samba$ sudo cp -rf /etc/samba/smb.conf /etc/samba/smb.conf_bak zhaomeijing@raspberrypi5:~/workspace/03_samba$ sudo vim /etc/samba/smb.conf zhaomeijing@raspberrypi5:~/workspace/03_samba$ sudo smbpasswd -a zhaomeijing New SMB password: Retype new SMB password: Added user zhaomeijing. zhaomeijing@raspberrypi5:~/workspace/03_samba$ sudo /etc/init.d/smbd restart Restarting smbd (via systemctl): smbd.service. zhaomeijing@raspberrypi5:~/workspace/03_samba$ sudo samba restart zhaomeijing@raspberrypi5:~/workspace/03_samba$ testparm Load smb config files from /etc/samba/smb.conf Global parameter workgroup found in service section! Global parameter log file found in service section! Global parameter max log size found in service section! Global parameter logging found in service section! Global parameter panic action found in service section! Global parameter server role found in service section! Global parameter obey pam restrictions found in service section! Global parameter unix password sync found in service section! Global parameter passwd program found in service section! Global parameter passwd chat found in service section! Global parameter pam password change found in service section! Global parameter map to guest found in service section! Global parameter usershare allow guests found in service section! Loaded services file OK. Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback) Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] idmap config * : backend = tdb [RPI5] comment = RPi5_zmj create mask = 0777 directory mask = 0777 guest ok = Yes path = /share_samba read only = No [homes] browseable = No comment = Home Directories create mask = 0700 directory mask = 0700 valid users = %S [printers] browseable = No comment = All Printers create mask = 0700 path = /var/tmp printable = Yes [print$] comment = Printer Drivers path = /var/lib/samba/printers zhaomeijing@raspberrypi5:~/workspace/03_samba$ ll /share_samba/ total 7660 drwxrwxrwx 2 root root 4096 Apr 16 14:30 ./ drwxr-xr-x 19 root root 4096 Apr 16 13:55 ../ -rwxrw-rw- 1 zhaomeijing zhaomeijing 7833709 Feb 28 13:47 '弹棉花的小花 - 顿啦 爱你(小花版).mp3'* zhaomeijing@raspberrypi5:~/workspace/03_samba$ 特别说明一下这个配置文件: //------samba配置文件 //---路径 /etc/samba/smb.conf //---增加配置信息 [global] guest account = nobody [RPI5] comment = RPi5_zmj path = /share_samba browsable = yes writable = yes guest ok = yes create mask = 0777 directory mask = 0777 //---配置信息说明 - [global]: 这个部分包含了整个 Samba 服务器的全局设置。所有的设置都会应用到服务器上的所有共享。 - guest account = nobody: 这个设置指定了当以游客身份访问 Samba 共享时,所使用的系统账户。在这个例子中,游客会被映射到系统的 nobody 账户上。 - [RPI5]: 这是一个共享块的开始标记,也是用户定义的共享块名称,表示以下的配置都是针对名为 RPI5 的共享。每个共享块都有其自己的设置。 - comment = RPi5_zmj:配置说明信息 - path = /share_samba: 指定共享目录的路径,此处共享的目录是 /share_samba 。 - browsable = yes: 允许网络中的其他用户看到这个共享。设置为 yes,则此共享会出现在网络上的列表中。 - writable = yes: 允许对共享目录的文件进行写操作。如果设置为 no,则此共享为只读。 - guest ok = yes: 允许不需要密码的游客访问此共享。 - create mask = 0777 和 directory mask = 0777: 这两个设置决定了通过 Samba 创建的文件和目录的权限。0777 表示所有用户(拥有者、组和其他)都有读、写和执行的权限。create mask 应用于文件,而 directory mask 应用于目录。 【树莓派端samba安装与配置】 2. Windows连接Samba 一切完成后,Windows 上可以在文件管理器通过“ \\192.168.5.177\RPI5 ”访问共享目录(IP 为树莓派的 IP 地址): //------Windows连接Samba 1.打开文件夹,输入树莓派5的IP地址及Samba服务地址 \\192.168.28.5.177\RPI5 2.输入Samba服务账号及密码(此时可以正常访问Samba共享文件夹) 3.Windows端拷贝文件; 4.树莓派5检测Samba共享文件夹的文件状态。 【Windows连接Samba】 3. Windows添加网络映射 除了“2. Windows连接Samba”中通过IP加上目录的方式来共享文件,还可以通过挂载的方式实现Samba服务的便捷访问。 3.1 打开Windows的SMB功能 在控制面板找到“ Windows 功能 ”,勾选“ SMB 1.0/CIFS 文件共享支持 ”,确定后需要重启系统。 3.2 添加网络驱动器映射 打开“我的电脑”,选择映射网络驱动器,选择驱动器的盘符,填写文件夹的具体路径“ \\192.168.5.177\RPI5 ”。要求添加凭证的时候,直接填写smb服务器已经存在的账号和密码即可。如此,添加网络驱动器映射成功。 总结,在树莓派上面搭建samba,实现局域网文件共享功能,可应用于很多存储场景,比如利用树莓派下载文件,然后本地电脑查看响应文件或者把文件从本地电脑拷贝进树莓派等等。 //------end

  • 发表了主题帖: 【Raspberry Pi 5体验】+04.NFS功能测试(zmj)

    【Raspberry Pi 5体验】+04.NFS功能测试(zmj) 网络文件系统(NFS,Network File System)对于开发人员来讲是十分友好的文件传输协议,可以很方便的实现文件共享传输。NFS 是由 SUN 公司研制的 UNIX 表示层协议(Presentation layer protocol),可以让使用者访问网络上别处的文件就像在使用自己的计算机一样。当然,NFS的搭建过程也非常简单。 1. 操作流程 NFS 的搭建过程非常简单。 //------安装nfs sudo apt-get install nfs-kernel-server //------创建共享目录,用于NFS测试 mkdir -p ~/workspace/nfs chmod 666 ~/workspace/nfs //------修改NFS配置文件:/etc/exports vim /etc/exports //---修改内容并保存退出,内容如下: /home/zhaomeijing/workspace/nfs *(rw,sync,no_root_squash) 配置内容说明:设置 /home/zhaomeijing/workspace/nfs 目录允许所有客户端可读可写、同步、无root权限需求的挂载。 //------启动NFS服务 sudo systemctl status nfs-server sudo systemctl restart nfs-server sudo systemctl enable nfs-server 或者 sudo /etc/init.d/nfs-kernel-server restart //------测试:其他服务器启用挂载 sudo /bin/mount -t nfs -o rw 192.168.5.177:/home/zhaomeijing/workspace/nfs /temp_nfs sudo /bin/mount (-t nfs -o nolock)192.168.5.177:/home/zhaomeijing/workspace/nfs /temp_nfs 测试说明:挂载成功后会在测试机上多出一个网络磁盘,可以正常读写文件。 【NFS参数介绍:】 参数 说明 ro 只读访问 rw 读写访问 sync 所有数据在请求时写入共享 async nfs 在写入数据前可以响应请求 secure nfs 通过 1024 以下的安全 TCP/IP 端口发送 insecure nfs 通过 1024 以上的端口发送 wdelay 如果多个用户要写入 nfs 目录,则归组写入(默认) no_wdelay 如果多个用户要写入 nfs 目录,则立即写入,当使用 async 时,无需此设置 hide 在 nfs 共享目录中不共享其子目录 no_hide 共享 nfs 目录的子目录 subtree_check 如果共享 /usr/bin 之类的子目录时,强制 nfs 检查父目录的权限(默认) no_subtree_check 不检查父目录权限 all_squash 共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录 no_all_squash 保留共享文件的 UID 和 GID(默认) root_squash root 用户的所有请求映射成如 anonymous 用户一样的权限(默认) no_root_squash root 用户具有根目录的完全管理访问权限 anonuid=xxx 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 UID anongid=xxx 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 GID 2. 测试结果 测试结果如图所示: //------end

  • 发表了主题帖: 【Raspberry Pi 5体验】+03.CPU、DDR测试(zmj)

    【Raspberry Pi 5体验】+03.CPU、DDR测试(zmj) 1. CPU性能测试 1.1 查看CPU信息 树莓派5采用了四核 2.4 GHz Cortex-A76 Arm CPU,支持32-bit/64-bit两种模式指令集。运行时CPU的低功耗模式CPU工作频率1.5GHz,高性能模式CPU工作频率2.4GHz。 通过查看CPU信息的反馈结果可以确认上述信息。 //------查看CPU信息:lscpu //---指令 lscpu cat /proc/cpuinfo //---结果 指令集: Cortex-A76 Arm 4核CPU:编号0~3 //------查看CPU频率: //---指令 cat /sys/bus/cpu/devices/cpu0/cpufreq/cpuinfo_cur_freq cat /sys/bus/cpu/devices/cpu0/cpufreq/cpuinfo_max_freq cat /sys/bus/cpu/devices/cpu0/cpufreq/cpuinfo_min_freq //---结果 工作频率:1.5GHz~2.4GHz 当前频率:1.5GHz //---借助vcgencmd查看CPU频率 vcgencmd measure_clock arm //------示例Log信息 zhaomeijing@raspberrypi5:~$ lscpu Architecture: aarch64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Vendor ID: ARM Model name: Cortex-A76 Model: 1 Thread(s) per core: 1 Core(s) per cluster: 4 Socket(s): - Cluster(s): 1 Stepping: r4p1 CPU(s) scaling MHz: 62% CPU max MHz: 2400.0000 CPU min MHz: 1500.0000 BogoMIPS: 108.00 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp Vulnerabilities: Gather data sampling: Not affected Itlb multihit: Not affected L1tf: Not affected Mds: Not affected Meltdown: Not affected Mmio stale data: Not affected Retbleed: Not affected Spec rstack overflow: Not affected Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl Spectre v1: Mitigation; __user pointer sanitization Spectre v2: Mitigation; CSV2, BHB Srbds: Not affected Tsx async abort: Not affected zhaomeijing@raspberrypi5:~$ cat /proc/cpuinfo processor : 0 BogoMIPS : 108.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x4 CPU part : 0xd0b CPU revision : 1 processor : 1 BogoMIPS : 108.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x4 CPU part : 0xd0b CPU revision : 1 processor : 2 BogoMIPS : 108.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x4 CPU part : 0xd0b CPU revision : 1 processor : 3 BogoMIPS : 108.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x4 CPU part : 0xd0b CPU revision : 1 Revision : c04170 Serial : c4197593e8cb6150 Model : Raspberry Pi 5 Model B Rev 1.0 zhaomeijing@raspberrypi5:~$ sudo cat /sys/bus/cpu/devices/cpu0/cpufreq/cpuinfo_cur_freq 1500000 zhaomeijing@raspberrypi5:~$ cat /sys/bus/cpu/devices/cpu0/cpufreq/cpuinfo_max_freq 2400000 zhaomeijing@raspberrypi5:~$ cat /sys/bus/cpu/devices/cpu0/cpufreq/cpuinfo_min_freq 1500000 zhaomeijing@raspberrypi5:~$ vcgencmd measure_clock arm frequency(0)=1500016128 zhaomeijing@raspberrypi5:~$ 1.2 CoreMark性能测试   1.2.1 CoreMark简介 //------CoreMark简介 CoreMark是用来衡量嵌入式系统中心处理单元(CPU,或叫做微控制器MCU)性能的标准。 该标准于2009年由EEMBC组织的Shay Gla-On提出,并且试图将其发展成为工业标准,从而代替陈旧的Dhrystone标准。代码使用C语言写成,包含如下的运算法则:列举(寻找并排序),数学矩阵操作(普通矩阵运算)和状态机(用来确定输入流中是否包含有效数字),最后还包括CRC(循环冗余校验)。 CoreMark是由EEMBC(Embedded Microprocessor Benchmark Consortium)的Shay Gla-On于2009年提出的一项基准测试程序,CoreMark的主要目标是简化操作,并提供一套测试单核处理器核心的方法。测试标准是在配置参数的组合下单位时间内运行的CoreMark程序次数(单位:CoreMark/MHz),该数字值越大则说明测试的性能越好。 目前在嵌入式CPU行业中普遍公认的性能测试指标的标准主要使用以下三种,MIPS、Dhrystone、Coremark,而CoreMark与Dhrystone一样,拥有体积小、方便移植、易于理解、免费并且显示单个数字基准分数。与Dhrystone不同的是,Dhrystone的主要部分实际上暴露了编译器优化工作负载的能力,而不是实际MCU或CPU的能力,的性能,而CoreMark具有特定的运行和报告规则,从而可以避免由于所使用的编译库不同而导致的测试结果难以比较。 1.2.2 CoreMark源码获取与编译 //------CoreMark源码获取 EEMBC 在将 CoreMark 源码托管在 GitHub 上可以访问github.com/eembc/coremark直接点击下载获得源码;也可以通过 git 命令下载到本地。 //------CoreMark源码获取 //---CoreMark说明 https://www.eembc.org/coremark/ //---直接下载(CoreMark开源代码仓) https://github.com/eembc/coremark //---Git下载 git clone https://github.com/eembc/coremark.git //---编译(生成可执行程序coremark.exe) make run 或者 make CoreMark 项目的详细介绍,可以查阅当前目录下 “coremark/docs/html/index.html” 。以下是当前目录的每个文件介绍: #在tree命令的输出中,作了部分删除(不影响分析整个CoreMark工程) imaginemiracle@:coremark$ tree . ├── barebones --移植到裸机环境下需要修改的目录 │ ├── core_portme.c --移植的目标平台配置信息 │ ├── core_portme.h --计时以及板级初始化实现 │ ├── core_portme.mak --该子目录的makefile │ ├── cvt.c │ └── ee_printf.c --打印函数串口发送实现 ├── core_list_join.c --列表操作程序 ├── core_main.c --主程序 ├── coremark.h --项目配置与数据结构的定义头文件 ├── coremark.md5 ├── core_matrix.c --矩阵运算程序 ├── core_state.c --状态机控制程序 ├── core_util.c --CRC计算程序 ├── cygwin --x86 cygwin和gcc 3.4(四核,双核和单核系统)的测试代码 │ ├── core_portme.c │ ├── core_portme.h │ └── core_portme.mak ├── freebsd --以下同理,是在不同操作系统下的测试代码 │ ├── ... ├── LICENSE.md ├── linux │ ├── ... ├── linux64 │ ├── ... ├── macos │ ├── ... ├── Makefile ├── README.md --自述文件,CoreMark项目的基本介绍 ├── rtems │ ├── ... └──simple ├── ... └── core_portme.mak 1.2.3 运行coremark.exe测试性能 运行coremark.exe测试性能。 zhaomeijing@raspberrypi5:~/workspace/01_cpu_ddr $ git clone https://github.com/eembc/coremark.git Cloning into 'coremark'... remote: Enumerating objects: 379, done. remote: Counting objects: 100% (163/163), done. remote: Compressing objects: 100% (61/61), done. remote: Total 379 (delta 121), reused 115 (delta 97), pack-reused 216 Receiving objects: 100% (379/379), 517.77 KiB | 1.06 MiB/s, done. Resolving deltas: 100% (217/217), done. zhaomeijing@raspberrypi5:~/workspace/01_cpu_ddr $ ll total 12 drwxr-xr-x 3 zhaomeijing zhaomeijing 4096 Mar 24 19:49 ./ drwxr-xr-x 3 zhaomeijing zhaomeijing 4096 Mar 24 19:49 ../ drwxr-xr-x 14 zhaomeijing zhaomeijing 4096 Mar 24 19:49 coremark/ zhaomeijing@raspberrypi5:~/workspace/01_cpu_ddr $ cd coremark/ zhaomeijing@raspberrypi5:~/workspace/01_cpu_ddr/coremark $ make (省略编译过程,详细可以参考README.md) zhaomeijing@raspberrypi5:~/workspace/01_cpu_ddr/coremark $ ./coremark.exe 2K performance run parameters for coremark. CoreMark Size : 666 Total ticks : 16594 Total time (secs): 16.594000 Iterations/Sec : 18078.823671 Iterations : 300000 Compiler version : GCC12.2.0 Compiler flags : -O2 -DPERFORMANCE_RUN=1 -lrt Memory location : Please put data memory location here (e.g. code in flash, data on heap etc) seedcrc : 0xe9f5 [0]crclist : 0xe714 [0]crcmatrix : 0x1fd7 [0]crcstate : 0x8e3a [0]crcfinal : 0xcc42 Correct operation validated. See README.md for run and reporting rules. CoreMark 1.0 : 18078.823671 / GCC12.2.0 -O2 -DPERFORMANCE_RUN=1 -lrt / Heap zhaomeijing@raspberrypi5:~/workspace/01_cpu_ddr/coremark $ 【图】coremark测试结果   1.3 CPU温度检测 此处示例两种获取CPU温度的方式:lm-sensors和lm-sensors是一款linux的硬件监控的软件,可以帮助我们来监控主板,CPU的工作电压,风扇转速、温度等数据。当然,树莓派5还可以通过vcgencmd指令查看温度等信息。 //------sensors //---sensors安装 sudo apt install lm-sensors //---snesors使用 sensors //------vcgencmd //---vcgencmd指令 vcgencmd commands //---vcgencmd获取温度 vcgencmd measure_temp //------示例Log信息 zhaomeijing@raspberrypi5:~$ sudo apt install lm-sensors zhaomeijing@raspberrypi5:~$ sensors rpi_volt-isa-0000 Adapter: ISA adapter in0: N/A cpu_thermal-virtual-0 Adapter: Virtual device temp1: +37.5°C rp1_adc-isa-0000 Adapter: ISA adapter in1: 955.00 mV in2: 2.52 V in3: 1.40 V in4: 1.42 V temp1: +42.1°C zhaomeijing@raspberrypi5:~$ vcgencmd commands commands="commands, set_logging, bootloader_config, bootloader_version, cache_flush, codec_enable pmicrd, pmicwr, read_ring_osc, version, readmr, otp_dump, pmic_read_adc, power_monitor" zhaomeijing@raspberrypi5:~$ vcgencmd measure_temp temp=37.8'C zhaomeijing@raspberrypi5:~$ 【图】CPU温度测试 2. DDR内存性能测试 树莓派5开发板采用4GB LPDDR4-SDRAM。 2.1 DDR内存基本信息 通过“free -h”指令读取内存DDR的使用情况;通过/proc/meminfo 文件读取系统中的内存的参数信息。 //------测试工具 free //---测试指令 free -h 或者 free -m //---参数解析 -h 参数代表单位为 GByte -m 参数代表单位为 MByte total :内存总量 used :被使用的内存量 free :可使用的内存量 //------查看系统内存信息文件 cat /proc/meminfo //------ zhaomeijing@raspberrypi5:~/workspace/01_cpu_ddr$ free -h total used free shared buff/cache available Mem: 4.0Gi 874Mi 477Mi 82Mi 2.8Gi 3.1Gi Swap: 99Mi 0B 99Mi zhaomeijing@raspberrypi5:~/workspace/01_cpu_ddr$ free -m total used free shared buff/cache available Mem: 4045 874 477 82 2840 3170 Swap: 99 0 99 zhaomeijing@raspberrypi5:~/workspace/01_cpu_ddr$ cat /proc/meminfo MemTotal: 4142304 kB MemFree: 488816 kB MemAvailable: 3246416 kB Buffers: 293648 kB Cached: 2447392 kB SwapCached: 0 kB Active: 1915696 kB Inactive: 1390080 kB Active(anon): 649056 kB Inactive(anon): 0 kB Active(file): 1266640 kB Inactive(file): 1390080 kB Unevictable: 41568 kB Mlocked: 32 kB SwapTotal: 102384 kB SwapFree: 102384 kB Zswap: 0 kB Zswapped: 0 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 606528 kB Mapped: 259216 kB Shmem: 84320 kB KReclaimable: 167568 kB Slab: 213360 kB SReclaimable: 167568 kB SUnreclaim: 45792 kB KernelStack: 6672 kB PageTables: 18288 kB SecPageTables: 0 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 2173536 kB Committed_AS: 3168656 kB VmallocTotal: 68180246528 kB VmallocUsed: 22672 kB VmallocChunk: 0 kB Percpu: 1280 kB CmaTotal: 327680 kB CmaFree: 195872 kB zhaomeijing@raspberrypi5:~/workspace/01_cpu_ddr$ 2.2 内存功能压力测试-memtester 内存功能压力测试-memtester需要安装: //------安装内存功能压力测试工具memtester sudo apt install memtester -y 或者 sudo apt-get install memtester -y memtester通过给定测试内存的大小和次数, 可以对系统现有的内存进行压力上的测试。例如指定内存大小 512MB,测试次数为 10,则测试命令为“memtester 512M 10"。 下列以使用 512MB 内存空间,单次测试为例: //------测试工具(MYD-YG2LX系统已带) memtester //------测试指令 memtester 512M 1 //---指令说明 指定内存大小 512MB,测试次数为 1 //---示例 zhaomeijing@raspberrypi5:~/workspace/01_cpu_ddr$ memtester 512M 1 memtester version 4.6.0 (64-bit) Copyright (C) 2001-2020 Charles Cazabon. Licensed under the GNU General Public License version 2 (only). pagesize is 16384 pagesizemask is 0xffffffffffffc000 want 512MB (536870912 bytes) got 512MB (536870912 bytes), trying mlock ...locked. Loop 1/1: Stuck Address : ok Random Value : ok Compare XOR : ok Compare SUB : ok Compare MUL : ok Compare DIV : ok Compare OR : ok Compare AND : ok Sequential Increment: ok Solid Bits : ok Block Sequential : ok Checkerboard : ok Bit Spread : ok Bit Flip : ok Walking Ones : ok Walking Zeroes : ok 8-bit Writes : ok 16-bit Writes : ok Done. zhaomeijing@raspberrypi5:~/workspace/01_cpu_ddr$ //------END

  • 2025-01-19
  • 发表了主题帖: 【Raspberry Pi 5体验】+ 02.远程连接测试

    【Raspberry Pi 5体验】+ 02.远程连接测试 树莓派5 开发板提供了多种方式进行调试使用: //------已有登陆方式: a.使用USB转串口转换器连接进行串口登录; b.通过以太网使用SSH登录(系统镜像烧录时务必配置网络连接); c.通过HDMI使用系统桌面环境登录; //------待测试登陆方式: a.VNC //测试正常 b.XRDP //测试正常 c.手机SSH //测试正常 从最终使用效果来讲,个人认为SSH最便捷。 本节测试图形化的远程桌面VNC和XRDP进行连接登陆的方式,同时探索了手机SSH的可行性。 1. VNC远程 树莓派5的官方系统镜像已经继承了VNC远程桌面,直接配置启动VNC即可。常用的VNC软件包括RealVNC、VNC-Viewer等。 在开始之前,需要启动系统并登录树莓派5,进入到树莓派命令窗口。通过显示器和键鼠直接操作或通过SSH登录都可以。 1.1 启用树莓派 VNC 服务 在终端输入以下命令进入配置界面。 //------启动树莓派配置指令 sudo raspi-config //------依次操作: Interfacing Options -> VNC -> Yes(Enable VNC) -> 创建VNC服务。 之后系统会提示你是否要安装 VNC 服务,输入 y 之后回车,等待系统自动下载安装完成,一切顺利的话VNC服务就自动启动了,服务端口号默认是5900。 //------示例Log日志 zhaomeijing@raspberrypi5:~/workspace $ sudo raspi-config <如图操作配置使能VNC> Created symlink /etc/systemd/system/multi-user.target.wants/wayvnc.service → /lib/systemd/system/wayvnc.service. 【图】Raspberry-Pi5配置远程VNC   1.2 通过VNC软件连接登录 RealVNC-Viewer是一款非常好用的VNC软件,连接方法如下: //------RealVNC Viewer //---官网 https://www.realvnc.com/ //---下载地址 https://www.realvnc.com/en/connect/download/viewer/ //------连接方法 1.通过ifconfig获取树莓派5的网络IP地址; 2.运行RealVNC-Viewer之后输入树莓派的IP地址和端口地址; 3.连接之后输入树莓派的登录用户名和密码,确认之后即可进入树莓派的远程桌面。 【图】VNC-Viewer   2. XRDP Xrdp是一个开源工具,允许用户通过Windows RDP访问Linux远程桌面。除了Windows RDP(mstsc)之外,xrdp工具还接受来自其他RDP客户端的连接,如FreeRDP,rdesktop和NeutrinoRDP。 想要实现XRDP的远程连接,需要进行Linux端操作和windows端操作两部分。 //------windows通过Xrdp工具远程连接Linux(CnetOS) 参考链接: https://blog.csdn.net/qq_56720075/article/details/128911573 2.1 树莓派Debian端的操作 树莓派Debian端的操作: 1.使用任意已有的登陆方式安装xrdp软件 sudo apt install -y xrdp 2.启动Xrdp服务,并使能开机自动运行: sudo systemctl start xrdp sudo systemctl enable xrdp 3.设置防火墙,使能端口3389(开放3389端口): sudo firewall-cmd --zone=public --add-port=3389/tcp --permanent 4.重启防火墙,生效配置: sudo systemctl restart firewalld.service 如果出现报错 error – problem connecting,问题根源在于tightvnc,出现问题的版本跟X字体有冲突,导致连接Xserver出错。 解决方法: sudo apt-get purge tightvnc xrdp sudo apt-get install tightvncserver xrdp 最后启动 xrdp 服务,sudo /etc/init.d/xrdp restart,此时会启用相应端口,配置方面默认即可。 通过命令:netstat -tnl 查看 3350 3389 5910 这三个端口处于LISTEN,一般就没问题了。 dpkg -L + 软件包的名字,可以知道这个软件包包含了哪些文件。 2.2 windows端的操作 windows端的操作: //---windows端的操作 1.“Win + R”打开运行窗口,输入“mstsc”或者“mstsc.exe”,此时会打开远程连接窗口; |---a.“Win + R”打开运行窗口; |---b.输入“mstsc”或者“mstsc.exe”; |---c.此时会打开远程连接窗口; 2.在“计算机”输入IP地址; 3.在“用户名”输入密码; (注:假设OS-GUI界面启动了任意程序,直接关闭远程再重新建立远程,此时OS-GUI的程序仍存在。) 【图】windows启动mstsc远程连接 3. 最终效果 VNC和XRDP可以同时运行,二者同时运行最终效果:   4. 手机连接树莓派 Termius是一款手机和PC的全平台终端神器,它不仅支持SSH连接,还提供了文件传输的功能,能够满足不同操作系统用户的需求。 Termius软件以其简洁的界面和强大的功能受到了广泛好评。 它支持Windows、macOS、iOS、Android和Linux操作系统,让用户可以随时随地通过SSH访问远程服务器。 Termius还提供了SSH信息同步功能,使得用户在不同设备间的操作可以无缝衔接。 此外,Termius还支持FTP/SFTP连接,可以作为filezilla和WINSCP的替代品,为用户提供了极大的便利。 //------Termius终端工具(记得选择个人免费版) //---官网 https://termius.com/ //---下载 https://github.com/termius //---账户管理(需要邮箱注册,注册完成后可以进行设备管理) https://account.termius.com/ 对于苹果生态用户来讲,直接在APP-Store搜索“termius”然后下载即可;对于安卓用户;对于PC-Windows用户来讲,拿它当普通终端使用即可。此处以iPhone连接树莓派为例进行演示: 打开Ap-Store,搜索“termius”然后下载安装;安装完成后,需要使用邮箱完成注册;输入IP地址、用户名、登录密码,连接树莓派5即可。 【图】账户管理(需要邮箱注册,记得选择个人免费版,注册完成后可以进行设备管理) 【图】手机下载与登录 5. 防火墙UFW使用与避坑 慎重选择防火墙工具“ufw”,它安装完成后是禁用所有端口的输入(包括SSH的默认22端口);换句话说,UFW默认情况下允许流量传出,但拒绝流量传入。这意味着可以浏览网站或者使用wget,apt-get等命令下载安装服务,但不允许外部程序访问本机。我这边安装完成ufw之后,直接无法SSH了,排查了很久才发现UFW这个很不人性化的默认设置。 UFW简介 UFW(Uncomplicated Firewall)是一个在Linux上管理防火墙的工具,它简化了iptables命令的操作,使得配置防火墙规则变得更加容易。 我安装的版本是ufw-0.36.2 zhaomeijing@raspberrypi5:~/workspace$ ufw version ufw 0.36.2 Copyright 2008-2023 Canonical Ltd. zhaomeijing@raspberrypi5:~/workspace$ 安装防火墙UFW sudo apt-get install ufw -y 启动/禁用防火墙UFW sudo ufw enable sudo ufw disable 查看状态 sudo ufw status 如果是Status: active则表明已经开启 重置UFW防火墙,禁用UFW并删除所有之前定义的规则 sudo ufw reset 列出规则 sudo ufw status numbered 开放端口 指令格式: sudo ufw allow 端口号/协议 示例说明: sudo ufw allow 2024/tcp 允许通过TCP协议访问本机的2024端口 sudo ufw allow 2024:2030/tcp 允许某个端口范围,例如2024~2030的TCP协议 sudo ufw allow smtp    允许所有的外部IP访问本机的25/tcp (smtp)端口 sudo ufw allow 22/tcp   允许所有的外部IP访问本机的22/tcp (ssh)端口 sudo ufw allow 53       允许外部访问53端口(tcp/udp) sudo ufw allow from 192.168.1.100 允许此IP访问所有的本机端口 sudo ufw allow proto udp 192.168.0.1 port 53 to 192.168.0.2 port 53 sudo ufw deny smtp       禁止外部访问smtp服务 sudo ufw allow ssh       允许外部访问本机SSH服务器 sudo ufw delete allow smtp 删除上面建立的某条规则 关闭端口 sudo ufw deny ssh 重启防火墙(刷新配置) 在执行该命令后,UFW会重新读取并应用所有的防火墙规则,以确保系统的安全性和可用性。 sudo ufw reload 整体来讲,UFW防火墙使用比较简单易用。 zhaomeijing@raspberrypi5:~/workspace$ ufw --help ​ Usage: ufw COMMAND ​ Commands: enable                         enables the firewall disable                         disables the firewall default ARG                     set default policy logging LEVEL                   set logging to LEVEL allow ARGS                     add allow rule deny ARGS                       add deny rule reject ARGS                     add reject rule limit ARGS                     add limit rule delete RULE|NUM                 delete RULE insert NUM RULE                 insert RULE at NUM prepend RULE                   prepend RULE route RULE                     add route RULE route delete RULE|NUM           delete route RULE route insert NUM RULE           insert route RULE at NUM reload                         reload firewall reset                           reset firewall status                         show firewall status status numbered                 show firewall status as numbered list of RULES status verbose                 show verbose firewall status show ARG                       show firewall report version                         display version information ​ Application profile commands: app list                       list application profiles app info PROFILE               show information on PROFILE app update PROFILE             update PROFILE app default ARG                 set default application policy ​ zhaomeijing@raspberrypi5:~/workspace$   【视频】连接效果(包括手机SSH) [localvideo]d07198676d3b7436050e70c053c2c56c[/localvideo]   //------end  

  • 2025-01-12
  • 发表了主题帖: 【Raspberry Pi 5体验】+01.开箱

    【Raspberry Pi 5体验】+01.开箱 感谢电子工程世界与DigiKey得捷提供的此次试用机会,可以体验树莓派5(4GB版本)的魅力。 //------树莓派官网 https://www.raspberrypi.com/ //------Raspberry Pi Imager烧录工具 https://www.raspberrypi.com/software/ //------树莓派操作系统 https://www.raspberrypi.com/software/operating-systems/ //------树莓派快速入门文档 https://www.raspberrypi.com/documentation/computers/getting-started.html 2. 开发板介绍 2.1 开发板简介 树莓派5(Raspberry Pi 5) 的处理能力是 Raspberry Pi 4 的两到三倍,提供 4GB 和 8GB RAM 容量,其基本尺寸和形状与 Model 4 B 相同,但增加了许多人们长期要求的功能,例如内置实时时钟RTC、一个 PCIe 2.0 连接器和一个电源按钮。 树莓派5(Raspberry Pi 5) 配备了新的四核 2.4 GHz Cortex-A76 Arm CPU(旧型号最初是运行在 1.5 GHz 的 Cortex-A72,但固件更新使其达到 1.8 GHz)、新的南桥承诺提高 USB 3 吞吐量和运行频率为 800 Mhz 的新 VideoCore VII GPU(相对于 Pi 4 上的 500 MHz VideoCore VI)。整个主板有很多小改进,包括带安装孔的内置风扇接头、更快的双摄像头连接器以及可与高速卡配合使用的 microSD 读卡器。 2.2 规则参数 树莓派5(Raspberry Pi 5 - 4GB版本)主要规格参数如下所述: 1.树莓派5(Raspberry Pi 5)主要规格参数包括: 2.4GHz四核64位Arm Cortex-A76 CPU VideoCore VII GPU,支持OpenGL ES 3.1, Vulkan 1.2 双4Kp60 HDMI®显示输出 4Kp60 HEVC解码器 双频802.11ac Wi-Fi® 蓝牙5.0 /低功耗蓝牙(BLE) 高速microSD卡接口支持SDR104模式 2个USB 3.0接口,支持5Gbps同步操作 2个USB 2.0接口 千兆以太网,支持PoE+(需要单独的PoE+ HAT) 2 × 4通道MIPI相机/显示收发器 PCIe 2.0 x1接口,用于快速外设 树莓派标准的40针GPIO头 实时时钟 电源按钮 2.树莓派5(Raspberry Pi 5)应用场景: 电脑的替代品 多媒体中心 控制台 教育和学习工具 智能家居系统 传感器网络 远程监控 工业自动化 嵌入式系统开发 3.注意事项:电源接口是TYPE-C,供电建议是DC5V/5A;如果是DC5V/3A,则USB接口供电能力会削弱至600mA。 树莓派5与树莓派4之间的参数还是存在一定差异的,如下图所示: 2.3 供电 下表显示了各种树莓派型号所需的USB-PD供电模式。随着树莓派的功能越来越强大,其功耗也不可避免地随之增高。 型号 供电需求(电压/电流) 供电接口及功率 Raspberry Pi 5 5V/5A, 5V/3A limits peripherals to 600mA 27W USB-C power supply Raspberry Pi 4 Model B 5V/3A 15W USB-C power supply Raspberry Pi 3 (all models) 5V/2.5A 12.5W Micro USB power supply Raspberry Pi 2 (all models) 5V/2.5A 12.5W Micro USB power supply Raspberry Pi 1 (all models) 5V/2.5A 12.5W Micro USB power supply Raspberry Pi Zero (all models) 5V/2.5A 12.5W Micro USB power supply   3. 开箱 3.1 外观 试用的树莓派5(Raspberry Pi 5 - 4GB)包装十分简约,只有带包装盒的裸板一块(内含说明卡片一张和说明书一张)。 自购了27W电源和散热外壳(最好带风扇),室温下不带外壳约46℃,安装散热外壳后约36℃,降温效果还是很明显的。 //------正面视图 //------背面视图 //------安装完铝合金散热外壳   3.2 系统准备 系统说明 //------系统烧录软件:Raspberry Pi Imager //------树莓派系统: a.树莓派系统分为32bit和64bit两大类,此处选择桌面版的“Raspberry Pi OS (64-bit)”; b.最新版本系统镜像是基于Debian-v12的bookworm,简称书虫; Raspberry Pi OS with desktop and recommended software Release date: March 15th 2024 System: 64-bit Kernel version: 6.6 Debian version: 12 (bookworm) Size: 2,803MB c.系统镜像链接: https://www.raspberrypi.com/software/operating-systems/ 3.2.1 系统烧录软件 推荐使用树莓派官方的烧录软件Raspberry Pi Imager进行系统烧录测试,工具十分好用。 3.2.2 树莓派系统 此处选择支持版本最多且预置多种软件的64bit版本系统,实测是 Debian GNU/Linux 12 (bookworm) aarch64。   3.2.3 烧录流程 打开烧录软件,插入TF卡(至少16BG,我选用的64GB),选择系统定制。此时可以添加系统属性,包括系统名称、WIFI配置、时区和开启SSH服务。 系统属性定制完成后保存,开始烧录系统;等系统烧录后退出软件,接着将TF卡放到树莓派5开发板的TF卡槽;最后上电启动系统。 //------系统属性定制(一定要设置账号密码,配置WIFI,要不然很多坑) //------系统烧录(联网下载,约10分钟) 3.3 系统状态 系统查询基本信息如下: //------系统查询基本信息: zhaomeijing@raspberrypi5:~/workspace$ hostnamectl Static hostname: raspberrypi5 Icon name: computer Machine ID: 15a40f0e70d145e5b307439b08671900 Boot ID: 240e68ebe4d34f988b9f7c5c02685cd7 Operating System: Debian GNU/Linux 12 (bookworm) Kernel: Linux 6.6.20+rpt-rpi-2712 Architecture: arm64 zhaomeijing@raspberrypi5:~/workspace$ uname -a Linux raspberrypi5 6.6.20+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.20-1+rpt1 (2024-03-07) aarch64 GNU/Linux zhaomeijing@raspberrypi5:~/workspace$ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" zhaomeijing@raspberrypi5:~/workspace$ cat /etc/debian_version 12.5 zhaomeijing@raspberrypi5:~$ neofetch _,met$$$$$gg. zhaomeijing@raspberrypi5 ,g$$$$$$$$$$$$$$$P. ------------------------ ,g$$P" """Y$$.". OS: Debian GNU/Linux 12 (bookworm) aarch64 ,$$P' `$$$. Host: Raspberry Pi 5 Model B Rev 1.0 ',$$P ,ggs. `$$b: Kernel: 6.6.20+rpt-rpi-2712 `d$$' ,$P"' . $$$ Uptime: 9 hours, 38 mins $$P d$' , $$P Packages: 3077 (dpkg) $$: $$. - ,d$$' Shell: bash 5.2.15 $$; Y$b._ _,d$P' Theme: PiXflat [GTK3] Y$$. `.`"Y$$$$P"' Icons: PiXflat [GTK3] `$$b "-.__ Terminal: /dev/pts/0 `Y$$ CPU: (4) @ 2.400GHz `Y$$. Memory: 590MiB / 4045MiB `$$b. `Y$$b. `"Y$b._ `""" zhaomeijing@raspberrypi5:~/workspace$ //------end

  • 2025-01-01
  • 回复了主题帖: 【EEWorld邀你来拆解第17期】——“爱国者硬盘播放器”拆解(修订版)

    <------补充一下------> 硬盘 2.5寸80GB容量的IDE接口的HDD机械硬盘,硬盘品牌为日立HITACHI,转速4200RPM。按照厂家信息,HDD采用了硅氧盘片,结合液压平衡滚轴系统,确保了数据的安全与稳定,让照片存储更安全放心。 对于厂家的产品系列来讲,更换不同容量的机械硬盘就可以了。 【图】硬盘基本参数 【图】暴力拆解后的盘片(手上没有趁手的工具,暴力拆解)  

  • 2024-12-31
  • 回复了主题帖: 【EEWorld邀你来拆解第17期】——“爱国者硬盘播放器”拆解(修订版)

    本帖最后由 卿小小 于 2025-1-1 17:10 编辑 【附件】产品说明书《数码相机伴侣王P8100说明书_V1.1.pdf》  

  • 发表了主题帖: 【EEWorld邀你来拆解第17期】——“爱国者硬盘播放器”拆解(修订版)

    本帖最后由 卿小小 于 2025-1-1 17:19 编辑 【EEWorld邀你来拆解第17期】——“爱国者硬盘播放器”拆解(修订版) 1. 概述 数码相机伴侣是一款数码照片存储器,兼具MP4功能。它产生的时代背景是2005+,此时软盘正在逐渐退出PC外设,笔记本价格基本在8k+~1w+范围,U盘容量256MB~2GB为主,VCD/DVD正在流行的尾声。在后续几年,随着摩尔定律的发展,PC(包括笔记本)价格逐步平民化,U盘性价比越来越高且普及程度越来越广(移动硬盘也逐步流行),便携式的MP4大放异彩,最终数码相机伴侣如同夜晚绚烂的焰火一般悄然落幕。 数码相机伴侣其实就是大容量的便携式的数码照片存储器,并且在存储的过程中无需电脑支持(由便携式锂电池供电),可以直接与数码相机连接进行数据的传输与存储。 本期拆品是EEWorld提供的P8100系列数码伴侣王,它是爱国者于2006年推出的一款当红产品。 2. 概览 2.1 产品概览 爱国者数码相机伴侣P8100是一款集多功能于一身的数码伴侣,以其专业级的存储和便捷的操作受到市场的欢迎。这款产品不仅支持大容量存储,还具备高清显示和多种媒体播放功能,自发布以来便受到了广泛关注。 2.2 外观设计 爱国者数码相机伴侣P8100采用了黑色机身搭配磨砂材质,不仅质感十足,还具有良好的防滑效果。其正面配备了一块4.0英寸的1600万色16:9高清液晶屏,分辨率高达480x272,显示效果细腻逼真,无论是浏览照片还是观看视频,都能带来极佳的视觉享受。机身设计以黑色为主色调,正面配有5个金属按键,整体线条流畅,握持感舒适,整体设计既简约又不失时尚。 【图】正面照(液晶屏有色块,怀疑是挤压导致) 【图】背面照 【图】接口照   【图】锂电池(里面其实是一节18650电池) 2.3 存储与兼容性 P8100支持40GB至160GB的存储容量,满足不同用户的需求。它兼容所有主流数码相机存储卡,包括CF/MD、SD/MMC/MS等,具备极强的兼容性。 2.4 基本参数 型号 数码伴侣王P8100(80G) 存储容量 80G 屏幕尺寸 4英寸 屏幕特性 1600万色16:9高清液晶屏,分辨率480x272 支持存储卡种类 主流数码相机存储卡CompactFlasn(CF)/ SmartMedia(SM)/MemoryStick(MS)/ScanDisk(SD)/ Multi Media Card(MMC)/MicroDrive 影音功能 MP4电影播放功能:支持MP4/VOB/DAT/MPG/AVI/MP3播放功能,录音功能 功能参数 一键拷贝技术/电子书,幻灯演示,游戏等多重功能/支持JPG,TIFF,GIFF,BMP格式照片浏览,照片浏览中可进行放大,缩小,360度旋转等操作 接口 USB 2.0接口(Micro-USB) 电源 2200mAh可更换式锂电池 2.5 功能特点 多格式支持:P8100支持JPG/GIFF/BMP等多种格式的照片浏览,同时兼容MP4、VOB、DAT、MPG、AVI等视频文件格式以及MP3、WMA、WAV等音频文件格式,满足了用户多样化的娱乐需求。 图片浏览功能强大:在浏览照片时,用户可以进行放大、缩小、360度旋转等操作,方便查看细节。 海量存储空间:提供40-160G的多种容量选择,轻松容纳数万张照片,解决了存储卡容量不足的问题。 无电存储功能:即使在无电状态下,P8100也能作为移动硬盘使用,方便数据的携带和传输。 电视输出功能:通过简单的操作,可以将P8100与电视连接,将照片和视频输出到大屏幕上欣赏,适合家庭聚会或朋友分享时使用。 录音、电子书、游戏等多重功能:除了基本的存储和播放功能外,P8100还具备录音、电子书阅读、小游戏等娱乐功能,丰富了用户的闲暇时光。 2.6 外观接口示意图 以下为个人绘制的外观接口示意图: 【图】爱国者P8100外观接口示意图 3. 拆解 拆解测试流程如下: 1.由于产品使用、保存或者运输的缘故,液晶屏有色块,按照经验推断是挤压导致; 2.尝试充电后竟然能开机,但是液晶屏呈现花屏状态,因此无法做视频播放等测试; 3.尝试连接PC检测,电脑会自动安装USB2.0驱动并显示为移动存储设备(80GB容量); 4.剩下的就是拆解了,在拆解过程中,塑料绝缘隔膜的胶水还是覆盖了一些芯片的丝印号导致无法有效识别。 3.1 充电开机 找了一根USB-A转Micro-USB的数据线充电,充电半小时后长按电源键竟然可以开机(右上角是电源指示灯)。 【图】开机状态(液晶屏已损坏,呈现花屏状态) 3.2 USB2.0功能 将Micro-USB接口连接电脑后,它作为USB2.0设备可以被PC端检测识别,数据读写是常规的USB2.0速率。 【图】USB2.0检测 3.3 内部结构 拧下侧面两颗固定螺丝,拆开背壳后,首先映入眼帘的是一块2.5寸80GB容量的IDE接口的HDD机械硬盘,硬盘品牌为日立HITACHI,转速4200RPM。按照厂家信息,HDD采用了硅氧盘片,结合液压平衡滚轴系统,确保了数据的安全与稳定,让照片存储更安全放心。 【图】拆开外壳后的硬盘 硬盘下方是主板区域,硬盘和主板通过防静电塑料薄膜隔开, 【图】拆下硬盘后的防护垫片 主板采用单板设计,集成度非常高。主板核心部件包括处理器、内存等,主板外设接口包括按钮开关、音视频接口、存储接口、USB接口等。同时单板焊接多处导电铜布,保证硬盘外壳与主板的冗余共地连接,极大的增强了防静电性能。 【图】主板 主板下方是一块4英寸的高清液晶屏,分辨率480x272(1600万色),显示比例16:9,这在当年实属豪华配置了。液晶屏通过FPC与主板相连。 【图】液晶屏幕   4. 系统分析 爱国者P8100采用的CPU是AMD-Alchemy方案的AU1200-500MSD,具有低功耗、高性能的特点。 Alchemy AU1200是一款低功耗、高性能的系统解决方案,它采MIPS内核的处理器,主频可达500MHz,并针对MP4播放器进行了专门的优化,支持诸如可扩展的DVD质量显示功能和直接从数字录像机传输视频内容的能力。该方案可支持的媒体格式包括MPEG1/2、MPEG4、WMV9、H.263、DivX、Xvid、MP3、WMA、WAV、ASF、 AVI、JPEG等。AU1200处理器的功耗极低,在播放D1(720×480)视频时功耗低于400mW。它可以支持大型显示屏(1024×768);支持DDR1和DDR2内存;集成媒体加速引擎,因此不需要外部DSP。另外,它还可支持USB 2.0 及OTG技术,具备LCD控制器、摄像头接口和互联网接入外设。操作系统支持Windows® CE.NET和Linux。 结合上述拆解内容,特别是主板照片,我总结了P8100的CPU系统方案架构(不包含电源部分): 【图】CPU系统方案架构图(无电源)   总的来讲,爱国者P8100的用料讲究,工艺精良,结构布局合理,内部结构设计巧妙紧凑,符合它当年的豪华身份。 【附件】附件为上述“爱国者P8100外观接口示意图”和“系统方案架构图”的原始绘图,使用免费开源软件draw.io绘制。   //------end

  • 2024-12-25
  • 回复了主题帖: 2025年测评中心,DigiKey得捷赞助继续,欢迎跟帖推你期待的上线的测品啦~

    希望出几款FPGA开发板: 1.Microchip的FPGA,最好带MIPI配件; 2.Xilinx或者Altera的FPGA,低中高端都可以; 3.其他。

统计信息

已有147人来访过

  • 芯积分:957
  • 好友:--
  • 主题:55
  • 回复:51

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言