brom.h
上传用户:gelin96
上传日期:2017-01-08
资源大小:20993k
文件大小:23k
源码类别:

MTK

开发平台:

C++ Builder

  1. /*******************************************************************************
  2.  *  Copyright Statement:
  3.  *  --------------------
  4.  *  This software is protected by Copyright and the information contained
  5.  *  herein is confidential. The software may not be copied and the information
  6.  *  contained herein may not be used or disclosed except with the written
  7.  *  permission of MediaTek Inc. (C) 2003
  8.  *
  9.  ******************************************************************************/
  10. /*******************************************************************************
  11.  * Filename:
  12.  * ---------
  13.  *  brom.h
  14.  *
  15.  * Project:
  16.  * --------
  17.  *  BootRom Library
  18.  *
  19.  * Description:
  20.  * ------------
  21.  *  Exported C interface APIs for BootRom library.
  22.  *
  23.  * Author:
  24.  * -------
  25.  *  Amos Hsu (mtk00539)
  26.  *
  27.  *==============================================================================
  28.  *           HISTORY
  29.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  30.  *------------------------------------------------------------------------------
  31.  * $Revision:   1.21  $
  32.  * $Modtime:   Dec 06 2005 15:05:36  $
  33.  * $Log:   //mtkvs01/vmdata/flash_tool/archives/BootRom/brom.h-arc  $
  34.  *
  35.  * Jan 31 2008 mtk01413
  36.  * [STP100001630] [FlashTool] v3.0804.0 release
  37.  * New features:
  38.  *  1. USB Download for End User
  39.  * Enhancements:
  40.  *  1. [DA] Download Optimization with 921k on MT6225/MT6229/MT6230/MT6235/MT6238
  41.  *  2. [DA] Provide two download methodology : Best Effort Erase (default) and Sequential Erase
  42.  *  3. [DA] New CheckID algorithm for all SPANSION MCP series
  43.  *
  44.  * Dec 3 2007 mtk01413
  45.  * [STP100001568] [FlashTool] v3.0748.0 release
  46.  * New features:
  47.  *  1. USB Download on MT6225/MT6226/MT6227 Series BB
  48.  *  2. GPS Download
  49.  *  3. MT6238, MT6235, TK6516 AP/MD  DVT
  50.  *
  51.  * Aug 30 2007 mtk01413
  52.  * [STP100001497] [FlashTool] v3.2.0 release
  53.  * 
  54.  *
  55.  * Jan 2 2007 mtk01413
  56.  * [STP100001195] FlashTool v3.1.02 release
  57.  * New features:
  58.  *  1. [BROM_DLL/DA] Support MT6223  download.
  59.  *  2. [BROM_DLL/DA] Support MT6268T download.
  60.  *
  61.  * Sep 27 2006 mtk00539
  62.  * [STP100001145] FlashTool v3.1.01 release
  63.  * 
  64.  *
  65.  * Aug 16 2006 mtk00539
  66.  * [STP100001057] FlashTool v3.1.00 release
  67.  * Add GetBromDLLInfo().
  68.  *
  69.  * Aug 14 2006 mtk00539
  70.  * [STP100001057] FlashTool v3.1.00 release
  71.  * 
  72.  *
  73.  * Jul 21 2006 mtk01413
  74.  * [STP100001021] FlashTool v2.9.1002 release
  75.  * 1. [BROM_DLL] Fix DA download error on MT6205/MT6205B.
  76.  * 
  77.  *    Rev 1.21   Dec 29 2005 10:42:02   mtk00539
  78.  *  1. [BROM_DLL] Support new baseband chip MT6226M.
  79.  * Resolution for 156: [FlashTool v2.7.1013][BUG FIX] Fix BootROM start command failure while manually selecting NMT6226 or MT6227 baseband chip.
  80.  * 
  81.  *    Rev 1.20   Sep 13 2005 13:21:58   mtk00539
  82.  *  1. [BROM_DLL][Enhance] Workaround the 1st time power up failure issue when RTC is empty.
  83.  *  2. [BROM_DLL][Enhance] Padding download bin file length to EVEN number.
  84.  *  3. [BROM_DLL][New] New baseband chip support, MT6226, MT6227(0x8A01), MT6228(0x8A01).
  85.  * Resolution for 130: [BROM_DLL v2.4.1016][Enhance] Workaround the 1st time power up failure issue when RTC is empty.
  86.  * 
  87.  *    Rev 1.19   Jul 24 2005 21:37:50   mtk00539
  88.  * 1. Support MT6228 NFB META mode.
  89.  * Resolution for 121: [BROM_DLL v2.4.1014][New] Support MT6227 and MT6228 NFB META mode.
  90.  * 
  91.  *    Rev 1.18   May 24 2005 19:54:20   mtk00539
  92.  *  1. [BROM_DLL][New] Add DA_cmd::CMD_EnableWatchDog() to enable watchdog after download process. 
  93.  *  2. [BROM_DLL][New] Add DL_ResourceProjectIdComparisonSetting() API to enable/disable resource project id comparison. 
  94.  *  3. [BROM_DLL][New] Add callback function in Boot_META() series API to do extra process after BootROM start command passed.
  95.  *  4. [BROM_DLL][BUG FIX] Fix com port error after using HyperTerminal.
  96.  *  5. [BROM_DLL][BUG FIX] Fix m_boot_timeout takes no effect in BRom_AutoBoot::BRom_StartCmd().
  97.  *  6. [BROM_DLL][Change Behavior] Stop download process while CALLBACK_BEFORE_PROCESS return non-zero value. 
  98.  *  7. [BROM_DLL][Change Behavior] Skip resource table size and content size checking for CustPack project.
  99.  * Resolution for 115: [BROM_DLL v2.4.1012][New] Support new flash devices and bug fix.
  100.  * 
  101.  *    Rev 1.17   Nov 22 2004 14:27:54   mtk00539
  102.  *  1. [BROM_DLL][BUG FIX] Add baudrate sync procedure for BootROM stage baudrate change for Prolific convertor.
  103.  *  2. [BROM_DLL][BUG FIX] Fix ReadData() delay time too long problem in DA_cmd::CMD_ChangeUartSpeed() while target is running at 13MHz.
  104.  *  3. [BROM_DLL][BUG FIX] DO NOT use while loop in reading BootROM ack in BRom_AutoBoot::BRom_StartCmd(), it will cause BootROM timeout.
  105.  *  4. [BROM_DLL][Enhance] Extend the read timeout waiting time in DA_cmd::CMD_WriteData, because SHARP flash program time is slow.
  106.  *  5. [BROM_DLL][Enhance] Add m_speedup_brom_baudrate flag to enable/disable speed-up baudrate in BootROM stage.
  107.  * Resolution for 99: [BROM_DLL v2.4.1008][New] Support INTEL family flash Buffered-Program method.
  108.  * 
  109.  *    Rev 1.16   Nov 05 2004 10:35:08   mtk00539
  110.  *  1. [BROM_DLL][New] Implement S/W compatible mechanism for MT6218B_FN and MT6218B_GN.
  111.  *  2. [BROM_DLL][Enhance] Read property to check if it was RS232 or Modem from COM1 to COM3.
  112.  *  3. [BROM_DLL][Change Behavior] Unknown bbchip won't allow to download once check ECO version flag is enabled.
  113.  * Resolution for 96: [BROM_DLL v2.4.1007][New] Implement S/W compatible mechanism for MT6218B_FN and MT6218B_GN.
  114.  * 
  115.  *    Rev 1.15   Oct 29 2004 11:42:58   mtk00539
  116.  *  1. [BROM_DLL][New] Implement auto bbchip and ext_clock detection mechanism.
  117.  *  2. [BROM_DLL][New] Increase BootROM baudrate as twice times by setup UART_HIGHSPEED_RATE_STEP register.
  118.  *  3. [BROM_DLL][New] Add new bbchip MT6205_EN and MT6218B_GN.
  119.  *  4. [BROM_DLL][Enhance] Increase MT6217 and MT6219 EMI driving strength.
  120.  * Resolution for 92: [BROM_DLL v2.4.1006][BUG FIX] Fix AM49DL3208GT & S71PL032J download fail problem and some enhancement.
  121.  * 
  122.  *    Rev 1.14   Jul 19 2004 01:56:36   mtk00539
  123.  *  1. [BROM_DLL][BUG FIX] When bbchip_type is inconsistent with rom bbchip info, do not use rom bbchip info to compare with target bbchip id.
  124.  *  2. [BROM_DLL][BUG FIX] Fix baudrate 921600 download fail under 13MHz external clock.
  125.  *   1. Add Sleep(0) to force context switch to flush UART TX data in BRom_Base::WriteData() and DA_cmd::WriteData().
  126.  *         2. After target side baudrate changed command was issued, add Sleep() to delay sending SYNC_CHAR.
  127.  *            This will prevent the interference of target side UART state machine during target side baudrate changed. 
  128.  *         3. Purge PC side and target side UART TX & RX FIFO after baudrate changed.
  129.  *         4. Use while(1) loop to avoid flash readback checksum timeout.
  130.  *         5. Add baudrate full char sync mechanism to test if baudrate is stable.
  131.  *  3. [BROM_DLL][CHANGE] Change GetJumpTableInfoFromBuf() to fit JumpTable definition changed in Maui.SW system.
  132.  *  4. [BROM_DLL][Enhance] Remove unnecessary functions MT6205_MEM_config and MT6205B_MEM_config.
  133.  *  5. [BROM_DLL][Enhance] Add MT6218B and MT6219 EMI general control register setting in BootROM stage.
  134.  *  6. [BROM_DLL][Enhance] Change EMI setting to 32 bits.
  135.  * Resolution for 81: [BROM_DLL v2.4.1001] Support Intel flash and fix many bugs.
  136.  * 
  137.  *    Rev 1.13   May 26 2004 21:23:58   mtk00539
  138.  * [New] Add callback function in BootROM stage. So that users could have chance to issue other BootROM command after start cmd is passed, or do whatever they want otherwise.
  139.  * Resolution for 73: [BROM_DLL v2.3.1005][New] Add callback function in BootROM stage.
  140.  * 
  141.  *    Rev 1.12   May 21 2004 15:44:38   mtk00539
  142.  *  1. [brom.dll][New] add J2ME_ROM resource for w04.21 load.
  143.  *  2. [brom.dll][New] add MT6217 BootROM.
  144.  *  3. [brom.dll][New] add Brom_DownloadData API.
  145.  *  4. [brom.dll][New] remove Brom_Verify relative APIs.
  146.  *  5. [brom.dll][Enhance] move region overlap checking from Rom_Load() to IsReady() for more convenience.
  147.  * Resolution for 70: [BROM_DLL v2.3.1003][New] add J2ME_ROM resource for w04.21 load.
  148.  * 
  149.  *    Rev 1.11   May 17 2004 12:55:20   mtk00539
  150.  * [New] keep old interfaces of Boot_META, Boot_FlashTool & Brom_Verify 
  151.  * Resolution for 69: [BootRom v2.3.1002][BUG FIX] fix RB_HANDLE deadlock.
  152.  * 
  153.  *    Rev 1.10   May 14 2004 17:01:26   mtk00539
  154.  *  1. [brom.dll][BUG FIX] fix DA_cmd::CMD_WriteData() buffer overrun problem.
  155.  *  2. [brom.dll][BUG FIX] remove DA_HANDLE & DL_HANDLE rwlock_writer_sentry for multi-thread download.
  156.  *  3. [brom.dll][BUG FIX] fix download address remap problem for Multi-Bin download on MT6218B series projects.
  157.  *  4. [brom.dll][Enhance] for the unknown bbchip_name just bypass ECO checking, don't stop process.
  158.  *  5. [brom.dll][New] add FAT auto format mechanism, parse the embedded FAT range info from the end of the ROM file.
  159.  *  6. [brom.dll][New] add DA auto selection mechanism, parse the embedded custom_bane info from the end of the DA file.
  160.  *  7. [brom.dll][New] add _ByhCOM interface to let users to control com port handle.
  161.  *  8. [brom.dll][New] add BootROM start command retry mechanism to prevent cable TX/RX cross over.
  162.  *  9. [brom.dll][New] add MT6219_AV, MT6219_BV and MT6218B_FN support.
  163.  * 10. [DA][New] add DA auto selection mechanism, append custom_name at the end of DA.
  164.  * 11. [DA][New] add FAT auto format mechanism, report flash manufacture id and device code to PC side.
  165.  * Resolution for 67: [BootRom v2.3.1001][New] add FAT auto format, DA auto selection mechanism and bug fix.
  166.  * 
  167.  *    Rev 1.9   Mar 18 2004 23:06:40   mtk00539
  168.  *  1. [brom.dll][Enhance] only bbchip after MT6218B has to check firmware version.
  169.  *  2. [brom.dll][BUG FIX] change func() to func(void) to fix header file compatibility for LabView.
  170.  *  3. [brom.dll][BUG FIX] CompareTargetBBChipHWID() should return error and skip comparison when target doesn't respond.
  171.  * Resolution for 61: [BootRom v2.2.1012][BUG FIX] fix CompareTargetBBChipHWID() error.
  172.  * 
  173.  *    Rev 1.8   Mar 09 2004 21:00:50   mtk00539
  174.  * [Enhance] check BBChip H/W version in Boot_META and Boot_FlashTool.
  175.  * Resolution for 57: [BootRom v2.2.1010][Enhance] check BBChip H/W version in Boot_META and Boot_FlashTool.
  176.  * 
  177.  *    Rev 1.7   Mar 02 2004 00:19:04   mtk00539
  178.  * 1. [brom.dll][Enhance] add resource and jump table consistency detection.
  179.  * 2. [brom.dll][Enhance] read back target's jump table layout and compare before download.
  180.  * 3. [brom.dll][Enhance] automatically load all the resource files.
  181.  * 4. [brom.dll][Enhance] add target bbchip id detection.
  182.  * 5. [brom.dll][Enhance] add ini module.
  183.  * 6. [brom.dll][Enhance] add MT6219 support.
  184.  * Resolution for 53: [BootRom v2.2.1007][Enhance] resource layout error detection.
  185.  * 
  186.  *    Rev 1.6   Sep 25 2003 13:57:52   mtk00539
  187.  * brom.dll v2.1.1001, please see SCR(28) for more details.
  188.  * Resolution for 28: [BootRom v2.1.1001][New] See the reasons below.
  189.  * 
  190.  *    Rev 1.5   Jul 25 2003 15:50:28   mtk00539
  191.  * Reason:
  192.  * 1. SA reports read(10sec)/write(3sec) timeouts are too long. Because DA_cmd::WriteData() and DA_cmd::ReadData() will re-try one time, so the actual timeouts are read(10x2sec)/write(3x2sec). So I decide to reduce timeouts to read(5sec)/write(1.5sec).
  193.  * 
  194.  * 2. Add specific debug log at the end of FlashDownload(), FlashReadback() and FlashFormat(). In this way SA can query whether if the function successfully executed by this signature.
  195.  * 
  196.  * 3. Export debug log clear function, let users clear debug log whenever they want.
  197.  * Resolution for 17: [BootRom v2.0.1006][Add Features] shorten read/write timeout and export debug log clear function.
  198.  * 
  199.  *    Rev 1.4   Jun 30 2003 19:24:50   mtk00539
  200.  * 1. [brom.dll][Add Features] Split flashtool function into brom.dll
  201.  * 2. [brom.dll][Add Features] Add a fake MT6208 bootrom for FlashTool for Pluto version.
  202.  * 3. [DA][Add Features] Check format range.
  203.  * 4. [DA][Add Features] Report format percentage.
  204.  * 5. [DA][Add Features] Support 6208 EVB/CEVB for double flash devices access.
  205.  * 6. [DA][BUG FIXED] Fix DA pre-format sector bug, it shouldn't format beyond the max size of flash.
  206.  * 7. [DA][BUG FIXED] Fix DA FlashTool MEM_CMD end_addr bug, FlashTool should use (begin_addr+length-1) as end_addr.
  207.  * 8. [DA][BUG FIXED] Fix DA AM29DL640D, MB84VD23280FA and TC58FVB64 flash table error.
  208.  * Resolution for 12: [BootRom v2.2.1001][New Version] Split flashtool function into brom.dll
  209.  * 
  210.  *    Rev 1.2   May 22 2003 17:27:48   mtk00539
  211.  * add bootstop flag
  212.  * Resolution for 6: [FlashTool v2.2][AddFeature] Support 6205/6205B at 13MHz, 26MHz and 52MHz.
  213.  * 
  214.  *    Rev 1.1   May 20 2003 18:05:46   mtk00539
  215.  * add copyright
  216.  * Resolution for 6: [FlashTool v2.2][AddFeature] Support 6205/6205B at 13MHz, 26MHz and 52MHz.
  217.  *
  218.  *------------------------------------------------------------------------------
  219.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  220.  *==============================================================================
  221.  *******************************************************************************/
  222. #ifndef _BROM_H_
  223. #define _BROM_H_
  224. #include <windows.h>
  225. #include "flashtool_handle.h"
  226. #ifdef __cplusplus
  227. extern "C" {
  228. #endif
  229. // The magic value to stop boot process 
  230. #define BOOT_STOP 9876
  231. // boot infinitely
  232. #define BOOT_INFINITE 0xFFFFFFF
  233. // default start cmd retry count 
  234. #define DEFAULT_BROM_START_CMD_RETRY_COUNT 1
  235. //------------------------------------------------------------------------------
  236. // prototype of COM initial stage callback                                          
  237. //------------------------------------------------------------------------------
  238. typedef int (__stdcall *CALLBACK_COM_INIT_STAGE)(HANDLE hCOM, void *usr_arg);
  239. //------------------------------------------------------------------------------
  240. // prototype of BootROM stage callback                                          
  241. //------------------------------------------------------------------------------
  242. typedef int (__stdcall *CALLBACK_IN_BROM_STAGE)(unsigned int brom_handle, HANDLE hCOM, void *usr_arg);
  243. //------------------------------------------------------------------------------
  244. // prototype of write buf progress callback                                     
  245. //------------------------------------------------------------------------------
  246. typedef int (__stdcall *CALLBACK_WRITE_BUF_PROGRESS_INIT)(void *usr_arg);
  247. typedef int (__stdcall *CALLBACK_WRITE_BUF_PROGRESS)(unsigned char finished_percentage, unsigned int finished_bytes, unsigned int total_bytes, void *usr_arg);
  248. //------------------------------------------------------------------------------
  249. // prototype of Serial-Link-Authentication challenge callback                   
  250. //------------------------------------------------------------------------------
  251. typedef int (__stdcall *CALLBACK_SLA_CHALLENGE)(void *usr_arg, const unsigned char  *p_challenge_in, unsigned int  challenge_in_len, unsigned char  **pp_challenge_out, unsigned int  *p_challenge_out_len);
  252. typedef int (__stdcall *CALLBACK_SLA_CHALLENGE_END)(void *usr_arg, unsigned char  *p_challenge_out);
  253. //------------------------------------------------------------------------------
  254. // runtime debug trace                                                          
  255. //------------------------------------------------------------------------------
  256. int __stdcall Brom_DebugOn(void);
  257. int __stdcall Brom_DebugOff(void);
  258. int __stdcall Brom_DebugClear(void);
  259. //------------------------------------------------------------------------------
  260. // translate enum to string                                                     
  261. //------------------------------------------------------------------------------
  262. const char * __stdcall BBChipTypeToName(const BBCHIP_TYPE  bbchip);
  263. const char * __stdcall ExtClockToName(const EXT_CLOCK  ext_clock);
  264. const char * __stdcall StatusToString(int status);
  265. //------------------------------------------------------------------------------
  266. // Windows message to notify application ready to power on target               
  267. //------------------------------------------------------------------------------
  268. #define WM_BROM_READY_TO_POWER_ON_TGT (0x8888)
  269. int __stdcall GetReadyToPowerOnWinAppMsgID(unsigned int *p_wm_app_id);
  270. int __stdcall SetReadyToPowerOnWinAppMsgID(unsigned int wm_app_id);
  271. //------------------------------------------------------------------------------
  272. // boot-up result                                                               
  273. //------------------------------------------------------------------------------
  274. typedef struct {
  275. BBCHIP_TYPE m_bbchip_type;
  276. char m_bbchip_name[32];
  277. unsigned short m_bbchip_hw_ver;
  278. unsigned short m_bbchip_sw_ver;
  279. unsigned short m_bbchip_hw_code;
  280. EXT_CLOCK m_ext_clock;
  281. unsigned char m_bbchip_secure_ver;
  282. unsigned char m_bbchip_bl_ver;
  283. unsigned int m_fw_ver_len;
  284. char m_fw_ver[64];
  285. unsigned char m_msp_err_code;
  286. } BOOT_RESULT;
  287. //------------------------------------------------------------------------------
  288. // boot META mode                                                               
  289. //------------------------------------------------------------------------------
  290. typedef struct {
  291. BBCHIP_TYPE m_bbchip_type;
  292. EXT_CLOCK m_ext_clock;
  293. unsigned int m_ms_boot_timeout;
  294. unsigned int m_max_start_cmd_retry_count;
  295. // This callback function will be invoke after COM port is opened
  296. // You can do some initialization by using this callback function.
  297. CALLBACK_COM_INIT_STAGE m_cb_com_init_stage;
  298. void * m_cb_com_init_stage_arg;
  299. // This callback function will be invoke after BootROM start cmd is passed. 
  300. // You can issue other BootROM command by brom_handle and hCOM which provides callback arguments, 
  301. // or do whatever you want otherwise. 
  302. CALLBACK_IN_BROM_STAGE m_cb_in_brom_stage;
  303. void * m_cb_in_brom_stage_arg;
  304. // speed-up BootROM stage baudrate 
  305. _BOOL m_speedup_brom_baudrate;
  306. // Application's window handle to send WM_BROM_READY_TO_POWER_ON_TGT message 
  307. HWND m_ready_power_on_wnd_handle;
  308. void * m_ready_power_on_wparam;
  309. void * m_ready_power_on_lparam;
  310. // Serial Link Authentication 
  311. AUTH_HANDLE_T m_auth_handle; // AUTH file handle 
  312. CALLBACK_SLA_CHALLENGE m_cb_sla_challenge;
  313. void * m_cb_sla_challenge_arg;
  314. CALLBACK_SLA_CHALLENGE_END m_cb_sla_challenge_end;
  315. void * m_cb_sla_challenge_end_arg;
  316. // use USB Cable
  317. _BOOL m_usb_enable;
  318. } BOOT_META_ARG;
  319. int  __stdcall Boot_META(
  320. HANDLE hCOM,
  321. const BOOT_META_ARG  *p_arg,
  322. BOOT_RESULT  *p_result,
  323. int *p_bootstop);
  324. //------------------------------------------------------------------------------
  325. // boot FlashTool download mode                                                 
  326. //------------------------------------------------------------------------------
  327. #define WAIT_STATE_AUTO_DETECT_BY_FREQUENCY NULL
  328. typedef struct {
  329. BBCHIP_TYPE m_bbchip_type;
  330. EXT_CLOCK m_ext_clock;
  331. unsigned int m_ms_boot_timeout;
  332. unsigned int m_max_start_cmd_retry_count;
  333. // This callback function will be invoke after COM port is opened
  334. // You can do some initialization by using this callback function.
  335. CALLBACK_COM_INIT_STAGE m_cb_com_init_stage;
  336. void * m_cb_com_init_stage_arg;
  337. // This callback function will be invoke after BootROM start cmd is passed. 
  338. // You can issue other BootROM command by brom_handle and hCOM which provides callback arguments, 
  339. // or do whatever you want otherwise. 
  340. CALLBACK_IN_BROM_STAGE m_cb_in_brom_stage;
  341. void * m_cb_in_brom_stage_arg;
  342. // speed-up BootROM stage baudrate 
  343. _BOOL m_speedup_brom_baudrate;
  344. // Application's window handle to send WM_BROM_READY_TO_POWER_ON_TGT message 
  345. HWND m_ready_power_on_wnd_handle;
  346. void * m_ready_power_on_wparam;
  347. void * m_ready_power_on_lparam;
  348. // Serial Link Authentication 
  349. AUTH_HANDLE_T m_auth_handle; // AUTH file handle 
  350. CALLBACK_SLA_CHALLENGE m_cb_sla_challenge;
  351. void * m_cb_sla_challenge_arg;
  352. CALLBACK_SLA_CHALLENGE_END m_cb_sla_challenge_end;
  353. void * m_cb_sla_challenge_end_arg;
  354. // EMI Control for Bank0 and Bank1 
  355. unsigned int *m_p_bank0_mem_cfg; // bank0 memory config 
  356. unsigned int *m_p_bank1_mem_cfg; // bank0 memory config 
  357. // Download Agent 
  358. _BOOL m_enable_da_start_addr; // Old parameter, no use now. Use DA_SetDefaultStartAddr instead. 
  359. unsigned int m_da_start_addr; // Old parameter, no use now. Use DA_SetDefaultStartAddr instead. 
  360. DA_HANDLE_T m_da_handle;
  361. // da download progress callack 
  362. CALLBACK_WRITE_BUF_PROGRESS_INIT m_cb_download_da_init;
  363. void * m_cb_download_da_init_arg;
  364. CALLBACK_WRITE_BUF_PROGRESS m_cb_download_da;
  365. void * m_cb_download_da_arg;
  366. // use USB Cable
  367. _BOOL m_usb_enable;
  368. } BOOT_FLASHTOOL_ARG;
  369. int  __stdcall Boot_FlashTool(
  370. HANDLE hCOM,
  371. const BOOT_FLASHTOOL_ARG  *p_arg,
  372. BOOT_RESULT  *p_result,
  373. int *p_bootstop);
  374. //------------------------------------------------------------------------------
  375. // get brom.dll version                                                         
  376. //------------------------------------------------------------------------------
  377. int __stdcall Brom_GetDLLVer(unsigned int *major_ver, unsigned int *minor_ver, unsigned int *build_num, unsigned int *patch_num);
  378. int __stdcall Brom_GetDLLInfo(const char **pp_version, const char **pp_release_type, const char **pp_build_date, const char **pp_load_path);
  379. //------------------------------------------------------------------------------
  380. // BootROM Command                                                              
  381. //------------------------------------------------------------------------------
  382. int __stdcall Brom_Create(unsigned int *p_brom_handle, BBCHIP_TYPE  bbchip_type, EXT_CLOCK  ext_clock, int *p_bootstop, unsigned int ms_boot_timeout, unsigned int max_start_cmd_retry_count);
  383. int __stdcall Brom_Destroy(unsigned int *p_brom_handle);
  384. int __stdcall Brom_StartCmd(unsigned int brom_handle, HANDLE hCOM, BOOT_RESULT  *p_result);
  385. int __stdcall Brom_Write16Cmd(unsigned int brom_handle, HANDLE hCOM, unsigned int write_addr, unsigned short *data, unsigned int num_of_word);
  386. int __stdcall Brom_Read16Cmd(unsigned int brom_handle, HANDLE hCOM, unsigned int read_addr, unsigned short *data, unsigned int num_of_word);
  387. int __stdcall Brom_Write32Cmd(unsigned int brom_handle, HANDLE hCOM, unsigned int write_addr, unsigned int *data, unsigned int num_of_dword);
  388. int __stdcall Brom_Read32Cmd(unsigned int brom_handle, HANDLE hCOM, unsigned int read_addr, unsigned int *data, unsigned int num_of_dword);
  389. int __stdcall Brom_Checksum16Cmd(unsigned int brom_handle, HANDLE hCOM, unsigned int chksum_addr, unsigned int num_of_word, unsigned short *chksum);
  390. int __stdcall Brom_JumpCmd(unsigned int brom_handle, HANDLE hCOM, unsigned int jump_addr, unsigned char bWaitForAck);
  391. typedef struct {
  392. unsigned int m_baseaddr;
  393. unsigned char * m_data;
  394. unsigned int m_data_len; // in byte 
  395. } _DataBlock;
  396. #define BROM_MAX_DATA_BLOCKS 10
  397. typedef struct {
  398. unsigned short m_block_count;
  399. _DataBlock m_blocks[BROM_MAX_DATA_BLOCKS];
  400. } BromWriteDataBlocks;
  401. int __stdcall Brom_DownloadData(unsigned int brom_handle, HANDLE hCOM, const BromWriteDataBlocks *p_data_blocks, CALLBACK_WRITE_BUF_PROGRESS_INIT  cb_init,  void *cb_init_arg, CALLBACK_WRITE_BUF_PROGRESS  cb,  void *cb_arg);
  402. #ifdef __cplusplus
  403. }
  404. #endif
  405. #endif