rtthread底层代码钻研随记 第一章 RT-Thread-FinSH底层代码钻研随记

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

rtthread-uart finsh组件实现机制


提示:以下是本篇文章正文内容,下面案例可供参考

一、FinSH组件是什么?

FinSH 是 RT-Thread 的命令行组件,提供一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息。它可以使用串口 / 以太网 / USB 等与 PC 机进行通信。

二、使用步骤

1.引入数据

1.ping - ping network host

2.MSH_CMD_EXPORT_ALIAS(netdev_ping, ping, ping network host);

3.#define MSH_CMD_EXPORT_ALIAS(command, alias, desc)
MSH_FUNCTION_EXPORT_CMD(command, alias, desc)

4.#define MSH_FUNCTION_EXPORT_CMD(name, cmd, desc)
const char _fsym##cmd##_name[] = #cmd;
const char _fsym##cmd##_desc[] = #desc;
__declspec(allocate(“FSymTab$f”))
const struct finsh_syscall _fsym##cmd =
{
_fsym##cmd##_name,
_fsym##cmd##_desc,
(syscall_func)&name
};
5.void finsh_thread_entry(void *parameter)
shell->line[shell->line_position] = ch

6.int finsh_getchar(void)

7.device_read(dev, pos, buffer, size);

8.rt_serial_read();

9._serial_int_rx(); //因为是中断接收

10.ch = rx_fifo->buffer[rx_fifo->get_index]//环形队列存数据, 哪怎么取了?
2022.9.23

2.取出数据

serial->parent.rx_indicate(&serial->parent, rx_length)---->
finsh_rx_ind(); //释放信号量

finsh_thread_entry();

msh_exec(shell->line, shell->line_position);//shell.c 641

msh_exec();

_msh_exec_cmd(); //msh.c 347

总结

1:rt_hw_serial_isr()//serial.c 1291串口中断回调函数一直接收数据,往rx_fifo->buffer[]循环队列里面丢数据,基本的循环队列的操作(空间是否溢出等等),不做任何数据过滤和处理;
2:finsh_thread_entry() //shell.c 445 线程里面通过finsh_getchar()//shell.c 485一直在提取数据(有些特殊判定,特殊按键),存放到shell->line[]循环队列里面当识别到’\r’或’\n’时,截取数据及长度,确认为一帧数据;
3:通过调用msh_exec();//shell.c 641执行解析msh,并回调对应该的指针函数;
4:在msh_exec()函数之前写个if/else,如果有收到帧头是A0(约定),则执行与PC端的数据交互。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个基于随机森林特征重要性排序的代码示例: ```python import geemap.eefolium as geemap from sklearn.ensemble import RandomForestRegressor # 创建一个随机森林回归模型 rf = RandomForestRegressor() # 假设你有一个特征矩阵X和目标变量y X = ... y = ... # 拟合随机森林模型 rf.fit(X, y) # 获取特征重要性度数组 importances = rf.feature_importances_ # 创建一个字典,将特征名称和对应的重要性度量值对应起来 feature_importances = dict(zip(X.columns, importances)) # 根据重要性度量值进行排序 sorted_feature_importances = sorted(feature_importances.items(), key=lambda x: x\[1\], reverse=True) # 打印排序后的特征重要性 for feature, importance in sorted_feature_importances: print(f"{feature}: {importance}") ``` 这段代码使用了geemap库和sklearn库,首先创建了一个随机森林回归模型,然后拟合模型并获取特征重要性度数组。接着,将特征名称和对应的重要性度量值存储在一个字典中,并根据重要性度量值进行排序。最后,打印排序后的特征重要性。你可以根据自己的数据和需求进行相应的修改和调整。 #### 引用[.reference_title] - *1* [GEE随(二):随机森林特征重要性的排序](https://blog.csdn.net/weixin_48012947/article/details/128616980)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [随机森林做特征重要性排序和特征选择](https://blog.csdn.net/weixin_43290383/article/details/123114875)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值