dl_flashdrv.c

来自「在高通的手机平台下,一个下载手机.bin文件到手机的flash中的工具,包含PC」· C语言 代码 · 共 1,395 行 · 第 1/5 页

C
1,395
字号
/*===========================================================================
when       who     what, where, why
--------   ---     ----------------------------------------------------------
02/09/06  wufei.lin create to dynamic flash support
12/26/05  wufei.lin add samsung flash
01/25/05   nony.wu Added AMD S71PL032

=============================================================================*/
#include "dl_comm.h"
#include "dl_proc.h"
#include "dl_flashdrv.h"
#include "dl_uart.h"


/* point to the current use flash device*/
 flash_device_type    *current_flash_device;             

/* current flash block number*/
 word                        current_flash_block_num;      

/* point to the current block*/
 block_descriptor     *p_current_block;

 /* the supported flash block descriptor */
 static block_descriptor SST34HF_FLASH_BLOCK[] = 
{
    { 0x000000, 0x10000 }, /* 64 kilobyte block */
    { 0x010000, 0x10000 }, /* 64 kilobyte block */
    { 0x020000, 0x10000 }, /* 64 kilobyte block */
    { 0x030000, 0x10000 }, /* 64 kilobyte block */
    { 0x040000, 0x10000 }, /* 64 kilobyte block */
    { 0x050000, 0x10000 }, /* 64 kilobyte block */
    { 0x060000, 0x10000 }, /* 64 kilobyte block */
    { 0x070000, 0x10000 }, /* 64 kilobyte block */
    { 0x080000, 0x10000 }, /* 64 kilobyte block */
    { 0x090000, 0x10000 }, /* 64 kilobyte block */
    { 0x0A0000, 0x10000 }, /* 64 kilobyte block */
    { 0x0B0000, 0x10000 }, /* 64 kilobyte block */
    { 0x0C0000, 0x10000 }, /* 64 kilobyte block */
    { 0x0D0000, 0x10000 }, /* 64 kilobyte block */
    { 0x0E0000, 0x10000 }, /* 64 kilobyte block */
    { 0x0F0000, 0x10000 }, /* 64 kilobyte block */

    { 0x100000, 0x10000}, /* 64 kilobyte block */
    { 0x110000, 0x10000}, /* 64 kilobyte block */
    { 0x120000, 0x10000}, /* 64 kilobyte block */
    { 0x130000, 0x10000}, /* 64 kilobyte block */
    { 0x140000, 0x10000}, /* 64 kilobyte block */
    { 0x150000, 0x10000}, /* 64 kilobyte block */
    { 0x160000, 0x10000}, /* 64 kilobyte block */
    { 0x170000, 0x10000}, /* 64 kilobyte block */
    { 0x180000, 0x10000}, /* 64 kilobyte block */
    { 0x190000, 0x10000}, /* 64 kilobyte block */
    { 0x1A0000, 0x10000}, /* 64 kilobyte block */
    { 0x1B0000, 0x10000}, /* 64 kilobyte block */
    { 0x1C0000, 0x10000}, /* 64 kilobyte block */
    { 0x1D0000, 0x10000}, /* 64 kilobyte block */
    { 0x1E0000, 0x10000}, /* 64 kilobyte block */
    { 0x1F0000, 0x10000}, /* 64 kilobyte block */

    { 0x200000, 0x10000}, /* 64 kilobyte block */
    { 0x210000, 0x10000}, /* 64 kilobyte block */
    { 0x220000, 0x10000}, /* 64 kilobyte block */
    { 0x230000, 0x10000}, /* 64 kilobyte block */
    { 0x240000, 0x10000}, /* 64 kilobyte block */
    { 0x250000, 0x10000}, /* 64 kilobyte block */
    { 0x260000, 0x10000}, /* 64 kilobyte block */
    { 0x270000, 0x10000}, /* 64 kilobyte block */
    { 0x280000, 0x10000}, /* 64 kilobyte block */
    { 0x290000, 0x10000}, /* 64 kilobyte block */
    { 0x2A0000, 0x10000}, /* 64 kilobyte block */
    { 0x2B0000, 0x10000}, /* 64 kilobyte block */
    { 0x2C0000, 0x10000}, /* 64 kilobyte block */
    { 0x2D0000, 0x10000}, /* 64 kilobyte block */
    { 0x2E0000, 0x10000}, /* 64 kilobyte block */
    { 0x2F0000, 0x10000}, /* 64 kilobyte block */

    { 0x300000, 0x10000}, /* 64 kilobyte block */
    { 0x310000, 0x10000}, /* 64 kilobyte block */
    { 0x320000, 0x10000}, /* 64 kilobyte block */
    { 0x330000, 0x10000}, /* 64 kilobyte block */
    { 0x340000, 0x10000}, /* 64 kilobyte block */
    { 0x350000, 0x10000}, /* 64 kilobyte block */
    { 0x360000, 0x10000}, /* 64 kilobyte block */
    { 0x370000, 0x10000}, /* 64 kilobyte block */
    { 0x380000, 0x10000}, /* 64 kilobyte block */
    { 0x390000, 0x10000}, /* 64 kilobyte block */
    { 0x3A0000, 0x10000}, /* 64 kilobyte block */
    { 0x3B0000, 0x10000}, /* 64 kilobyte block */
    { 0x3C0000, 0x10000}, /* 64 kilobyte block */
    { 0x3D0000, 0x10000}, /* 64 kilobyte block */
    { 0x3E0000, 0x10000}, /* 64 kilobyte block */
    { 0x3F0000, 0x10000},
};
 
static block_descriptor TOSHIBA7T2A_flash_block[] ={

    {0x000000, 0x10000},/* 64 kilobyte block */
    {0x010000, 0x10000 }, /* 64 kilobyte block */
    {0x020000, 0x10000 }, /* 64 kilobyte block */
    {0x030000, 0x10000 }, /* 64 kilobyte block */
    {0x040000, 0x10000 }, /* 64 kilobyte block */
    {0x050000, 0x10000 }, /* 64 kilobyte block */
    {0x060000, 0x10000 }, /* 64 kilobyte block */
    {0x070000, 0x10000 }, /* 64 kilobyte block */
    {0x080000, 0x10000 }, /* 64 kilobyte block */
    {0x090000, 0x10000 }, /* 64 kilobyte block */
    {0x0A0000, 0x10000 }, /* 64 kilobyte block */
    {0x0B0000, 0x10000 }, /* 64 kilobyte block */
    {0x0C0000, 0x10000 }, /* 64 kilobyte block */
    {0x0D0000, 0x10000 }, /* 64 kilobyte block */
    {0x0E0000, 0x10000 }, /* 64 kilobyte block */
    {0x0F0000, 0x10000 }, /* 64 kilobyte block */

    {0x100000, 0x10000},/* 64 kilobyte block */
    {0x110000, 0x10000},/* 64 kilobyte block */
    {0x120000, 0x10000},/* 64 kilobyte block */
    {0x130000, 0x10000},/* 64 kilobyte block */
    {0x140000, 0x10000},/* 64 kilobyte block */
    {0x150000, 0x10000},/* 64 kilobyte block */
    {0x160000, 0x10000},/* 64 kilobyte block */
    {0x170000, 0x10000},/* 64 kilobyte block */
    {0x180000, 0x10000},/* 64 kilobyte block */
    {0x190000, 0x10000},/* 64 kilobyte block */
    {0x1A0000, 0x10000},/* 64 kilobyte block */
    {0x1B0000, 0x10000},/* 64 kilobyte block */
    {0x1C0000, 0x10000},/* 64 kilobyte block */
    {0x1D0000, 0x10000},/* 64 kilobyte block */
    {0x1E0000, 0x10000},/* 64 kilobyte block */
    {0x1F0000, 0x10000},/* 64 kilobyte block */
    
    {0x200000, 0x10000},/* 64 kilobyte block */
    {0x210000, 0x10000},/* 64 kilobyte block */
    {0x220000, 0x10000},/* 64 kilobyte block */
    {0x230000, 0x10000},/* 64 kilobyte block */
    {0x240000, 0x10000},/* 64 kilobyte block */
    {0x250000, 0x10000},/* 64 kilobyte block */
    {0x260000, 0x10000},/* 64 kilobyte block */
    {0x270000, 0x10000},/* 64 kilobyte block */
    {0x280000, 0x10000},/* 64 kilobyte block */
    {0x290000, 0x10000},/* 64 kilobyte block */
    {0x2A0000, 0x10000},/* 64 kilobyte block */
    {0x2B0000, 0x10000},/* 64 kilobyte block */
    {0x2C0000, 0x10000},/* 64 kilobyte block */
    {0x2D0000, 0x10000},/* 64 kilobyte block */
    {0x2E0000, 0x10000},/* 64 kilobyte block */
    {0x2F0000, 0x10000},/* 64 kilobyte block */
    
    {0x300000, 0x10000},/* 64 kilobyte block */
    {0x310000, 0x10000},/* 64 kilobyte block */
    {0x320000, 0x10000},/* 64 kilobyte block */
    {0x330000, 0x10000},/* 64 kilobyte block */
    {0x340000, 0x10000},/* 64 kilobyte block */
    {0x350000, 0x10000},/* 64 kilobyte block */
    {0x360000, 0x10000},/* 64 kilobyte block */
    {0x370000, 0x10000},/* 64 kilobyte block */
    {0x380000, 0x10000},/* 64 kilobyte block */
    {0x390000, 0x10000},/* 64 kilobyte block */
    {0x3A0000, 0x10000},/* 64 kilobyte block */
    {0x3B0000, 0x10000},/* 64 kilobyte block */
    {0x3C0000, 0x10000},/* 64 kilobyte block */
    {0x3D0000, 0x10000},/* 64 kilobyte block */
    {0x3E0000, 0x10000},/* 64 kilobyte block */
    {0x3F0000, 0x10000},/* 64 kilobyte block */
    
    {0x400000, 0x10000},/* 64 kilobyte block */
    {0x410000, 0x10000},/* 64 kilobyte block */
    {0x420000, 0x10000},/* 64 kilobyte block */
    {0x430000, 0x10000},/* 64 kilobyte block */
    {0x440000, 0x10000},/* 64 kilobyte block */
    {0x450000, 0x10000},/* 64 kilobyte block */
    {0x460000, 0x10000},/* 64 kilobyte block */
    {0x470000, 0x10000},/* 64 kilobyte block */
    {0x480000, 0x10000},/* 64 kilobyte block */
    {0x490000, 0x10000},/* 64 kilobyte block */
    {0x4A0000, 0x10000},/* 64 kilobyte block */
    {0x4B0000, 0x10000},/* 64 kilobyte block */
    {0x4C0000, 0x10000},/* 64 kilobyte block */
    {0x4D0000, 0x10000},/* 64 kilobyte block */
    {0x4E0000, 0x10000},/* 64 kilobyte block */
    {0x4F0000, 0x10000},/* 64 kilobyte block */
    
    {0x500000, 0x10000},/* 64 kilobyte block */
    {0x510000, 0x10000},/* 64 kilobyte block */
    {0x520000, 0x10000},/* 64 kilobyte block */
    {0x530000, 0x10000},/* 64 kilobyte block */
    {0x540000, 0x10000},/* 64 kilobyte block */
    {0x550000, 0x10000},/* 64 kilobyte block */
    {0x560000, 0x10000},/* 64 kilobyte block */
    {0x570000, 0x10000},/* 64 kilobyte block */
    {0x580000, 0x10000},/* 64 kilobyte block */
    {0x590000, 0x10000},/* 64 kilobyte block */
    {0x5A0000, 0x10000},/* 64 kilobyte block */
    {0x5B0000, 0x10000},/* 64 kilobyte block */
    {0x5C0000, 0x10000},/* 64 kilobyte block */
    {0x5D0000, 0x10000},/* 64 kilobyte block */
    {0x5E0000, 0x10000},/* 64 kilobyte block */
    {0x5F0000, 0x10000},/* 64 kilobyte block */
    
    {0x600000, 0x10000},/* 64 kilobyte block */
    {0x610000, 0x10000},/* 64 kilobyte block */
    {0x620000, 0x10000},/* 64 kilobyte block */
    {0x630000, 0x10000},/* 64 kilobyte block */
    {0x640000, 0x10000},/* 64 kilobyte block */
    {0x650000, 0x10000},/* 64 kilobyte block */
    {0x660000, 0x10000},/* 64 kilobyte block */
    {0x670000, 0x10000},/* 64 kilobyte block */
    {0x680000, 0x10000},/* 64 kilobyte block */
    {0x690000, 0x10000},/* 64 kilobyte block */
    {0x6A0000, 0x10000},/* 64 kilobyte block */
    {0x6B0000, 0x10000},/* 64 kilobyte block */
    {0x6C0000, 0x10000},/* 64 kilobyte block */
    {0x6D0000, 0x10000},/* 64 kilobyte block */
    {0x6E0000, 0x10000},/* 64 kilobyte block */
    {0x6F0000, 0x10000},/* 64 kilobyte block */
    
    {0x700000, 0x10000},/* 64 kilobyte block */
    {0x710000, 0x10000},/* 64 kilobyte block */
    {0x720000, 0x10000},/* 64 kilobyte block */
    {0x730000, 0x10000},/* 64 kilobyte block */
    {0x740000, 0x10000},/* 64 kilobyte block */
    {0x750000, 0x10000},/* 64 kilobyte block */
    {0x760000, 0x10000},/* 64 kilobyte block */
    {0x770000, 0x10000},/* 64 kilobyte block */
    {0x780000, 0x10000},/* 64 kilobyte block */
    {0x790000, 0x10000},/* 64 kilobyte block */
    {0x7A0000, 0x10000},/* 64 kilobyte block */
    {0x7B0000, 0x10000},/* 64 kilobyte block */
    {0x7C0000, 0x10000},/* 64 kilobyte block */
    {0x7D0000, 0x10000},/* 64 kilobyte block */
    {0x7E0000, 0x10000},/* 64 kilobyte block */
    {0x7F0000, 0x10000},/* 64 kilobyte block */
    
    {0x800000, 0x10000},/* 64 kilobyte block */
    {0x810000, 0x10000},/* 64 kilobyte block */
    {0x820000, 0x10000},/* 64 kilobyte block */
    {0x830000, 0x10000},/* 64 kilobyte block */
    {0x840000, 0x10000},/* 64 kilobyte block */
    {0x850000, 0x10000},/* 64 kilobyte block */
    {0x860000, 0x10000},/* 64 kilobyte block */
    {0x870000, 0x10000},/* 64 kilobyte block */
    {0x880000, 0x10000},/* 64 kilobyte block */
    {0x890000, 0x10000},/* 64 kilobyte block */
    {0x8A0000, 0x10000},/* 64 kilobyte block */
    {0x8B0000, 0x10000},/* 64 kilobyte block */
    {0x8C0000, 0x10000},/* 64 kilobyte block */
    {0x8D0000, 0x10000},/* 64 kilobyte block */
    {0x8E0000, 0x10000},/* 64 kilobyte block */
    {0x8F0000, 0x10000},/* 64 kilobyte block */
    
    {0x900000, 0x10000},/* 64 kilobyte block */
    {0x910000, 0x10000},/* 64 kilobyte block */
    {0x920000, 0x10000},/* 64 kilobyte block */
    {0x930000, 0x10000},/* 64 kilobyte block */
    {0x940000, 0x10000},/* 64 kilobyte block */
    {0x950000, 0x10000},/* 64 kilobyte block */
    {0x960000, 0x10000},/* 64 kilobyte block */
    {0x970000, 0x10000},/* 64 kilobyte block */
    {0x980000, 0x10000},/* 64 kilobyte block */
    {0x990000, 0x10000},/* 64 kilobyte block */
    {0x9A0000, 0x10000},/* 64 kilobyte block */
    {0x9B0000, 0x10000},/* 64 kilobyte block */
    {0x9C0000, 0x10000},/* 64 kilobyte block */
    {0x9D0000, 0x10000},/* 64 kilobyte block */
    {0x9E0000, 0x10000},/* 64 kilobyte block */
    {0x9F0000, 0x10000},/* 64 kilobyte block */
    
    {0xA00000, 0x10000},/* 64 kilobyte block */
    {0xA10000, 0x10000},/* 64 kilobyte block */
    {0xA20000, 0x10000},/* 64 kilobyte block */
    {0xA30000, 0x10000},/* 64 kilobyte block */
    {0xA40000, 0x10000},/* 64 kilobyte block */
    {0xA50000, 0x10000},/* 64 kilobyte block */
    {0xA60000, 0x10000},/* 64 kilobyte block */
    {0xA70000, 0x10000},/* 64 kilobyte block */
    {0xA80000, 0x10000},/* 64 kilobyte block */
    {0xA90000, 0x10000},/* 64 kilobyte block */
    {0xAA0000, 0x10000},/* 64 kilobyte block */
    {0xAB0000, 0x10000},/* 64 kilobyte block */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?