Part Number:PROCESSOR-SDK-OMAPL138
在文档《https://www.ti.com.cn/cn/lit/ug/sprug82a/sprug82a.pdf》的
2.7 Changing Cache Configuration During Run-Time
章节中,提到了运行中改变cache配置的方法,但是里面提供的是一个思路,实际拷贝出来是无法编译的。
请有实现过的专家,给个能编译执行的参考例子,万分感谢!!
主要问题点是:
1、代码运行中获得函数地址、函数长度
2、运行中获得段如.external的地址、段长度
3、DAT_xxx相关函数的实现
笨办法:编译后获得1、2的相关数据,在程序中写数组记录,再重新编译
有聪明的方法吗?
Shine:
可以考虑用#progama伪指令把data/code分配到固定的地址。#pragma CODE_SECTION (symbol , "section name ")https://www.ti.com/lit/ug/sprui04b/sprui04b.pdf
,
Kevin Le82:
分配到固定地址,这个应该没有问题;就是没法办法获得【长度】这个值,难道每次都按最大值移动?
,
Kevin Le82:
有一个想法,有几组函数分别放置到段.func1、.func2、.func3等,但是这些段不会同时被使用;
段内包含多个实现此功能集的相关函数;
如果在L2中分配出L2ram假设128K;L2ram存不下所有的.funcX段,怎样配置使得.funcX这些段的起始都是L2ram段?
程序中根据用户选择功能,动态加载.funX段到L2ram空间去。
文档中的例子的cmd文件无法用于这个想法
,
Shine:
cmd文件里有union伪指令,可以让几个函数共用一段run address。请参考下面的汇编手册。8.5.7 Using GROUP and UNION Statementshttps://www.ti.com/lit/ug/sprui03b/sprui03b.pdf
,
Kevin Le82:
粗略的看了这个文档,这个文档有所有的解答;实现起来有点难度。一时半会还不好做,对于使用c++开发的面向对象的程序
,
Shine:
是的,这种用法用得不多。
,
Kevin Le82:
Shine,非常感谢。各种文档太多了,现在开发都是用到什么有问题了再寻求帮助;幸好你们都能及时回复和提供参考文档,不然就是大海捞针了。
,
Shine:
不客气~ 随时欢迎到论坛上提问,大家互相学习!