国产“树莓派”有差距吗?买来测一测

原创 电子工程世界 2024-03-27 09:00

树莓派4曾在一段时间内炒到“天价”,成为理财产品,而国产“类似物”,也如雨后春笋一般,冒出许多国产派。

可以说,现在这些国产派,在硬件设计、资料丰富度、社区支持、稳定性等方面,与树莓派存在着明显差距,不过差距也在逐渐缩小。
那么,国产派与树莓派差距大吗?今天,我们就买来三款国产派——ART-Pi、小熊派、BIGTREETECH Pi,实际评测国产派到底什么水平。 

图源丨ProjectZarya 

 树莓派3B平替 BIGTREETECH PI开发板 


开箱评测

原帖地址:http://www.eeworld.com.cn/aSybHiD
这两年树莓派的价格真是一言难尽,有一个3b+在智能家居控制系统里面用,但平时自己又爱折腾点新花样...又没有新项目报销经费...所以就一直在看有没有国产板子可以替代。 
首先简单对比一下BIGTREETECH PI和树莓派3b的参数吧。芯片是老朋友全志h616,64位4和A53 频率略高于树莓派的BCM2837。616这几年大大小小的产品用的非常多,从电视盒、游戏机到开发板各种领域都在用,开发资料已经非常完善了。
40个gpio、蓝牙、无线、4个usb2.0、百兆网卡、microHDMI和3.5耳机孔这些基本都与树莓派一样,bigtree多了can、红外接收功能以及支持4k60hz的输出,总的来说性能已经超过我手中的树莓派3b+了。
开箱以后有这些东西:一只可爱的鸭鸭、一封感谢卡、主板、信号线、排线和散热器。 
主板主体 不得不说设计的是真好看诶,黑色主体,红白经典配色gpio用绿色点缀在主板上,我个人还是喜欢这种风格的。 
正面是h616,两颗金士顿4Gb,红外接口放在了gpio左侧。背面有内存卡槽和无线模块,附带的天线就是插在这里,使用网线或者离路由器近可以不装。 
资料方面给的很全,甚至连外壳的模型都设计好了去打印机直接打印就行。 
简单说一下软件方面,https://github.com/bigtreetech/CB1/releases 从这里面下载好专用的镜像文件,烧录到内存卡中,然后用读卡器打开boot分区的system.cfg文件,输入WiFi和密码。上电后就可以在路由器中找到BTT开头的设备了。记录一下设备的ip地址,用ssh工具远程连接就可以了。
这里注意一下主板type边上有一个红色跳线帽,如果用12v供电的话要拔下来,用type供电则不需要动。
我用的是moba,哈哈算是xshell的替代品了,小巧快捷该有的功能也都有,唯一的缺点是没有中文

显卡性能测试

原帖地址:http://www.eeworld.com.cn/aWL8iXT
本篇使用经典的测试程序来进行显卡的测试。
Glxgears
跑到90帧以上没问题
GL Mark 2
板卡音频设备输出测试
原帖地址:http://www.eeworld.com.cn/ayf9SiP
  1. 查看音频设备

执行命令:biqu@BTT-CB1:~$ aplay -l
检测到H616板卡的音频设备 
  1. 播放音乐

播放板卡系统内的音频文件 
执行命令:biqu@BTT-CB1:/usr/share/sounds/alsa$ aplay -D hw:2,0 audio.wav
  1. 音频音量大小的控制

使用alsamixer工具来控制音频设备 
使用命令:biqu@BTT-CB1:/usr/share/sounds/alsa$ alsamixer 
选择H616音频设备
 
H616音频设备控制界面
左右按键选择音频参数选项,上下按键参数大小。
 

USB摄像头测试

原帖地址:http://www.eeworld.com.cn/au10S40
USB摄像头连接到开发板后,执行命令:lsmod来查看内核加载的USB摄像头硬件设备,安装fswebcamm,执行拍照,生成的图片:
复制到电脑,打开图片:
安装motion软件,修改etc/default/motion配置,执行启动命令,在浏览器地址栏输入开发板的IP:8081,实时查看摄像头数据,这个软件延时有点严重,总是卡顿。 

CAN收发测试

原帖地址:http://www.eeworld.com.cn/aejrnzT
开发板与CAN卡调试助手之间收发通信结果:

SPI收发测试

原帖地址:http://www.eeworld.com.cn/aaTmLCS
执行命令:$ sudo ./spidev_test -v -D /dev/spidev1.1
不短接板卡上的PH7和PH8,收不到自发的数据,短接后,自发和收的数据一致SPI通信正常。

试试玩游戏

原帖地址:http://www.eeworld.com.cn/a0irrfT
原帖地址:http://www.eeworld.com.cn/a48Oav1
虽然本开发板专为3D打印而生,但是由于运行Debian完整系统,性能强,所以可以有很多玩法,等待打印之时玩玩游戏未尝不可。安装nes模拟器就可以玩转各种nes游戏,坦克大战,魂斗罗,冒险岛,都是儿时热门的游戏。玩这种小游戏开发板小才大用权当消遣,后面我们玩玩3D游戏,来体现在开发板的性能。 
坦克大战
冒险岛
前面我们玩转了NES游戏,有点不过瘾,开发板性能玩NES有点大才小用了,这一篇我们来玩玩torcs-自动驾驶训练游戏,体现下开发板的性能。
只有两帧多,看起来还是非常吃性能,不知道是不是没有使用GPU的缘故。

通过mqtt接入智能中枢

原帖地址:http://www.eeworld.com.cn/aO4mLmH
传感器就像智能家居的眼睛,收集环境中的各项数据,汇总起来按情况执行设定好的自动化程序。控制器相当于智能家居的手,自动化任务要通过控制器来实现。原有的项目中使用了温度、湿度、光照、可燃气、人体存在、人脸识别等传感器,舵机、门禁等执行器。
每个传感器都在不同房间的不同位置,所以想接入中枢只能靠无线的方式,目前主流的有蓝牙、WiFi、ZigBee。蓝牙传输距离较短,并且令需一个单片机控制蓝牙模块、ZigBee价格比较贵...每个传感器都配一个ZigBee,全屋大概有二三十个算下来成本惊人,而WiFi就比较友好了,资料多型号多传输距离长无需另外配网关,最关键的是成本极低!esp01s:8mbflash、2个gpio、3v供电71mA。可以说是带WiFi功能的单片机,个人小批量采购单价只需5r+! 
直接接入是不行的,需要通过我们前面搭建的mqtt服务器。可以这么理解:mqtt服务器是传输的数据中心,所有的传感器,后面的控制器,以及hass智能中枢都要接入它。
在传输过程中数据是不加密的,以广播的形式在局域网内发送,每个数据包都有一个Topic,网内所有设备都会收到这个数据包,但如果Topic与自己订阅的不相符设备就会直接丢弃,相符时才会进一步读取数据。
所以我们要为每一个传感器分配一个唯一的Topic(是每一个不是每一种哦)用来发布,然后hass要订阅所有传感器的Topic;每一个执行器要订阅一个唯一的Topic用来接收hass的指令。
虽然每个传感器都不一样,但大体思路是相同的。传感器:esp-01s配置好WiFi、mqtt地址、发布的Topic、读取传感器的数据,定时发送。执行器:配置好WiFi、mqtt地址、提前选好订阅的topic、构造好数据包结构、写好解包函数、写好动作函数。esp-01sflash太小是不好做ota了,所以一定要测试好程序,否则需要拆下来重新烧录,很麻烦。 
有一点要注意:正常开机运行时GPIO0是不可以下拉的,会进入烧录模式,有些传感器需要用到两个GPIO口,连接时需要注意。如果实在无法避免还有一个办法,先给esp-01s上电,延迟三秒再给传感器上电,这样就可以避免进入烧录模式,具体怎么实现就不细说了。
烧录好程序,上电,打开emqx服务器web端,就可以看到出现了一个新的连接。连接的传感器都可以在这里看到,一定要定义好名称,方便管理。
接下来将传感器的信息显示到hass面板上。在仪表盘里添加各种传感器即可。

边沿检测和视频推流(zmj)

原帖地址:http://www.eeworld.com.cn/a1OCWPC
**BIGTREETECH PI开发板的USB摄像头(UVC)可以十分轻松的实现基于OPENCV的边沿检测功能。
UVC通俗的讲就是USB摄像头,全称为USB Video Class,即:USB视频类,是一种为USB视频捕获设备定义的协议标准。 
USB摄像头的视频流主要通过python调用OpenCV库完成对每一帧图像的边沿检测,参数调节通过滑动条实时调节以获取更好结果,按下ESC键退出测试程序(不得不说python是真的强大)。
代码功能说明:
a.导入必要的库:cv2、numpy、video 和 sys。
b.创建两个滑动条:cv.namedWindow('edge') 用来显示边缘检测的结果窗口,cv.createTrackbar('thrs1', 'edge', 2000, 5000, nothing) 和 cv.createTrackbar('thrs2', 'edge', 4000, 5000, nothing) 用来设置边缘检测的参数。
c.创建一个视频捕获对象:cap = video.create_capture(fn),其中 fn 是指定的视频文件名。
d.在一个无限循环中,从视频捕获对象中读取帧数据:while True:。
e.将读取的帧数据转换为灰度图像:gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)。
f.对灰度图像进行边缘检测:edge = cv.Canny(gray, thrs1, thrs2, apertureSize=5)。
g.将原始图像和边缘检测结果合并:vis = img.copy(),然后将结果图像中非零像素的部分设为绿色:vis = np.uint8(vis/2.),最后将结果图像显示出来:cv.imshow('edge', vis)。
h.监听窗口的关闭事件:ch = cv.waitKey(5),如果按下了ESC键,则退出循环:if ch == 27:。
i.最后打印程序的文档字符串:print(__doc__),并关闭所有窗口:cv.destroyAllWindows()。
测试效果:

 小熊派折叠开发板 BearPi-HM Micro 


开箱评测

原帖地址:http://www.eeworld.com.cn/aDanfL8
原帖地址:http://www.eeworld.com.cn/a44mXP0
以前使用过小熊派的产品,感觉无论是从质量及技术支持、资料完整性上都是很丰富的。这次试用的BearPi-HM Nano开发板也是如此,最特别的是使用折叠方式,将4.3寸LED电容屏与主控板实现“背靠背”安装,很好地保护了FPC软排线,很细心也很有创意。想到我之前试用断的液晶屏的FPC线经常被各种原因融断,这种设计还是很为用户着想。
再看看主控板方面,主要器件都放在正面,如下图所示,采用的主控芯片为STM32MP157,保留了E53接口,可以与符合E53接口规范的板子连接,供电与下载都通过左下角的USB TYPE C口完成,总的来说功能还是很齐全的。 
这块板子亮点之二是使用鸿蒙操作系统Openharmony,OpenHarmony相是一个开源项目,具有最基础的操作系统能力,相当于安卓的AOSP。
type-c接口好评,不光是因为用了type-c口,而且是因为支持两端都是type-c的线,接触了几个使用type-c接口的开发板,有的开发板只是接口是,在type-c支持上不是很完美。
通过type-c线给板子供电后,屏幕就点亮了,4.3寸的屏,800X480的分辨率,已经很高了。开机自带了几个应用,天气、闹钟、计算器、曾经红极一时的2048。
天气默认的是杭州,因为没有联网,所以数据也就没有实际意义了,时间也没办法设置。然后居然还自带了锁屏功能,几张春夏秋冬的风景壁纸,看着舒服。
在设置里面可以看到一些具体的信息,比如系统版本Openharmony 3.0、硬件版本、软件版本、设备序列号等。
此外,官方配套入门视频教程、文档教程内容很详细,入门主要参考BearPi-HM Micro十分钟上手教程和B站视频。写得很详细。
工欲善其事,必先利其器,开始玩转这一开发板之前,先得把开发环境搭建好,遵照教程,需要通过多个工具来完成,包括
1、VMWare和Ubuntu操作系统,OpenHarmony采用Linux内核,这里推荐采用的是虚拟机+Ubuntu18.04操作系统
2、STM32CubeProgrammer(2.4.0以上版本),由于主控是STM32MP1系列芯片,下载程序自然首推本家的软件。
3、SSH连接工具、串口连接工具,开发可通过SSH连接Ubuntu环境,通过串口打印出运行日志,推荐使用MobaXterm、XShell等工具。 
4、RaiDrive工具,将虚拟机映射到Windows驱动盘的一个小工具。绿色版 
5、JRE、CH340驱动等。 

串口交互输出

原帖地址:http://www.eeworld.com.cn/aiHGSKG
通过几天的实践,对于Openharmomy有了更多的了解,比如怎么把一个简单的程序编译到系统里去。 
首先需要一个实现功能的源码程序,比如helloworld.c。还需要一个BUILD.gn文件。.gn文件是一种编译构建文件,类似于Cmake。相较于Cmake,当工程规模增大到难以想象的量级时,编译速度和工程模块的划分变得尤为重要,而gn便很好解决了这两个问题。Openharmomy的文档里,介绍了相关的.gn编码规范。
BUILD.gn基本结构如下 
import("//build/lite/config/component/lite_component.gni")

executable("生成的库名称") { output_name = "可执行文件名称" sources = [ "源文件" ] include_dirs = [] defines = [] cflags_c = [] ldflags = []}

lite_component("lite组件名") { features = [ ":库文件", ]}

导入 gni 组件,将源码编译成库文件,然后将库文件打包成 lite组件,同时,定义好了输出的可执行文件的名称。
将编译后的文件烧录进BearPi-HM Micro,烧录完成后,打开串口助手,通过串口助手,可以使用大部分的linux操作指令。
运行我们编译的程序,查看串口输出,成功打印了源文件里的内容。 
整个过程操作下来,发现和组件打交道的次数还是比较多的,OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。子系统是一个逻辑概念,它具体由对应的组件构成。 
组件就是对子系统的进一步拆分,可复用的软件单元,它包含源码、配置文件、资源文件和编译脚本;能独立构建,以二进制方式集成,具备独立验证能力的二进制单元。

利用HDF驱动框架实现LED闪烁

原帖地址:http://www.eeworld.com.cn/abLibDG
HDF(Hardware Driver Foundation)驱动框架,为驱动开发者提供驱动框架能力,包括驱动加载、驱动服务管理和驱动消息机制。旨在构建统一的驱动架构平台,为驱动开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。
基于HDF框架进行驱动的开发主要分为两个部分,驱动实现和驱动配置,驱动实现包含驱动业务代码和驱动入口注册,这两者开发文档里都提供了模板,比如驱动业务代码。 
实际编程时,就可以直接在此模板上扩展,比如BearPi-HM Micro提供的demo。 
驱动注册,就是实例化驱动入口,驱动入口必须为HdfDriverEntry(在 hdf_device_desc.h 中定义)类型的全局变量,且moduleName要和device_info.hcs中保持一致。HDF框架会将所有加载的驱动的HdfDriverEntry对象首地址汇总,形成一个类似数组的段地址空间,方便上层调用。
而对于驱动配置,HDF框架使用的是.HCS文件,.HCS文件全称是HDF Configuration Source,是HDF驱动框架的配置描述源码,内容以Key-Value为主要形式。它实现了配置代码与驱动代码解耦,便于开发者进行配置管理。HC-GEN(HDF Configuration Generator)是HCS配置转换工具,可以将HDF配置文件转换为软件可读取的文件格式:在弱性能环境中,转换为配置树源码或配置树宏定义,驱动可直接调用C代码或宏式APIs获取配置。在高性能环境中,转换为HCB(HDF Configuration Binary)二进制文件,驱动可使用HDF框架提供的配置解析接口获取配置。HCS经过HC-GEN编译生成HCB文件,HDF驱动框架中的HCS Parser模块会从HCB文件中重建配置树,HDF驱动模块使用HCS Parser提供的配置读取接口获取配置内容。 
和驱动实现一样,驱动配置同样包含两部分,HDF框架定义的驱动设备描述和驱动的私有配置信息,HDF框架定义的驱动设备描述位于:~\bearpi\project\bearpi-hm_micro_small\device\st\bearpi_hm_micro\liteos_a\hdf_config\device_info\device_info.hcs。驱动的私有配置信息,则是用户自己添加的配置信息,比如这里的~\bearpi\project\bearpi-hm_micro_small\device\st\bearpi_hm_micro\liteos_a\hdf_config\led\led_config.hcs
最后,是需要将需要将该配置文件添加到板级配置入口文件hdf.hcs
device\st\bearpi_hm_micro\liteos_a\hdf_config\hdf.hcs 
关于GPIO口的操作,GPIO驱动已经提供了相关的接口。
 
然后就是led闪烁的业务代码编写了,就是驱动程序指令接受的的代码,用户态向内核态发送指令。 
int32_t LedDriverDispatch(struct HdfDeviceIoClient *client, int cmdCode, struct HdfSBuf *data, struct HdfSBuf *reply){    uint8_t contrl;    HDF_LOGE("Led driver dispatch");    if (client == NULL || client->device == NULL)    {        HDF_LOGE("Led driver device is NULL");        return HDF_ERR_INVALID_OBJECT;    }

switch (cmdCode) { /* 接收到用户态发来的LED_WRITE_READ命令 */ case LED_WRITE_READ: /* 读取data里的数据,赋值给contrl */ HdfSbufReadUint8(data,&contrl); switch (contrl) { /* 开灯 */ case LED_ON: GpioWrite(g_Stm32Mp1ILed.gpioNum, GPIO_VAL_LOW); status = 1; break; /* 关灯 */ case LED_OFF: GpioWrite(g_Stm32Mp1ILed.gpioNum, GPIO_VAL_HIGH); status = 0; break; /* 状态翻转 */ case LED_TOGGLE: if(status == 0) { GpioWrite(g_Stm32Mp1ILed.gpioNum, GPIO_VAL_LOW); status = 1; } else { GpioWrite(g_Stm32Mp1ILed.gpioNum, GPIO_VAL_HIGH); status = 0; } break; default: break; } /* 把LED的状态值写入reply, 可被带至用户程序 */ if (!HdfSbufWriteInt32(reply, status)) { HDF_LOGE("replay is fail"); return HDF_FAILURE; } break; default: break; } return HDF_SUCCESS;}


通过代码可以感受到OpenHarmony的设备开发中的驱动调用与单片机的驱动开发不太相同,单片机的驱动调用往往是采用函数调用的方式,但是OpenHarmony没有这样的操作,驱动调用采用的是驱动程序向用户态暴露server后,程序才能通过Dispatch的方式发送指令到驱动程序,并可以将用户态的数据携带到驱动程序,也可以从驱动程序读出数据。像上面的代码就是通过Dispatch向驱动程序发送指令从而实现LED灯的亮灭,当然,内核态也可以向用户态发送数据。
和上一篇,helloword一样,还需要编译文件,对于业务代码,和上一篇一模一样的操作,配置BUILD.gn、applications.json、config.json。对于驱动文件,不但需要自己写的BUILD.gn,还需要修改~\bearpi\project\bearpi-hm_micro_small\device\st\drivers\BUILD.gn
最后编译,烧录到板子了,和之前一样,打开串口助手 ,通过指令操作led的亮灭状态变化。
 

试用总结

原帖地址:http://www.eeworld.com.cn/a0WXX1G
两个月的试用时间,可以说小熊派BearPi-HM Micro真的是一块适合来入门OpenHarmony的板卡,在这之前,完全没有接触过OpenHarmony的代码,这次通过一步步的实践,对OpenHarmony有了很多的认识和了解,不然一直觉得OpenHarmony挺神秘的。
从搭建环境到第一次成功编译源码,都是满满的成就感。虽然遇到各种问题,但是正是在解决这些问题过程当中去认识和了解OpenHarmony的方方面面。对于学习OpenHarmony,小熊派提供的资料可以帮助入门,但是想了解更多,比如为啥这么操作,中间的一些原理,小熊派提供的资料就显得有点不够的,就要推荐看官方的文档了。
官方文档写的很详细,包括一些名词都有介绍,可以说小熊派的资料告诉你怎么去操作,而官方的文档,就是告诉你为什么这么操作,两者结合起来就是知其然知其所以然。官方文档是用markdown写的,所以也可以去自己编辑、备注都很方便。 
小熊派BearPi-HM Micro的优点很明显,缺点也是存在的,就是资料的开放性,比如底层bootloader部分,这部分对于想更深入的了解和学习OpenHarmony在STM32的引导过程还是比较重要的,虽然说会开源,但是一直是延期。另一方面不全的就是板卡硬件驱动这块,作为驱动开发方向(小熊派分南向驱动、北向应用),板载这块应该是主要起点。可能是因为部分功能还在完善中,感觉后期可能会补上这块吧,不然少了这部分对于开发就不完整了。 

 ART-Pi:高性能H7芯片、DIY利器 


开箱评测

原帖地址:http://www.eeworld.com.cn/aD4in5G
发布的时候犹豫了一下,然后就赶上芯片价格暴涨,板子价格也水涨船高了
透明的塑料盒包装,看着不错,就是耐不住快递的暴力,收到的时候,两边碎了,还好板子安然无恙 
 
先来体验一下ART-Pi自带的demo,不同于以往的开发板,自带的demo一般是按键控制led亮灭或者led的闪烁频率,ART-Pi自带的demo,综合了整个板子的硬件资源。
用自带的type-c线连接电脑,会开始安装驱动。 
对于stlink部分的驱动,不建议网上下载,即使官网也好多个版本,容易出错,一直以来用的稳妥办法就是安装keil、IAR、cubeMX之类的编辑软件下的驱动,省时省力,效果好
和ST的nucleo板驱动一样,还会映射一个盘符。
一切ok后,就可以打开一个微信小程序了,WIFI配网助手。 
要打开手机蓝牙,看来是通过蓝牙,传输WIFI的SSID和密码。 
可以扫描蓝牙设备,不能扫描附近的WiFi,要手动填入,然后就很顺利的连接成功了。
打开获取的IP,是一个网页,动态显示了板子上的一些资源信息以及网络状况,因为没有插入SD卡,所以SD卡容量为0 
网页和板子的还有一个互动就是,控制板子上一个蓝色和红色的led亮灭。
可以看出,确实是把板载的资源全部用上了。 
让ART-Pi持续运行了一个小时的demo,此时用手去触摸H7芯片,摸个几秒就不行了,太烫了,看来这种综合性的应用散热措施是必须要加的啊。

联网同步时间、实现自动连接WiFi

原帖地址:http://www.eeworld.com.cn/aibbHC8
ART-Pi板载了一个AP6212模块,AP6212是正基AMPAK推出的一款低功耗高性能的WiFi+BT4.2模块,该模块符合802.11b/g/n,其中WiFi功能采用SDIO接口,蓝牙采用UART/I2S/PCM接口,具有StationMode,SoftAP,P2P功能等。 
惯例从一个空白模板工程开始,在RT-Thread Setting里打开板载外设AP6212,因为是板级支持包的缘故,到这rt-thread就已经完成初始化AP6212以及网卡了,对比加入AP6212前后,finish组件支持的命令,可以发现增加了很多 。  
利用wifi命令,可以实现一些常用操作,比如扫描附件无线信号 ,比如使用join命令来连接WiFi等等。
成功分配地址,尝试ping rt-thread的官网,ping通过。
网络连接ok后,就是获取时间的问题了,rt-thread软件包里有一个netutils的网络工具集。 
在软件包里就提供了NTP工具来实现获取NTP服务器的时间 
编译下载后,运行却报错了,才想起了,这个包要打开RTC。
为了省事,直接打开软件模拟RTC,因为硬件RTC的话,还需要在board_init里添加RTC的初始化部分代码后,才能完成调用,直接打开软件模拟就省了硬件初始化。 
成功获取服务器时间,但是这个还存在一个问题,每次上电后想要查询时间,都要手动连接WiFi,不能自动连接。想到了在体验ART-Pi的一些demo时,WiFi是可以上电自动连接的,那就来移植一下这个功能。 
复制到刚新建的模板工程里,因为只复制了这两个函数的调用,所以肯定会报一堆错,那就根据错误来一点点添加,首先找到这两个函数的实体所在,wifi_config.c、wlan_mgnt.c,复制到模板工程。
一直修改到无报错和警告后,下载到板子上,可以看到Auto Connect功能已经使能了。 

 

断电,再上电,已经可以实现自动连接,然后获取时间的效果了。 

应用RL-TCPnet实现以太网收发功能及DTU

原帖地址:http://www.eeworld.com.cn/anfLuLC
关于RTX和RL-TCPnet的应用,不得不提一下安富莱电子,不少经验和技能的积累都来自于对armfly的关注,引用要有出处。这篇文章主要是网络组件的应用。使用MDK的好处是可以方便添加RTX和其组件,反之,为了使用RTX使用MDK是最方便的。首先还是根据原理图更新ETH接口的引脚初始化。 
工程代码更新以后,主要就是RL-TCPnet的移植。RTE环境依然继承了这些功能,选择CMSIS Driver,这也就是硬件层的接口,然后勾选Network中的相关选项。我手里没有ART-Pi的扩展板,但是有个LAN8720的模块,正好ARM 有提供标准的驱动,测试下是否可以使用。还可以使用Eric2013改进的具有软件复位的驱动,同样符合CMSIS Driver驱动规范。并且剥离了驱动层的相关文件,更利于更换PHY后或修改电路后的移植工作的进行。 
配置后编译代码发现了如下错误,应该是属于编译器方面的问题,工程一直默认是AC6,这个at()使用不符合语法。
搜索后发现安富莱论坛有相关问题,并且版主给出了解决方法,代码修改如下,这是其中一个方案。另外一个方案呢,就是使用AC5编译器,不会报这个错误,如非必要直接切换编译器使用可能更方便些,毕竟点点鼠标比改代码来的方便,哈哈。
还要根据自己的链路上图几项内容配置好,代码的细节不展示了,需要修改的地方整理好了,网络基本也可以通了。目睹一下真容,使用杜邦线连接的模块,与电脑网线直连,<1ms妥妥的。
到这里还要结合上一篇串口应用,进行简单的数据透传。主要利用消息队列传递内容,为后续的指令传递做好预备工作。基于现有的工程,只需要创建消息队列,串口收到数据就往里填,tcp检测到队列数据就发送到客户端,也就是测试用的PC上位机。反之,tcp收到数据直接串口发送出去,这个环回逻辑就实现了基础的DTU功能。
经过一些排错和调试后,就得到了如下测试结果。间隔50ms定时发送测试一段时间后,收发计数依然对的上,用来做一些指令的传递还是没问题的。

VNC模式下的GUI设计框架

原帖地址:http://www.eeworld.com.cn/afbHCOK
enWin新的版本也有了趋近现代化的设计工具,因为此前做项目时候还是用的GUIBuilder。新的工具一定是更加便捷和高效的,SEGGER还是做了不少精品的。接下来 
就进行新工具使用前的准备工作。
1、首先要移植STemWin,在上一次的基础上需要添加一些库文件,也就是emWin的Lib文件以及硬件接口文件,主要部分如下
2、硬件接口驱动的完善,包括内存的分配,显示尺寸、颜色转换等内容。再次站在巨人肩旁上,应用安富莱的底层驱动,因为确实做的比较完善,优化上也下来很大功夫。经过一些调试后,得到了如下的结果,可以正常显示界面。因为打算使用VNC,所以不再移植触摸,显示只是为了能够方便适配底层和远程显示的对比。 
3、网络配置。需要有TCP/IP的支持,之前已经做好的了网络通信,可直接应用在工程中。因此只需要在代码添加VNC所需的库函数进行服务初始化操作即可。
GUI_VNC_X_StartServer(0, 0);
GUI_VNC_SetPassword("123456");
GUI_VNC_SetProgName("ART-Pi");
GUI_VNC_RingBell();
5、安装segger的小工具,在MDK的安装文件夹arm下有,各种开发emWin用到的软件聚集在这里。
安装emVNC后,打开会要求输入IP地址,根据板卡设定输入,点击连接后就会出现这样的画面了。 
至此,可以使用PC小工具进行STemWin界的预览和操作了,比较方便,也不需要一直连接屏幕了。甚至可以替代嵌入式WEB服务器来进行一些交互操作,省去了要设计网页代码的烦恼。接下来要使用新的AppWizard来进行界面的简单功能设计。
VNC的通信已经在之前调试好了,那么做一下UI的设计就可以了。说起UI又爱又恨,这不无奈之下操起Builder做了一下基本结构。
对照上位机简略的实现压力波形显示,运动信息显示,过程控制按钮,信息记录。这还只是最初的外观,必要的修饰和填充肯定还要做。项目或者说是这次评测的。 

搭建ModBus仿真环境

原帖地址:http://www.eeworld.com.cn/aKSqbnT
工业应用中,ModBus用的也是很广泛的,RTT的软件组件提供了很多的便捷,利用串口以及ModBus模拟软件,可以很快的实现相应的功能。
首先连接硬件,还是用串口连接PC,以便用仿真软件实现ModBus功能。
然后,打开RTT Stdio,更改项目配置(用的是上次通过串口开关LED的项目) 
更改RTT Settings后,需要Ctrl-S进行保存。
主要实现串口,编译无错后下载至开发板。
打开终端,按下tab键后可以看到uart_sample的命令,键入uart_sample命令, 然后,pc端打开串口调试器, 就可以得到发送值+1的回馈值了, 串口功能验证之后,在RTT Settings中添加ModBus的软件包,然后配置freemodbus,更改后Ctrl-S保存,然后编译,下载至开发板。然后打开终端,并键入tab键,可以看到mb_master_sample命令了,利用modbus slave模拟modbus设备。
终端键入mb_master_sample命令后,就可以看到ModBus的值发生变化了。 
每500ms上述寄存器数值发生变化。

usb接口访问板载存储,模拟U盘

原帖地址:http://www.eeworld.com.cn/avPqX54
ART-Pi的板载存储还是很丰富的,比如SPI FLAS、SDRAM、内部flash、SD卡,基本该有的都有。前面几篇已经涉及的差不多了,对于这些存储的访问有多种方式,可以MCU直接读取,可以MCU读取串口发送到电脑,也可以USB直接访问读写。
首先,依旧是先建一个空白工程,对于空白工程,可以看一下,只打开了UART和pin设备。在建好的空白工程里打开文件系统设置,打开文件系统后,就会出现SD卡和spi flash,那就同时挂载这两个吧,编译烧录,再来对比一下设备变化。 
测试一下文件传输,发现对于文件的传输,应该还要优化下程序,小文件都没问题,可以很顺利的拷贝,但是对于几个G的电影,就会传输卡死。
最后,就是ART-Pi最好要加上散热片,运行时,真的是烫手。


· END ·






电子工程世界 关注EEWORLD电子工程世界,即时参与讨论电子工程世界最火话题,抢先知晓电子工程业界资讯。
评论
  • RGB灯光无法同步?细致的动态光效设定反而成为产品客诉来源!随着科技的进步和消费者需求变化,电脑接口设备单一功能性已无法满足市场需求,因此在产品上增加「动态光效」的形式便应运而生,藉此吸引消费者目光。这种RGB灯光效果,不仅能增强电脑周边产品的视觉吸引力,还能为用户提供个性化的体验,展现独特自我风格。如今,笔记本电脑、键盘、鼠标、鼠标垫、耳机、显示器等多种电脑接口设备多数已配备动态光效。这些设备的灯光效果会随着音乐节奏、游戏情节或使用者的设置而变化。想象一个画面,当一名游戏玩家,按下电源开关,整
    百佳泰测试实验室 2025-02-27 14:15 137浏览
  • 构建巨量的驾驶场景时,测试ADAS和AD系统面临着巨大挑战,如传统的实验设计(Design of Experiments, DoE)方法难以有效覆盖识别驾驶边缘场景案例,但这些边缘案例恰恰是进一步提升自动驾驶系统性能的关键。一、传统解决方案:静态DoE标准的DoE方案旨在系统性地探索场景的参数空间,从而确保能够实现完全的测试覆盖范围。但在边缘案例,比如暴露在潜在安全风险的场景或是ADAS系统性能极限场景时,DoE方案通常会失效,让我们看一些常见的DoE方案:1、网格搜索法(Grid)实现原理:将
    康谋 2025-02-27 10:00 252浏览
  • 应用趋势与客户需求,AI PC的未来展望随着人工智能(AI)技术的日益成熟,AI PC(人工智能个人电脑)逐渐成为消费者和企业工作中的重要工具。这类产品集成了最新的AI处理器,如NPU、CPU和GPU,并具备许多智能化功能,为用户带来更高效且直观的操作体验。AI PC的目标是提升工作和日常生活的效率,通过深度学习与自然语言处理等技术,实现更流畅的多任务处理、实时翻译、语音助手、图像生成等功能,满足现代用户对生产力和娱乐的双重需求。随着各行各业对数字转型需求的增长,AI PC也开始在各个领域中显示
    百佳泰测试实验室 2025-02-27 14:08 255浏览
  • 2025年2月26日,广州】全球领先的AIoT服务商机智云正式发布“Gokit5 AI智能体开发板”,该产品作为行业首个全栈式AIoT开发中枢,深度融合火山引擎云原生架构、豆包多模态大模型、扣子智能体平台和机智云Aiot开发平台,首次实现智能体开发全流程工业化生产模式。通过「扣子+机智云」双引擎协同架构与API开放生态,开发者仅需半天即可完成智能体开发、测试、发布到硬件应用的全流程,标志着智能体开发进入分钟级响应时代。一、开发框架零代码部署,构建高效开发生态Gokit5 AI智能体开发板采用 “
    机智云物联网 2025-02-26 19:01 162浏览
  • 在物联网领域中,无线射频技术作为设备间通信的核心手段,已深度渗透工业自动化、智慧城市及智能家居等多元场景。然而,随着物联网设备接入规模的不断扩大,如何降低运维成本,提升通信数据的传输速度和响应时间,实现更广泛、更稳定的覆盖已成为当前亟待解决的系统性难题。SoC无线收发模块-RFM25A12在此背景下,华普微创新推出了一款高性能、远距离与高性价比的Sub-GHz无线SoC收发模块RFM25A12,旨在提升射频性能以满足行业中日益增长与复杂的设备互联需求。值得一提的是,RFM25A12还支持Wi-S
    华普微HOPERF 2025-02-28 09:06 143浏览
  • 请移步 gitee 仓库 https://gitee.com/Newcapec_cn/LiteOS-M_V5.0.2-Release_STM32F103_CubeMX/blob/main/Docs/%E5%9F%BA%E4%BA%8ESTM32F103RCT6%E7%A7%BB%E6%A4%8DLiteOS-M-V5.0.2-Release.md基于STM32F103RCT6移植LiteOS-M-V5.0.2-Release下载源码kernel_liteos_m: OpenHarmon
    逮到一只程序猿 2025-02-27 08:56 195浏览
  • 美国加州CEC能效跟DOE能效有什么区别?CEC/DOE是什么关系?美国加州CEC能效跟DOE能效有什么区别?CEC/DOE是什么关系?‌美国加州CEC能效认证与美国DOE能效认证在多个方面存在显著差异‌。认证范围和适用地区‌CEC能效认证‌:仅适用于在加利福尼亚州销售的电器产品。CEC认证的范围包括制冷设备、房间空调、中央空调、便携式空调、加热器、热水器、游泳池加热器、卫浴配件、光源、应急灯具、交通信号模块、灯具、洗碗机、洗衣机、干衣机、烹饪器具、电机和压缩机、变压器、外置电源、消费类电子设备
    张工nx808593 2025-02-27 18:04 120浏览
  • Matter 协议,原名 CHIP(Connected Home over IP),是由苹果、谷歌、亚马逊和三星等科技巨头联合ZigBee联盟(现连接标准联盟CSA)共同推出的一套基于IP协议的智能家居连接标准,旨在打破智能家居设备之间的 “语言障碍”,实现真正的互联互通。然而,目标与现实之间总有落差,前期阶段的Matter 协议由于设备支持类型有限、设备生态协同滞后以及设备通信协议割裂等原因,并未能彻底消除智能家居中的“设备孤岛”现象,但随着2025年的到来,这些现象都将得到完美的解决。近期,
    华普微HOPERF 2025-02-27 10:32 214浏览
  •           近日受某专业机构邀请,参加了官方举办的《广东省科技创新条例》宣讲会。在与会之前,作为一名技术工作者一直认为技术的法例都是保密和侵权方面的,而潜意识中感觉法律有束缚创新工作的进行可能。通过一个上午学习新法,对广东省的科技创新有了新的认识。广东是改革的前沿阵地,是科技创新的沃土,企业是创新的主要个体。《广东省科技创新条例》是广东省为促进科技创新、推动高质量发展而制定的地方性法规,主要内容包括: 总则:明确立法目
    广州铁金刚 2025-02-28 10:14 103浏览
  •         近日,广电计量在聚焦离子束(FIB)领域编写的专业著作《聚焦离子束:失效分析》正式出版,填补了国内聚焦离子束领域实践性专业书籍的空白,为该领域的技术发展与知识传播提供了重要助力。         随着芯片技术不断发展,芯片的集成度越来越高,结构也日益复杂。这使得传统的失效分析方法面临巨大挑战。FIB技术的出现,为芯片失效分析带来了新的解决方案。它能够在纳米尺度上对芯片进行精确加工和分析。当芯
    广电计量 2025-02-28 09:15 116浏览
  • 一、VSM的基本原理震动样品磁强计(Vibrating Sample Magnetometer,简称VSM)是一种灵敏且高效的磁性测量仪器。其基本工作原理是利用震动样品在探测线圈中引起的变化磁场来产生感应电压,这个感应电压与样品的磁矩成正比。因此,通过测量这个感应电压,我们就能够精确地确定样品的磁矩。在VSM中,被测量的样品通常被固定在一个震动头上,并以一定的频率和振幅震动。这种震动在探测线圈中引起了变化的磁通量,从而产生了一个交流电信号。这个信号的幅度和样品的磁矩有着直接的关系。因此,通过仔细
    锦正茂科技 2025-02-28 13:30 100浏览
  • 更多生命体征指标风靡的背后都只有一个原因:更多人将健康排在人生第一顺位!“AGEs,也就是晚期糖基化终末产物,英文名Advanced Glycation End-products,是存在于我们体内的一种代谢产物” 艾迈斯欧司朗亚太区健康监测高级市场经理王亚琴说道,“相信业内的朋友都会有关注,最近该指标的热度很高,它可以用来评估人的生活方式是否健康。”据悉,AGEs是可穿戴健康监测领域的一个“萌新”指标,近来备受关注。如果站在学术角度来理解它,那么AGEs是在非酶促条件下,蛋白质、氨基酸
    艾迈斯欧司朗 2025-02-27 14:50 400浏览
  • 1,微软下载免费Visual Studio Code2,安装C/C++插件,如果无法直接点击下载, 可以选择手动install from VSIX:ms-vscode.cpptools-1.23.6@win32-x64.vsix3,安装C/C++编译器MniGW (MinGW在 Windows 环境下提供类似于 Unix/Linux 环境下的开发工具,使开发者能够轻松地在 Windows 上编写和编译 C、C++ 等程序.)4,C/C++插件扩展设置中添加Include Path 5,
    黎查 2025-02-28 14:39 140浏览
  • 振动样品磁强计是一种用于测量材料磁性的精密仪器,广泛应用于科研、工业检测等领域。然而,其测量准确度会受到多种因素的影响,下面我们将逐一分析这些因素。一、温度因素温度是影响振动样品磁强计测量准确度的重要因素之一。随着温度的变化,材料的磁性也会发生变化,从而影响测量结果的准确性。因此,在进行磁性测量时,应确保恒温环境,以减少温度波动对测量结果的影响。二、样品制备样品的制备过程同样会影响振动样品磁强计的测量准确度。样品的形状、尺寸和表面处理等因素都会对测量结果产生影响。为了确保测量准确度,应严格按照规
    锦正茂科技 2025-02-28 14:05 134浏览
  • 在2024年的科技征程中,具身智能的发展已成为全球关注的焦点。从实验室到现实应用,这一领域正以前所未有的速度推进,改写着人类与机器的互动边界。这一年,我们见证了具身智能技术的突破与变革,它不仅落地各行各业,带来新的机遇,更在深刻影响着我们的生活方式和思维方式。随着相关技术的飞速发展,具身智能不再仅仅是一个技术概念,更像是一把神奇的钥匙。身后的众多行业,无论愿意与否,都像是被卷入一场伟大变革浪潮中的船只,注定要被这股汹涌的力量重塑航向。01为什么是具身智能?为什么在中国?最近,中国具身智能行业的进
    艾迈斯欧司朗 2025-02-28 15:45 221浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦