你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【开源个小项目】稳定运行2年不死机,网络摄像头之VNC版本

[复制链接]
baiyongbin2009 发布时间:2018-6-29 14:56

  V- W7 s, c6 b1 |+ N
: {+ n3 h1 }1 ~; N
说明:1 e5 U' K3 d: ]3 @
1、前段时间开源了一个网络摄像头的TCP版本
链接,这次再来一个远程VNC的版本。使用更方便,无需大家制作上位机软件了,也不需要显示屏,使用外部SRAM虚拟一个显示屏。
% M2 f# d7 t  x# W2、这个工程是之前测试RL-TCPnet网络协议栈稳定性的时候做的,一共做了三个版本,第三个版本稳定运行快2年的时候,停止测试了,测试期间连续运行,不断电。6 n- c! E' |# n0 L: \
3、这个Demo相比之前的TCP版本要复杂不少,主要有以下几点
/ b" \# ?: I4 g5 n* q' Y1 m(1)VNC 服务器使用外部SRAM虚拟出一个显示屏,除了打点和读点,全部使用DMA方式实现,有效降低CPU利用率。5 }% U% Z2 j& |3 Z4 _
(2)RL-TCPnet的实现采用事件触发的方式,这样将有效降低CPU利用率。
  d, s, b: g- h6 {/ C(3)摄像头接口要DMA数据到外部SRAM。
7 R2 k$ i( |- Z6 y# l(4)emWin的实现也是DMA方式虚拟到SRAM里面的,并且emWin动态内存也是SRAM,这种情况下,对于总线性能的要求非常高。
' U1 I4 z' j' n' K1 E(5)以太网也是用的DMA方式。) y$ s  q4 c1 h  s% ?  i( H4 O

& t# l( q6 B  J$ I' ]8 Q# k- y尽管多处都进行了DMA优化,实际跑起来的时候CPU利用率依然可以飙升到70%。加上DMA的占用,F4的总线矩阵性能几乎被榨干。
0 O6 p* F, N: t' e
1 u2 B4 J6 R( s! ^( ?
使用注意事项:& {$ n9 n+ R. Z
1、配套的下位机是基于RTX4+RL-TCPne + emWin VNC实现,务必使用MDK4.74进行编译,其它MDK版本未做测试。: \* |+ h" X7 f
2、测试例子时用的DM9161/9162网口,务必接到路由器或者交换器上面测试,因为VNC是采用的NetBIOS Name进行测试的。
/ Q; i& Q* ]* V( p: W3、下载例子后等待LED3和LED4闪烁了再进行连接。
5 Y; J/ C% \2 |' Z  j2 n8 t  W4、关闭的时候,务必先关闭摄像头,因为摄像头非常占用系统性能,下次才可以快速登录。
5、当前对V5开发板做了支持,后面有精力做个V6的。
- U) @2 w+ o! m. b- n& X* q) y. X3 Y: y1 H; z9 q
# X+ \, z# {* Z1 o: R
9 w/ C5 N, [) S; f; B5 u2 J5 T) s7 v
/ v0 ?4 g) `1 d  L3 v" {: \5 ~
开启了最高等级的三级优化和时间优化:; O5 _+ `; ?6 @/ J/ o
3.1.png
$ L$ C8 l: u% i& W' g! e
RTX任务运行效果:
6 X/ ]8 k, ?" I
3.2.png

) u: X: \. @3 q" P8 B# ~0 q" u; }+ z

% x. B; a9 U# J* {, C$ C+ v4 h! H! Q0 Z3 X! h
2 \3 F" a2 K+ g3 @
Demo下载:
- N; ~& S; _/ Z+ s9 X9 u
网络摄像头之远程VNC版.rar (8.35 MB, 下载次数: 33)
赞 收藏 6 评论5 发布时间:2018-6-29 14:56

举报

5个回答
forget121 回答时间:2018-6-29 15:31:48
厉害了,顶一下
xiajintaord 回答时间:2018-6-29 15:50:39
本帖最后由 xiajintaord 于 2018-6-29 15:51 编辑 1 C! f) i5 m4 k" }1 {3 Q$ W1 }
  1. 原来是用这个方法统计CPU使用率的,可以说是很好的利用了RTX的特性了
复制代码
  1.     for (;;)
    ! [8 C) f# a2 ?/ H
  2.         {( m+ j8 y$ O3 N' [/ X  k/ }- z
  3.         //__disable_irq();5 I. w' H6 m' {. D' B/ P
  4.         OSIdleCtrRun = OSIdleCtr;    /* 获得100ms内空闲计数 */6 `: T" \* ^7 P  p* A( ^
  5.         OSIdleCtr    = 0uL;          /* 复位空闲计数 */
    6 A' K& Q7 ~( n- m* w
  6.                //__enable_irq();            /* 计算100ms内的CPU利用率 */
    , A9 w8 t6 J4 c+ ~. g$ s+ Y: Y  Q
  7.         OSCPUUsage   = (100uL - (float)OSIdleCtrRun / OSIdleCtrMax);/ h; u) {! r+ }* E7 o' F0 t' Z
  8.         os_dly_wait(100);            /* 每100ms统计一次 */1 Z* o1 [. K/ w0 w& n7 [9 k) P
  9.     }
复制代码

9 s2 i! ?- e# b/ E( G
. d( L0 |4 J- N
baiyongbin2009 回答时间:2018-6-29 18:33:24
: N$ |5 d! _7 ^. Z2 ?$ P7 h0 k0 {, q6 @
是的
zcl201207 回答时间:2018-6-29 22:58:10
七哥 回答时间:2018-7-1 23:03:08
厉害了,谢谢分享
4 N! F+ T1 a- c5 \( }支持一下楼主* k9 Y% V% q2 |+ n1 Q
! O) q) y$ |% G9 k) f7 }
此贴应该打标
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版