Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT_USING_POSIX
getchar
web_terminal
10
启用RT_USING_POSIX时getchar调用过程
发布于 2020-12-28 01:39:28 浏览:2606
订阅该版
给各位大佬倒茶,想求助下在开启RT_USING_POSIX时,串口getc()函数到系统getchar()函数之间的调用路径。 小弟在调试@armink 大佬编写的的web_terminal组件时发现如果开启了RT_USING_POSIX和RT_USING_DEVICE时,宏配置开关为: ![p1.png](/uploads/20201228/04eb73af09483812149e7738ff3c574a.png) 此时的finsh_get_device(),finsh_set_device()无效,web_terminal不能正确的将数据读取至finsh模组,想通过自己的方式来实现web_terminal这部分所需要的接口,同时也能学习下finsh的运作原理,但是跟踪到getchar()函数时断了思路,始终不明白串口的数据是怎么样输出到这个函数并返回的 ![P2.png](/uploads/20201228/e32820ec52c4519b15ad43311f310605.png) 在未启用RT_USING_POSIX时都还能理解,通过设备注册的read,write函数来传递数据,单是当启动了RT_USING_POSIX,就找不到数据传递路径了,特在此求助,感谢回复。
查看更多
3
个回答
默认排序
按发布时间排序
Sanonz
2023-02-08
这家伙很懒,什么也没写!
### 我看论坛挺多人对这里比较疑惑,这里整理了具体的调用流程,方便更多人理解 一、在 `syscalls.c` 这里实现了 `getchar()` 的重定向 `fgetc()`,当开启 `RT_USEING_POSIX ` 时调用 `getchar()` 会进到这里 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230208/e7ebb0a32d606df4a5d1b98b2904e433.png.webp) 二、在 `dfs_posix.c` 中实现了上图的 `read` 方法 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230208/fb13d2ba00f9a303c12a06a422abf3cd.png.webp) 三、在 `dfs.c` 中实现了上图的 `fd_get()` 方法,这里调用了 `libc_stdio_get_console()` 方法获取 Console 对象 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230208/88fc5ad2da16080e59caa45299d225bd.png.webp) 四、在 `stdio.c` 中实现了上图的 `libc_stdio_get_console()` 方法,返回的结果为 `libc_stdio_set_console()` 方法设置的 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230208/5d92cd4849afbb765d9fb92ce647b201.png.webp) 五、而调用 `libc_stdio_set_console()` 设置的地方在 `libc.c` 中,设置的 `dev_console` 设备最终所以绕了一圈是通过 `rt_console_get_device()` 获取的,这里获取的串口设备就是通过 `RT_CONSOLE_DEVICE_NAME` 配置的 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230208/6473bbf7ea545b8a97bed36969db9c6d.png.webp)
张世争
2020-12-29
学以致用
函数指针的使用。 单步F11跟进去!!
jaffer
2022-10-25
You can contact me by Email, jaffer.work@foxmail.com, if you want.
遇到同样的问题,暂时没有思路,但是只要把RT_USING_POSIX关闭finsh就可以输入,插个眼等待后续
撰写答案
登录
注册新账号
关注者
0
被浏览
2.6k
关于作者
Rses_001
这家伙很懒,什么也没写!
提问
6
回答
19
被采纳
0
关注TA
发私信
相关问题
1
使能POSIX接口,提示#include sys/time.h 找不到
2
【小白求助】RT_USING_POSIX_STDIO这个宏是什么意思?
3
应用agile_modbus tcp例程之后 finsh命令接口只能输出而不能输入了
4
Finsh rt_hw_console_getchar() 需要做成阻塞式的吗?
5
STM32F767移植rt-thread nano时 Finsh 无法读取输入
推荐文章
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中的time溢出问题,时间戳溢出,解决方法
2
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
3
SystemView线程名字不显示
4
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
5
免费申请 | FRDM-MCXA156评测活动发布!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
8
个答案
2
次被采纳
三世执戟
7
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
chenyaxing
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
3
次点赞
YZRD
1
篇文章
2
次点赞
Days
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部