IAR移植letter shell

简介

体验过rtt的finsh组件后,总想在裸机工程中跑一个shell来调试程序,于是找到了一个功能强大的嵌入式shell组件,letter shell点击查看源码
这里使用基础版本的2.0。更多内容参考源码中README.md文件
显示

一、添加源码到工程

添加目录

二、添加section =“shellCommand”

不添加提示报错 Error[Pa053]: section/block has not been declared using #pragma section/segment
shell.c中添加如下内容

#if defined(__ICCARM__)
#pragma section ="shellCommand"
#endif

三、更改.icf文件

添加一行 keep { section shellCommand };
(我也不太懂这里的作用是什么,我是看rtt里有使用这个,就参照着写了一句,试了下可以,后面看了下git源码的issue区,发现作者有相关的回复。如果有大神理解keep的作用,还请评论指点一下,方便后来人学习。)
添加keep现在就能使用基本的

四、初始化shell

static SHELL_TypeDef shell;
/**
 * @brief  初始化 shell
 */
void shell_init(void)
{
	shell.read = segger_read;
    shell.write = segger_write;
    shellInit(&shell);
}

按照如下shell的read,write类型对接函数接口
read:typedef signed char (*shellRead)(char *);
write:typedef void (*shellWrite)(const char);

五、调用shellTask

main中调用shellTask(&shell);
裸机需要关闭宏:SHELL_TASK_WHILE。

* 命令导出

写了个测试函数

int test_func(int argc, char *agrv[])
{
    SEGGER_RTT_printf(0, "hello word\n");
	SEGGER_RTT_printf(0, "argc:%d\n", argc);
	SEGGER_RTT_printf(0, "argv[0]:%s\n", agrv[1]);
	return 1;
}
SHELL_EXPORT_CMD(run_test, test_func, test);

查看帮助 help
heklp

运行测试函数 run_test fine
run_test
大功告成!!!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值