RT5350订制WIFI转串口
编译开发主机:Debian6
硬件开发平台:RT5350平台 (可以点击到这里购买)
1、搭建开发环境
1.1 连接硬件
通过串口线连接板子的调试串口(DB9)与电脑的串口(如电脑没有串口,可用USB转串口线连接)。可在电脑上打开串口工具,winxp上可打开超级终端,或者其它的如SecureCRT/putty等工具,选择串口号(如果电脑串口,一般是COM1,如果是USB转串口线,那么打开设备管理器,根据实际的串口号进行选择),设置波特率为57600,8位数据位,1位停止位,无流控制。那么,那这个串口工具实际上就是板子的LINUX终端。 上电后,就可以在串口终端里看到linux的启动信息。
1.2 制作固件
解压固件制作包makeimg.tar.gz,并进入该目录:
vmlinux为内核固件
Makefile为制作固件镜像的规则文件
romfs为根文件系统目录,生成的文件系统为squash只读文件系统。
其它文件是制作镜像的工具
根据工具链(GCC编译器安装路径),需要对Makefile进入修改:
CUR_DIR = $(shell pwd)
IMAGEDIR = $(shell pwd)
KERNELZ = $(IMAGEDIR)/zImage
RAMDISK = $(IMAGEDIR)/ramdisk
IMAGE = $(IMAGEDIR)/$(USER)_uImage
ROMFS_DIR = $(CUR_DIR)/romfs
COMP = lzma
CROSS_COMPILE=/opt/buildroot-gcc342/bin/mipsel-linux-
OK,下一步,拷贝文件(需要保存在固件镜像里的文件)到romfs。
然后,在当前目录下的命令行make,则可产生固件镜像文件USER_uImage,其中USER是用户名。
1.3 升级固件
升级固件的方式有两种,一种是在uboot的环境下升级固件,另外一种是通过网页来升级。
在开发过程中,往往常用uboot进行烧写固件,uboot下载固件的方法是通过TFTP。
1.3.1 搭建TFTP环境
在linux主机下,搭建TFTP环境可参照网络相关文章,在windows环境下话,可以使用tftp-win32。
1.3.2 uboot烧写固件
在uboot启动时选择操作2,进入烧写固件菜单,选择Y确认操作。
如实填写好板子的IP地址(设置板子的IP地址),服务器IP地址(即开发主机IP地址,保存有要烧写的固件文件)。
最后填写固件文件的文件名,按回车确定后,则板子开始从主机上下载固件文件,然后再完成烧写。
注意填写正确网络IP地址,主机与板子的IP地址需在同一网段。
1.3.3 网页上传升级固件
这里板子的IP地址为192.168.10.123,板子与电脑连接在同一路由器上或者直接相连。
在电脑上打开浏览器,输入板子的IP地址:
在“固件更新”那一栏选择文件,然后点击确定则可,不过升级过程需要等待一段时间,直接最后升级成功,板子会自动重启。
1.4 有线网络与WIFI无线网络
系统启动后,进入linux命令行,运行ifconfig命令,可以看到板子的网络参数如下:
其中br0为网桥,eth2为有线网络,ra0为无线网络。
1.4.1 有线网络
由于使用的是网桥的连接方式,所以板子的网卡IP地址设置只需要设置br0则可。
ifconfig br0 192.168.10.123
这样就给板子设置了新的IP地址。
当然系统启动后会有个默认的IP地址,保存在flash里,可以通过nvram工具查看或修改:
# nvram_get 2860 lan_ipaddr
192.168.10.123
# nvram_set 2860 lan_ipaddr 192.168.10.122
可以通过ping工具测试有线网络是否配置正确,如下情形为网络测试通过(192.168.10.102为主机地址):
或者,在主机电脑上打开网页浏览器,在地址栏输入板子的IP地址192.168.10.123,如能进入网页界面则网络是通的。
具体的网页界面如网页升级固件所示。
1.4.2 无线wifi网络
使用无线wifi网络需要正确配置与使用wpa_supplicant无线管理工具。
首先需要一个配置文件wpa_supplicant.conf(默认的romfs里在etc_ro目录下),在该文件里正确填写无线路由名称(SSID)和密码:
ctrl_interface=/var/run/wpa_supplicant
network={ ssid="FAST_316A22" scan_ssid=1 key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE pairwise=TKIP CCMP group=CCMP TKIP WEP104 WEP40 psk="1234567890"
}
在板子终端命令行里输入启动wpa_supplicant命令:
# wpa_supplicant -B -Dralink -bbr0 -ira0 -c /etc_ro/wpa_supplicant.conf
通过wpa_cli来搜索周边的无线wifi信号:
通过iwpriv工具查看板子是否连接上无线路由:
使用无线网络时把网线拔掉,然后通过ping测试网络或通过网页浏览器测试是否可以登陆板子。
1.5 挂载NFS网络文件系统
首先在主机上搭建NFS网络环境,可参照网络资料搭建,然后在板子上通过mout命令来挂载网络文件系统:
# mount -t nfs -o nolock 192.168.10.106:/home/nfspart /mnt
然后进入/mnt目录就可以看到主机上的文件数据了。
在应用程序开发中常常用这种文件来实现主机与板子的文件传输。
1.6 编写我们的hello,world程序
1.6.1 安装交叉工具链
把gcc工具链解码到/opt目录下:
tar -jxvf buildroot-gcc342.tar.bz2 -C/opt/
导出编译工具路径:
export PATH=/opt/buildroot-gcc342/bin:$PATH
注意,路径设置一定要正确。
执行完以上两步,可以在命令行里运行mipsel-linux-gcc -v,则可看到编译器版本信息。
1.6.2 编译运行程序
编写helloworld程序hello.c:
#include <stdio.h>int main()
{printf("hello,world!\r\n");return 0;
}
编译生成可执行文件hello:
mipsel-linux-gcc hello.c -o hello
通过NFS网络文件系统,拷贝hello可执行文件到/home/nfspart目录下(该目录为NFS的映射目录)
在板子终端上,可以进入/mnt查看到hello这个文件,运行:
2、wifi转串口
2.1 串口通信
int setserial(int s,struct termios* cfg, int speed,int data,unsigned char parity,int stopb)
{cfmakeraw(cfg);cfg->c_cflag |= CLOCAL | CREAD;switch(speed){case 50 : { cfsetispeed(cfg,B50) ; cfsetospeed(cfg,B50) ; break; }case 75 : { cfsetispeed(cfg,B75) ; cfsetospeed(cfg,B75) ; break; }case 110 : { cfsetispeed(cfg,B110) ; cfsetospeed(cfg,B110) ; break; }case 134 : { cfsetispeed(cfg,B134) ; cfsetospeed(cfg,B134) ; break; }case 150 : { cfsetispeed(cfg,B150) ; cfsetospeed(cfg,B150) ; break; }case 200 : { cfsetispeed(cfg,B200) ; cfsetospeed(cfg,B200) ; break; }case 300 : { cfsetispeed(cfg,B300) ; cfsetospeed(cfg,B300) ; break; }case 600 : { cfsetispeed(cfg,B600) ; cfsetospeed(cfg,B600) ; break; }case 1200 : { cfsetispeed(cfg,B1200) ; cfsetospeed(cfg,B1200) ; break; }case 1800 : { cfsetispeed(cfg,B1800) ; cfsetospeed(cfg,B1800) ; break; }case 2400 : { cfsetispeed(cfg,B2400) ; cfsetospeed(cfg,B2400) ; break; }case 4800 : { cfsetispeed(cfg,B4800) ; cfsetospeed(cfg,B4800) ; break; }case 9600 : { cfsetispeed(cfg,B9600) ; cfsetospeed(cfg,B9600) ; break; }case 19200 : { cfsetispeed(cfg,B19200) ; cfsetospeed(cfg,B19200) ; break; }case 38400 : { cfsetispeed(cfg,B38400) ; cfsetospeed(cfg,B38400) ; break; }case 57600 : { cfsetispeed(cfg,B57600) ; cfsetospeed(cfg,B57600) ; break; }case 115200 : { cfsetispeed(cfg,B115200); cfsetospeed(cfg,B115200); break; }case 230400 : { cfsetispeed(cfg,B230400); cfsetospeed(cfg,B230400); break; }}switch(parity|32){case 'n' : { cfg->c_cflag &= ~PARENB; break; }case 'e' : { cfg->c_cflag |= PARENB; cfg->c_cflag &= ~PARODD; break; }case 'o' : { cfg->c_cflag |= PARENB; cfg->c_cflag |= PARODD ; break; }}cfg->c_cflag &= ~CSIZE;switch(data){case 5 : { cfg->c_cflag |= CS5; break; }case 6 : { cfg->c_cflag |= CS6; break; }case 7 : { cfg->c_cflag |= CS7; break; }case 8 : { cfg->c_cflag |= CS8; break; }}if(stopb==1)cfg->c_cflag&=~CSTOPB;else cfg->c_cflag|=CSTOPB;return tcsetattr(s,TCSANOW,cfg);
}
2.2 wifi转串口-udp模式
while(1){if(st[i]&2)n=read(s[i],buf,MAXMESG);else{n=recvfrom(s[i],buf,MAXMESG,nonblock[i]*MSG_DONTWAIT,(struct sockaddr*)&addr[i][st[i]],&clen[i]);nonblock[i]=1;}p=buf;while(n>0){if(st[!i]&2)w=write(s[!i],p,n);else w=sendto(s[!i],p,n,0,(struct sockaddr*)&addr[!i][st[!i]],clen[!i]);if(w>0){n-=w;p+=w;}else{fprintf(stderr,"%s: write error\n",pname);break;}}i=!i;}
RT5350订制WIFI转串口相关推荐
- 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制...
安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制 socket 连接采用流的方式进行发送接收数据,采用thread线程的方式. 什么是线程? 详细代码介 ...
- Microsoft SharePoint Portal Server 2003 订制开发研讨(流水帐)
主题:定制SharePoint Portal Server 2003 SPS 2003架构简介 重用SPS2003模版使用FrontPage2003定制SPS2003自定义SPS2003模版使用CSS ...
- XMPP键盘订制实现图文混排
在现阶段的通信服务中,各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通信服务协议的互 ...
- input内的字体颜色_嘉兴市硅胶喷涂颜色油订制
嘉兴市硅胶喷涂颜色油订制,博越硅胶服务惠万家,欢迎惠顾. 嘉兴市硅胶喷涂颜色油订制, 而它配合硅胶原材制作时是按照相应的比例来进行分配在加上硫化剂的配合才能够得到制作产品的原材料,色母的性能选择也影响 ...
- 为什么同大取大同小取小_不锈钢马大型动物雕塑-大同金属雕塑马订制
不锈钢马大型动物雕塑-大同金属雕塑马订制 不锈钢浮雕雕塑所谓不锈钢浮雕雕塑是雕塑与绘画结合的产物,用压缩的办法来处理对象,靠等因素来表现三维空间,并只供一面或两面观看.浮雕一般是在另一平面上的,因此在 ...
- JEasyPoi 2.1.4 (Jeecg订制) 版本发布,Excel 和 Word 简易工具类
JEasyPoi 2.1.4 (jeecg订制)版本发布,EasyPoi Excel 和 Word 简易工具类 easypoi 功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 ...
- CSDN开发者周刊 TDengine:专为物联网订制的大数据平台 YugaByte DB:高性能的分布式ACID事务数据库
CSDN开发者周刊: TDengine:专为物联网订制的大数据平台 YugaByte DB:高性能的分布式ACID事务数据库 CSDN开发者周刊:只为传递"有趣/有用"的开发者 ...
- 个人支付源码_[5G时代投资风口源码修复版] 投资区块链+订制UI完美版+对接免签支付+自带发圈推广任务奖励+视频教程...
[5G时代投资风口源码修复版] . 这款区块链商城源码[亲测修复版]10月最新5G时代投资风口投资区块链源码全修复版订制UI完美版本+对接免签支付+搭建视频教程现在5G是个热词,这套区块链源码全订制U ...
- wifi转串口芯片——ESP8266:配置与使用
ESP8266是一款小巧的wifi转串口芯片,通过串口就可以配置模式,发送消息.接收消息.建立AP.价格也不贵,大概15元左右.经过尝试,效果还是不错的,非常适合单片机开发. 具体的接线方法大家可以自 ...
最新文章
- 《JavaScript设计模式与开发实践》阅读摘要
- Linux Shell常用技巧(七)
- docker 配置加速器
- boost::diagnostic_information_what的用法程序
- js if判断多个条件_EXCEL一对多条件查找显示多个结果(INDEX+SMALL+IF+ROW函数组合)...
- android activity调用Adapter方法刷新列表UI,RecyclerView.Adapter
- matlab impyramid,图像 – Matlab impyramid问题
- [剑指offer][JAVA]面试题第[30]题[包含min函数的栈][双栈辅助栈][单栈]
- python网络编程系列
- Protocol类型限制
- 读取FTP上的excel文件,并写入数据库
- java 字符串 日期格式化_Java8常用日期格式化字符串日期相互转换
- C语言实现左旋字符串
- BP神经网络matlab代码
- DiskGenius 强行拆分黑苹果HFS硬盘分区以给Windows扩容
- AcWing 4487. 最长连续子序列 单调栈上二分 数组模拟栈的好处
- Mac Android Studio连接MuMu模拟器
- 九宫格一共有多少种解法
- CityEngine2016-学习笔记(2)Shape Operations
- java中png转索引图压缩图片