Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
FinSH
编译器
C-Sky
5
FinSH 控制台 help: command not found.
发布于 2022-07-02 18:22:35 浏览:919
订阅该版
大家好: 我移植rt到一个国产芯片上,FinSH功能有问题。 爱普特微1023芯片。 C-Sky开发平台 nano 3.1.5 版移成功 FinSH 的移植,这部分程序与编译平台相关,平台不一样,所以没有开启自动初始化(主要是没看明白这部分跟编译平台相关的程序,所以不会改)。 进行了手动初始化串口和finsh线程,调用了下面二个程序。 ```c uart_init(); finsh_system_init(); // ``` 并没有调用,`rt_components_board_init();`和 `rt_components_init();` 宏:`RT_USING_COMPONENTS_INIT`,也没有开启。 程序改动如下。 ```c /** * This function will initial CK802 board. */ void rt_hw_board_init(void) { //phobos_ioreuse_initial(); /* NVIC Configuration */ drv_nvic_init(2); APT32F102_init(); // uart_init(); //串口初始化 #ifdef RT_USING_COMPONENTS_INIT //rt_components_board_init(); #endif #if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE) rt_console_set_device(RT_CONSOLE_DEVICE_NAME); #endif #ifdef RT_USING_HEAP rt_system_heap_init((void *)SYS_HEAP_BEGIN, (void *)CK802_IRAM_END); #endif } ``` ```c /* the system main thread */ void main_thread_entry(void *parameter) { extern int main(void); extern int $Super$$main(void); finsh_system_init(); //finsh线程初始化 #ifdef RT_USING_COMPONENTS_INIT /* RT-Thread components initialization*/ //rt_components_init(); #endif /* invoke system main function */ #if defined(__CC_ARM) || defined(__CLANG_ARM) $Super$$main(); /* for ARMCC. */ #elif defined(__ICCARM__) || defined(__GNUC__) main(); #endif } ``` finsh_system_init()的部分程序,被#if 0 #endif 屏蔽。 这部分程序,没明白,还有跟编译平台相关,还没办法解决。 对比的stm32f103的移植工程,这部分程序也是调用了初始化程序(或许不对),所以才屏蔽让FinSH先跑起来。 ```C /* * @ingroup finsh * * This function will initialize finsh shell */ int finsh_system_init(void) { rt_err_t result = RT_EOK; rt_thread_t tid; // #ifdef FINSH_USING_SYMTAB #if 0 #if defined(__CC_ARM) || defined(__CLANG_ARM) /* ARM C Compiler */ #pragma message("__CC_ARM || __CLANG_ARM") extern const int FSymTab$$Base; extern const int FSymTab$$Limit; extern const int VSymTab$$Base; extern const int VSymTab$$Limit; finsh_system_function_init(&FSymTab$$Base, &FSymTab$$Limit); #ifndef FINSH_USING_MSH_ONLY finsh_system_var_init(&VSymTab$$Base, &VSymTab$$Limit); #endif #elif defined (__ICCARM__) || defined(__ICCRX__) /* for IAR Compiler */ #pragma message("__ICCARM__ || __ICCRX__") finsh_system_function_init(__section_begin("FSymTab"), __section_end("FSymTab")); finsh_system_var_init(__section_begin("VSymTab"), __section_end("VSymTab")); #elif defined (__GNUC__) || defined(__TI_COMPILER_VERSION__) #pragma message("__GNUC__ || __TI_COMPILER_VERSION__") /* GNU GCC Compiler and TI CCS */ extern const int __fsymtab_start; extern const int __fsymtab_end; extern const int __vsymtab_start; extern const int __vsymtab_end; finsh_system_function_init(&__fsymtab_start, &__fsymtab_end); finsh_system_var_init(&__vsymtab_start, &__vsymtab_end); #elif defined(__ADSPBLACKFIN__) /* for VisualDSP++ Compiler */ #pragma message("__ADSPBLACKFIN__") finsh_system_function_init(&__fsymtab_start, &__fsymtab_end); finsh_system_var_init(&__vsymtab_start, &__vsymtab_end); #elif defined(_MSC_VER) #pragma message("_MSC_VER") unsigned int *ptr_begin, *ptr_end; if(shell) { rt_kprintf("finsh shell already init.\n"); return RT_EOK; } ptr_begin = (unsigned int *)&__fsym_begin; ptr_begin += (sizeof(struct finsh_syscall) / sizeof(unsigned int)); while (*ptr_begin == 0) ptr_begin ++; ptr_end = (unsigned int *) &__fsym_end; ptr_end --; while (*ptr_end == 0) ptr_end --; finsh_system_function_init(ptr_begin, ptr_end); #endif #endif #ifdef RT_USING_HEAP /* create or set shell structure */ shell = (struct finsh_shell *)rt_calloc(1, sizeof(struct finsh_shell)); if (shell == RT_NULL) { rt_kprintf("no memory for shell\n"); return -1; } tid = rt_thread_create(FINSH_THREAD_NAME, finsh_thread_entry, RT_NULL, FINSH_THREAD_STACK_SIZE, FINSH_THREAD_PRIORITY, 10); #else shell = &_shell; tid = &finsh_thread; result = rt_thread_init(&finsh_thread, FINSH_THREAD_NAME, finsh_thread_entry, RT_NULL, &finsh_thread_stack[0], sizeof(finsh_thread_stack), FINSH_THREAD_PRIORITY, 10); #endif /* RT_USING_HEAP */ rt_sem_init(&(shell->rx_sem), "shrx", 0, 0); finsh_set_prompt_mode(1); if (tid != NULL && result == RT_EOK) rt_thread_startup(tid); return 0; } ``` 运行后,FinSH 的输入输出都有,就是没有任何命令。下图 ![G9D4UD@BX~2UM6C5S{)JGGT.png](https://oss-club.rt-thread.org/uploads/20220702/8a980b2d5ac7cdc90205340331d22f70.png "G9D4UD@BX~2UM6C5S{)JGGT.png") 问题: 程序finsh_system_init(),被屏蔽部分的功能,实在没看懂,用的宏也不好理解。大家有明白的跟我说下,非常感谢。 或者,command not found.的问题,不是我上面说的原因,而是别的原因?
查看更多
aozima
2022-07-02
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
检查链接脚本,把那几个keep补上。
1
个回答
默认排序
按发布时间排序
撰写答案
登录
注册新账号
关注者
0
被浏览
919
关于作者
PICP_6266
这家伙很懒,什么也没写!
提问
2
回答
1
被采纳
0
关注TA
发私信
相关问题
1
RT-THREAD shell无反应呢?
2
RT-thread2.0beta下用类似linux风格MSH,参数如何输入和导出
3
rt-thread finsh windows下的那个终端软件叫什么来着
4
板子上只有485接口,能把FINSH改造成485的么?
5
finsh最大字符问题
6
finsh命令个数是不是有限制啊
7
finsh支持转义字符吗
8
不用finsh如何知道堆栈使用量
9
强烈建议 RT-Thread下finsh原理深入分析
10
finsh输入命令全部返回null node
推荐文章
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
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部