RTT3自带STM32F2BSP编译后Finsh没运行和疑似线程未能启动

2020-3-27 09:17 [复制链接] 9 166

硬件:公司自己开发的STM32F207的板子,在用基于RT2.1.0的项目工程。8 a  A( I6 T0 {
问题描述:RTT3.1.3自带的STM32F207BSP编译后Finsh没出msh提示符号和疑似线程未能启动。
$ ?4 A9 P4 L( v8 i% Y* o0 l' K: |+ m/ X
4 }$ Z$ w- M$ n3 ?+ `- fRTT的logo能正常打印板子的LED外设也能正常点亮,但是Finsh组件的msh>提示符号不显示,而且发现线程似乎未能启动,因为从现有RT2.1项目在用工程的LED流水灯功能线程不能启动,LED没有流水灯的效果。7 l2 B0 k6 U  h7 ?& j2 U

. g, D; R. j! p& c请教打给大侠,大概是啥原因?$ F( R/ _  ^# P& {" @" `
4 m9 V( i- V$ j( q, ~  e' }: S
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2020-3-27 11:46:40 | 显示全部楼层
芯片RAM太小了,适当减小一些线程栈试试,我有一块030c8的就这样,后来减小栈就可以了
使用道具 举报 回复
发表于 2020-3-27 16:25:59 | 显示全部楼层
sunwan 发表于 2020-3-27 11:46  z+ F! `( S5 p: F
芯片RAM太小了,适当减小一些线程栈试试,我有一块030c8的就这样,后来减小栈就可以了 ...

# c# S, z( z/ J  c7 O你说的“适当减小一些线程栈”,是这个rt_thread_create函数里头的第4个参数吧:
7 J' R. k) s( x+ [4 U; vled_thread = rt_thread_create(% p& A  o6 ]; a; N/ P+ ~: I$ d
"led",
* R5 E$ x$ |6 L, urt_led_thread_entry,
& L/ v2 u1 H- y, l" `RT_NULL,
8 s3 K2 \. F& R! j9 d1024, //线程堆栈1024字节
$ R& e  q, S5 k1 e$ {' K8 N200, //优先级200,* C/ V3 ]( I, w" [7 e" W( t
20);//时间片20个系统嘀嗒  v) o0 H" p7 b7 ~) `: z
+ x8 z* {# x" K( x" t
5 O) Z/ d' k% z' ?: e
使用道具 举报 回复
发表于 2020-3-27 17:53:29 | 显示全部楼层
sunwan 发表于 2020-3-27 11:46
9 x. k. p- j. G6 y芯片RAM太小了,适当减小一些线程栈试试,我有一块030c8的就这样,后来减小栈就可以了 ...
4 w2 P# ]. K, m- s/ U
我初步试了下,改下了线程堆栈,还是不行。
使用道具 举报 回复
发表于 2020-3-27 17:58:06 | 显示全部楼层
iwillbeback008 发表于 2020-3-27 17:53
0 j0 ^6 D2 ~0 f2 m" j  K4 v我初步试了下,改下了线程堆栈,还是不行。

( F" o* k3 L0 R% x% ^# \: sRAM不够,finsh线程起不来,如果只是测试,可以把一些比较大的栈改小,比如:main的栈改成512的,Finsh的栈改成2048或1024,同时历史记录改少试试。
使用道具 举报 回复
发表于 2020-3-27 17:59:34 | 显示全部楼层
sunwan 发表于 2020-3-27 17:584 [% c. D- F9 E* [5 w, W
RAM不够,finsh线程起不来,如果只是测试,可以把一些比较大的栈改小,比如:main的栈改成512的,Finsh的 ...
* R* J! a+ _' K& p  w/ R9 F* E
好的,我再试试。
4 \6 \% h1 z6 K, d1 d9 _' U/ `( CSTM32F207ZGT6[运行频率:120MHz;高达1M字节的片上闪存;高达128K字节的内嵌SRAM]
# R1 z5 j7 L5 Z- {' T+ y0 B+ v; q% d+ G% `8 v
这个芯片的资源配置应该不是很差那种吧?
使用道具 举报 回复
发表于 2020-3-27 18:54:51 | 显示全部楼层
这么大的RAM应该不是线程栈的问题,调试下看finsh线程有没有起来
使用道具 举报 回复
发表于 2020-3-28 10:00:18 | 显示全部楼层
本帖最后由 iwillbeback008 于 2020-3-28 10:03 编辑
% G/ \( D" v+ \( z- O
sunwan 发表于 2020-3-27 18:54) }, V2 c0 {4 {1 \4 B' s( ^+ t( {
这么大的RAM应该不是线程栈的问题,调试下看finsh线程有没有起来
. e8 F& Y# X6 {
我重新解压RTT3.1.3,使用里头原生自带的ST32F20x的BSP,是可以显示fnish提示符的 5 W+ H$ S# {8 C: w! v
\ | /$ X3 }! @0 y# }( O8 Y: }
- RT -     Thread Operating System
# O* X1 _7 {- q' m / | \     3.1.3 build Mar 28 2020
4 h& X; C$ S6 I  v+ d3 V 2006 - 2019 Copyright by rt-thread team
) N8 q9 `8 I4 Z4 n9 nsdcard init failed# |/ L& A& k& j5 h
File System initialzation failed!
6 v; t' k1 L, z' y% C1 Frtc is not configured$ ^' U% q( g, z' s& [% Y7 M
please configure with set_date and set_time& r, T0 w: Y5 ?0 A) c
msh />Illegal stdio input!
7 c* S1 [& C* k- x) j" O1 C/ a
/ T/ ?4 z% \% h1 K. d: N9 I5 T% F+ }5 d6 i' K1 U4 ]5 j

9 |' g7 X- J/ [) w/ H5 P3 m; Z$ \8 _: m* y. v! L% B3 p, t
但是当我在Keil 设置:IROM1的Start设置为0x8008000,size为0xF8000
7 K+ |  r9 |$ k: p6 p4 O[备注内存分配如下:4 f% O+ l1 q. y% w( g' o3 S
BOOT[IAP]空间32KB,起始地址:0x8000000,长度:0x8000;
6 h' S# `9 _1 {$ b, R0 p; H! S, hOS[APP]空间992KB:起始地址:0x8008000,长度:0xF8000;: h; E' q) W3 Q
以上分配方法在RTT2.1.0的工程的项目使用中是没有问题的,但是RTT2.1.0的没有使用Finsh组件;
( }  L6 D( M+ w- j2 p! Z]
0 U' I$ `3 f, V, _% S3 f. b

/ e8 J* U' h$ o& i) E$ p就出现附件图所示的只有RTT的logo信息显示,没有后续内容显示了,请教是不是哪里还需要修改?
! Z2 @  z, p/ G$ z: r3 Y

  s) V5 a$ z; J. |+ W
( i( r/ R2 C: e& Q' N0 D
6 i0 p6 x! f5 {- O

2 d6 d. {; E. Q8 G& Q+ `0 u9 m( m' a1 C' @  L1 F. W
# T, v2 q' p# J
6 L" L! @5 V8 M3 E4 j5 e# G
QQ截图20200328095759.jpg
使用道具 举报 回复
发表于 7 天前 | 显示全部楼层
有没有其他大牛遇到过这样的问题?% {0 F; ^, V0 a$ P  y, r
求助
使用道具 举报 回复
发表于 6 天前 | 显示全部楼层
问题解决了:0 ~- `, g& m/ W6 F) ^  N; q
参考网页
; h/ P# s+ r+ f6 N, _9 w5 j9 Z2 tSTM32F1xx HAL RTThread移值支持Bootloader_网络_Mooney_yuan的专栏-CSDN博客.html' n; W2 g9 G: {0 M! r, D
https://blog.csdn.net/Mooney_yuan/article/details/83030695
; _* Q1 w( u; a6 ^* c' K0 k; l0 X2 _" t' R
针对V3.1.3的STM32F2的BSP,我的修改地方是:2 y5 w( C4 x# {4 d
keil mdk5编译方式:
# x/ e' ?6 G9 K  V) o+ v1. 打开 “option for target”,将IROM1起始地址设置为0x8008000;
; C* n, P" a* z( P2. 修改\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F2xx\system_stm32f2xx.c,
0 E- M  b# u# j" I1 Z% d  x将Vector Table Relocation[VECT_TAB_OFFSET]偏移设置为0x8000:3 J) \) ]7 T6 i3 g9 `; i  ?/ m
#define VECT_TAB_OFFSET  0x8000
, y( E. M& Z1 @, K3.修改\Drivers\board.c,NVIC_Configuration函数原有的:: ]6 {6 i1 A+ D5 A0 o+ |, R
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00);1 n4 w' i# x1 d  w
改为2 v8 A) h( R' v  i% V5 l/ q
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x8000);
0 b* R. i1 _0 p, s
. p, \- P5 x6 H3 o重新编译OK;
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  1. 24 主题
  2. 305 帖子
  3. 305 积分

Ta的主页 发消息

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表