MTK之Flash篇一

http://blog.ednchina.com/Jerome_home/1801879/message.aspx

Flash的型号定义在custom/system/ CUSTOMER_bb/Custom_memorydevice.h

例如:

#define MEMORY_DEVICE_TYPE    NOR_RAM_MCP

#define CS0_PART_NUMBER       K5L6331CAA

#define CS1_PART_NUMBER       K5L6331CAA

注意需要将make/CUSTOMER_PROJECT.mak中的SYSGEN设为TRUE

分析从NOR Flash启动,Flash的宏定义:

一、The FS (file system) region information on NOR FLASH!

#define NOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS    512

文件系统被分为系统盘和用户盘,系统盘存储NV文件和MMS相关文件,对用户不可见,用户盘用户连上电脑就可以看到。在(i)中定义用户盘的大小为,单位为512Bytes,因此可以知道用户盘实际大小为512*512=262144 (Bytes)。这个值可以在build/CUSTOMER/log中的ckSysDrv.log查看到,如下:

FS First Drive Size   262144

解释:以上提到的大小单位之所以为512Bytes,是由Flash结构划分决定的。一块Flash分为若干block,每个block分为如干sector,每个sector又分为若干column address。此处1 sector正好是512BytesNor Flash 读取以字节,Nand Flash则是以page

NAND Flash结构与读写分析,http://blog.ednchina.com/walnutcy/147306/Message.aspx

注意MUST NOT assign as  (TOTAL_FS_SIZE - SIZE_OF_SYSTEM_DRIVE), because system will keep some spaces for disk management.

 

二、For NOR-XIP configuration, if

 1. "SYSTEM DRIVE ON NAND" or

 2. "SYSTEM DRIVE ON NOR" and FOTA "UPDATE PACKAGE ON NAND"

  #define NOR_BOOTING_NAND_FS_BASE_ADDRESS           0x00000000

  #define NOR_BOOTING_NAND_FS_SIZE                      0x08000000

  #define NOR_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS    220000

解释:

  Start address of FS region on NAND-flash

  Total FS size on NAND-flash disk

  用户盘大小

分析从NAND Flash启动各项值同NOR Flash

tools/MemoryDeviceList/MemoryDeviceList_SinceXXX.xls中定义了一些Flash型号的相关参数,(并不是所有的都有这些参数)以Flash K5L6331CAA  BB MT6223为例.

1 Word = 2 Bytes = 16 Bits

1block = 32 page (sector)
 

1page = 512 bytes(datafield) + 16bytes(oob)

custom/system/ CUSTOMER_bb/custom_EMI.h

1) #define EMI_GENERAL_CONTROL          0xeeeefb80

2)const kal_uint32   EMI_SettingOnCS[4] =

{

   0x44c94324,// flash的设置

   0x44c94404,// RAM的设置

   0,

   0

};

custom/system/ CUSTOMER_bb/Flash_opt.h

TableDEVICE BANK DIVISIONS

 

Bank

Numbe of Blocks

Block Size

0

8

4 Kwords

15

32 Kwords

1

48

32 Kwords

2

48

32 Kwords

3

15

32 Kwords

8

4 Kwords

 

 

注:该表来自K5L6331CAAdatasheet

1)#define CONFIG_FOTA_NOR_BLOCK_DEF /

   {0x0, 0x2000}, /                           //起始地址,大小

   {0x10000, 0x10000}, /

   {0x7F0000, 0x2000},

 

2)#define CONFIG_FOTA_NOR_BANK_DEF /

   {0x100000, 1}, /

   {0x300000, 2}, /

   {0x100000, 1},   //FS的最大值

NOR Flash被分为4bank(从Flanshdatasheet可以知道K5L6331CAA分为4bank,共有142block),最后一个bank存储文件系统。ROM的大小可以计算得到:

0x100000*1+0x300000*2+0x100000*1=0x800000,即为8MB.

另外我们可以看到除1),2)之外还有一个定义,如下:

#define CONFIG_FOTA_NOR_REGION_DEF /

   {0x2000, 8}, /

   {0x10000, 126}, /

   {0x2000, 8},

说明:CONFIG_FOTA_NOR_BLOCK_DEF中定义了Flash每个bank中每个block的大小及每个bank的起始地址。可以看到第一个bank中每block的大小为0x20008192Bytes = 4096Words,地址从0x0开始,这个定义就是datasheet中的Bank0大小为4Kwords。在CONFIG_FOTA_NOR_REGION_DEF根据芯片对block的划分定义了各种类型block的个数,即头尾各有8个大小为0x2000block,中间为126个大小为0x10000block。其他的bankblock的划分类似。所有这些都是根据硬件也就是芯片结构的划分相对应的。

custom/system/ CUSTOMER_bb/Custom_flash.c

FLASH_REGIONINFO_VAR_MODIFIER FlashRegionInfo RegionInfo[] =

{

   {0x10000, 15},

   {0x2000, 8},

   EndRegionInfo

};

 

这个定义了存储FSbankblock大小和个数,

总大小=0x10000*15+0x2000*8= 1048576=1MB.

前提:在NOR Flash 中启动

文件中还定义文件系统的大小,Flash配置如果是从XLS读出的话,应该是根据其中的数据得到的。

#ifndef NOR_BOOTING_NOR_FS_SIZE     //Custom_memorydevice.h

 #define NOR_ALLOCATED_FAT_SPACE    (0x00100000)

#else

  #define NOR_ALLOCATED_FAT_SPACE  (NOR_BOOTING_NOR_FS_SIZE)

#endif

剩下存储代码的ROM大小

#ifndef NOR_BOOTING_NOR_FS_BASE_ADDRESS   //Custom_memorydevice.h

  #define       NOR_FLASH_BASE_ADDRESS     (0x00700000)

#else

  #define NOR_FLASH_BASE_ADDRESS (NOR_BOOTING_NOR_FS_BASE_ADDRESS)

#endif

 

注:Custom_flash.c 这个文件的生成可以看emiGenV2.pl

FOTAFirmware Over The 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
是程序中的未初始化的变量

 

Flash_Tool(V5.1)使用方法: 1、打开升级平台Flash_Tool(V5.1)然后在Download Agent处点击选MTK_ALLnOne_DA.bin文件。 2、点击Scatter File选升级软件自带的scatMTK53_09A_GEMINI.txt文件。随后平台会自动调用BIN文件(升级文件)。 3、第三个是选串口,(具体查看设备管理器里的升级线安装在哪个COM口)。 4、注意Options选项里的Format FAT中选Do Not Format FAT,意思是不要格式化,否则会导致信号弱,改变参数。 5、数据备份设置 点击Options,点选Backup and Restore,选择Backup—Download/Format—Restore。 6、升级:点击Download后,按开机键,首先出现灰色条(备份数据)然后出现红条(初始化),出现蓝条时开始升级,升级完成后出现绿色条(格式化),格式化后出现灰色条(数据还原),最后提示OK。 7、格式化:点击Format后,按开机键,首先出现灰色条(备份数据)然后出现红条(初始化),格式化时出现绿色条,格式化后出现灰色条(数据还原),最后提示OK。 8、读取BIN文件(软件) 找台开机正常的手机,利用这个平台可将所有MTK手机的软件读取出来,作为其他手机升级之用。 连接好升级线和手机,点击Read Back选项,双击下面的勾选项,会弹出个窗口,意思是保存的路径。选好保存的路径后,点击Read Back键,按开机键即可读取字库中的数据。 9、Memory Test 字库测试,可查看字库的分区结构,检测字库有无坏区。 按START后,再按开机键即可测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值