【移植问题】移植nr_micro_shell输入命令无回显问题

nr_micro_shell移植到freertos 参考连接。 阅读详情

nr_micro_shell是一款为MCU编写的开源命令行工具

问题描述

串口输入命令后有反应,命令能解析,但是没有显示输入的内容。ansi_show_char和shell_printf均能正常使用。问题现象如下图所示
请添加图片描述

原因分析和解决方法

配置文件nr_micro_shell_config.h定义了宏#define NR_MICRO_SHELL_SIMULATOR。因为是裸机环境,所以移植时需要注释掉RTOS相关头文件。
在这里插入图片描述
应该直接将这部分代码删掉或注释掉,不要定义宏NR_MICRO_SHELL_SIMULATOR
在这里插入图片描述
因为命令行回显是在文件ansi_port.c中的nr_ansi_common_char_slover函数调用ansi_show_char实现的

void nr_ansi_common_char_slover(ansi_st *ansi, char x)
{
    unsigned int i;

    if (ansi->counter < NR_ANSI_LINE_SIZE - 2) {
        if (ansi->p < (short)(ansi->counter)) {
            for (i = ansi->counter; (short)i > ansi->p; i--) {
                ansi->current_line[i] = ansi->current_line[i - 1];
            }
        }

        ansi->p++;
        ansi->counter++;

        ansi->current_line[ansi->p] = x;

        ansi->current_line[ansi->counter] = '\0';
        if (ansi->p + 1 < (short)(ansi->counter)) {
            shell_printf("\033[1@");
        }

#ifndef NR_MICRO_SHELL_SIMULATOR
        ansi_show_char(x); // 这个地方
#endif
    } else {
        ansi->counter = NR_ANSI_LINE_SIZE - 3;
        if (ansi->p >= (short)(ansi->counter)) {
            ansi->p = ansi->counter - 1;
        }
        ansi->current_line[ansi->counter] = '\0';
    }
}

删除宏后运行正常
请添加图片描述

移植参考以下文档

nr_micro_shell在STM32+FreeRTOS平台的移植和使用 nr_micro_shell在STM32+FreeRTOS平台中移植和使用起来。 阅读详情

相关推荐

STM32轻量级命令行交互:nr_micro_shell在FreeRTOS上的高效移植

本文详细介绍了如何将轻量级命令行交互工具nr_micro_shell移植到基于FreeRTOS的STM32平台。通过串口中断与信号量同步实现高效输入,并重定向printf完成输出,最终实现了一个ROM占用仅约3.5KB的实用调试工具。该移植为STM32开发提供了便捷的命令行交互能力,显著提升了调试与参数配置效率。

book8的博客 786

【嵌入式】开源shell命令行的移植和使用(1)——nr_micro_shell

在进行调试和维护时,常常需要与单片机进行交互,获取、设置某些参数或执行某些操作,nr_micro_shell正是为满足这一需求,针对资源较少的MCU编写的基本命令行工具。虽然RT_Thread组件中已经提供了强大的finsh命令行交互工具,但对于ROM、RAM资源较少的单片机,finsh还是略显的庞大,在这些平台上,若仍想保留基本的命令行交互功能,nr_micro_shell是一个不错的选择。

sinat_33408502的博客 4045

【嵌入式】轻量级命令行交互实战:nr_micro_shell在资源受限MCU上的移植与优化

本文详细介绍了轻量级命令行工具nr_micro_shell在资源受限MCU上的移植与优化实践。通过分析其优势、移植步骤、优化技巧及常见问题排查,帮助开发者高效实现嵌入式系统的交互调试功能,特别适合Flash和RAM资源紧张的应用场景。

weixin_33719619的博客 876

移植使用nr_micro_shell

在使用linux和win系统的时候大家看到命令行也是很熟悉的了,大家的第一个hello程序应该都是控制台程序,在系统层面我们可以使用命令行操作我们的pc,那么在单片机里面通过串口怎么用命令操作单片机呢?显然第一想法是我们去自己写一个shell,我以前也写过,这样效率很低,还可能有bug,突然一天发现一个开源的纯c的shell。nr_micro_shell: shell for MCU. 单片机命令行交互。首先把代码弄下来;代码的结构作者已经写的很清楚了,我们只需要关注examples,inc,src。

HES_C的博客 1208

给MCU装上‘嘴巴’和‘耳朵’:手把手教你为STM32移植nr_micro_shell命令行

本文详细介绍了如何为STM32移植nr_micro_shell命令行工具,实现嵌入式系统的交互式调试。通过串口配置、shell集成和命令注册等步骤,开发者可以轻松为MCU添加类Linux的终端功能,提升调试效率和灵活性。文章还涵盖了自定义命令开发、性能优化及安全实践等进阶内容。

weixin_30314813的博客 424

STM32轻量级命令行交互:nr_micro_shell在FreeRTOS中的高效移植实践

本文详细介绍了如何在STM32平台上高效移植nr_micro_shell轻量级命令行工具到FreeRTOS系统中。通过分析其低资源占用特性(ROM仅3.8KB,RAM约1.1KB)和实用功能(命令补全、历史查询等),提供从硬件准备、工程配置到中断优化、自定义命令实现的完整移植指南,帮助开发者快速构建嵌入式调试交互界面。

weixin_30872157的博客 494

APM32-----裸机移植NR_MICRO_SHELL

因为项目需求需要使用APM32F030R8该款芯片开发产品,因为rom(64k)和ram(8k)不多,所以使用了裸机开发,为了更好的调试,达到rt-thread finsh那种效果,我在网上查找到了一个开源比较小的shell(NR_MICRO_SHELL),也可以达到rt-thread,shell的效果,所以我决定移植他到我的程序上面。

weixin_43582320的博客 709

STM32轻量级命令行交互:nr_micro_shell在FreeRTOS环境下的高效移植

本文详细介绍了如何在STM32的FreeRTOS环境中高效移植nr_micro_shell轻量级命令行交互工具。通过对比分析,nr_micro_shell以其极低的资源占用(ROM增量约4KB,RAM约1KB)成为资源受限MCU的理想选择。文章提供了从工程配置、核心移植步骤到添加自定义命令的完整指南,并分享了DMA+空闲中断等性能优化技巧,旨在为开发者打造一个高效的在线调试环境。

weixin_29194693的博客 327

HC32F072之nr_micro_shell移植+源码

在进行调试和维护时,常常需要与单片机进行交互,获取、设置某些参数或执行某些操作,nr_micro_shell正是为满足这一需求,针对资源较少的MCU编写的基本命令行工具。虽然RT_Thread组件中已经提供了强大的finsh命令行交互工具,但对于ROM、RAM资源较少的单片机,finsh还是略显的庞大,在这些平台上,若仍想保留基本的命令行交互功能,nr_micro_shell是一个不错的选择。1.占用资源少,使用简单,灵活方便。值得注意的是,此接口也可以不放在中断里面哦,也可以放在RTOS中的某个任务里。

ic2121的博客 801

STM32上玩转Linux命令行?手把手教你移植nr_micro_shell到FreeRTOS(附性能对比)

本文详细介绍了如何在STM32平台上将轻量级命令行工具nr_micro_shell移植到FreeRTOS系统。通过对比分析其与finsh的资源占用和功能特性,提供了从环境配置、源码集成到性能优化的完整移植指南,帮助开发者在资源受限的嵌入式设备上实现高效的命令行交互体验。

weixin_29188997的博客 431

nr_micro_shell:超轻量嵌入式命令行Shell框架

嵌入式命令行Shell是MCU调试与交互的核心组件,其本质是在资源受限环境下实现类Linux终端的输入解析、历史管理与ANSI控制功能。原理上依赖状态机驱动的零拷贝字符流解析、静态内存布局与硬件抽象层解耦,技术价值在于将ROM/RAM开销压缩至极致(典型3.8KB/1.1KB),显著优于finsh等传统方案。适用于STM32F0、GD32E230、CH32V003等8KB Flash/2KB RAM级MCU的裸机或RTOS调试接口开发,尤其契合对启动时间、内存确定性及移植灵活性有严苛要求的工业与IoT终端场

weixin_33557333的博客 222

STM32 Nr shell 命令行移植

玩单片机也要使用命令行工具,百度了一些命令行工具,有几个不错的开源 cmd 交互工具,主要看了 finsh 和 nr_micro_shell 两个开源项目,本文完成 nr_micro_shell 移植到 stm32

嵌入式学习记录站点 1893

nr_micro_shell:在进行调试和维护时,经常需要与单片机进行交互,获取,设置某些参数或执行某些操作,nr_micro_shell正是为满足这一需求,针对资源替代的MCU编写的基本命令行工具。尽管RT_Thread组件中已经提供了强大的finsh命令行交互工具,但对于ROM,RAM资源中断的单片机,​​finsh还是略显的庞大,在这些平台上,若仍想保留基本的命令行交互功能,nr_micro_shell是一个不错的选择。nr_micro_shell具有以下优点:1.占用资源少,使用简单,灵活方便。使

nr_micro_shell v1.0.2 1,介绍 在RT_Thread中进行调试和维护时,常常需要与单片机进行交互,获取,设置某些参数或执行某些操作, nr_micro_shell正是为满足这一需求,针对资源替代的MCU编写的基本命令行工具。组件中已经提供了强大的完成日常命令行交互工具,但对于ROM,RAM资源较少的单片机,完成日常还是略显的庞大,在这些平台上,若仍想保留基本的命令行交互功能,nr_micro_shell是一个不错的选择。 nr_micro_shell具有以下优点 1.占用资源少,使用简单,灵活方便。使用过程只涉及两个shell_init()和shell()两个函数,无论是使用RTOS还是裸机都可以方便的应用该工具,不需要额外的编码工作。 2.交互体验好。完全使用Linux shell命令行,当串口终端支持ANSI(如Hyper终端)时,其支持基本的命令行交互,还提

nr_micro_shell使用

stm32移植nr_micro_shell库

weixin_42148680的博客 979

基于LightGBM和多模型融合的量化交易研究:沪深300为例【附代码】

📊 数据科学与大数据专业 | 数据分析与模型构建 | 数据驱动决策✨ 专业领域:数据挖掘与清洗大数据处理与存储技术机器学习与深度学习模型数据可视化与报告生成分布式计算与云计算数据安全与隐私保护💡 擅长工具:Python/R/Matlab 数据分析与建模Hadoop/Spark 大数据处理平台SQL数据库管理与优化Tableau/Power BI 数据可视化工具TensorFlow/PyTorch 深度学习框架✅数据科学与大数据技术毕业论文【数据】

lagougongzuoshi的博客 1670

【R语言】富集分析可视化代码(整理版)

分别介绍了如何使用DAVID在线分析工具对基因进行GO/KEGG功能富集分析、使用R ggplot包对获得的基因GO/KEGG功能富集结果进行可视化、使用R clusterProfiler包和R AnnotationHub包对基因进行GO/KEGG功能富集分析、OrgDb包制作以及结果可视化等。故,我重新整理了一波,并补充了可对多个分组的富集结果进行可视化以及富集结果绘制圈图等的代码。关注“在打豆豆的小潘学长”公众号,发送“富集分析3”获得完整代码包和演示数据。一、单组富集结果可视化。

weixin_54004950的博客 1万+

给MCU瘦身:在RT-Thread和裸机上都好用的轻量级命令行nr_micro_shell移植避坑指南

本文详细介绍了轻量级命令行工具nr_micro_shell在嵌入式系统中的移植与优化实践。针对资源受限的MCU环境,nr_micro_shell以不足1KB的内存占用提供完整交互功能,支持RT-Thread和裸机系统。文章深入解析移植过程中的关键决策、典型陷阱及解决方案,并分享高级功能扩展和性能优化技巧,帮助开发者实现高效的嵌入式调试。

weixin_30292745的博客 776

miniDP与DP管脚定义差异详解及设计避坑指南

本文详细解析了Mini DisplayPort与标准DisplayPort接口在管脚定义上的核心差异,通过对比表格直观展示了两者20针脚的不同排列方式,特别是高速差分信号线的分布。文章结合真实设计案例,为硬件工程师提供了从原理图设计、PCB布局到信号完整性考量及故障排查的完整避坑指南,强调绝不能将两者视为简单的物理缩小版。

weixin_29248653的博客 362

STM32上玩转Linux命令行?手把手教你移植nr_micro_shell(附FreeRTOS适配指南)

本文详细介绍了如何在STM32上移植nr_micro_shell实现Linux级命令行交互,并提供了与FreeRTOS深度整合的实战指南。通过轻量级的nr_micro_shell解决方案,开发者可以在资源受限的嵌入式设备上获得高效的命令行调试能力,显著提升开发效率。文章包含环境搭建、FreeRTOS适配策略、高级功能实现及性能优化等完整教程。

weixin_30736301的博客 714

思科9117AP从零配置EWC模式实战:Wi-Fi6网络搭建避坑指南

本文详细介绍了思科9117AP在Wi-Fi6网络环境下配置EWC模式的实战指南,涵盖镜像准备、网络环境配置、模式转换步骤及高级运维技巧。通过EWC模式,企业可实现控制器与AP的一体化部署,显著降低成本和简化运维,特别适合中小企业Wi-Fi6网络搭建。

weixin_28318011的博客 332

Transformer数学推导——Q38 旋转位置编码(RoPE)的复数形式 对注意力分数的几何影响分析

RoPE 的复数形式为自然语言处理中的位置编码提供了创新且有效的解决方案。通过深入的数学理论分析,明确了其对注意力分数的几何影响及在捕捉位置信息方面的优势。在 LLM 的实际应用中,RoPE 复数形式在多个任务和场景中展现出强大的性能,特别是在处理长序列文本时,能够有效捕捉长距离依赖、缓解位置编码局限性并提升处理效率。然而,RoPE 复数形式也面临计算复杂度高、超参数调整困难和位置信息平衡等挑战。通过合理的优化策略和与其他技术的结合,有望进一步提升其性能。

墨顿随笔 1419

nr_micro_shell回车不输出用户名问题

解决nr_micro_shell运行时单次回车无法响应输出用户名的问题。

kingnike的博客 531

YOLOv13添加DRB模块map暴涨12.33!准确率提升8.56!召回率提升15.66

本文介绍了在YOLOv13模型中添加DRB模块的改进方法。实验结果显示,添加DRB模块后模型性能显著提升,mAP暴涨12.33%,准确率提升8.56%。文章详细说明了移植过程,包括创建yolov13-DRB.yaml配置文件、修改tasks.py和__init__.py文件,以及引入UniRepLKNet模块的具体实现。其中重点描述了GRNwithNHWC、NCHWtoNHWC等核心组件的实现细节,并提供了完整的模型结构配置代码。这些改进使得YOLOv13模型在保持原有架构优势的同时,获得了更强大的特征提取

FJN110的博客 2819
上一篇: 泰凌微B91开发环境搭建
下一篇: Typora正版激活失败,提示 Failed to write your license to local machine,修改注册表拒绝访问
该起床了1111
博客等级 码龄9年 67粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值