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

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

[复制链接]
baiyongbin2009 发布时间:2018-6-29 14:56
7 h' z# W5 J! j% g  ?
% x( ]' f. R" A' ]
说明:( N* V2 d$ m  h8 F! Q; @& a3 m& W
1、前段时间开源了一个网络摄像头的TCP版本
链接,这次再来一个远程VNC的版本。使用更方便,无需大家制作上位机软件了,也不需要显示屏,使用外部SRAM虚拟一个显示屏。' J, W0 s) }7 ^% O- z
2、这个工程是之前测试RL-TCPnet网络协议栈稳定性的时候做的,一共做了三个版本,第三个版本稳定运行快2年的时候,停止测试了,测试期间连续运行,不断电。
. m  M& w+ v. D3、这个Demo相比之前的TCP版本要复杂不少,主要有以下几点
8 [) w) Z8 o0 |. ]. ~(1)VNC 服务器使用外部SRAM虚拟出一个显示屏,除了打点和读点,全部使用DMA方式实现,有效降低CPU利用率。4 G9 d( A, P0 D- @: D7 ~4 [
(2)RL-TCPnet的实现采用事件触发的方式,这样将有效降低CPU利用率。7 I$ y1 C: b( s) I, |% {2 {
(3)摄像头接口要DMA数据到外部SRAM。: n( m* I# x6 V* @2 a: y
(4)emWin的实现也是DMA方式虚拟到SRAM里面的,并且emWin动态内存也是SRAM,这种情况下,对于总线性能的要求非常高。
2 g5 G7 i" w5 s, I(5)以太网也是用的DMA方式。0 ], X( R  w. ]* D! b

+ z$ Q2 X& f( E  u) c3 S- ~尽管多处都进行了DMA优化,实际跑起来的时候CPU利用率依然可以飙升到70%。加上DMA的占用,F4的总线矩阵性能几乎被榨干。
0 `9 F9 {+ k; P' A( M+ ?
' O& L" `+ ^! c6 G3 U+ G5 h
使用注意事项:" T6 G3 r+ s# q3 s' f3 b  i
1、配套的下位机是基于RTX4+RL-TCPne + emWin VNC实现,务必使用MDK4.74进行编译,其它MDK版本未做测试。1 l1 p) @* g. p# J9 J; u8 c
2、测试例子时用的DM9161/9162网口,务必接到路由器或者交换器上面测试,因为VNC是采用的NetBIOS Name进行测试的。5 g" t- s- S+ t5 ?) D6 ^, h
3、下载例子后等待LED3和LED4闪烁了再进行连接。
* x0 v, z# I7 s1 U4、关闭的时候,务必先关闭摄像头,因为摄像头非常占用系统性能,下次才可以快速登录。
5、当前对V5开发板做了支持,后面有精力做个V6的。
: s& Q0 d$ N8 _, H% c% F- w+ I& r% ]& q+ q# J9 G1 _6 B
; Y/ w( Q8 I- i- f! R3 Z( K% q, X

( o& L; Q5 q, q  X8 W9 t5 z/ [
: u; I( W# h( e
开启了最高等级的三级优化和时间优化:' Z1 D# i' A$ ]& v
3.1.png

' L5 E) p. d+ W/ M/ k' D$ E( g; t
RTX任务运行效果:$ F7 x% F& |3 B4 k; W& |
3.2.png
& l% \* ?& K1 e6 X1 ?
) R" \9 D$ `! c
8 q/ ?4 U+ r7 P! `& E* l
# L) t. S5 b/ @7 u" L3 t0 G
Demo下载:
+ ?  y2 y8 N" L5 A5 T
网络摄像头之远程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 编辑 ' D+ [: U% K1 i% E( e8 H& }
  1. 原来是用这个方法统计CPU使用率的,可以说是很好的利用了RTX的特性了
复制代码
  1.     for (;;)
    5 q* X! c6 }. F0 ?
  2.         {
    & u4 w( X2 {( B9 `! m
  3.         //__disable_irq();
    " K$ y" v' O; |
  4.         OSIdleCtrRun = OSIdleCtr;    /* 获得100ms内空闲计数 */- Q! h; n. R+ x! E( d! I
  5.         OSIdleCtr    = 0uL;          /* 复位空闲计数 */
    6 t# W! s0 o  W2 H4 ]
  6.                //__enable_irq();            /* 计算100ms内的CPU利用率 */
    2 ?7 A$ Q* [! u& a
  7.         OSCPUUsage   = (100uL - (float)OSIdleCtrRun / OSIdleCtrMax);
    0 D7 v) k0 Y! u
  8.         os_dly_wait(100);            /* 每100ms统计一次 */, }; u4 s# a5 R
  9.     }
复制代码
6 o7 g: `. ~  b! B" X* ^$ ]' A

" _9 R; v$ m2 r" v
baiyongbin2009 回答时间:2018-6-29 18:33:24
4 k- k& |) v8 l5 @6 d! t" X
是的
zcl201207 回答时间:2018-6-29 22:58:10
七哥 回答时间:2018-7-1 23:03:08
厉害了,谢谢分享
+ E/ P! w4 C- d0 j6 j- a支持一下楼主2 V" U' G3 t' S% r: h  f" Q: E

- `/ l7 c% t) s0 `+ E7 e4 i: b6 f此贴应该打标

所属标签

相似分享

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