• TI DM3730 EBOOT分析(一)


    EBOOT主函数调用BootLoaderMain();微软已经固定了,EBoot的开发主要是完善BootLoaderMain调用的几个函数。

    1.relocate globals to RAM
        KernelRelocate (pTOC)


    2. Init debug support. We can use OEMWriteDebugString afterward.
        OEMDebugInit ()       

    3.initialize platform (clock, drivers, transports, etc)

       OEMPlatformInit ()

     4. call OEM specific pre-download function 

      OEMPreDownload


    5(1). download image
            if (!DownloadImage (&dwImageStart, &dwImageLength, &dwLaunchAddr))

    5(2).final call to launch the image. never returned
            OEMLaunch (dwImageStart, dwImageLength, dwLaunchAddr, (const ROMHDR *)dwpToc);

    OEMPlatformInit 初始化平台,没什么可以说的,因为35系列和37系列BSP是整合在一起的,所以先判断CPU型号,然后做对应的初始化处理。

    我们主要看一下OEMPreDownload这个函数,做的前三个工作,称之为PreDownload准备A,B,C.

    A. BLReserveBootBlocks,查看实现函数,Nothing to do... 太无耻了...咱们继续

    BOOL BLReserveBootBlocks(
        BOOT_CFG *pBootCfg
        )
    {
        UNREFERENCED_PARAMETER(pBootCfg);
        // Nothing to do...
        return TRUE;
    }

    B. BLReadBootCfg(&g_bootCfg),读取boot的配置参数,如果读取失败,则载入默认值,这个不用多说,不熟悉配置信息的可以通过默认值,学习一下了。

    C.BLConfigureFlashPartitions(FALSE);这个函数比较重要,咱们进去看看,FMD_Init,BP_Init,BP_OpenPartition,BP_LowLevelFormat,一眼看去都是

    熟悉的函数啊,简单解释一下,主要获取闪存分区信息,保留区(boot),OS 区,文件系统区相关信息的获取,如果没有相关信息的话,此处会格式化闪存,

    生成新的分区信息,此处很危险啊,万一某一次读取信息失败,都格式化了,呵呵,系统信息都没了,使用要小心啊。

     先看到这吧,未完待续。

  • 相关阅读:
    js上传文件
    IOS怎么实现一个UITableView的下拉刷新
    Android的事件处理-android学习之旅(四十四)
    NIO框架之MINA源代码解析(二):mina核心引擎
    每日五题
    Joda-Time 简介
    用websocket实现后台推送消息
    websoclet简单示例 my 改
    struts2拦截器interceptor的配置方法及使用
    activiti复盘重推的一种简单实现方式:
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3129943.html
Copyright © 2020-2023  润新知