//=====================================================================
//TITLE:
// TCC89x的内存散布区域设置
//AUTHOR:
// norains
//DATE:
// Friday 7-January-2011
//Environment:
// Visual Studio 2005
// TCC89x Magellan V1.9.1
//=====================================================================
关于TCC89x而言,怎么正确设置内存散布区域是一件很重要的工作。当然,假如你开发的产品和官方的EVB共同,也不会超越官方的规模,那么你全部皆可安心,直接选用默认设置即可。但假如不是,那么你就有必要要自己手动更改了。
TCC89x的内存设置在magellan.bib文件,而该文件在BSP包Magellan的Files文件夹之下。在评论这个问题之前,咱们先看看内存分配的大约范畴,如图:
方框指的是每个规模范畴的内容,假如方框为灰色,意味着这两个范畴只要在XIP形式下才有用。而赤色的字体,对应magellan.bib文件中相应的宏,表明需求需求设置的数值。从图中能够看出,需求设置的数值分为两个,一个是开始地址,另一个则是巨细。
Telechips原厂的magellan.bib文件结尾给出了一种核算这些数值的办法,只不过这办法是针对从零开始的情况,关于咱们只需求批改某些数值的使用者而言,无疑显得稍有繁琐。其实回过头来说,一般magellan.bib文件咱们并不需求大的批改,最常见的是因为增加的组件太多,导致编译的NK比规则的规模要大,这时分才需求对magellan.bib文件进行批改。
结合咱们的所给的例图,批改NK的巨细很简单。NKSTART数值保持不动,咱们仅仅将NKLEN扩展。而NKLEN增大今后,就会影响到RAMSTART和RAMLEN的取值,而这两个数值在原有的基础上批改也是很简单的工作。
关于新的RAMSTART,其核算办法如下:
RAMSTART(new) = NKSTART + NKLEN(new)
新的RAMLEN,核算方法也迥然不同,如下:
RAMLEN(new) = DDRAWST – RAMSTART(new)
这儿需求留意一个问题,便是NKLEN超越33M的话,尽管能够编译成功,但用FWDN烧录体系的时分,会犯错,其信息如图:
从图中的信息告知咱们,Kernel空间不行,无法烧录NK.ROM!那是不是意味着咱们的NK只能少于33M呢?当然不是。不过,为了支撑超越33M的巨细,咱们有必要批改相应的代码。
翻开./Magellan/Src/LIB/SOC/NAND_DRV/nand_drv_v7.c文件,找到NAND_HIDDEN_0_PAGESIZE宏,其源代码如下:
[cpp] view plaincopy#define NAND_HIDDEN_0_PAGESIZE (33/*MB*/*1024*2)
#define NAND_HIDDEN_1_PAGESIZE (3/*MB*/*1024*2) // for LOGO
#define NAND_HIDDEN_2_PAGESIZE (2/*MB*/*1024*2)
#define NAND_HIDDEN_3_PAGESIZE (3/*MB*/*1024*2)
聪明的读者或许现已想到,假如需求NK支撑更大的容量,只需求更改NAND_HIDDEN_0_PAGESIZE宏即可。本来的巨细是33,你能够挑选36,乃至更多,只要能容得下你NK的巨细即可。