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

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

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

0 V/ y8 f$ s. ^8 v. Q* ?2 v
9 H( n* I2 L  p
说明:7 j) z0 w3 s; d3 Q4 P! Q
1、前段时间开源了一个网络摄像头的TCP版本
链接,这次再来一个远程VNC的版本。使用更方便,无需大家制作上位机软件了,也不需要显示屏,使用外部SRAM虚拟一个显示屏。
% [# t$ S4 J6 X; V4 f; F9 l4 v2、这个工程是之前测试RL-TCPnet网络协议栈稳定性的时候做的,一共做了三个版本,第三个版本稳定运行快2年的时候,停止测试了,测试期间连续运行,不断电。( j) V0 ~2 m) v
3、这个Demo相比之前的TCP版本要复杂不少,主要有以下几点" b0 x* P1 w8 m/ t* x, L9 P
(1)VNC 服务器使用外部SRAM虚拟出一个显示屏,除了打点和读点,全部使用DMA方式实现,有效降低CPU利用率。
. D4 G1 q$ Y% R8 K(2)RL-TCPnet的实现采用事件触发的方式,这样将有效降低CPU利用率。
( ~/ G  e1 ?) G* C(3)摄像头接口要DMA数据到外部SRAM。
& F. \( X0 ^- Z( Y2 |+ T(4)emWin的实现也是DMA方式虚拟到SRAM里面的,并且emWin动态内存也是SRAM,这种情况下,对于总线性能的要求非常高。$ o# @: H4 M/ c0 [5 d+ c( V" ~
(5)以太网也是用的DMA方式。/ P0 T. ?. ~, G$ r

+ u7 U6 S/ y$ i3 M2 H% e  e# N尽管多处都进行了DMA优化,实际跑起来的时候CPU利用率依然可以飙升到70%。加上DMA的占用,F4的总线矩阵性能几乎被榨干。9 p+ O, o, i! q* w" p" T' q

! K3 \+ W7 |; Y. {' f5 _使用注意事项:
5 v) q1 N6 p$ a  `1、配套的下位机是基于RTX4+RL-TCPne + emWin VNC实现,务必使用MDK4.74进行编译,其它MDK版本未做测试。4 q- _) z5 G, R4 Z
2、测试例子时用的DM9161/9162网口,务必接到路由器或者交换器上面测试,因为VNC是采用的NetBIOS Name进行测试的。
5 l, L! `- N/ x; {/ n* p9 V: P( g3、下载例子后等待LED3和LED4闪烁了再进行连接。
4 Z7 |. O+ E7 y4 Y4、关闭的时候,务必先关闭摄像头,因为摄像头非常占用系统性能,下次才可以快速登录。
5、当前对V5开发板做了支持,后面有精力做个V6的。  l& ]2 c/ E3 ^7 c0 z0 A' {+ ?
1 i; ^5 }" b7 I( M# Q
2 U; ^' F: d% }' }
2 u" p& x+ z5 t1 x! _/ K

: ~! Z3 I7 O# u$ A1 b
开启了最高等级的三级优化和时间优化:, }9 |' b, E. o4 G6 ~7 e4 y# s7 V
3.1.png

; [* r$ q8 K1 g+ B9 _2 F. H
RTX任务运行效果:
. x) o. @# Q9 Z+ W
3.2.png

8 ^+ R$ W% y$ B, @8 X
7 s) M: L3 h* \4 S1 S  f2 U" C

( x1 L4 V8 Y* \5 O# v* g
. u* ]9 Y( m) `0 W8 uDemo下载:
% I, S  g) G  H5 R
网络摄像头之远程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 编辑
# I4 w& K/ Y) Q2 j; {, s
  1. 原来是用这个方法统计CPU使用率的,可以说是很好的利用了RTX的特性了
复制代码
  1.     for (;;) 8 p) p5 u7 ]0 P$ F) w) ^
  2.         {7 `4 G4 V. ^$ y0 ]! q9 s
  3.         //__disable_irq();# @* \6 J) l, ~& H
  4.         OSIdleCtrRun = OSIdleCtr;    /* 获得100ms内空闲计数 */
    0 l5 C" z6 h0 ^. P7 L0 ^  L
  5.         OSIdleCtr    = 0uL;          /* 复位空闲计数 */
    . m5 P/ J4 d8 @
  6.                //__enable_irq();            /* 计算100ms内的CPU利用率 */9 c& d0 R0 r2 Q7 C7 a: q1 g
  7.         OSCPUUsage   = (100uL - (float)OSIdleCtrRun / OSIdleCtrMax);
    0 M* R8 f' @6 S$ Y) r% r3 E1 U
  8.         os_dly_wait(100);            /* 每100ms统计一次 */
    . K7 b% |( i# ?4 g1 e# q
  9.     }
复制代码

% K: A; _! A$ D& g6 t' a5 j; T( J$ Q% S# a; L2 F; {4 j2 H
baiyongbin2009 回答时间:2018-6-29 18:33:24
$ a9 ?$ {1 a; P$ ?$ g
是的
zcl201207 回答时间:2018-6-29 22:58:10
七哥 回答时间:2018-7-1 23:03:08
厉害了,谢谢分享5 r/ \1 q0 Q( h: B* L
支持一下楼主
. H# A# S1 {4 P$ O
2 ?6 G/ R+ n: x$ f此贴应该打标

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版