最近耗时多天,成功的将RT3070驱动。并解决了socket的网络编程,成功的在BA9G10上面实现了USB wif。连上家里的无线路由器,通过ubuntu下面建立的服务端程序,将BA9G10中的数据成功读取到PC机上面了。其过程的艰辛和曲折说起来是满眼血泪史啊。下面将记录其中解决问题的大致过程。

    最开始设计方案时,为了整体的方便。我借用了外面开发板的文件系统。本来是为了偷懒的,不知道最后我为这件事情付出了沉重的代价。开始在编译RT3070驱动时,我直接将别人的文件系统加载到BA9G10中。在加载驱动时,我发现他们提供的文件系统版本过老,我用的编译器是SBC的arm-none-linux-guneabi-gcc的4.72版本。他提供的文件系统不支持iwlist 无线搜索命令和iwconfig无线配置命令。这下我傻眼了,如果没有这个命令。我根本就没法将无线wifi连接到wireless router。我去hp的官网找打hp支持开发的开放实验里面的wireless tool29,算是最新版本了。我自己交叉编译了iwlist,和iwconfig。然后通过zmodem下载到老版本的文件系统中。在执行的时候提示-sch iwlist command not find。纠结了。我用arm-none-linux-guneabi-readelf。结果提示加载了两个库。但是这两个库在glibc里面有这两个库。这样看来,还是编译版本的问题。编译出来的两个版本的库没办法加载运行。这样我就只有硬着头皮来自己定制自己的文件系统了。


    本来定制文件系统是一件比较简单的事情,但是当初也是为了偷懒。用了SBC 的IDE集成交叉编译工具链。结果导致了一个问题,就是编译完成在链接的时候没法找到crt0.o、crtn.o等链接库。就因为这个问题,浪费了我整整的5天时间,包括端午节3天假和接下来的2天周末。最后在一家外国论坛上面发现了解决这个问题的方法,其实是很简单的事情。SBC提供prifix的安装地址。通过arm-none-linux-guneabi-gcc  -v命令可以查看编译器的设置。最后发现只要将工具链放到prifix的/opt/codesourery这个目录下。问题就解决了。刚刚开始我设置了LD_LIBRARY、LIBRARY 修改了ld.config文件,都无效。我觉得这个可能是SBC做工具链的一个bug。就这个问题把我给整得趴下了。


在解决交叉编译环境后,在编译busybox就是一件很简单的事情了。我建立的文件系统是基于busybox1.21.0这个最新版本的文件系统。交叉编译器也是最新的4.72版本。所以有很多问题的出现都是比较扯淡的。不过以后就有经验了。

在完成busybox的安装后,开始了自己定制文件系统。这个过程中遇到数据不对的情况,网上提供的解决方案都比较好。最后就是修改了下编译方法,make ARCH=arm CROSS_COMPILE= arm-none-linux-guneabi-。并且在make install的过程中也要添加后面的命令。这样就很简单的解决了数据不对。在修改hostname过程中遇到有乱码的问题。这个问题比较简单,原来是我输入过程中带入了中文字符。最后将书法切换后再制作文件系统,好像问题就解决了。下面是定制出来的文件系统的效果图:

BA9G10 文件系统定制

在完成文件系统后,接下来是把usb wifi连接到无线路由器。这个工作也是比较轻松的。主要是命令操作。不过在linux系统下面有几个东西让我长见识了就是system(void);这个函数和popen();这个函数。觉得很强大,可以直接操作linux下面的shell命令。我在后面的socket编程中用到了,感觉爽。


原计划是将所有的操作都写在shell里面,通过linux文件系统里面的启动初始加载来实现自启动的。不过后来我发现有上面的两个函数,结果所有的命令我都可以直接通过这两个函数来实现。


    Socket编程,这个我是现炒现卖,以前没搞过。看了吴秦的一篇博客,觉得他写得很好。然后也有例程。我是就看到他的例程来写的socket的建立 、连接和侦听等。不过到wireless wifi上面又不一样。Socket是建立在tcp/ip上面的。所以我们操作起来也相当的简单。理解下什么是socket,socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。


    我在理解socket编程后,然后自己写了一个ubuntu下面的linux C的wifi_server监听虚拟机下面的6666这个端口。然后在BA9G10中启动wifi_app,这是一个客户端程序。在建立者两套连接后开始测试。客户端请求连接到服务器端。在这个过程中也遇到了一个小问题,就是在BA9G10中能ping通ubuntu安装的虚拟的地址。好像ping使用的Icmp方式。但是客户端却不能connect服务器端。这个问题我还纠结了下,刚刚开始我在fedora里面弄的,我觉得能ping通说明连接都没有问题了。那问题可能出在那里呢?唯一的可能性就是防火墙阻止了我的connected包。不过我想关fedora的防火墙,但是在关闭过程中遇到问题了。后面我看到关ubuntu的防火墙比较容易,用ufw disable就解决了。于是我就换到ubuntu下面来了。然后再连接的时候,就能连上了。可以在服务端拷贝客户端的数据,所有验证成功。这个部分的图到时补上。


  慢慢来,技术无止境,只为玩玩而已!希望每天都有进步!

RT3070 USB WIFI 在连接socket编程过程中问题总结的更多相关文章

  1. 记Windows下初次使用dev C++进行socket编程过程

    记初次接触socket编程,在devC++使用Winsock进行socket编程的一个过程,通过在devC++创建2个项目分别是server.client程序项目,感受通过socket使client与 ...

  2. Java连接远程Mysql过程中遇到的各种问题

    2018-11-16 10:46 2018-11-19 21:35 前言 本篇文章记录的是本人在使用Java程序连接另一台电脑(同一局域网)上的Mysql数据库的过程中遇到的各种问题及解决方案.希望能 ...

  3. Devc++编程过程中的一些报错总结

    以下都是我在使用Devc++的过程中出现过的错误,通过查找资料解决问题,今天小小地记录.整理一下. 1.[Error] invalid conversion from 'const char*' to ...

  4. QT4编程过程中遇到的问题及解决办法

    1.QLineEdit显示内容的格式函数: QLineEdit *lineEditPassword = new QLineEdit: lineEditPassword -> setEchoMod ...

  5. PHP Socket 编程过程详解

    使用代码 目的:开发一个客户端用于发送string消息到服务端,服务端将相同的信息反转后返回给客户端. PHP服务器 第1步:设置变量,如“主机”和“端口” $host = "127.0.0 ...

  6. 《2---关于JDBC编程过程中驱动配置问题》

    说明:我在Editplus中编写了一个简单的JDBC程序,用来测试是否和数据库连接正确.读者如有其它疑问,可以留言交流. [1]程序如下: import java.sql.*; public clas ...

  7. AdminIII连接linux Postgresql过程中的几个小问题

    1.postgresql.conf主配置文件中要配置postgresql绑定的IP,如果不设置,可能只绑定本地闭环地址:127.0.0.1,可以设定为0.0.0.0:就包括了一切IPv4地址 2.pg ...

  8. Win7电脑开启局域网连接和共享过程中出现的"您可能没有权限使用网络资源"的解决办法

    Win7电脑开启局域网连接和共享 http://bbs.ithome.com/thread-334567-1-1.html http://jingyan.baidu.com/article/6dad5 ...

  9. 转 PHP编程过程中需要了解的this,self,parent的区别

    {一}PHP中this,self,parent的区别之一this篇 面向对象编程(OOP,Object Oriented Programming)现已经成为编程人员的一项基本技能.利用OOP的思想进行 ...

随机推荐

  1. 使用 HTML5 webSocket API实现即时通讯的功能

    project下载地址:http://download.csdn.net/detail/wangshuxuncom/6430191 说明: 本project用于展示怎样使用 HTML5 webSock ...

  2. 总线接口与计算机通信(五)CAN总线

        CAN网络图示     CAN的特点      CAN协议具有以下特点.      (1) 多主控制  在总线空闲时,所有的单元都可开始发送消息(多主控制). 最先访问总线的单元可获得发送权( ...

  3. 基于visual Studio2013解决面试题之1404希尔排序

     题目

  4. TIA Portal V12不能添加新的CPU

    4核AMD 740,10G内存,Win7 X64,打开TIA Portal V12,依旧慢如牛,鼠标指针转啊转,TIA窗口写着 无响应... 真没志气,STM32要是玩转了,坚决不用这老牛. 上图为正 ...

  5. google2013校园招聘笔试题(全国)

    google2013校园招聘笔试题 1. 单项选择题1.1如果把传输速率定义为单位时间内传送的信息量(以字节计算)多少.关于一下几种典型的数据传输速率:1.使用USB2.0闪存盘,往USB闪存盘上拷贝 ...

  6. 基于visual Studio2013解决面试题之0602全排列

     题目

  7. python web with bottle and session (beaker)

    python web with bottle and session (beaker) http://icodesnip.com/snippet/python/python-web-with-bott ...

  8. ASP.NET - List<> 绑定 DropDownList

    代码: //声明泛型 List<category> inof = new List<category>();//二级分类 //声明类使用的对象类 public class ca ...

  9. smartforms换页,

    smartforms换页,可以把最后的窗口设置成最终窗口, 这样页码有可以用系统变量控制: 总页码/页码 :&SFSY-FORMPAGES&

  10. EL表达式(3)

    本篇讲解使用EL表达式来调用Java方法(自定义EL函数)和Sun公司开发的EL函数库. 简单来说,我们在一个类中的某个方法,可以使用EL进行调用,这个能被EL表达式调用的方法称之为EL函数,但是这种 ...