Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
【7天入门RTOS网络编程】Nautilus day1-2 作业1, 2, 3
发布于 2018-10-16 09:06:04 浏览:2126
订阅该版
* 本帖最后由 yukelab 于 2018-10-18 20:00 编辑 * **作业123** **题目1** * 题目要求: 获取并运行文件系统相关示例程序; * 完成思路: 主要使用menuconfig进行配置,获取例程代码。 * 具体步骤: 为描述方便,使用RTT_dir表示git clone下rt-thread的目录 第一题很简单,视频里有,主要是Env的使用; [list=1] (*)RTT_dir\bsp\qemu-vexpress-a9,右键打开ConEmu [/list] ![154,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/10205b4844184d91a28aa99b2d5553a3/ip_image002.jpeg) [list=1] (*)输入menuconfig,进行系统配置,实例代码需要从git上pull,因此,需要在RT-Thread online packages中配置。 [/list]依次进入 ![554,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/e0f822aa6b6d4b67a055cd4fba1cc7f0/ip_image004.jpeg) ![554,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/8cf88d0bbb794e7e8001942348d9e955/ip_image006.jpeg) [list=1] (*)一路Esc退出menuconfig,退出后,pkgs –-update, 激活git从仓库pull代码到本地。 [/list] ![554,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/a39f1240993944088360cc83a94a2802/ip_image008.jpeg) [list=1] (*)成功update代码到本地后,scons编译代码。 [/list] ![554,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/3ebe288ba2f0415e8180cc29a1a1efd5/ip_image010.jpeg) 运行结果: 编译成功,启动qemu。 启动若程序不执行,可能是Qemu pause了,去掉Pause 前的选项,开始进入系统; ![520,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/9b7eccd2263e47b0a67095e5c83ec17f/lip_image011.png) RTT的logo出现了 ![554,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/654d3eec8c4349a2a937586c617fc0b3/ip_image013.jpeg) 按Tab键将所有的Msh命令输出 ![554,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/815473c45ccf4d09b00e145bec7b22f8/ip_image015.jpeg) 文件系统相关的例程export进Msh里了; 看看这几个sample,mkdir_sample, 代码中创建了dir_test目录, ```static void mkdir_sample(void) { int ret; /* 创建目录*/ ret = mkdir("/dir_test", 0x777); if (ret < 0) { /* 创建目录失败*/ rt_kprintf("dir error!
"); } else { /* 创建目录成功*/ rt_kprintf("mkdir ok!
"); } }``` 结果产生dir_test目录 ![488,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/2b497010be2e4fe397ca58a97635dbbe/lip_image016.png) open_file_sample 打开文件或创建text.txt,并向该文件中写入RT-Thread Programmer!,然后打开,读取text.txt文件,读取文件内容并rt_kprintf出来。其他就再说了。 ![307,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/2bf43b1c6f8c4153b886178ea8565cc6/lip_image017.png) **题目2** * 题目要求: 文本数据替换:1.txt 里面有文本信息 123456789,将 123 替换为 abc. * 完成思路: 打开文件->读取文件->字符串查找->字符串替换->写入文件 * 具体步骤: [list=1] (*)由于文件与其他文件例程放在一起,所以照猫画虎,修改了对应目录下的SConscript文件,添加如下部分 [/list] ```if GetDepend('RT_USING_SAMPLE_TELL_SEEK_DIR'): src += ['replace/replace.c'] CPPPATH += [cwd + '/replace']``` [list=1] (*)在qemu-vexpress-a9\packages\samples-latest添加replace文件夹,并添加了replace.c文件,文件内容如下: [/list] ```#include
#include
/* 当需要使用文件操作时,需要包含这个头文件 */ #include
static void replace_sample(void) { int fd; char *p_str; rt_kprintf("open 1.txt that content are 123456789
"); rt_kprintf("and replace 123 to abc
"); /* 未初始化为0,会导致文件输出大小为80b */ /* 会用其他数据,填充buffer,产生预期结果后面部分带有乱码 */ char buffer[80] = {0}; /* 打开/1.txt 读取内容 */ fd = open("/1.txt", O_RDONLY); if (fd >= 0) { read(fd, buffer, sizeof(buffer)); rt_kprintf("1.txt -> %s.
", buffer); close(fd); } p_str = strstr(buffer, "123"); if (NULL == p_str) { rt_kprintf("Did not find string 123.
"); } else { rt_kprintf("find string 123 and replace with abc.
"); strncpy(p_str, "abc", 3); } /* 打开/text.txt 准备作读取动作*/ fd = open("/1.txt", O_WRONLY); if (fd >= 0) { rt_kprintf("%s", buffer); write(fd, buffer, sizeof(buffer)); close(fd); } } /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(replace_sample, replace sample); ``` * 运行结果: ![545,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/f79d8774e3424167b2cd18792074c143/lip_image018.png) ![554,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/d5b5a5ad954b42aa8b640db6da678d66/ip_image020.jpeg) **题目3:** * 题目要求: 文件匹配: 有一系列文件如:1.txt, 12.txt, 123.txt,从中找出1.txt,并将文件内容输出出来 * 完成思路: 读取目录->文件名字符串匹配->输出查找到的文件内容 * 具体步骤: [list=1] (*)如题目3解题过程中,同样方法建立findfile相关目录和文件 [/list] ```#include
#include
/* 当需要使用文件操作时,需要包含这个头文件 */ #include
static void findfile_sample(void) { DIR *dirp; struct dirent *d; int fd; int flag = 0; char buffer[80] = {0}; /* 打开/dir_test 目录*/ dirp = opendir("/"); if (dirp == RT_NULL) { rt_kprintf("open directory error!
"); } else { /* 读取目录*/ while ((d = readdir(dirp)) != RT_NULL) { f = d->d_name; if (strcmp(f, "1.txt")) { flag = 1; /* 为什么这里输出的1.txt前一个文件名 */ rt_kprintf("%s founded!
", f); break; } } /* 关闭目录 */ closedir(dirp); } if (1 == flag) { fd = open("1.txt", O_RDONLY); if (fd >= 0) { read(fd, buffer, sizeof(buffer)); close(fd); } else { rt_kprintf("open file failed.
"); } rt_kprintf("%s
", buffer); } } /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(findfile_sample, findfile sample); ``` [list=1] (*)Qemu文件系统根目录下创建下列文件 [/list][table=0] [tr][td]**文件名** [/td][td]**内容** [/td][/tr] [tr][td]**1.txt** [/td][td]1 [/td][/tr] [tr][td]**12.txt** [/td][td]12 [/td][/tr] [tr][td]**123.txt** [/td][td]123 [/td][/tr] [/table] ![358,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/dc1376d6ef5d4998adfb74265408b90a/lip_image021.png) * 运行结果: 运行结果: ![554,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/5f43a961adb6448bbb05eea7235b0ede/lip_image022.png) * 一个问题: 每次打开qemu,都是Pause状态,如何更改这个设置? ![554,0](C:/Users/Dell/AppData/Local/YNote/data/yuke_1412@163.com/ec21e450135a4883b411a94b08de0d48/ip_image024.jpeg) 下载附件 [作业123.pdf](https://oss-club.rt-thread.org/uploads/201810/16/093354t7q79hmjbdbm97hq.attach)
查看更多
9
个回答
默认排序
按发布时间排序
yukelab
2018-10-16
这家伙很懒,什么也没写!
文档图片太多,传一张缩略图,看看
flyboy
2018-10-16
Do my self();
完成的很快嘛:D
yqiu
2018-10-16
这家伙很懒,什么也没写!
挺好的,图片太多,也可以直接上传 pdf 文件。
flyboy
2018-10-16
Do my self();
就是主题上要加上自己的名字,群里的昵称也行啊,要不然不知道是谁做的啊
yukelab
2018-10-16
这家伙很懒,什么也没写!
>就是主题上要加上自己的名字,群里的昵称也行啊,要不然不知道是谁做的啊 ... --- 已处理,:)
我夏了夏天
认证专家
2018-10-16
Life isn't about finding yourself, life is about creating yourself.
看来楼主学习收获不小呀
XQQ
2018-10-16
这家伙很懒,什么也没写!
完成的好认真啊,抄作业模板了
风雨潇潇
2018-10-16
这家伙很懒,什么也没写!
厉害厉害,几个示例代码摸得透透的,感受到了强大的编程功底啊!
yukelab
2018-10-19
这家伙很懒,什么也没写!
Qemu 运行pause解决办法 查了下qemu-doc.html, 发现这两个参数-S -s -S Do not start CPU at startup -s Shorthand for -gdb tcp::1234, i.e. open a gdbserver on TCP port 1234 去掉qemu.bat 文件中 -S参数,ConEmu下,qemu,系统就不会pause了
撰写答案
登录
注册新账号
关注者
0
被浏览
2.1k
关于作者
yukelab
这家伙很懒,什么也没写!
提问
17
回答
47
被采纳
1
关注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
组件 lwip v2.0.3 版本使用 netdev网卡的 ping 功能
2
简单两步配置RTT源码阅读环境 vsc+clangd
3
恩智浦[FRDM-MCXN947]初探 之 ADC与DAC
4
LVGL使用字库IC芯片显示中文
5
基于STM32H750和Rt-Thread的CANFD通信实现的记录(一)
热门标签
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
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
807
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部