mt6261 bootloader 完成开始进入主程序
时间:10-02
整理:3721RD
点击:
修改了SPI-flash的参数之后,make VITA61A_BT_V5 GPRS update 来进行编译,15分钟就可以编译好,
之后如果添加打印信息,要确保你添加的代码没有任何问题20秒钟就可以编译好,否则会给你删除很多文件,又相当于要update一次;
make VITA61A_BT_V5 gprs bootloader ##20秒钟才可以编译好
假如memoryDevice配置正确:
这个函数void BootAndHandOver(void)可以正常执行;
假如:程序停在ext-bootloader的
custom_SFI.c
if( (*MPLL_CON0&0x3F00) == 0x1800) //MPLL624M
{
*CLK_CONDH &= 0xFFFFFFF0;
*CLK_CONDH |= 0x00000004; //MPLL/8 = 78
*CLK_CONDC &= 0xFFFFFFFE;
*CLK_CONDC |= 0x00000001;
}
else if( (*MPLL_CON0&0x3F00) == 0x1400) //MPLL520M
{
*CLK_CONDH &= 0xFFFFFFF0;
*CLK_CONDH |= 0x00000003; //MPLL/7 = 74.3
*CLK_CONDC &= 0xFFFFFFFE;
*CLK_CONDC |= 0x00000001; // 程序卡在这儿**************** 说明combo-flash的ram部分配置有问题,如果仅仅是spi-flash不是combo-flash,请删除custom_MemoryDevice.h的CS1_PART_NUMBER
}
else
{
while(1); //Stop here
}
custom_MemoryDevice.h
#define MEMORY_DEVICE_TYPE SERIAL_FLASH
#define CS0_PART_NUMBER FAKE_SLT_26MHz_GD25LQ128 //mtk_INTERNAL_MX25U12835FZNI_10G_FAKE64Mbits
//#define CS1_PART_NUMBER FAKE_SLT_26MHz_GD25LQ128 //MTK_INTERNAL_MX25U12835FZNI_10G_FAKE64Mbits
/*
****************************************************************************
Step 2: Specify part number for each device chosen when COMBO_MEMORY_SUPPORT is enabled
Please note that this section will only be used when COMBO_MEMORY_SUPPORT is enabled,
and will be ignored if COMBO_MEMORY_SUPPORT is disabled
****************************************************************************
*/
#define COMBO_MEM_ENTRY_COUNT 1
#define COMBO_MEM01_CS0_PART_NUMBER FAKE_SLT_26MHz_GD25LQ128 //MTK_INTERNAL_MX25U12835FZNI_10G_FAKE64Mbits
#define COMBO_MEM01_CS1_PART_NUMBER FAKE_SLT_26MHz_GD25LQ128 //MTK_INTERNAL_MX25U12835FZNI_10G_FAKE64Mbits
//#define FLASH_ACCESS_TYPE ASYNC_ACCESS
#define FLASH_ACCESS_TYPE SYNC_ACCESS
#define RAM_ACCESS_TYPE SYNC_ACCESS
#define NOR_BOOTING_NOR_FS_BASE_ADDRESS 0x00750000 //7.xM
#define NOR_BOOTING_NOR_FS_SIZE 0x007B0000 //7.xM
#define NOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS 0
/////////////////////////////////////////////////////////////////////
然后编译下载:
下载工具要用FlashTool_v5.1420.00\Flash_tool.exe
选择\mtk\6261a\VITA61A_BT_V5\build\VITA61A_BT_11C\VITA61A_BT_11C_PCB01_gprs_MT6261_S00.MAUI_11C_W13_52_MP_V5.bin\VITA61A_BT_11C_BB.cfg
就有几个bin文件可以下载:
在调试bootloader时,可以将Primary-maui 和 viva不要下载,可以节省很多时间
如果download之后没有开始下载,重新上电,或者检查驱动是否装好;
61TOOLS\mtktysjqd\MTK智能机USB驱动+刷机必备驱动大全\刷机驱动自动安装版
http://www.pc6.com/softview/SoftView_135280.html
如果重新上电后bootloader打印(UART 8位数据位 1停止位 无校验位 无硬件纠错信息 波特率115200bps)出信息:
bl_main.c ExtBootloader()->BootAndHandOver()->
dbg_print("\nBye bye bootloader, jump to=%x\n\r", targetAddr); // targetAddr = 0x100202d8
这个地址在下面3个文件中搜索
\mtk\6261a\VITA61A_BT_V5\build\VITA61A_BT_11C\VITA61A_BT_11C_BOOTLOADER_V005_MT6261_MAUI_11C_W13_52_MP_V5.sym
\mtk\6261a\VITA61A_BT_V5\build\VITA61A_BT_11C\VITA61A_BT_11C_BOOTLOADER_V005_MT6261_MAUI_11C_W13_52_MP_V5_ext.sym
\mtk\6261a\VITA61A_BT_V5\build\VITA61A_BT_11C\VITA61A_BT_11C_PCB01_gprs_MT6261_S00.sym (在这里搜索到)
这一行:0x100202d8 A INT_Vectors
搜索INT_Vectors,在bl_bootARM.s(bootloader的启动文件) 和 bootarm.s(maui系统的启动文件)文件中存在,
因为我们已经从bootloader跳出来了,所以只关心在bootarm.s中的部分;
找到bootarm.s文件
INT_Vectors
IF REMAPPING
B INT_Initialize
ELSE
LDR pc,INT_Table ;;;;LDR PC, # 会跳转
ENDIF
LDR pc,(INT_Table + 4)
LDR pc,(INT_Table + 8)
LDR pc,(INT_Table + 12)
LDR pc,(INT_Table + 16)
LDR pc,(INT_Table + 20)
LDR pc,(INT_Table + 24)
LDR pc,(INT_Table + 28)
INT_Table ;;;;这是一个ISR数组(label name DCD Pointer-ISR)
INT_Initialize_Addr DCD INT_Initialize
Undef_Instr_Addr DCD Undef_Instr_ISR
SWI_Addr DCD SWI_ISR
Prefetch_Abort_Addr DCD Prefetch_Abort_ISR
Data_Abort_Addr DCD Data_Abort_ISR
Undefined_Addr DCD 0 ; NO LONGER USED
IRQ_Handler_Addr DCD INT_IRQ_Parse
FIQ_Handler_Addr DCD INT_FIQ_Parse
INT_Table_END
//////待到串口初始化之后,打印试试;;;
学习。
新手学习了