Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
【7天入门RTOS网络编程】Nautilus day1-2 作业1, 2, 3
发布于 2018-10-16 09:06:04 浏览:2173
订阅该版
* 本帖最后由 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]  [list=1] (*)输入menuconfig,进行系统配置,实例代码需要从git上pull,因此,需要在RT-Thread online packages中配置。 [/list]依次进入   [list=1] (*)一路Esc退出menuconfig,退出后,pkgs –-update, 激活git从仓库pull代码到本地。 [/list]  [list=1] (*)成功update代码到本地后,scons编译代码。 [/list]  运行结果: 编译成功,启动qemu。 启动若程序不执行,可能是Qemu pause了,去掉Pause 前的选项,开始进入系统;  RTT的logo出现了  按Tab键将所有的Msh命令输出  文件系统相关的例程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目录  open_file_sample 打开文件或创建text.txt,并向该文件中写入RT-Thread Programmer!,然后打开,读取text.txt文件,读取文件内容并rt_kprintf出来。其他就再说了。  **题目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); ``` * 运行结果:   **题目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]  * 运行结果: 运行结果:  * 一个问题: 每次打开qemu,都是Pause状态,如何更改这个设置?  下载附件 [作业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.2k
关于作者
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
在 RT-Thread Studio 环境中为 ART-Pi 2 移植 CherryUSB(以 usb_device 为例)
2
嵌入式ARM RISCV toolchain工具 梳理arm-none-eabi-gcc
3
使用官方BOOT升级,看这一篇就够了?(以STM32F407VGT6为例)
4
可以使用MQTT连接AI大模型吗
5
RT-Thread离线包制作
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
cubemx
ESP8266
WIZnet_W5500
UART
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
GD32
定时器
ADC
flashDB
编译报错
socket
keil_MDK
中断
rt_mq_消息队列_msg_queue
Debug
SFUD
msh
ulog
C++_cpp
at_device
本月问答贡献
聚散无由
8
个答案
6
次被采纳
RTT_逍遥
7
个答案
2
次被采纳
加缪
2
个答案
2
次被采纳
踩姑娘的小蘑菇
6
个答案
1
次被采纳
a1012112796
4
个答案
1
次被采纳
本月文章贡献
wake_mirco
2
篇文章
7
次点赞
mushroom
1
篇文章
8
次点赞
张世争
1
篇文章
7
次点赞
rv666
1
篇文章
4
次点赞
Jack_____
1
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部