4092|3

2144

帖子

3

TA的资源

五彩晶圆(中级)

楼主
 

BeagleBone 学习笔记05_2012_09_20 [复制链接]

嗯,继续开贴,说说beaglebone自带系统Angstrom

1)简单的系统命令,列举两个例子:uname -a & cat /proc/cpuinfo


2)测试网络,将写好的SocketServer.c文件放到beaglebone生成的u盘中,这里新建文件夹test。
使用命令mount /dev/disk/by-label/BEAGLEBONE /mnt/挂载u盘
使用cd test进入文件夹,ls命令查看源文件


3)编译代码,使用gcc SocketServer.c -o ethernet编译



4)执行./ethernet



5)打开tcp&udp debug工具测试,连接到192.168.14.25  端口1234



6)此时可以看到new connection (程序默认可以同时支持多个连接,有最大限制,宏定义)



7)通过debug工具给beagle发送字符hello eeworld!并回发给debug工具(该调试工具在周立功网站上可下载)



8)再新建一个连接,亦可进行数据收发。



9)连接建立和取消会自动识别,同时同一个连接连续连接只识别为一个用户连接,避免连续访问导致崩溃。



嗯,基本的就是这样啦,写了一个简单的c/s测试程序,beaglebone上的是服务程序,贴出核心代码。
  1. /* 初始化文件描述符 */
  2.                 do
  3.                 {
  4.                         unsigned int __i;
  5.                         fd_set *__arr = (&fdsr);
  6.                         for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i)
  7.                         {
  8.                                 __FDS_BITS (__arr)[__i] = 0;
  9.                         }
  10.                 } while (0);
  11.                 //FD_ZERO(&fdsr);
  12.                 FD_SET(sock_fd, &fdsr);

  13.                 /* 超时时间设置 */
  14.                 tv.tv_sec = 30;
  15.                 tv.tv_usec = 0;

  16.                 /* 添加活动连接 */
  17.                 for (i = 0; i < BACKLOG; i++)
  18.                 {
  19.                         if (fd_A[i] != 0)
  20.                         {
  21.                                 FD_SET(fd_A[i], &fdsr);
  22.                         }
  23.                 }

  24.                 ret = select(maxsock + 1, &fdsr, NULL, NULL, &tv);

  25.                 if (ret < 0)
  26.                 {
  27.                         perror("select");
  28.                         break;
  29.                 }
  30.                 else if (ret == 0)
  31.                 {
  32.                         printf("timeout\n");
  33.                         continue;
  34.                 }
复制代码
  1. /* 检查是否有一个新的连接到来 */
  2.                 if (FD_ISSET(sock_fd, &fdsr))
  3.                 {
  4.                         new_fd = accept(sock_fd, (struct sockaddr *)&client_addr, &sin_size);
  5.                         if (new_fd <= 0)
  6.                         {
  7.                                 perror("accept");
  8.                                 continue;
  9.                         }

  10.                         /* 添加到fd队列 */
  11.                         if (conn_amount < BACKLOG)
  12.                         {
  13.                                 for(i = 0;i < BACKLOG;i++)
  14.                                 {
  15.                                         if(fd_A[i] == 0)
  16.                                         {
  17.                                                 fd_A[i] = new_fd;
  18.                                                 break;
  19.                                         }

  20.                                 }
  21.                                 conn_amount++;

  22.                                 printf("new connection client[%d] %s:%d\n", conn_amount,inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
  23.                                 if (new_fd > maxsock)
  24.                                 {
  25.                                         maxsock = new_fd;
  26.                                 }
  27.                         }

  28.                         else
  29.                         {
  30.                                 printf("max connections arrive, exit\n");
  31.                                 send(new_fd, "good-bey!\n", 11, 0);
  32.                                 close(new_fd);
  33.                                 continue;
  34.                         }
  35.                 }
复制代码
嗯,好了maylove别催我啦,程序都是testcode 对不起坛友了。国庆回家呆了7天,原理图还没画呢。。。看来要悲剧啊,先整点软的上来了

最新回复

看好楼主  详情 回复 发表于 2012-10-9 07:59
点赞 关注
 

回复
举报

651

帖子

1

TA的资源

纯净的硅(中级)

沙发
 
这个socket test 有意思
 
 

回复

2781

帖子

419

TA的资源

五彩晶圆(中级)

板凳
 
给力!
 
 
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

4
 
看好楼主
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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