打印

<MP求助>请教scatter文件格式的一些细节

[复制链接]
2790|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
McuPlayer|  楼主 | 2012-9-12 13:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PRO2 0x2000A000 0xA000        ; execution address
        {
                Timing_*.o (TimingCode+RO)
        }

发现,这个scatter语句,只匹配文件,不匹配Section名字
调试器版本是 MDK4.20
armcc和armlink的版本是 4.1.0.644

有什么办法,既匹配文件名,又匹配Section名字?

相关帖子

沙发
阿南| | 2012-9-12 13:59 | 只看该作者
MP问的问题通常不是一般问题:lol

使用特权

评论回复
板凳
McuPlayer|  楼主 | 2012-9-12 14:11 | 只看该作者
阿南,请帮忙

现在有个产品,程序空间不够用了
打算改成APP部分按需加载的方式,这样平时只有一个APP就够了

使用特权

评论回复
地板
McuPlayer|  楼主 | 2012-9-12 14:15 | 只看该作者
Timing_*.o (TimingCode+RO)

我本意是选择Timing为前缀的o文件其中的TimingCode段

实际选择的却是Timing为前缀的o文件的所有RO段

很郁闷

使用特权

评论回复
5
xinzha| | 2012-9-12 15:16 | 只看该作者
按需加载你可以用overlay选项,稍微麻烦点。如果你已经用了#pragma section这种方式,那只要把那些.o一个个列出来,然后选择他们的输入段,这样就最安全了。

使用特权

评论回复
6
McuPlayer|  楼主 | 2012-9-12 20:54 | 只看该作者
目前是一个个列出.o文件,但这样比较麻烦的是每次的APP的文件名不同,scatter都要改动

使用特权

评论回复
7
McuPlayer|  楼主 | 2012-9-12 20:55 | 只看该作者
armlin可以编译DLL或者EXE结构的elf文件

我想把AP做成DLL式的,怎么设置连接器,来编译平台,和每个APP

使用特权

评论回复
8
McuPlayer|  楼主 | 2012-9-12 20:56 | 只看该作者
网上搜了一些**,基本是翻译的,还不如看arm的在线文档或者PDF
但arm的文档很多地方说的也不清不楚的

使用特权

评论回复
9
xinzha| | 2012-9-12 22:05 | 只看该作者
去看armlink的官方文档,里面有关于overlay的讲解,这种方式下你可以把几个模块编译在一样的起始地址,用到哪个模块就把哪个模块从flash中拷贝到内存中的相应地址。我过去做过一个项目,里面有多种解码器,而实际同一时刻只需有一种解码器存在,为了节省内存空间就使用了这种方式。当然你自己得写一个加载管理器。
而使用dll的方式需要你把动态加载的模块做成一个位置无关的可执行库,在arm的工具中有这个选项。到你需要加载的时候就把库拷贝到你分配好的空间,但是要注意库的入口和函数都要符合一定的条件,否则会有bug。

使用特权

评论回复
评分
参与人数 1威望 +10 收起 理由
McuPlayer + 10 您的建议非常匹配我的需求,谢谢 ...
10
nextkey| | 2012-9-12 22:32 | 只看该作者
mcuplayer想要的这个东西,之前做过尝试,
与xinzha提的overlay是一个概念

使用特权

评论回复
11
nextkey| | 2012-9-12 22:34 | 只看该作者
是按需加载到RAM吧?

3# McuPlayer

使用特权

评论回复
12
McuPlayer|  楼主 | 2012-9-13 01:04 | 只看该作者
是的,加载到RAM

APP存储在SPI Flash里面,平台负责把APP给copy到RAM,然后call过去

使用特权

评论回复
13
McuPlayer|  楼主 | 2012-9-13 01:23 | 只看该作者
to xinzha:
是的,override是个不错的建议,代码拷贝和数据的初始化,处理的复杂的低很多


http://infocenter.arm.com/help/index.jsp
跟微软的MSDN一个架势,丰富的文档,用了你就很难再离开他。
真希望中国也有有一家这样的技术公司,不要技术有多高端。
几年前就感叹过一次,今天再感叹一次了。

使用特权

评论回复
14
McuPlayer|  楼主 | 2012-9-13 01:25 | 只看该作者
另外,看了xinzha在21IC的几个旧贴,扎实学习的足迹:victory:

使用特权

评论回复
15
McuPlayer|  楼主 | 2012-9-13 01:30 | 只看该作者
另外,这次分离平台和APP,就折腾scatter文件,然后对着map看效果
同时部分代码从C转到C++,运行时库的问题还要处理

使用特权

评论回复
16
nextkey| | 2012-9-13 08:58 | 只看该作者
你这个做法还是有问题,设计上做**,
理论上不会存在运行时库的问题。

15# McuPlayer

使用特权

评论回复
17
McuPlayer|  楼主 | 2012-9-13 11:45 | 只看该作者
overlay的方式,还有些问题,就是平台必须和APP一并编译。

我想做成APP可独立编译的,把他做成一个SDK
目前我是通过把API函数固定地址的方式,叫APP去访问平台函数的。

使用特权

评论回复
18
nextkey| | 2012-9-13 22:24 | 只看该作者
API固定的办法也是可以实现的
overlay的方式,还有些问题,就是平台必须和APP一并编译。 我想做成APP可独立编译的,把他做成一个SDK 目前我是通过把API函数固定地址的方式,叫APP去访问平台函数的。 ... McuPlayer 发表于 2012-9-13 11:45

使用特权

评论回复
19
McuPlayer|  楼主 | 2012-9-18 17:18 | 只看该作者
请教楼上,比如说C++库里的new和delete是必须使用的

现在C++的lib在平台上,我在APP中每个C++类的创建都会自动引用平台中的new和delete库,请问如何处理?

使用特权

评论回复
20
McuPlayer|  楼主 | 2012-9-18 17:19 | 只看该作者
或者APP中再加入一次C++库也可以接受,但必须APP和平台保持无关联

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:善待今天就是对未来最好的策划。 博客:http://www.mcuplayer.com

338

主题

7307

帖子

26

粉丝