(转)MTK之Flash篇一
来源:互联网 发布:全球社交网络名人排行 编辑:程序博客网 时间:2024/06/09 21:33
Flash的型号定义在custom/system/CUSTOMER_bb/Custom_memorydevice.h
例如:
#defineMEMORY_DEVICE_TYPE
#defineCS0_PART_NUMBER
#defineCS1_PART_NUMBER
注意需要将make/CUSTOMER_PROJECT.mak中的SYSGEN设为TRUE
分析从NORFlash启动,Flash的宏定义:
一、The FS (filesystem) region information on NOR FLASH!
(ⅰ)#defineNOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS
文件系统被分为系统盘和用户盘,系统盘存储NV文件和MMS相关文件,对用户不可见,用户盘用户连上电脑就可以看到。在(i)中定义用户盘的大小为,单位为512Bytes,因此可以知道用户盘实际大小为512*512=262144(Bytes)。这个值可以在build\CUSTOMER\log中的ckSysDrv.log查看到,如下:
FS FirstDrive Size
解释:以上提到的大小单位之所以为512Bytes,是由Flash结构划分决定的。一块Flash分为若干block,每个block分为如干sector,每个sector又分为若干columnaddress。此处1 sector正好是512Bytes。Nor Flash 读取以字节,NandFlash则是以page。
(NANDFlash结构与读写分析,http://blog.ednchina.com/walnutcy/147306/Message.aspx)
注意:MUST NOT assign as
二、For NOR-XIPconfiguration, if
Ⅰ
Ⅱ
Ⅲ
解释:
Ⅰ
Ⅱ
Ⅲ
分析从NANDFlash启动各项值同NOR Flash。
在tools/MemoryDeviceList/MemoryDeviceList_SinceXXX.xls中定义了一些Flash型号的相关参数,(并不是所有的都有这些参数)以FlashK5L6331CAA
1 Word = 2 Bytes = 16 Bits
1block = 32 page (sector)
1page = 512bytes(datafield) + 16bytes(oob)
①custom/system/ CUSTOMER_bb/custom_EMI.h
1)#defineEMI_GENERAL_CONTROL
2)const kal_uint32
{
};
②custom/system/ CUSTOMER_bb/Flash_opt.h
Table:DEVICE BANK DIVISIONS
Bank
Numbe of Blocks
Block Size
0
8
4Kwords
15
32Kwords
1
48
32Kwords
2
48
32Kwords
3
15
32Kwords
8
4Kwords
注:该表来自K5L6331CAA的datasheet。
1)#define CONFIG_FOTA_NOR_BLOCK_DEF \
2)#define CONFIG_FOTA_NOR_BANK_DEF \
NORFlash被分为4个bank(从Flansh的datasheet可以知道K5L6331CAA分为4个bank,共有142个block),最后一个bank存储文件系统。ROM的大小可以计算得到:
0x100000*1+0x300000*2+0x100000*1=0x800000,即为8MB.
另外我们可以看到除1),2)之外还有一个定义,如下:
#defineCONFIG_FOTA_NOR_REGION_DEF \
说明:CONFIG_FOTA_NOR_BLOCK_DEF中定义了Flash每个bank中每个block的大小及每个bank的起始地址。可以看到第一个bank中每block的大小为0x2000即8192Bytes=4096Words,地址从0x0开始,这个定义就是datasheet中的Bank0大小为4Kwords。在CONFIG_FOTA_NOR_REGION_DEF根据芯片对block的划分定义了各种类型block的个数,即头尾各有8个大小为0x2000的block,中间为126个大小为0x10000的block。其他的bank中block的划分类似。所有这些都是根据硬件也就是芯片结构的划分相对应的。
③custom/system/ CUSTOMER_bb/Custom_flash.c
FLASH_REGIONINFO_VAR_MODIFIER FlashRegionInfo RegionInfo[]=
{
};
这个定义了存储FS的bank的block大小和个数,
总大小=0x10000*15+0x2000*8= 1048576=1MB.
前提:在NOR Flash中启动
文件中还定义文件系统的大小,Flash配置如果是从XLS读出的话,应该是根据其中的数据得到的。
#ifndefNOR_BOOTING_NOR_FS_SIZE
#else
#endif
剩下存储代码的ROM大小
#ifndefNOR_BOOTING_NOR_FS_BASE_ADDRESS
#else
#endif
注:Custom_flash.c 这个文件的生成可以看emiGenV2.pl。
FOTA(Firmware OverThe Air Updates)
计算 MTK中程序占用的ROM 及RAM
在build 下面一个 *.lis文件
Total RO Size(Code + RO Data) //rom size
Total RW Size(RW Data + ZI Data) //ram size
Total ROM Size(Code + RO Data + RW Data)
解释:
RO是程序中的指令和常量
RW是程序中的已初始化变量
ZI是程序中的未初始化的变量
- (转)MTK之Flash篇一
- MTK之Flash篇一
- MTK之Flash篇二------如何调整Flash中FAT的配置
- MTK Flash
- NAND FLASH学习笔记之nand flash基础(一)
- NAND FLASH学习笔记之nand flash基础(一)
- [MTK]BootLoader之我所见 (一)
- mtk flash配置
- mtk flash player
- MTK flash配置方法
- MTK android flash 配置
- MTK android flash 配置
- MTK android flash 配置
- MTK android flash 配置
- MTK android flash 配置
- MTK android flash配置
- MTK android flash配置
- MTK android flash 配置
- GSM、CDMA、GPRS和WAP
- drools -Rete算法
- C++静态成员函数小结(转)
- 软件框架设计
- #define _INTSIZEOF(n)
- (转)MTK之Flash篇一
- 硬盘的扇面、磁道、扇区
- Source Insight阅读PHP项目的代码…
- 关于Nginx的一些优化(突破十万并发)
- 鸟哥的Linux私房菜:基础学习篇(…
- (转)关于JAVA中的Garbage Collecti…
- (转)Ubuntu中快速启动终端窗口
- ubuntu root用户密码及登录、用户…
- Ubuntu linux添加新用户时出现user…