如何在 SylixOS 中获取地址
如何在 SylixOS 中获取地址
1、获取内核内存布局
BSP 的内存布局在链接脚本已经固化。可以参考 BSP 工程中对应链接文件,例如:
上图中可查出
TEXT
段和
DATA
段的基地址,分别为:
TEXT 0x10000000;
DATA 0x10600000;
2、获取内核模块基地址
1
、使用
modules
命令(内核模块)
BASE
列为内存起始,
SIZE
列为模块占用的内存大小。
2
、使用程序获取
以下函数
可
根据文件路径获取模块内存。
LW_API INT API_ModuleGetBase(pid_t pid, PCHAR pcModPath, addr_t *pulAddrBase, size_t *pstLen); /*
获得模块装载基地址
*/
如果想遍历系统模块,可以参考系统中
__tshellModuleShow
函数代码。
3、获取变量地址
获取变量地址有以下限制:
不能获取函数局部变量地址;
不能获取驱动程序(
ko
文件)变量地址;
3.1
获取操作系统中的变量地址
使用
nm
命令获取:
例如: 查找变量
_G_vprocKernel
1.
先使用命令
nm sylixos-bsp.elf > a.txt
2.
打开
a.txt
搜索
_G_vprocKernel
,查找到如下结果:
0176eaa0 B _G_vprocKernel
表明
_G_vprocKernel
在
0x0176eaa0
内存位置。
注意:
nm
需要使用交叉编译工具链对应的
nm
命令。
例如:
arm-sylixos-eabi-nm
3.2
获取应用程序和库文件变量地址
要应用程序或库文件变量地址,步骤如下:
1.
使用
modules
命令获取到模块起始地址,即
modules
命令中的
"BASE"
列;
2.
使用
nm
命令查找变量地址(同上
3.1
步骤)
3.
变量的内存地址为:
nm
命令中获取到的地址
+
模块起始地址
举例如下:
程序源码
#include <stdio.h>
#include "sylixos-so.h"
int iGlobalVar = 0;
int main (int argc, char **argv)
{
int i;
for (i = 0; i < 100; i++) {
iGlobalVar ++;
printf("Hello SylixOS %d!\n", iGlobalVar);
lib_func();
sleep(1);
}
return (0);
}
查找
iGlobalVar
地址,首先查看模块起始地址
模块起始地址为
0xa27a000
nm sylixos-app > a.txt
在输出文件中查找
iGlobalVar
000053e0 B iGlobalVar
则
iGlobalVar
在内存中的地址为
0xa27a000 + 0x000053e0 = 0xA27F3E0
Related Articles
RealEvo-IDE 获取地址
License 使用说明: License 和 RealEvo-IDE 版本没有直接关系。 如:license 可以激活 3.9.1 版本的 RealEvo-IDE,也能在 3.9.9、4.0.0 等版本上进行激活,但与 RealEvo-IDE 的使用权限有关。 如:License 第 3 位到第 4 位与版本的对应关系: 01--------体验 02--------专业 05--------旗舰 例:FF056D014001D8AB7360861762648A70 第三四位是 05 ...
如何在 SylixOS 中执行脚本文件
Q: 如何在 SylixOS 中执行脚本文件? 在 SylixOS shell 下执行“shfile 脚本文件.h”,即可执行脚本文件内容。 示例:#shfile /etc/example.sh 参考文章:SylixOS 设置开机自动运行程序
如何在 vmware 虚拟机中安装启动 SylixOS
Q: 如何在 vmware 虚拟机中安装启动 sylixos。 首先需要安装 VMware 软件,并准备好 VMware 所需 SylixOS 的 x86 启动文件(在 IDE 原始安装包中有 VMware 文件) 启动流程: 将压缩包解压到本地; 打开 VMware 软件,在 VMware 选项卡选择 “文件” —> ‘’打开‘’; 在弹出窗口中选择解压后的 vmx 文件并点击确定,文件位置:“SylixOS VMware\SylixOS x86\SylixOS ...
IDE 中如何在固定的列显示竖线
问:IDE 中如何在固定的列显示竖线? Window -> Prefences -> Text Editors -> show print margin 勾选上 -> columu:107 -> OK 更多 IDE 配置见: 参考文章:RealEvo-IDE 获取地址 参考文章:IDE 窗口布局介绍 参考文章:IDE 中如何高亮变量 参考文章:IDE 中如何按列编辑 参考文章:IDE 中如何显示特殊字符 参考文章:IDE 中如何屏蔽单个工程文件 参考文章:如何恢复 IDE 默认的窗口布局 ...
SylixOS 功能介绍及版本差异
SylixOS功能介绍及版本差异 SylixOS 标准版 SylixOS 标准版是 SylixOS 的基础版本,具备如下功能: 兼容 IEEE 1003(ISO/IEC 9945)操作系统接口规范; 兼容 POSIX 1003.1b(ISO/IEC 9945-1)实时编程标准; 支持国军标 GJB7714-2012 操作系统接口规范; 优秀的实时性能(任务调度与切换算法时间复杂度为 O(1)); 支持无限多任务; 抢占式调度支持 256 个优先级; 支持虚拟进程; ...