5634|8

2144

帖子

3

TA的资源

五彩晶圆(中级)

楼主
 

helper2416_rawos_ping测试 [复制链接]

今天又试了一下ping测试,我在之前的lwip移植帖子中提出了一些疑问,有个raw-os上面的ping测试不通,今天我又按照我的方式进行了一下测试,竟然能通,唯一的区别是今天使用的环境和之前的不一样包括(电脑、MDK和rawos源码包--都是git获取,不保证一致)。

当初不通我还在想rawos提供的网络ping不通,这么奇怪。。。现在总算通了,贴上测试代码
  1. void init_task(void *arg)
  2. {

  3.         //GPB0 HIGH to avoid buzzer noise
  4.         GPBCON_REG &= ~(1 << 1);
  5.         GPBCON_REG |= (1 << 0);
  6.         GPBDAT_REG |= (1 << 0);
  7.        
  8.         raw_page_init((RAW_VOID *)HEAP_ADDRESS_START, (RAW_VOID *)HEAP_ADDRESS_END);
  9.         raw_malloc_init();

  10.         raw_semaphore_create(e_sem_lock, "ethernet sem lock", 1);
  11.        
  12.         timer_0_init();       
  13.         Uart_0_Init();
  14.        
  15.         print_cpuinfo();

  16.         /*
  17.         register_task_stack_command();
  18.         rsh_register_command(&iic_shell_cmd, &iic_shell_listitem);
  19.         rsh_register_command(&xTestDemoCommand, &test_register_item);
  20.         rsh_register_command(&xWatchdogCommand, &xWatchdogRegisteredCommands);
  21.         rsh_register_command(&tftp, &tftp_item);
  22.         rsh_register_command(&spi_shell_cmd, &spi_shell_listitem);
  23.         rsh_register_command(&xHsmmcCommand, &xHsmmcRegisteredCommands);
  24.         rsh_register_command(&xFatfsCommand, &xFatfsRegisteredCommands);
  25.         rsh_register_command(&pwmopen, &pwmopen_item);
  26.         rsh_register_command(&pwmclose,&pwmclose_item);
  27.         rsh_register_command(&yaffs_shell_cmd,&yaffs_shell_item);
  28.         rsh_register_command(&usbd_shell_cmd,&usbd_shell_item);       
  29.         rsh_register_command(&wave_shell_cmd,&wave_shell_item);       
  30.         rsh_register_command(&ugfx_shell_cmd,&ugfx_shell_item);       
  31.         rsh_register_command(&reboot_shell_cmd,&reboot_shell_item);       
  32.        
  33.         rsh_register_command(&xUcguiCommand, &xUcguiRegisteredCommands);
  34.         */
  35.        
  36.        
  37.         //tftp_client();
  38.        
  39.         lwip_ping_test();
  40.        
  41.         //raw_task_create(&shell_task_obj, (RAW_U8  *)"testtask", 0,
  42.         //                IDLE_PRIORITY - 5, 0, shell_task_stack,
  43.         //                SHELL_TASK_STK_SIZE , shell_task, 1);

  44.        
  45.         raw_task_delete(raw_task_identify());

  46. }
复制代码
修改这个函数中如上,可以使用tftp_client();或者lwip_ping_test();函数,注意修改里面的网络参数,和你的电脑到统一网段


  1. static void default_netif_add(void)
  2. {
  3.   IP4_ADDR(&tftp_client_gw, 192,168,2,254);
  4.   IP4_ADDR(&tftp_client_ipaddr, 192,168,2,100);
  5.   IP4_ADDR(&tftp_client_netmask, 255,255,255,0);

  6.   netif_set_default(netif_add(&tftp_client_netif, &tftp_client_ipaddr, &tftp_client_netmask,
  7.                               &tftp_client_gw, NULL, ethernetif_init, tcpip_input));
  8.   netif_set_up(&tftp_client_netif);
  9. }
复制代码
测试结果如下

ping-test配置


tftp-test配置


大数据包ping测试


后面在移植一个网络速度测试的移植lwip/app下面有的。通过一段时间在ucos上面的组件移植测试等相关折腾,感觉有很多东西出了问题,不太好定位。尤其是ucos相关的,那些porting出了问题如何定位呢,参考了ucos官方的2410移植等。

底层东西有点多了,有时间要好好研究下uboot才能了解的更多了,很多细节不太懂,不想做一些应用的东西,有空在好好学习下吧。阶段性小结一下咯。


最新回复

那优势必须的。我新手,刚开始学,多交流,嘿嘿   详情 回复 发表于 2014-8-28 23:27
点赞 关注
个人签名电工

回复
举报

554

帖子

0

TA的资源

版主

沙发
 
有时候,一件事情要重复几次才能真正验证其正确性。。。

点评

是啊,之前自己移植网络部分,不通就随手弄了下rawos的ping下看看稳定不,结果得出了不正确的结论。 晚上回来拿仿真器看了下lua移植,rawos下面也不太顺利,应该是堆栈问题。 [attachimg]169683[/attachimg]  详情 回复 发表于 2014-8-28 21:54
 
个人签名My dreams will go on...
http://www.jyxtec.com
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
2416还是上linux有优势

点评

上RAW-OS也是很有优势  详情 回复 发表于 2014-8-28 18:20
 
个人签名努力
 
 

回复

109

帖子

0

TA的资源

一粒金砂(中级)

4
 
bruce_helen 发表于 2014-8-28 15:34
2416还是上linux有优势

上RAW-OS也是很有优势

点评

很有优势啊,arm926 SOM还是比mcu复杂很多,最近问题多多啊,有时间多多交流  详情 回复 发表于 2014-8-28 21:58
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

5
 
spacexplorer 发表于 2014-8-28 15:31
有时候,一件事情要重复几次才能真正验证其正确性。。。

是啊,之前自己移植网络部分,不通就随手弄了下rawos的ping下看看稳定不,结果得出了不正确的结论。
晚上回来拿仿真器看了下lua移植,rawos下面也不太顺利,应该是堆栈问题。






 
个人签名电工
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

6
 
跟踪看了下死在了这个部分,有点奇怪的函数,c标准函数,好复杂的c使用方式,虚拟机很有水平,高手玩的东西啊,感叹
  1. /* default handling with long jumps */
  2. #define LUAI_THROW(L,c)                longjmp((c)->b, 1)
  3. #define LUAI_TRY(L,c,a)                if (setjmp((c)->b) == 0) { a }
  4. #define luai_jmpbuf                jmp_buf
复制代码


与刺激的abort()和exit()相比,goto语句看起来是处理异常的更可行方案。不幸的是,goto是本地的:它只能跳到所在函数内部的标号上,而不能将控制权转移到所在程序的任意地点(当然,除非你的所有代码都在main体中)。
为了解决这个限制,C函数库提供了setjmp()和longjmp()函数,它们分别承担非局部标号和goto作用。头文件申明了这些函数及同时所需的jmp_buf数据类型
原理非常简单:
1.setjmp(j)设置“jump”点,用正确的程序上下文填充jmp_buf对象j。这个上下文包括程序存放位置、栈和框架指针,其它重要的寄存器和内存数据。当初始化完jump的上下文,setjmp()返回0值。
2. 以后调用longjmp(j,r)的效果就是一个非局部的goto或“长跳转”到由j描述的上下文处(也就是到那原来设置j的setjmp()处)。当作为长跳转的目标而被调用时,setjmp()返回r或1(如果r设为0的话)。(记住,setjmp()不能在这种情况时返回0。)
通过有两类返回值,setjmp()让你知道它正在被怎么使用。当设置j时,setjmp()如你期望地执行;但当作为长跳转的目标时,setjmp()就从外面“唤醒”它的上下文。你可以用longjmp()来终止异常,用setjmp()标记相应的异常处理程序。



 
个人签名电工
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

7
 
大家有了解这个标准c函数的么。。
 
个人签名电工
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

8
 
洗澡哥 发表于 2014-8-28 18:20
上RAW-OS也是很有优势

很有优势啊,arm926 SOM还是比mcu复杂很多,最近问题多多啊,有时间多多交流

点评

那优势必须的。我新手,刚开始学,多交流,嘿嘿  详情 回复 发表于 2014-8-28 23:27
 
个人签名电工
 
 

回复

109

帖子

0

TA的资源

一粒金砂(中级)

9
 
lyzhangxiang 发表于 2014-8-28 21:58
很有优势啊,arm926 SOM还是比mcu复杂很多,最近问题多多啊,有时间多多交流

那优势必须的。我新手,刚开始学,多交流,嘿嘿
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表