社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 2822|回复: 3

[经验] BeagleBone 学习笔记05_2012_09_20

[复制链接]

2348

TA的帖子

3

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2012-10-8 19:54:59 | 显示全部楼层 |阅读模式
嗯,继续开贴,说说beaglebone自带系统Angstrom

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

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

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

2.jpg

4)执行./ethernet

3.jpg

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

4.jpg

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

5.jpg

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

6.jpg

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

7.jpg

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

8.jpg

嗯,基本的就是这样啦,写了一个简单的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天,原理图还没画呢。。。看来要悲剧啊,先整点软的上来了
此帖出自DSP论坛


回复

使用道具 举报

575

TA的帖子

1

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2012-10-8 22:45:04 | 显示全部楼层
这个socket test 有意思


回复

使用道具 举报

3360

TA的帖子

421

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

发表于 2012-10-9 07:57:19 | 显示全部楼层
给力!


回复

使用道具 举报

2058

TA的帖子

24

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2012-10-9 07:59:44 | 显示全部楼层
看好楼主


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-6-21 01:04 , Processed in 0.130451 second(s), 18 queries , Gzip On, Redis On.

快速回复 返回顶部 返回列表