找回密码
 注册
搜索
查看: 2486|回复: 15

怎样修改MTK Scatter 文件

[复制链接]
发表于 2009-6-23 11:40:50 | 显示全部楼层 |阅读模式
  因为我的图片文件较大,容量超过了14M,所以改用32MRom+8M Ram,scatter文件我只改了3个地方:
1. ROM总大小,即把 ROM 0x00000000 0x00e00000 改成了 ROM 0x00000000 0x01e00000(由14M->30M);

2. 把ROM 的4个分区都改成了8M,即:
  分区1:ROM   0x00000000 0x00400000 改成了 ROM 0x00000000 0x00800000(4M ->8M);
  分区2:ROM2   +0x0   0x00400000 改成了 ROM2   +0x0 0x00800000(4M ->8M);
  分区3:ROM3   +0x0   0x00400000 改成了 ROM3   +0x0 0x00800000(4M ->8M);
  分区4:ROM4   +0x0   0x00400000 改成了 ROM4   +0x0 0x00800000(4M ->8M);

3. 把内存总大小改成了8M,原来才4M:
  我把DUMMY_END 0x08400000 0x04 改成了 DUMMY_END 0x08800000 0x04

  这样改后,我的16M bin档烧进去后,还是开不了机。超过14M原因是图片较大。
  
 请教各位高手,我这样改Satter 文件有错没有?要怎样改呀,请指点!!  
  附件为我的Scatter文件。
 楼主| 发表于 2009-6-23 11:41:46 | 显示全部楼层
【文件名】:09623@52RD_scatH240B.txt
【格 式】:txt
【大 小】:9K
【简 介】:
【目 录】:
点评回复

使用道具 举报

 楼主| 发表于 2009-6-23 13:53:56 | 显示全部楼层
我把Scatter文件改成这样也不行:
1. ROM总大小,即把 ROM 0x00000000 0x00e00000 改成了 ROM 0x00000000 0x01e00000(由14M->30M);

2.把内存总大小改成了8M,原来才4M:
  我把DUMMY_END 0x08400000 0x04 改成了 DUMMY_END 0x08800000 0x04 
  4个分区的总长度还是为原来的4M,这样改还是不能开机,scatter 文件如下:
点评回复

使用道具 举报

发表于 2009-6-23 17:24:49 | 显示全部楼层
只改:
1. ROM总大小,即把 ROM 0x00000000 0x00e00000 改成了 ROM 0x00000000 0x01e00000(由14M->30M);
试一试
点评回复

使用道具 举报

 楼主| 发表于 2009-6-24 13:28:20 | 显示全部楼层
perennial 你好,按上面那样也试过,不能开机!
点评回复

使用道具 举报

 楼主| 发表于 2009-6-24 13:33:07 | 显示全部楼层
会不会是其它的可能
点评回复

使用道具 举报

发表于 2009-6-24 14:46:51 | 显示全部楼层
再确认一下你的flash配置是否正确。
点评回复

使用道具 举报

发表于 2009-6-24 19:48:58 | 显示全部楼层
3#处修改的scat文件就够了,不能开机和这个肯定没关系
点评回复

使用道具 举报

发表于 2009-6-24 23:24:38 | 显示全部楼层
请按以下我说的去分析这个问题.
1.首先,使用大的FLASH,改scatter文件只改结束地址就OK,所以只要做你所说的第一步。后面的是按照偏移量自动去算的,除非是加特殊的第三方软件,一般是不用修改的,dummy end也不用去改,不影响。你用的FLASH一般是由NOR+SDRAM组成。我们这里只讨论NOR的部分。NOR里确定code region是最优先的。你的情况是需要腾出一个大于14M的空间。那么我们假如用20M。那结束地址就是00001400000.
2.然后再说为什么开不了机的问题。因为你的FAT和NVRAM及Z盘的配置有问题。你用去30M给BIN,那就余下2M给NVRAM+Z+FAT.你认为够么。你得去custom_memory...这只文件下查一下,你的partion_sector是多少.1024代表512K。不出意外的话,你留给NVRAM+Z的空间只有1.5M左右。这是远远不够的。
3.而你用的这个FLASH,按我的猜想,应该是toshiba的,如果是spansion的,那你还有不分区的可能,直接分为28+4,28作BIN,4M做NVRAM+FAT,有可能能开机。但如果是TOSHIBA的,那多半是16个2M的bank结构的。那就没办法了。必须去打开makefile里的enhance_single_bank...这只开关。然后在xls表里对最后一个bank进行扩容。在表里的last bank下改其大小。必须按大的block的整数倍增加。

按照上面的去试下,应该可以开机。[br]<p align=right><font color=red>+3 RD币</font></p>
点评回复

使用道具 举报

发表于 2009-6-25 21:42:09 | 显示全部楼层
楼上的说的很好,ROM区不能全部占完FLASH啊,要留一部分给文件系统。
点评回复

使用道具 举报

发表于 2009-7-9 18:08:08 | 显示全部楼层
scat  文件的大小可以随便改吗?? 那不是需要硬件支持吗? !!!

mtk25平台默认的是128Mbit flash memory 和 32Mbit SRAM,因为1BYTE等于8BIT,所以就是我们通常所说的是16M ROM和4M RAM,不过由于文件系统占用2M,这2M一般又被分为系统盘和用户盘,
系统盘存储NV文件和MMS相关文件,对用户不可见,
用户盘用户连上电脑就可以看到,但由于一些原因,有不少手机是不设用户盘的,用户盘过大,会导致彩信等一些模块不稳定,所以很多使用NORFALSH时不设用户盘,
但NAND FALSH一般都会设置一定的用户盘。
如果需要设置,只要修改宏PARTITION_SIZE值就可以控制。
所以我们能够使用的就只剩下14,这一点可以从BUILD目录下的scatWINGTECH25_GEMINI.txt文件的声明部分看到,在SCAT文件中,有一行是SCHEME   : external 14MB flash memory and 4MB SRAM,就是说14MROM和4MRAM。   

由于用户需求不同,有些时候我们会修改RAM和ROM大小,一般就要相应的修改SCAT文件。在SCAT文件中,我们可以看到行ROM 0x00000000 0x00e00000,就是说可以使用的ROM从0x00000000开始,到0x00e00000结束,共计0x00e00000字节,在下面又可以看到这些ROM被分成四个4M的段使用。在SCAT的行EXTSRAM_LARGEPOOL_NORMAL 0x08000000处我们可以看到RAM的使用情况,地址从0x08000000开始, 到0x08400000 结束,共计0x00400000BYTE,即4MBYTE,如果你是32MROM,8MRAM,就要修改ROM 0x00000000 0x00e00000为
ROM 0x00000000 0x01c00000,修改DUMMY_END 0x08400000 0x04为    DUMMY_END 0x08800000 0x04,这样的修改,现在的ROM和RAM大小都为以前默认的2倍。

其实有时RAM紧张时不一定非要采用增加RAM来实现,这样成本较大,可以采用复用内存也可以节约大量内存。 在SCAT文件中,很多时候,我们可以看到关健字overlay,这是一些手机的应用中为节省内存使用的复合内存,如INTSRAM_MULTIMEDIA 0x40000000  0xC000,声明了MED复用内存的起始地址,只要不冲突,这几乎是最好的解决内存紧张的方法。如果ROM超过了,可能会比较麻烦一些,去掉不必要的图片,音乐,减小图片的质量,去掉一些不必要的功能,把宏函数转为普通函数都可以节约一部分ROM。

如果RAM或者ROM编绎到最后出错,提示ROM超了或者RAM超过了,这时就要精确计算超出部分的大小,然后再根据计算的大小寻找解决办法。计算的方法是打开LIS文件,把RAM或者ROM加起来,减去14或者4,超过的字节数,就是需要调整的内存大小[em10][br]<p align=right><font color=red>+3 RD币</font></p>
点评回复

使用道具 举报

发表于 2009-7-15 17:10:34 | 显示全部楼层
楼上的太牛了,人才
点评回复

使用道具 举报

发表于 2009-7-16 18:21:28 | 显示全部楼层
请教11楼的兄台,我的是4M的RAM,lis文件的最后内容为:
================================================================================


      Code    RO Data    RW Data    ZI Data      Debug   

   6597536    7448732      52056    4266705    3730676   Grand Totals

================================================================================

    Total RO  Size(Code + RO Data)             14046268 (13717.06kB)
    Total RW  Size(RW Data + ZI Data)           4318761 (4217.54kB)
    Total ROM Size(Code + RO Data + RW Data)   14098324 (13767.89kB)

================================================================================
RAM 大小看起来已经超过4M(4318761)了,怎么编译没有报错,并且使用正常?
点评回复

使用道具 举报

发表于 2009-7-25 10:23:33 | 显示全部楼层
13楼的是不是内存复用了?
点评回复

使用道具 举报

发表于 2009-7-25 11:12:01 | 显示全部楼层
以下是引用genhualiu在2009-7-25 10:23:33的发言:
13楼的是不是内存复用了?


却是有内存复用,莫非lis文件里面列出的只是线性叠加,不考虑复用?
请达人解,谢谢。
点评回复

使用道具 举报

发表于 2010-6-4 13:00:29 | 显示全部楼层
谢谢11楼,写的很详细[em01]
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-7 17:34 , Processed in 0.048634 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表