Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
mo动态模块_Module
应用模块打开之后unload之后还在内存中
发布于 2014-12-27 23:18:03 浏览:2249
订阅该版
我使用了libdl,使用的是官方提供的一个例子(在examplesmodule中的自己稍微改了一下),首先使用finsh下面执行extapp.so,在extapp中我使用dlopen打开了basicapp,然后执行了其中一个函数,按道理在最后使用了dlclose(handle);应该是卸载了,但是使用list_module()发现还在,如下 ```module name ref ------------ -------- basicapp -1 extapp 1 0, 0x00000000``` 但thread没有了 ```finsh>>list_thread() thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- tidle 0x1f ready 0x00000054 0x00000400 0x000000c0 0x00000011 000 tshell 0x14 ready 0x000000b4 0x00000800 0x00000394 0x0000000a 000 led2 0x0b suspend 0x00000234 0x00001000 0x00000234 0x00000005 000 led1 0x0b suspend 0x00000134 0x00000400 0x00000134 0x00000005 000``` 请问一下这个是什么问题啊? basicapp.c ```#include
static int a = 0; static int b = 1000000; int c = 100; static void function(int count1, int count2, int count3) { rt_kprintf("Hello RT-Thread %d %d ", count1, count2, count3); } int main(void) { int i; rt_kprintf("application entry "); rt_kprintf("[addr]a-0x%x,b-0x%x,c-0x%x ", &a, &b, &c); rt_kprintf("[value]a-%d,b-%d,c-%d ", a, b, c); for(i=0; i<100; i++) { a++; b--; c++; function(a, c, b ); } return 0; } int fn() { rt_kprintf("fn! "); return 0; }``` extapp.so ```#include
#include
typedef void (*func)(void); int main(void) { func f1, f2, f3, f4, f5; void* handle = dlopen("basicapp.so", RTLD_NOW); if(handle == RT_NULL) rt_kprintf("RT_NULL, can not open it! "); if(handle != RT_NULL) { f1= (func)dlsym(handle, "fn"); if(f1 != RT_NULL) (*f1)(); else rt_kprintf("dlsym fn failed. "); } if(handle != RT_NULL) { dlclose(handle); rt_kprintf("close basicapp.so"); } return 0; }```
查看更多
4
个回答
默认排序
按发布时间排序
bernard
2014-12-28
这家伙很懒,什么也没写!
好像不是,libdl的处理方式和应用模块还不一样。libdl针对的是.so,应用模块是.mo
lee88688
2014-12-28
这家伙很懒,什么也没写!
>好像不是,libdl的处理方式和应用模块还不一样。libdl针对的是.so,应用模块是.mo --- 不过我看官方给的文档中,应用模块的编译都是编译的.so文件。我这个问题应该怎么解决啊
lee88688
2014-12-30
这家伙很懒,什么也没写!
我之后查看了一下dlclose函数代码,发现只是在引用小于零的时候调用rt_module_unload函数,之前使用finsh查看basicapp引用是小于0了,按常理应该是使用了rt_module_unload函数,我觉得使用就应该被销毁了啊。不过我查看了rt_module_unload的代码才知道,这个函数只是销毁内核对象和模块创建的线程,并没有销毁模块,因此保留下来了,不知道是不是这样的啊,有时间验证一下。
撰写答案
登录
注册新账号
关注者
0
被浏览
2.2k
关于作者
lee88688
这家伙很懒,什么也没写!
提问
8
回答
17
被采纳
0
关注TA
发私信
相关问题
1
貌似stm32f10x的应用模块在1.2.x版本不能正常编译
2
关于module.c的_load_shared_object的疑问
3
应用模块的rt_module_unload函数的bug
4
rtt 如何实现动态加载app
5
使用zmodem传输文件,应用模块文件传输完成,访问失败
6
RTT下应用模块编译具体方法
7
RTT应用模块编译出错
8
RTT应用模块编译问题
9
求问动态模块是什么意思呢
10
应用模块编译出问题
推荐文章
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
简单两步配置RTT源码阅读环境 vsc+clangd
2
恩智浦[FRDM-MCXN947]初探 之 ADC与DAC
3
LVGL使用字库IC芯片显示中文
4
基于STM32H750和Rt-Thread的CANFD通信实现的记录(一)
5
freemodbus主机在freertos的适配,参考rtthread例程
热门标签
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
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
805
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部