微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mt6261 bootloader 完成开始进入主程序

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
//////待到串口初始化之后,打印试试;;;



学习。

新手学习了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top