Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
【网络编程学习】peter lu+上手RT-Thread,在Win7 64bit QEMU上运行
发布于 2018-07-31 23:58:15 浏览:3464
订阅该版
* 本帖最后由 pingl98 于 2018-8-9 02:08 编辑 * 一直想要学习RTOS,于是参加了RT-Thread网络编程学习营,虽然是RTT菜鸟,但机不可失,刚好工作上也可以用到。 **建置环境**:Windows 7 64bit,下载工具为64bit版本 **首先要建置RT-Thread的编程环境**: [list=1] (*)先详阅RT-Thread 文档:在 Windows QEMU 上运行 RT-Thread,[http://ci.rt-thread.com/3067/site/topics/qemu/setup/](http://ci.rt-thread.com/3067/site/topics/qemu/setup/) (*)进入RT-Thread下载页面,[https://www.rt-thread.org/page/download.html](https://www.rt-thread.org/page/download.html), (*)点选“RT-Thread Env工具下载”,这会来到 env_release的百度网盘,进入env_release文件夹,勾选“env_released_0.7.0.zip"并下载(note:env_released_0.7.0_lite.zip是不含gcc与qemu的,不能用这个。) (*)将 "env_released_0.7.0.zip" 解压到本地硬盘中,路径放在 "D:\env" (note:注意存放的路径中不能有空格与中文,否则会出现找不到的情况) (*)(extra step)参考"D:\env\Add_Env_To_Right-click_Menu.png"的步骤,将env prompt 加到鼠标右键的选单中,方便后续操作。 ![Add_Env_To_Right-click_Menu.png](/uploads/201807/31/022347mymeleu5jlblu8u1.png) [/list] **再来要下载RT-Thread的源码**: 方法A:使用git clone指令下载 准备步骤:下载并安装 "Git-2.18.0-64-bit" from [Git SCM](https://git-scm.com/download/win) [list=1] (*)打开env prompt,cd 到源码的文件夹,如"D:\src". (*)使用git clone指令下载,从国内 type "git clone [https://gitee.com/rtthread/rt-thread](https://gitee.com/rtthread/rt-thread)",从国外 type "git clone [https://github.com/RT-Thread/rt-thread](https://github.com/RT-Thread/rt-thread)" (*)约几分钟(或更久)后源码就会下载到 "D:\src t-thread" (*)cd 到qemu bsp的文件夹,如"D:\src t-thread\bsp\qemu-vexpress-a9" (*)第一次设置bsp,type "menuconfig",先不改任何选项,然后"exit",当提示是否储存configuration时,选"yes",会将设定存到 ".config" 档案中 (*)然后设定自动更新packages,type “menuconfig -s",选"Env config --->",按Enter,再勾选"Auto update pkgs config" 和 "pkgs download using mirror server",储存并退出 ![RTT_menuconfig_s.png](/uploads/201807/31/021650xv7p3eso3j6xxj6m.png) (*)type ”pkgs --upgrade",更新最新的packages设定 [/list] 方法B:下载RT-Thread的源码包 [list=1] (*)进入RT-Thread git库,国内 [https://gitee.com/rtthread/rt-thread](https://gitee.com/rtthread/rt-thread) ,国外 [https://github.com/RT-Thread/rt-thread](https://github.com/RT-Thread/rt-thread) (*)点选"Clone or download",再选"Download zip",下载"rtthread-rt-thread-master.zip" (*)解压到源码的文件夹,如"D:\src",源码路径为"D:\src t-thread" (*)cd 到qemu bsp的文件夹,如"D:\src t-thread\bsp\qemu-vexpress-a9" (*)第一次设置bsp,type "menuconfig",先不改任何选项,然后"exit",当提示是否储存configuration时,选"yes",会将设定存到 ".config" 档案中 (*)然后设定自动更新packages,type “menuconfig -s",选"Env config --->",按Enter,再勾选"Auto update pkgs config" 和 "pkgs download using mirror server",储存并退出 (*)type ”pkgs --upgrade",更新最新的packages设定 [/list] **Env与源码都有了,再来要下载一堆工具程式**: [list=1] (*)Tap for windows,"tap-windows-9.21.2.exe" from [TAP-Windows](http://swupdate.openvpn.org/community/releases/tap-windows-9.21.2.exe) (*)Wireshark抓包工具,"Wireshark-win64-2.6.2.exe" from [Wireshark ORG](https://www.wireshark.org/#download) (*)网路调试助手,"netassist.rar" from [CM Soft](http://www.cmsoft.cn/reslink.php?id=205) (*)Tftpd64,"Tftpd64-4.60-setup.exe" from [RTT Tools](https://github.com/RT-Thread-packages/netutils/blob/master/tools/Tftpd64-4.60-setup.exe) (*)Putty, "putty-64bit-0.70-installer.msi" from [Putty page](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) [/list] **在网路编程前,要先设置QEMU的TAP 网卡**: [list=1] (*)安装 "tap-windows-9.21.2.exe" (*)打开控制台的网路和共享中心,选"更改适配器设置",将 TAP-Windows Adapter V9 的名称改为 "tap" ![RTT_tap_rename.png](/uploads/201807/31/020954fq6rpaajqvdqayqa.png) (*)点选上网的网卡,从右键菜单打开属性,选"共享",勾选"允许其他网路用户通过此计算机的 Internet 连接来连接" (*)在家庭网路连接方格中,选"tap"网卡 (*)按"确定“,保存设定 ![RTT_tap_share.png](/uploads/201807/31/021142u744swcz8p4hmh4e.png) (*)设置qemu使用tap网卡,找到 bsp\qemu-vexpress-a9 路径下的 qemu.bat 文件,使用文本编辑器打开该文件,在下图所示位置添加 -net nic -net tap,ifname=tap 配置,并保存退出 ![RTT_qemu_modify.png](/uploads/201807/31/024708stxy9szmxxadywra.png) [/list] [align=center]![FastAdmin]() 万事俱备,可以开始网路编程了: **A)开启 Ping 工具** [list=1] (*)在bsp\qemu-vexpress-a9 路径下,打开Env prompt,type "menuconfig" (*)选RT-Thread online packages -> IoT - internet of things -> netutils: Networking utilities for RT-Thread -> Enable Ping utility,Exit 并储存设定。 ![RTT_config_ping.png](/uploads/201807/31/195122nzs7byn1dy7vfw1u.png) (*)type "scons",开始编程,若无错误,结果如图。 ![RTT_scons_ping.png](/uploads/201807/31/195216uwobbgbkibagkvmj.png) (*)type “qemu",进入msh。 (*)type "ping www.taobao.com",成功结果如图。 ![RTT_qemu_ping.png](/uploads/201807/31/195314hskv55hkhjv5hl25.png) [/list] **B)TCP 客户端** [list=1] (*)在bsp\qemu-vexpress-a9 路径下,打开Env prompt,type "menuconfig" (*)通过 env 配置将示例代码加入到项目中 ``` RT-Thread online packages ---> miscellaneous packages ---> samples: RT-Thread kernel and components samples ---> network sample options ---> (*) [network] tcp client ``` ![RTT_config_tcpclient.png](/uploads/201807/31/200045jh9nma9juj3qr0vi.png) (*)type "scons",开始编程 (*)type “qemu",进入msh。 (*)先打开网络调试助手,开启一个 TCP 服务器,如图。 ![RTT_result_tcpclient_svr.png](/uploads/201807/31/200300fbyzeubsbbbs0aeo.png) (*)在msh,type "tcpclient 192.168.199.151 5000",若连接成功,可以在网络调试助手,客户端的方格中看到连接的客户。 (*)在网络调试助手,发送message(type "q"发送可结束连接),可以在qemu中看到message,如图。 ![RTT_result_tcpclient_clt.png](/uploads/201807/31/200335zjoqyoq58jh1sb66.png) [/list] **C)UDP 客户端** [list=1] (*)在bsp\qemu-vexpress-a9 路径下,打开Env prompt,type "menuconfig" (*)通过 env 配置将示例代码加入到项目中 ``` RT-Thread online packages ---> miscellaneous packages ---> samples: RT-Thread kernel and components samples ---> network sample options ---> (*) [network] udp client ``` ![RTT_config_udpclient.png](/uploads/201807/31/200857bl6q3beqe3m48mi8.png) (*)type "scons",开始编程 (*)type “qemu",进入msh。 (*)先打开网络调试助手,开启一个 UDP 服务器,如图。 ![RTT_result_udpclient_svr.png](/uploads/201807/31/200945aoze99ed0o9on4dw.png) (*)在msh,type "udpclient 192.168.199.151 5000",若接收成功,可以在网络调试助手,看到10个 UDP messages,如上图。 ![RTT_result_udpclient_clt.png](/uploads/201807/31/201017bpnnnyfexynp6xyp.png) [/list] **D)NTP 获取网络时间** [list=1] (*)在bsp\qemu-vexpress-a9 路径下,打开Env prompt,type "menuconfig" (*)通过 env 配置将示例代码加入到项目中 ``` RT-Thread online packages ---> IoT - internet of things ---> netutils: Networking utilities for RT-Thread ---> (*) Enable NTP(Network Time Protocol) client ``` ![RTT_config_ntp.png](/uploads/201807/31/212208xq2fqev2hs2q6sfv.png) (*)type "scons",开始编程 (*)type “qemu",进入msh。 (*)在msh,type "ntp_sync",若成功,可以看到获取到正确的网络时间,如图。 ![RTT_result_ntp.png](/uploads/201807/31/212251eme9kigg6lzgvej6.png) [/list] **E)Telnet 远程登陆** [list=1] (*)在bsp\qemu-vexpress-a9 路径下,打开Env prompt,type "menuconfig" (*)通过 env 配置将示例代码加入到项目中 ``` RT-Thread online packages ---> IoT - internet of things ---> netutils: Networking utilities for RT-Thread ---> (*) Enable Telnet server ``` ![RTT_config_telnetsvr.png](/uploads/201807/31/214827iac0a0uyp9n0vr0v.png) (*)type "scons",开始编程 (*)type “qemu",进入msh。 (*)先查看 ip 地址,在msh,type "ifconfig",记下 ip 地址,如图。 ![RTT_result_telnet_ifconfig.png](/uploads/201807/31/220548k6gj6rrrxptrgjnw.png) (*)在msh,type "telnet_server",进入伺服器模式,如图。 ![RTT_result_telnet_server_1.png](/uploads/201807/31/220733dsht9tx7woxtlj7q.png) (*)在PC端,打开telnet程式(使用putty),连接到 ip 地址,如图。 ![RTT_result_telnet_putty.png](/uploads/201807/31/215646nh564pgpx44ejgf4.png) (*)若连接成功,就会看到 msh prompt,type "ps",列出运行线程的讯息,type "ls",列出档案讯息,如图。 ![RTT_result_telnet_putty_connect.png](/uploads/201807/31/215722uvuv8vvx00ty84vy.png) [/list] **F) TFTP 文件传输** [list=1] (*)在bsp\qemu-vexpress-a9 路径下,打开Env prompt,type "menuconfig" (*)通过 env 配置将示例代码加入到项目中 ``` RT-Thread online packages ---> IoT - internet of things ---> netutils: Networking utilities for RT-Thread ---> (*) Enable TFTP(Trivial File Transfer Protocol) server ``` ![RTT_config_tftp.png](/uploads/201807/31/225409m5s9c566q80686wv.png) (*)按下面路径找到 lwIP 的 tcpip 默认配置,将原来默认的 1024 改为 2048 ``` RT-Thread Components ---> Network stack ---> light weight TCP/IP stack ---> (2048) the stack size of lwIP thread ``` ![RTT_config_tftp_lwip.png](/uploads/201807/31/225454o684683837860t2e.png) (*)type "scons",开始编程 (*)type “qemu",进入msh。 (*)先查看 ip 地址,在msh,type "ifconfig",记下 ip 地址(如192.168.137.139) (*)在msh,type "tftp_server",进入伺服器模式,如图。 ![RTT_result_tftp_server.png](/uploads/201807/31/225320tntnytmnlbwwznbt.png) (*)在PC端,打开tftpd程式,设定 ip 地址,如图。 ![RTT_result_tftp_clt.png](/uploads/201807/31/225535i8o5erze81d0r0r1.png) (*)先传输(put)一个文件(sky city.png)到 RT-Thread 上,如图所示。 ![RTT_result_tftp_put.png](/uploads/201807/31/225618r79l9z3bbw59ds1w.png) (*)在msh,type "ls",可看到刚上传的档案。 ![RTT_result_tftp_ls.png](/uploads/201807/31/230247l6r1rftld62sqat4.png) (*)再下载(get)一个文件(hello.txt)到 PC上,如图所示。 ![RTT_result_tftp_clt_get.png](/uploads/201807/31/230402z0lod6zeukge3e3g.png) ![RTT_result_tftp_get.png](/uploads/201807/31/230319oho1fhavpqyvvzof.png) (*)在PC端,可看到刚下载的档案。 ![RTT_result_tftp_file.png](/uploads/201807/31/230441u2udhi882mdqj8bu.png) [/list] [align=center]![FastAdmin]() 在网路编程的过程中,有时需要一些工具,例如, **抓包工具wireshark:** [list=1] (*)如想要看NTP的packet,可以用Wireshark,设定在tap网卡上,查看NTP protocol packet,如图。 ![RTT_wireshark_ntp.png](/uploads/201807/31/233311gosy36oyy4yzkyk7.png) (*)并检查NTP的packet内容,如图。 ![RTT_wireshark_ntp_packet.png](/uploads/201807/31/233809xa27nfw77306q3z8.png) [/list] [align=center]![FastAdmin]() **结论:**就第一次使用RT-Thread的新手而言,env 工具提供了一个很容易上手的开发环境,QEMU仿真器则免去了架设硬体的烦恼,不到几天的时间就学习了TCP,UDP,TELNET,TFTP,NTP等的知识,真是不错。可以对照QEMU的环境在硬件上开发就容易的多了。End [align=center]![FastAdmin]()
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
3.5k
关于作者
pingl98
这家伙很懒,什么也没写!
提问
5
回答
0
被采纳
0
关注TA
发私信
相关问题
1
【LWIP学习营】第一关开发环境搭建
2
LWIP学习营第一周入门移植问题汇总贴
3
【LWIP学习营】f407+lan8720A小结
4
【LwIP学习营】【第一周】仅零散记录,无主题
5
【LWIP学习营】正点原子探索者F407+LAN8720第一周小结
6
【LwIP学习营】【第一周】网络通信基础及实现TCP 聊天客户端
7
【LwIP学习营】【第一周】LWIP移植
8
【LwIP学习营】【第一周】LWIP移植
9
【LwIP学习营】【第一周】开发板适配
10
【LwIP学习营】【第一周】环境搭建和配置验证
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
2
RT-Thread EtherKit开源以太网硬件正式发布
3
如何在master上的BSP中添加配置yml文件
4
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
5
RT-Thread 发布 EtherKit开源以太网硬件!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
15
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部