Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread Nano
关于Cortex-M0使用RTT nano
发布于 2019-04-01 22:04:29 浏览:3675
订阅该版
各位大神:大家好! 我刚接触RTT,正巧手上有一块上个项目留下的STM32F031K6的板子,RAM只有4KB。 使用stm32cube生成初始化代码后,按照官网文档的方法,通过keil直接添加了rt-thread nano,解决掉3个中断服务重复定义的问题,nano编译完成,并且能够调用rt_thread_delay()函数。应该来说nano已经成功编译进工程了。 接下来想使用rt_thread_create()函数创建IO口周期性取反线程,编译信息提示rt_thread_create()函数未定义,查看rt_thread_create()函数定义,需要特定的几个宏被定义才能使用。于是改用rt_thread_init()函数,创建线程的返回值也为RT_EOK,然后调用rt_thread_startup()函数,编译没有问题,实际IO口没有周期性取反,使用单步调试发现程序停在了rt_hw_hard_fault_exception()函数中的while(1)循环。第一条路失败。 第二条路,定义宏RT_USING_HEAP、RT_USING_SMALL_MEM,编译器报错,大概是RAM空间不够。修改board.c下的RT_HEAP_SIZE宏的大小,原始为1024,修改成256后,编译通过。同时rt_thread_create()函数可以使用。使用该函数创建线程,并使用rt_thread_startup()函数启动线程。同样,程序也会停在rt_hw_hard_fault_exception()函数中的while(1)循环。 请问各位大神,难道内核编译仅需要1KB的RTT Nano,不能在4KB RAM的STM32F031上运行吗?还是因为我的方法不对?度娘了一圈后,网上各blog、论坛里头的创建nano工程,基本都没有创建线程,这也就失去了使用OS的意义。还请各位大神指点。谢谢!
查看更多
11
个回答
默认排序
按发布时间排序
Ernest
2019-04-02
这家伙很懒,什么也没写!
最新版本的nano 为了方便使用或者添加设备框架,默认RAM 开得比较大,所以只是用内核,可以把相关的改小,如果仅仅需要跑起来,可以使用3.1.2之前的版本
Ernest
2019-04-02
这家伙很懒,什么也没写!
另外资源参考 mdk 的文档描述,里面是3.0.3 版本,后面版本资源占用大
robson
2019-04-02
这家伙很懒,什么也没写!
>最新版本的nano 为了方便使用或者添加设备框架,默认RAM 开得比较大,所以只是用内核,可以把相关的改小, ... --- 谢谢大神指点,待会儿就试试3.1.2之前的版本。
robson
2019-04-02
这家伙很懒,什么也没写!
>根据楼上所说,如果只使用内核的话可以直接使用3.1.2版本之前的版本。安装多个版本只能选择最高版本,如要 ... --- 谢谢指导!
zhs_sky
2019-04-02
这家伙很懒,什么也没写!
3.1.2版本的需自已手动添减功能,3.1.2中 RT_MAIN_THREAD_STACK_SIZE 默认就占了 1 K。另外,如果不用MALLOC这类函数,STARTUP文件中,把堆大小修改为0。
zhs_sky
2019-04-02
这家伙很懒,什么也没写!
[attach]8083[/attach] 以上箭头的功能全部去掉,使用NANO版时,尽量不要使用动态创建线程,应该一开始就规划好线程数量,并创建静态线程。
robson
2019-04-04
这家伙很懒,什么也没写!
>以上箭头的功能全部去掉,使用NANO版时,尽量不要使用动态创建线程,应该一开始就规划好线程数量,并创建 ... --- 大神你好!按照你的指导,目前已完成线程的静态创建,但是有一个非常奇怪的问题,还请解惑。 工程由cubeMX创建,最大线程优先级修改为8,创建线程时,使用优先级0、1、2时,线程均能正常运行。当线程优先级设置为3至8时,感觉线程永远不能获得运行时间。此时,rt_thread_startup()的返回值是0,应该是正常的。在创建线程时,只创建了1个线程,难道cubeMX在创建工程的时候会自己创建一个优先级比较高的线程?还是因为RAM的原因,不能是由3以后的优先级呢? 谢谢!
zhs_sky
2019-04-04
这家伙很懒,什么也没写!
>大神你好!按照你的指导,目前已完成线程的静态创建,但是有一个非常奇怪的问题,还请解惑。 >工程由cubeM ... --- 大神不敢当,不会用cubeMX,如果是MDK我可以帮忙分析,另外8级优先级应该是 0 ~ 7,其中 7 尽量不要使用,应使用 6 及以下,如果你栈区大小开到 1K 或都说 256 以上都出现这个问题,应该要分析下cubeMX是如何运作的了。
robson
2019-04-06
这家伙很懒,什么也没写!
>大神不敢当,不会用cubeMX,如果是MDK我可以帮忙分析,另外8级优先级应该是 0 ~ 7,其中 7 尽量不要使用, ... --- @zhs_sky 你好! 我找到了线程优先级设置到大于等于3就不能正常运行的原因。 在rtthread_startup()函数中的rt_application_init()函数,创建了一个main线程,根据宏定义,该线程的优先等级为8/3,刚好为2。而我在main()函数中存在一个空while(1),所以导致了优先级设置到3以后线程不能获得运行时间的问题。把main()函数中的while(1)去掉,线程优先级即可设置到7了。 谢谢!
zhs_sky
2019-04-08
这家伙很懒,什么也没写!
>@zhs_sky 你好! > 我找到了线程优先级设置到大于等于3就不能正常运行的原因。 > 在rtthread_startup ... --- 不用谢,好像是这样的。
撰写答案
登录
注册新账号
关注者
0
被浏览
3.7k
关于作者
robson
这家伙很懒,什么也没写!
提问
7
回答
17
被采纳
0
关注TA
发私信
相关问题
1
求高手指点,RTThread下nanosleep()函数功能如何实现?在线等啊
2
RTT1.2.2在新塘Nano130KE3BN的移植中始终出现栈溢出的问题
3
官方能否出一个nano在mdk下移植finsh到stm32的教程
4
从裸机开始,创建一个RT-Thread Nano系统工程
5
Nano版如何启用shell
6
项目从RTT 2.x NANO移植到 RTT 3.x ENV 环境
7
nano 版本有没有集成到 IAR 中啊?
8
关于MDK5的RT-THREAD NANO中添加MSH组件的例程
9
rtt_nano版本,源代码在哪里下载啊?
10
RTT Nano 在keil 使用C++11 的问题
推荐文章
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
RT-Thread项目助手v0.2.0 - 支持Env Windows
2
RttreadV5.10上,GD32F450Z RTC时间显示问题
3
rt-smart启动流程分析
4
EtherKit快速上手PROFINET
5
RTThread USB转串口无法接收数据
热门标签
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
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部