1. 本次用bbblack作网络的通信实验,对了,这个板子必须装SD卡才能启动吗?板载的4GB eMMC Flash 存储器,eMMC (Embedded Multi Media Card) 为MMC协会所订立的,eMMC 相当于 NandFlash+主控IC ,对外的接口协议与SD、TF卡一样,主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。eMMC的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,使得手机厂商就能专注于产品开发的其它部分,看下原理图,果然是SD卡的接口,不过是8位数据线。

2. 看下数据手册里面的,有3个MMC接口,EMMC是MMC1的接口,板子上的SD卡接的是MMC0

3. 言归正传测试下socket的通信。先看下原理图,使用的是LAN8710

4. 搞个程序测试一下,一个问题,这些头文件的包含是怎么设置的?sys的文件夹是那个?恕我懵逼,去linux内核里面都不知道在哪里?如果是和内核相关的程序,比如驱动程序,那么所包含的头文件是在内核源码的安装目录下,即/usr/src/kernel/include,这时一般要在Makefile文件中指定内核源码目录,在编译时指定INCLUDE目录,那我这次编译这个文件,需要写一个makefile的吧,应用层的代码,按照以前驱动LED的方式。应该不可以在开发板上直接编译的吧,是在电脑上用交叉编译环境编译的才对,生成.o文件,传给开发板,为啥LED的文档,直接放板子上编译?不敢相信。

如果是应用程序,并且使用GCC进行普通编译,如果编译时没有使用-I选项指定包含目录的话,那么默认的头文件目录在/usr/include(电脑ubuntu的路径)下,刚才去ubuntu电脑看了一下,果然是有代码,我以前以为所有这些头文件都是开发板上的kernel内核里面的,也就是说编译的时候也会用到电脑ubuntu的头文件。

那么这个sys/socket.h头文件在什么地方?是电脑ubuntu里面的,还是开发板的内核源码里面的?位置在哪里?不会是在交叉编译器的路径里面吧。我只是不觉的交叉编译器会这么强大,连socket.h这种头文件都包含了?理论上这些不是应该用内核里面的吗?

如果是应用程序,采用交叉编译,编译时没有使用-I选项指定包含目录的话,那么默认的头文件搜索路径为/usr/local/arm/2.95.3/arm-linux/include,即交叉编译器的安装目录下的include目录。

纵上来看,有3个头文件的路径,一个是电脑Ubuntu的,一个是交叉编译器里面的,一个是makefile里面指定的。但是目前依然无法确认这个socket.h文件位置?

#include<stdio.h>
#include<string.h>
#include<strings.h>
#include <ctype.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/time.h>
#include <fcntl.h>
#include <sys/stat.h>
#define SERVER_IP "192.168.1.106"
#define SERVER_PORT 10010
#define MY_IP "192.168.1.106"
#define MY_PORT 10010
#define FILE_NAME "/dev/ttyO0"
#define MAX_LEN 128
int main(void)
{
int serial_buffer[MAX_LEN] = {};
char data2send[] = {};
int numbers2send = ;
int i = ;
int serial_fd = open(FILE_NAME, O_RDWR);
if(serial_fd < )
{
printf("Serial port open error.\n");
return -;
}
int socket_fd = socket(AF_INET, SOCK_STREAM, );
if(socket_fd < )
{
perror("socket_fd");
return -;
}
printf("Ready to connect the server...\n");
struct sockaddr_in server_addr = {};
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT);
server_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
int ret = connect(socket_fd, (struct sockaddr *)&server_addr, sizeof(server_addr));
if(ret < )
{
perror("connect");
return -;
}
printf("connect success.\n");
while()
{
  for(i=; i<MAX_LEN; i++)
  {
    serial_buffer[i] = ;
  }
  read(serial_fd, serial_buffer, MAX_LEN);
  printf("[%s].\n", serial_buffer);
  send(socket_fd, serial_buffer, MAX_LEN, );
}
close(serial_fd);
close(socket_fd);
return ;
}

5. 安装个交叉编译器看下里面有哪些头文件,但是一直不明白不同版本的编译器有什么区别?

6. 经过搜索,终于发现了socket.h头文件是在交叉编译器里面的

7。 设置交叉编译器的路径。

修改/etc/bash.bashrc文件(此文件只对当前用户适用)

输入命令:# gedit /etc/bash.bashrc

在最后一行加上    export PATH=$PATH:/home/qhq/am3359/arm-2009q3/bin

输入命令让设置生效:# source /etc/bash.bashrc

测试,输入arm-none,按tab键,看能不能出来一些命令。

bbblack的网络socket通信实验的更多相关文章

  1. 网络编程:Http通信与Socket通信

    http://note.youdao.com/share/?id=f14d304548003f65e34255d3ddf9df31&type=note 网络编程:Http通信与Socket通信 ...

  2. JAVA基础知识之网络编程——-基于AIO的异步Socket通信

    异步IO 下面摘子李刚的<疯狂JAVA讲义> 按照POSIX标准来划分IO,分为同步IO和异步IO.对于IO操作分为两步,1)程序发出IO请求. 2)完成实际的IO操作. 阻塞IO和非阻塞 ...

  3. Java基础知识强化之网络编程笔记02:Socket通信原理图解

    1. Socket (1)Socket套接字  网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字 (2)Socket原理机制:  • 通信两端都有Socket.  • 网 ...

  4. Python socket网络编程(通信介绍)

      socket通信介绍 通信介绍(一) 1.所有网络协议的基础就是:socket 2.socket对TCP与UDP协议封装,让用户进行简单操作. 3.socket只做两件事:发 send,收 rec ...

  5. java网络编程Socket通信详解

    Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术. ...

  6. 网络协议栈学习(一)socket通信实例

    网络协议栈学习(一)socket通信实例 该实例摘自<linux网络编程>(宋敬彬,孙海滨等著). 例子分为服务器端和客户端,客户端连接服务器后从标准输入读取输入的字符串,发送给服务器:服 ...

  7. Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制

    Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制 JAVA 中原生的 socket 通信机制 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.co ...

  8. 网络编程、三要素、Socket通信、UDP传输、TCP协议、服务端(二十五)

    1.网络编程概述 * A:计算机网络 * 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传 ...

  9. Linux下网络socket编程——实现服务器(select)与多个客户端通信

    一.关于socket通信 服务器端工作流程: 调用 socket() 函数创建套接字 用 bind() 函数将创建的套接字与服务端IP地址绑定 调用listen()函数监听socket() 函数创建的 ...

随机推荐

  1. 防护XSS

    http://blog.csdn.net/kouwoo/article/details/41946683 http://www.2cto.com/article/201309/247100.html ...

  2. Ubuntu14.04安装PowerDNS踩坑实录

    公司要使用PowerDNS,作为内网域名解析的工具.让我和另一组的同事学一下如何配置及调优.所以先找了两台服务器试着安装一下.这一装就是一个礼拜,经历了大大小小的坑,记下来以后可能需要参考.安装过程如 ...

  3. PL/SQL 编程(二)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011685627/article/details/26299399 1    For循环      ...

  4. 五·管理mysql

    在上一篇文章中 四·安装mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz(基于Centos7源码安装) 已经安装好了mysql,也正常启动了.本篇文章主要内容是管理m ...

  5. luogu P1462 通往奥格瑞玛的道路

    嘟嘟嘟 这道题的题面相当的迷,我看了半天都没懂.最后看了题解的解释才懂. 他是这么个意思:对于所有能活着走到终点的路径,输出每一条路径中过路费最多的城市的最小值. 那么自然想到二分过路费,然后用dij ...

  6. 【CSS】易错

    1.外边距默认是透明的,因此不会遮挡其后的任何元素.2.背景应用于由内容和内边距.边框组成的区域.3.外边距可以是负值,而且在很多情况下都要使用负值的外边距.4.不要给元素添加具有指定宽度的内边距,而 ...

  7. 自动化构建工具grunt的学习

    关于grunt的一些记录,记的比较乱... 0.删除node_modules文件夹 命令行: npm install rimraf -g //先运行 rimraf node_modules //然后运 ...

  8. Vue.js-简单的增删查功能

    1.Vue.js是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图 ...

  9. WinFrom开发小案例

    C# 开发环境: VisualStudio2015 数据库: SQLserver2008 程序主界面: 注释: lbl标签: 程序中的lbl标签:编号.人数.姓名.性别.请输入要查询的信息,这里他们只 ...

  10. Mybartis逆向工程

    Mybartis逆向工程 0.创建工程项目,切记莫用中文,亲测在运行时报错 1.Pom文件,使用mybatis-generator插件 <?xml version="1.0" ...