This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

EVM6678LE I2C-Nor flash boot 与 SPI flash boot 的具体操作问题

SPI NOR boot

【6678/6670 SPI Nor flash  多核boot原理总结和demo 请参考12L 13L帖子的附件】

示例包括:

  • 单多核6670/6678 SPI boot 示例
  • cmd/cfg 部署在DDR的boot示例
  • 多核相同/不同 代码的boot 示例
  • 制作多核镜像工具及部分工具链源码
  • LED测试示例工程
  • C66x SPI Boot原理的文档和说明

----------------------------------------------------------------------------------------------------------------------------------------------------

I2C-SPI IBL 二级  BOOT

     1.  将IBL烧入EEPROM中(如果事先已经烧写过,可以不用做)

       1、将i2crom_0x51_c6678_le.bin文件从"mcsdk_2_00_05_17\tools\boot_loader\ibl\src\make\bin"拷贝到"mcsdk_2_00_04_16\tools\writer\eeprom\evmc6678l\bin"

       2、使用mcsdk_2_00_04_16\tools\writer\eeprom\evmc6678l\bin\eepromwriter_evm6678l.out进行烧写

        其中eepromwriter_input.txt的内容为:

        file_name  =  i2crom_0x51_c6678_le.bin
        bus_addr   = 0x51
        start_addr = 0
        swap_data  = 0

     2. 应用程序生成ELF 的 app.out,直接更名为app.bin.

       使用mcsdk_2_00_05_17\tools\writer\nor\evmc6678l\bin\norwriter_evm6678l.out 对app.bin进行烧写

       其中nor_writer_input.txt文件的内容为

       file_name  = app.bin

       start_addr = 0x80000000

 

       烧写步骤工程readme.txt有介绍

     3. 配置IBL

      1、运行程序mcsdk_2_00_05_17\tools\boot_loader\ibl\src\make\bin\i2cparam_0x51_c6678_le_0x500.out

      2、加载文件 i2cConfig.gel然后在CCS的DEBUG界面上点击,Srcipts->EVM c6678 IBL -> setConfig_c6678_main 

      3、几秒钟以后,在console界面上敲击回车键.

     1 2 3步骤时候的启动模式

      (pin1, pin2, pin3, pin4) 
      SW3(off, on, on, on), 
      SW4(on, on, on, on), 
      SW5(on, on, on, off),
      SW6(on, on, on, on)

      步骤3完成之后断电重启的启动模式

      (pin1, pin2, pin3, pin4) 
      SW3(off, off, on, off), 
      SW4(on, on, on, on), 
      SW5(on, on, on, off),
      SW6(on, on, on, on)

      此时实现核0的加载。

  

  • Michael,
    很不幸, TI没有提供使用IBL boot多核的案例,不过我们也不是没有办法去搞定这件事。
    首先了解下用工具链生成的spirom_le.dat 的拓扑结构:

    Boot parameter table(256 word)
    B2I2c checksum(1 word)
    c_int00 address(1 word)
    Core 0 Section A length(1 word)
    Core 0 Section A load Address(1 word)
    Core 0 Section A content(“Section A length” word)
    Core 0 Section B length(1 word)
    Core 0 Section B load Address(1 word)
    Core 0 Section B content(“Section B length” word)
    ... ...
    Core 7 Section A length(1 word)
    Core 7 Section A load Address(1 word)
    Core 7 Section A content(“Section A length” word)
    Core 7 Section B length(1 word)
    Core 7 Section B load Address(1 word)
    Core 7 Section B content(“Section B length” word)
    这是feed给boot ROM用于SPI boot的格式,既然你用I2C IBL boot,这种格式就没有用了。不过没有关系,核0用I2C两级boot启动之后,剩下的核1~核7 我们可以自己搬移。

    参考思路:
    0.编写core0的启动代码,放在main函数的最开始。功能就是搬移数据和代码,以及填写c_int00地址,具体参照步骤4,5。很简单,就是解析文件。
    1.制作不含DDR的多核镜像spirom_le.dat,并烧写到flash里,以备后用
    2.另制作核0的.out文件转成bin的文件,通过IBL二级boot启动。
    3.上电后IBL初始化PLL和DDR,拷贝核0镜像到指定位置并启动核0。
    4.核0从flash里读取spirom_le.dat的数据,解析核1~核7部分,并搬移到对应位置。再根据核0 c_ini00的地址,在其他核的L2RAM最后一个字节(boot magic address)上填入对应c_int00地址
    (建议每个核的c_int00地址固定并相对一致,这样能减少很多麻烦。比如核0是10800000,核1就是11800000...以此类推。cmd文件做点trick就可以办到,帖子附件可以参考)
    5.核0的代码kick off其他核(参照帖子附件)

    希望对你有帮助。

    striker

  • striker大神:

        你好!感谢你无私的奉献精神,让我这个刚刚接触DSP的学生受益良多,在庞杂的资料中隐约找到了DSP的入门方法,再次感谢!

    关于SPI 直接加载Nor flash的案例我有几个问题不太明白,麻烦你能指点一二:

    1.为什么全局地址是0x10800000而不是0x20800000或0xab800000之类的呢?全局地址是什么可以由自己定义的吗?C6678的内存分配有什么规定吗?

    2.PLL是什么?SPI 直接加载Nor flash的过程中有哪些PLL是需要配置的?关于PLL我应该学习哪些相关文档呢?

    问题有些多,但因为自己想不明白所以麻烦大神指教!非常感谢!!!

  • striker大神,

    您好!有个人指点我在boot的时候用realtime模式查看PC指针,实在没听过这个模式。

    我之前都是lauch  .ccxml --->  板子上电boot --- > connect core0 --->  load symbol ,如果正常boot就会在core0下展开多条信息,可以点击跳转到执行的地方。如果不能boot,就会出现提示“No source available for ox.....”

    请问我查看PC指针的方法对不对?大神您都是如何查看PC指针的呢?

  • Hi, ZijieFu

    1. 全局地址也好,局部地址也好,默认不是由自己决定的,请参照芯片手册表格。当然有TI也会提供自定义物理地址和逻辑地址的映射,但是一般情况下我们不接触这一层。

    2.PLL是各种锁相环,DSP芯片各个时钟都需要配置PLL。比较重要的是主PLL和PA PLL。这个只需要了解,知道怎么通过参考时钟配置主PLL以确定DSP主频。还是参照芯片手册或者c66 corepack手册,最直接的方法是看TI 的各种参考代码

    作为新手,TI 的MSCDK里有很多代码值得学习,希望你能循序渐进!

    striker

  • Sunyang Yao,

    你的方法跟我一样。我的想法是, 即使是real time ,也只是在连上jtag之后实时观测变量,我无法想象如何在连上jtag前观测boot过程中的PC变化。

    以下网页可供参考

    http://processors.wiki.ti.com/index.php/Real-Time_Mode

    另外,可否请他详细介绍下?

    striker

  • hi,striker:

    在你的帖子前面看到,你曾经也遇到过“PC指针在Boot Rom的0x20B0A050那里,然后看0x0087FFFC boot magic address 为0.

    我们现在也遇到这样类似的问题了,你当时是怎么解决的,给支招下,

    谢谢!

  • vv ww,

    这个错误是镜像制作格式不正确导致的boot失败。这套工具链暂时不支持大端,如果是启动小端出现该问题话需要仔细检查制作细节。

    striker

  • 您好,striker striker,非常感谢你提供的资料,对我帮助很大。

    目前正在学习SPI nor flash boot ,根据你提供的方案,我已实现单核0的spi自启动,但是一直有个疑问想请教下。


    首先说下自己的理解你看是否正确:evm板上nor flash通过spi硬件连接,正如你首页所说,我们由nor flash引导有两种方式实现:


    第1种方式,从rom RBL--I2C IBL--nor flash(用此方式应保证eeprom里有IBL镜像,sw3的pin1至pin4设置为1101指定为i2c引导)。


    第2种方式,从rom RBL--spi nor flash,(sw3为1011指定为SPI引导)即直接由spi引导。我的疑问主要针对第2种方式,你的附件“spi_boot原理”文档里红色字注明:要格外注意eeprom的IBL镜像没被刷掉,否则无法引导flash。通过在开发板上实际验证,发现确实是需要eeprom里有IBL镜像,再按照你给的“SPI操作指导”操作才能boot成功。如果没有IBL镜像,直接spi boot不成功,为什么第2种方式还是需要IBL镜像?


    我们后期自己做板想选用SPI直接启动,难道也要外加一个eeprom并再里烧写个IBL,才行吗?

    望回复,非常感谢!

  • yao chen,

    不需要,那样做只是为了绕开EVM板卡 PLL的一个bug

    striker

  • striker:

        不好意思又有问题希望您能指点一下。我之前已经可以用您的方法和工具链实现EVM板8核的启动,SYS/BIOS运行正常。

        现在换用自己做的板子,只有在不启动SYS/BIOS的情况下才能启动(即注释掉代码里的bios_start()),否则就不能启动,通过调试发现core0的boot magic address为0,手动修改为_c_int00的地址就能启动了。请问为什么会有这种问题?应该如何解决??

        注:经过尝试,发现core0-core3加上bios_start(),后四个core不启动SYS/BIOS还能正常启动。

  • Michael,

    加上bios之后建议控制核进入BIOS的顺序,通过任一种核间同步机制实现从core0 到 core7 依次进入bios。

    建议先在线调试八核联跑的情形,在考虑启动。

    Striker

  • striker

    又要打扰啦,谢谢之前对我的帮助~~~

    我现在正在自己的板卡上做SPI NOR FLASH 加载。请问MulticoreBoot函数里面的platform init(&init_flag,&init_config)对程序的boot有什么决定性的作用呢?我用自己编写的初始化PLL  DDR的代码代替这部分之后,就不能完成boot了。

    另外,我看core1-core7的代码中也有MulticoreBoot函数,也会调用platform init(&init_flag,&init_config)函数,我了解外设的初始化基本上都是core0来实现的,那么core1-core7调用platform init(&init_flag,&init_config)函数有什么意义呀?我尝试过,如果core1-core7不加入platform init,也不能正常boot。

    还有很重要的一个问题,这是在自己的板卡上遇到的。platform init(&init_flag,&init_config)函数,设置init_flag->phy = 0,程序会一直卡在platform init(&init_flag,&init_config)这里,不能继续接着往下运行,将init_flag->phy =1之后,可以正常运行,并且可以boot。很奇怪的现象是,有时设置init_flag->phy = 0,有时设置init_flag->phy = 1,可以正常运行代码然后正常boot。请问这个phy有什么作用?如果可以,能自己编写初始化的代码来代替platform init(&init_flag,&init_config)吗?这个怎样才能做到呢?


  • zhonghong zhang,

    platform_init 确实只需要出现在核0. 其他核无需调用。既然是在你自己的板子上跑程序,首先做的应该是修改platform 调用的lib函数(TI的pdk里有源码),使其适配你的板子。当你调通所有外设驱动之后(比如你的phy口问题),再去做boot启动。

    另,boot成功与否得去用jtag看pc指针位置,以及RAM上看代码是否搬运到位。代码可能boot起来跑飞了造成未boot的假象。

    striker 

  •  你好,我的不是EVM 板。现在要下OUT文件到NAND Flash .  请问可以指点下,在非EVM版上,怎么操作吗?谢谢

  • 你好 striker

           请问如果使用的是SYS/BIOS操作系统,在系统内调用了多个核进行数据运算,

    那在制作启动的代码时,是制作单核的代码还是多核的代码?如果是多核的代码,那本身是一套代码,也需要添加不同的CMD和MulticoreBoot.c文件吗?

  • le wang,

    如果你想省事,想用DSP 里面自带的RBL 多核boot,那就得遵循人家的规范--添加多个cmd生成出多个核镜像后再用工具合并,转换,烧写。如果你对搬运过程熟悉,当然也可以只用一份镜像,不过镜像里得有搬运代码到多个核并启动多核的过程。

    我们的示例都是前一种。

    striker

  • Strike 你好!

    我现在遇到了c6678的SPI-NOR Flash多核启动的问题,想跟你请教一下:

    我现在所使用的用户程序很简单,只是由核0向DDR3上的地址(0x83000000)发送数据,其他核在启动后处于空跑的状态。

    现在多核启动正常,0核正常启动,并向1-7核的boot magic address写入了入口函数地址。

    在连接仿真器查看DDR3地址存储的数据时,发现自0x83000000起的地址段的数据处于不断变化的状态,并且写入的数据不正确,与程序中的要求不符。

    请问产生这种情况的原因是什么,如何解决?

    望不吝赐教,谢谢!!

  • fan li2,

    感觉你的问题像是DDR初始化不正确。用的是自己的板子还是demo板?

    DDR初始化使用的是boot时初始化还是用户程序自己的初始化?

    如果是自己的板子,同时boot时初始化DDR,要注意对照器件参数修改 DDR参数表。做个DDR读写测试。

    striker

  • Striker,

    你好!

    1. 我用的是自己的板子。

    2. 我用的是TI提供的多核烧写工具生成.dat文件,并在主程序的开始加入了初始化函数,如下:

    void first_init()
    {.
    int i;

    CACHE_setL1PSize(CACHE_L1_32KCACHE);
    //CACHE_setL1DSize(CACHE_L1_32KCACHE);
    CACHE_setL1DSize(CACHE_L1_0KCACHE);
    //CACHE_setL2Size(CACHE_256KCACHE);
    CACHE_setL2Size(CACHE_0KCACHE);
    CACHE_invAllL1p(CACHE_WAIT);
    CACHE_wbInvAllL1d(CACHE_WAIT);
    CACHE_wbInvAllL2(CACHE_WAIT);

    /*make other cores local memory cacheable and prefetchable*/
    for(i=16; i<24; i++)
    CGEM_regs->MAR[i]=1|(1<<CSL_CGEM_MAR0_PFX_SHIFT);

    /*make DDR cacheable and prefetchable*/
    for(i=128; i<256; i++)
    CGEM_regs->MAR[i]=1|(1<<CSL_CGEM_MAR0_PFX_SHIFT);

    /*make other space non-cacheable and non-prefetchable*/
    for(i=24; i<128; i++)
    CGEM_regs->MAR[i]=0;

    /*XMC memory address extension/mapping and memory protection*/
    KeyStone_XM_cfg();

    //DSP core speed
    //KeyStone_main_PLL_init (20, 1); //for 50MHz input clock
    KeyStone_main_PLL_init (10, 1); //for 100MHz input clock

    //DDR speed = 66.67*20/1= 1333
    KeyStone_DDR_PLL_init (20, 1);

    Shannon_EVM_DDR_Init(666.667); //for 1333Mbps

    serdes_cfg.commonSetup.inputRefClock_MHz = 156.25;

    TSC_init(); //initialize TSC to measure cycle

    //SRIO_Interrupts_Init();

    }

    请问是否是初始化参数设置错误?

    3. 另,当我生成8个.out文件后,若只将核0的.out文件通过工具转化成.dat文件并烧写到板卡中,启动运行,查看DDR3的地址数据无误,不知道怎么解释?

    4. 附上我的cmd文件,请帮我看看是否存在问题,谢谢!

    -heap 0x800
    -stack 0x1000

    MEMORY
    {
    /* Local L2, 0.5~1MB*/
    VECTORS: o = 0x10800000 l = 0x00000200
    BOOT_CORE0: o = 0x10800200 l = 0x000000C0 ///////
    LL2_RW_DATA: o = 0x108002C0 l = 0x0003FE00

    /* Shared L2 2~4MB*/
    SL2: o = 0x0C000000 l = 0x00200000

    /* External DDR3, upto 2GB per core */
    DDR3_CODE: o = 0x80000000 l = 0x01000000 /*set memory protection attribitue as execution only*/
    DDR3_R_DATA: o = 0x81000000 l = 0x01000000 /*set memory protection attribitue as read only*/
    DDR3_RW_DATA: o = 0x82000000 l = 0x01000000 /*set memory protection attribitue as read/write*/
    }

    SECTIONS
    {
    vecs > VECTORS

    .text > SL2
    .DDRText{MulticoreBoot.obj(.text)} > SL2
    .cinit > SL2
    .const > SL2
    .switch > SL2

    .stack > LL2_RW_DATA
    GROUP
    {
    .neardata
    .rodata
    .bss
    } > LL2_RW_DATA
    .far > LL2_RW_DATA
    .fardata > LL2_RW_DATA
    .cio > LL2_RW_DATA
    .sysmem > LL2_RW_DATA
    QMSS_Data.linkingRAM1 > SL2
    QMSS_Data.Descriptor_SL2 > SL2
    PacketData.buffer_SL2 > SL2
    QMSS_Data.Descriptor_LL2 > LL2_RW_DATA
    PacketData.buffer_LL2 > LL2_RW_DATA
    QMSS_Data.Descriptor_DDR > DDR3_RW_DATA
    PacketData.buffer_DDR > DDR3_RW_DATA

    platform_lib > DDR3_CODE

    .myboot
    {
    *.*<boot.obj>(.text)
    } > BOOT_CORE0 //*****////////
    }

    期待你的回复!!谢谢!!

  • fan li2

    这是你核0的cmd文件吧? 请确认其他核.out 没有使用该cmd文件. 

    核1~核7 应该使用自己的cmd文件,L2SRAM 使用自己的全局地址(0x1?800000,? =core num)

    代码数据段即使放在SL2或者DDR也不要overlap,请为每个核在共享内存和DDR里单独分配空间。除非是有意共享同一地址的数据。

    striker

  • Striker,

    你好!

    其他核我只将cmd文件中的

    VECTORS: o = 0x10800000 
    BOOT_CORE0: o = 0x10800200 
    LL2_RW_DATA: o = 0x108002C0

    针对不同的核做了地址上的偏移,并没有对其他部分比如代码数据段等进行内存分配的调整。

    请问问题是不是出在这儿?

    请你指导一下,十分感谢!!

  • fanli2,

    是这样的,如果你单核启动没问题,多核有问题,那就是不同核代码数据overlap导致的。

    这种问题跟boot没有关系,你可以在线调试。

    striker

  • Striker,

    你好!

    我将cmd文件的SL2的地址针对1-7核也进行了相应的分配,此时测得的结果是DDR3上的数据是稳定的,但是部分是对的,部分数据是错的,写入位置错乱。

    不知道能否对这一现象做出解释?

    谢谢!

  • fan li2,

    • 你的DDR3也要针对7核单独相应分配
    • 如果只跑核0,DDR3上数据结果是否正确?这样可以确保DDR参数配置正确
    • 如果上面正确,在跑多核时,观察DDR时选中的“当前核”是否是0核?,如果是从非0核的角度观察DDR由于cache原因可能会有问题
    striker
  • Striker,

    你好!

    我又做了测试,再只对L2和共享存储对7核单独相应分配时,DDR3上数据结果是正确的,但将DDR的存储空间也做单独分配后数据反而出错,不知道为什么。

    只跑核0的情况下(只将核0的.out文件用多核工具烧写到板卡中或者将多核启动部分代码及内存分配注掉用单核工具烧写),DDR3上数据结果是正确的。

    在跑多核时,是以核0为当前核观察的DDR,在点击“go”和“new tab”时都会发现数据在变化。

    另,我在同一块板卡上烧写另一应用程序(两核),使用几乎相同的cmd文件,但是只对L2做核1的偏移,代码段和数据段等两个核都映射到共享存储的相同区间,连接仿真器观察DDR上的数据是稳定的。不知道这两种情况的区别是在哪里?

    请赐教!

    谢谢!!

  • striker   

    你好  我正在利用自己做的板子做SPI BOOT。由于代码量比较大,需要将程序放在DDR 里。也就是说DDR需要boot时初始化,我对应自己的板卡调整了一些参数,在线调试时,DDR测试读写没有问题,将这些参数加到DDR BOOT TABLE 中后,程序不能boot起来,但是程序CMD映射不放在DDR时,如L2 MSMC 是可以完成BOOT的,请问我是不是有哪些地方没有注意到?应该怎样查找问题啊?

  • zhonghong,zhang

    那就是DDR table 不对。

    检查方法?

    1.对照你们在线调试的参数检查DDR table

    2.加上DDR boot table ,不把代码放到DDR里,按你说的意思这样是可以boot起来的。那就连上板子检查DDR 的 寄存器 跟你在线调试时有什么区别

    striker

  • fan li2,

    你的方法很易出错并得出错误结论,无论你怎么共享怎么分,以下原则是跑不了的:

    • 代码段不建议共享,除非一模一样
    • 数据段只在有意共享时共享,多核非同一代码时尤其要注意对应变量是否映射到同一位置
    • 数据段无意共享一定要分开,不然很容易会出现意料之外的错误。
    striker
  • striker striker

            首先非常感谢你的分享,我想问下如果从核core1~core7程序都是一样的,代码段是可以共享的,但是这会不会造成多核竞争访问而使程序性能下降呢?我现在core0是一个程序.text放在msmcsram中,core1~core7是另外一个一样程序,.text段有400多KB,是共享放在msmcsram中好呢,还是每个核都copy一份放在DDR3中好呢。

  • Striker,

    你好!

    感谢你对我的指导和帮助!我们把用户程序中的对一些列初始化从核0的判断语句移到了外面,也就是每个核在运行主函数的相应功能之前都进行一次初始化。DDR地址段数据不稳定的问题出现的概率变小了一些,但是还是存在5%左右的概率DDR的地址数据会跳。

    在使用DDR地址段方面,在使用80000000时,出错的概率很大,在使用90000000时出错的概率要小得多,规律是越靠后出错概率越小,感觉问题的本质还不是很清楚。不知道你是否有什么好的建议!谢谢!

    祝好!

    Fan li

  • Fan li,

    你们有没有对初始化后的DDR 做过全范围的 memory test ?  首先确保DDR的正确性。另外请附上编译后的.map文件参考一下。

    striker

  • striker

    你好~我现在需要把程序和一些数据放到DDR然后做程序的自加载,那样需要DDR做boot table初始化,保证程序boot时DDR已经初始化完成。

    我现在的现象是:

    1.   cmd全部映射到L2或者MSMC中,在用户代码里面使用DDR的空间,对一段空间赋值,但是用户代码不进行DDR初始化,仅仅在BOOT TABLE里完成DDR初始化操作。

    结果:程序BOOT起来后,连上JTAG,可以观测DDR的功能寄存器内容发生了变化,与在线调试时是一样的值,并且DDR赋值空间的内容也是正确的。这是否说明我对应修改DDR BOOT TABLE之后,对于我自己的板卡,DDR BOOT TABLE是正确的?

    2. 我将.text  .const  .cinit段映射到DDR,程序不能自加载成功,此时连上JTAG,发现text段已经COPY到了DSP的DDR某段内存,并且幻像MAGIC ADDR是my boot的0x10800000,观察反汇编,程序死循环在某个地方。这是为什么呢?    如果我仅仅将cmd 的.const段映射到DDR,程序可以正常加载。

    3. 还有一个问题就是,.text  .const  .cinit  .switch  .bss .stack .sysmem 这些段有什么不同,在映射时需要区别对待吗?我观察到利用hex6x.exe将OUT文件转换成btbl时,生成的map文件

    CONTENTS: 00000400..0000CFA7

    .TEXT             btad = 00000400   dest=900000c0  size = 0000c660

    .DDRTEXT    btad = 0000cabc   dest=9000c9a0  size = 000000c0

    .const             btad = 0000cb34   dest=9000c720  size = 0000026a

    .cinit                btad = 0000cda8   dest=9000ca60  size = 0000016c

    .my boot         btad = 0000cf1c   dest=10800000  size = 00000080

    但是我的DSP软件生成的out  cmd里有.cio  ,far   .fardata  .switch  .sysmem  .platform_lib  .bss等SECTION 这些hex6x.exe都不用转换吗?  这样能够保证程序正常boot? 这是怎样的过程啊?

    zhonghong.zhang

  • hi,striker

    首先感谢一下您所做的工作,确实帮助很大

    现在我在6670evm板上已经可以实现4个核的SPI boot,但是同样的dat文件烧到我们自己的板子上却无法boot起来

    现在通过示波器量的flash的波形,看到dat文件里开始的一段数据是读出来了,dat文件里这些数据之后是一段0,evm板读到这里的时候会把地址往后跳,最终读到了后面的数据

    但是在我们自己的板子上,开始读那段0之后的某个时刻就停了,没有再继续下去

    不知道这个可能和什么有关系呢

    万分感谢!

  • zhonghong zhang,

    1. 基本可以说是正确了,但是需要做个DDR memory test来验证一下。

    2. 这种问题指向的就是DDR寄存器 boot_table 还是没有完全配对。确认方法,用jtag连上一个带DDR初始化的程序,做完DDR初始化后,再load 你将各个段都放在DDR里的程序。如果ok,那么就是DDR的问题,一样不ok,需要检查下代码。

    3.注意,boot时候只有"已初始化段"是可见的,”未初始化段“的信息包含在.text 段里,只在运行时可见,用来创建和存储变量。已初始化段包括.cinit(变量初始值和常量值);.const(声明为const的变量);.switch(跳转表jump table);.text(代码段)。 其他皆是未初始化段。

    striker

  • Anqi Liu:

    1. 任何准备boot的代码都要确认在自己的板子上在线调试通过。

    2. 新板卡的flash也需要做充分的读写测试。

    3. 新板子的boot 可以考虑 从单核的boot做起, 一个hello world程序即可。 cmd 文件里尽量不涉及DDR

    cpu里的bootrom代码是死的,你的现象需要逐一排除,但是目前觉得flash的可能性较大。

    striker

  • 感谢回复,今天又做了一下验证,发现是IBL的问题

    demo板上的芯片是2.0的,但是实际走的还是IBL的流程,即使拨码开关配成SPI Boot,但是由于是经过FPGA,DSP的bootmode其实始终是I2CBoot

    您之前的工具生成的应该也是基于IBL的镜像吧,不知道如果不使用IBL,直接用RBL启动的话应该如何修改呢

    再次感谢!

  • striker 

    感谢您的回复。

    1. 我在boot table中完成DDR初始化后,程序中对某段空间的DDR进行了读写测试,没有问题。说明DDR应该是初始化完成了的。

    2. 在程序的cmd映射时,当.switch  .cinit  .const  .myboot  .DDRText段映射到DDR空间,.text  .bar  .cio  .far等其他还映射到L2,此时可以自加载,这里应该也间接说明,DDR至少是有配置正确的地方。

    3. 我做了如下尝试:

    当.switch  .cinit  .const  .myboot  .DDRText段映射到DDR空间,text映射到DDR,.bar  .cio  .far等其他映射到L2,不可以自加载;当.switch  .cinit  .const  .myboot  .DDRText段映射到DDR空间,text  .bar  .cio  .far等映射到DDR,也不可以自加载,此时该DSP不请求BOOTP;当.switch  .cinit  .const  .myboot  .DDRText段映射到DDR空间,text  .bar  .cio  .far等映射到msmc,也不可以自加载,但是DSP请求BOOTP;

    后来将所有的段都映射到MSMC时都不可以自加载?

    这里是否说明我不仅仅是DDR的问题,因为cmd映射到MSMC也不对?还有.text段好像对我的影响很关键,他映射到哪里,就决定了我的程序是否能够加载?

     

  • striker

    还有一个问题?

    你所说的,确认方法,用jtag连上一个带DDR初始化的程序,做完DDR初始化后,再load 你将各个段都放在DDR里的程序。这里是说直接在memory里load我要跑的代码吗?

    这个代码是通过hex6x转换工具转换生成的btbl文件里的.text  .DDRTEXT  .const  .cinit  .myboot这些数据段的内容?根据目的地址dest 和size放到DDR空间,然后把PC指针指向.myboot的初始地址,让程序运行?看运行结果?

    是这样一个过程吗?

    .TEXT             btad = 00000400   dest=900000c0  size = 0000c660

    .DDRTEXT    btad = 0000cabc   dest=9000c9a0  size = 000000c0

    .const             btad = 0000cb34   dest=9000c720  size = 0000026a

    .cinit                btad = 0000cda8   dest=9000ca60  size = 0000016c

    .my boot         btad = 0000cf1c   dest=10800000  size = 00000080

  • Anqi Liu,

    我们的代码是恰恰是直接针对RBL。

    你说的问题其实是demo板为了规避PLL的bug所以经过FPGA,通过I2CBoot再引导nor flash boot。所以demo板里I2C里固有的IBL不能被清除,否则无法引导nor flash。

    用户自己的板子无此问题,直接由RBL 配置 nor flash 启动

    总而言之没有IBL没有I2C 这种方法一样可行。

    希望对你能有帮助。

    striker

  • zhonghong zhang,

    你的程序无论怎么设置段分配,是否都确认在线调试无问题? 这些对是否正确boot很重要。

    striker

  • hi,striker

    感谢您的回复,这样看的话应该是和IBL没有关系了。

    我们之前试过把自己板子上的flash直接拆下来焊到EVM板上,结果也是能跑的,说明确实是写到Flash里去了

    现在是基于您之前的点灯的例程改成控制GPIO输出方波,把其中的DDR相关的都注释掉了

    但是现在在我们自己的板子上就是起不来...连上仿真器直接debug是可以正常运行的

    烧进flash用SPI Boot的话,连上仿真器看到PC指针一直在0x20B0A310附近循环

    试了您的工具链中6670下面的multicore_boot_1cores和multicore_boot_4cores,现象是一样的

    .

    不知道还有哪些参数可能会有影响呢.....

    .

    再次感谢~

    .

    PS:刚才又检查了一遍,发现起来的时候DSP的parameter table index其实配的是4,mode配的是2

    现在改成index为0,mode为1之后,运行的时候仿真器都连不上了....

    在debug窗口里,右键点击core 0,选择connect to target之后,弹出错误:

    Error connecting to the target:
    Connect to PRSC failed

    但是直接test connect的话是没有错误的.....

    如果把dat文件里的前32行移动为第二个32行(前面是32行0,我理解就是把table0变成了table1),就又变成了之前的状态,可以连接到core0,pc指针一直在0x20B0A310附近循环

    .

    现在上电的时候DSP的管脚配置是0x140D, 也就是:

    SPI boot,Parameter Table Index = 0,Chip Select = 0,Addr Width = 24bit,4pin,mode = 1

    现在在启动的时候测量flash的输出,看到是读到了table0,在table0里前9个word是有数据的,可以看到读出来了,之后全是0,但是DSP的时钟信号在读出table0的第20个word后就停了,之后就没再有数据

    还请兄台指点一二~ 万分感谢

  • @striker striker, 您好!

    我按照您给的链接所提供的工具,单核led测试例程的SPI boot成功了,但是当我在尝试Keystone例程包里面的UART例程时,spi boot始终无法成功。

    1、我注意到您有说过需要留意cmd文件的配置,但不是很清楚具体细则。是不覆盖L2 sram中的bootloader section就可以了吗?

    2、单核spi boot是否还有其他注意事项?

    这个SPI启动已经尝试了太长时间了,一直没能有进展,很让人沮丧。希望能得到您的解答。

  • Striker,

    你好!我们验证过DDR的正确性是没问题的。附上编译后的0核和1核的.map给你参考下,若发现什么问题请指教!谢谢!

    核0.map文件:

    ******************************************************************************
    TMS320C6x Linker PC v7.4.2
    ******************************************************************************
    >> Linked Tue Apr 07 10:06:04 2015

    OUTPUT FILE NAME: <h265v2_dsp_chip_0-1.out>
    ENTRY POINT SYMBOL: "_c_int00" address: 10800200


    MEMORY CONFIGURATION

    name origin length used unused attr fill
    ---------------------- -------- --------- -------- -------- ---- --------
    SHRAM 0c000000 00400000 001c6fce 00239032 RWIX
    VECTORS 10800000 00000200 00000200 00000000 RWIX
    BOOT_CORE0 10800200 000000c0 00000080 00000040 RWIX
    L2 108002c0 00077d40 00008120 0006fc20 RWIX
    Descriptor_DDR3 b0000000 01000000 00001370 00ffec90 RWIX


    SEGMENT ALLOCATION MAP

    run origin load origin length init length attrs members
    ---------- ----------- ---------- ----------- ----- -------
    0c000000 0c000000 00040000 00000000 rw-
    0c000000 0c000000 00040000 00000000 rw- .sysmem
    0c040000 0c040000 0001a69a 0001a69a r-x
    0c040000 0c040000 00017960 00017960 r-x .text
    0c057960 0c057960 00002d3a 00002d3a r-- .const
    0c05a6a0 0c05a6a0 00001130 00000b58 rw-
    0c05a6a0 0c05a6a0 00000b58 00000b58 rw- .fardata
    0c05b1f8 0c05b1f8 000005d8 00000000 rw- .far
    0c05b800 0c05b800 000004b8 000004b8 rw-
    0c05b800 0c05b800 000004b8 000004b8 rw- .neardata
    0c05bcc0 0c05bcc0 000000e0 000000e0 r-x
    0c05bcc0 0c05bcc0 000000e0 000000e0 r-x .DDRText
    0c05bdc0 0c05bdc0 000000d0 00000000 rw-
    0c05bdc0 0c05bdc0 000000d0 00000000 rw- .bss
    0c05be90 0c05be90 00000090 00000090 r--
    0c05be90 0c05be90 00000090 00000090 r-- .switch
    0c05bf20 0c05bf20 00168000 00000000 rw-
    0c05bf20 0c05bf20 00104000 00000000 rw- PacketData.buffer_DDR
    0c15ff20 0c15ff20 00042000 00000000 rw- PacketData.buffer_SL2
    0c1a1f20 0c1a1f20 00022000 00000000 rw- PacketData.buffer_LL2
    0c1c3f80 0c1c3f80 00002800 00000000 rw-
    0c1c3f80 0c1c3f80 00001400 00000000 rw- QMSS_Data.Descriptor_DDR
    0c1c5380 0c1c5380 00000a00 00000000 rw- QMSS_Data.Descriptor_LL2
    0c1c5d80 0c1c5d80 00000a00 00000000 rw- QMSS_Data.Descriptor_SL2
    0c1c6780 0c1c6780 0000090c 0000090c r--
    0c1c6780 0c1c6780 0000090c 0000090c r-- .cinit
    10800000 10800000 00000280 00000280 r-x
    10800000 10800000 00000200 00000200 r-x vecs
    10800200 10800200 00000080 00000080 r-x .myboot
    108002c0 108002c0 00008120 00000000 rw-
    108002c0 108002c0 00008000 00000000 rw- .stack
    108082c0 108082c0 00000120 00000000 rw- .cio
    b0000000 b0000000 00001370 00001370 rw-
    b0000000 b0000000 00001370 00001370 rw- platform_lib


    SECTION ALLOCATION MAP

    output attributes/
    section page origin length input sections
    -------- ---- ---------- ---------- ----------------
    .init_array
    * 0 0c000000 00000000 UNINITIALIZED

    .sysmem 0 0c000000 00040000 UNINITIALIZED
    0c000000 00000008 rts6600_elf.lib : memory.obj (.sysmem)
    0c000008 0003fff8 --HOLE--

    .text 0 0c040000 00017960
    0c040000 00001fe0 ti.platform.evm6678l.ae66 : platform.obj (.text)
    0c041fe0 00001de0 SRIO_Test.obj (.text)
    0c043dc0 00001b40 ti.platform.evm6678l.ae66 : evmc6678.obj (.text)
    0c045900 000019e0 KeyStone_SRIO_Init.obj (.text)
    0c0472e0 00001260 KeyStone_common.obj (.text)
    0c048540 00001160 ti.platform.evm6678l.ae66 : evm66x_nand.obj (.text)
    0c0496a0 00001060 KeyStone_Multicore_Navigator_drv.obj (.text)
    0c04a700 00000de0 common.obj (.text)
    0c04b4e0 00000d80 ti.platform.evm6678l.ae66 : evmc66x_i2c_eeprom.obj (.text)
    0c04c260 00000bc0 KeyStone_DDR_Init.obj (.text)
    0c04ce20 00000880 Keystone_SRIO_drv.obj (.text)
    0c04d6a0 000007c0 Keystone_Serdes_init.obj (.text)
    0c04de60 000007a0 SRIO_PktDMA_Init.obj (.text)
    0c04e600 00000700 h265.obj (.text)
    0c04ed00 000005c0 rts6600_elf.lib : divd.obj (.text:__c6xabi_divd)
    0c04f2c0 000005c0 : _printfi.obj (.text:_getarg_diouxp)
    0c04f880 000005a0 ti.platform.evm6678l.ae66 : evmc66x_spi.obj (.text)
    0c04fe20 00000560 : evmc6678_phy.obj (.text)
    0c050380 00000520 : evmc66x_nor.obj (.text)
    0c0508a0 000004c0 : evmc66x_fpga.obj (.text)
    0c050d60 00000460 Keystone_I2C_init_drv.obj (.text)
    0c0511c0 00000460 rts6600_elf.lib : _printfi.obj (.text:_printfi)
    0c051620 00000460 : _printfi.obj (.text:_setfield)
    0c051a80 000003a0 : fputs.obj (.text:fputs)
    0c051e20 00000320 SRIO_2DSP_Test.obj (.text)
    0c052140 00000320 rts6600_elf.lib : _printfi.obj (.text:_pproc_fge)
    0c052460 00000320 SRIO_Interrupts.obj (.text:retain)
    0c052780 00000320 ti.platform.evm6678l.ae66 : evmc66x_uart.obj (.text)
    0c052aa0 000002e0 rts6600_elf.lib : _printfi.obj (.text:_pproc_fwp)
    0c052d80 000002a0 : _printfi.obj (.text:fcvt)
    0c053020 00000280 : divf.obj (.text:__c6xabi_divf)
    0c0532a0 00000280 : _printfi.obj (.text:ecvt)
    0c053520 00000280 : memory.obj (.text:free)
    0c0537a0 00000240 : imath64.obj (.text:__c6xabi_divull)
    0c0539e0 00000240 : _printfi.obj (.text:_pconv_e)
    0c053c20 00000240 : _printfi.obj (.text:_pproc_diouxp)
    0c053e60 00000220 : _printfi.obj (.text:_pproc_str)
    0c054080 00000220 : fputc.obj (.text:fputc)
    0c0542a0 00000200 : _printfi.obj (.text:_pconv_g)
    0c0544a0 00000200 : setvbuf.obj (.text:setvbuf)
    0c0546a0 000001c0 : _printfi.obj (.text:_mcpy)
    0c054860 000001a0 : trgdrv.obj (.text:HOSTrename)
    0c054a00 000001a0 : imath40.obj (.text:__c6xabi_divul)
    0c054ba0 00000180 : copy_decompress_rle.obj (.text:__TI_decompress_rle_core)
    0c054d20 00000180 : memory.obj (.text:malloc)
    0c054ea0 00000140 ti.csl.ae66 : csl_chip.oe66 (.text:CSL_chipReadReg)
    0c054fe0 00000140 rts6600_elf.lib : _printfi.obj (.text:_pproc_fflags)
    0c055120 00000140 : lowlev.obj (.text:getdevice)
    0c055260 00000120 TSC.obj (.text)
    0c055380 00000120 rts6600_elf.lib : fclose.obj (.text:_closefile)
    0c0554a0 00000120 : _printfi.obj (.text:_ltostr)
    0c0555c0 00000120 : fseek.obj (.text:fseek)
    0c0556e0 00000100 : trgdrv.obj (.text:HOSTlseek)
    0c0557e0 00000100 : autoinit.obj (.text:_auto_init_elf)
    0c0558e0 00000100 : _io_perm.obj (.text:_wrt_ok)
    0c0559e0 00000100 : cpy_tbl.obj (.text:copy_in)
    0c055ae0 000000e0 : trgdrv.obj (.text:HOSTopen)
    0c055bc0 000000e0 : divi.obj (.text:__divi)
    0c055ca0 000000e0 : _printfi.obj (.text:_div)
    0c055d80 000000e0 : atoi.obj (.text:atoi)
    0c055e60 000000e0 : lowlev.obj (.text:close)
    0c055f40 000000e0 : copy_zero_init.obj (.text:decompress:ZI:__TI_zero_init)
    0c056020 000000e0 : ltoa.obj (.text:ltoa)
    0c056100 000000e0 : memset.obj (.text:memset)
    0c0561e0 000000e0 : printf.obj (.text:printf)
    0c0562c0 000000c0 : trgdrv.obj (.text:HOSTread)
    0c056380 000000c0 : trgdrv.obj (.text:HOSTunlink)
    0c056440 000000c0 : trgdrv.obj (.text:HOSTwrite)
    0c056500 000000c0 : divu.obj (.text:__divu)
    0c0565c0 000000c0 : fflush.obj (.text:_doflush)
    0c056680 000000c0 : exit.obj (.text:exit)
    0c056740 000000c0 : tls.obj (.text:tls:init:__TI_tls_init)
    0c056800 000000a0 : trgdrv.obj (.text:HOSTclose)
    0c0568a0 000000a0 SRIO_Interrupts.obj (.text)
    0c056940 000000a0 rts6600_elf.lib : remu.obj (.text:__remu)
    0c0569e0 000000a0 : fopen.obj (.text:_cleanup)
    0c056a80 000000a0 : _printfi.obj (.text:_ecpy)
    0c056b20 000000a0 : _printfi.obj (.text:_fcpy)
    0c056bc0 000000a0 : memory.obj (.text:_minit)
    0c056c60 000000a0 : _printfi.obj (.text:_pconv_f)
    0c056d00 000000a0 : lowlev.obj (.text:finddevice)
    0c056da0 000000a0 : lowlev.obj (.text:lseek)
    0c056e40 000000a0 : memcpy64.obj (.text:memcpy)
    0c056ee0 000000a0 : memory.obj (.text:minsert)
    0c056f80 000000a0 : memory.obj (.text:mremove)
    0c057020 000000a0 : lowlev.obj (.text:write)
    0c0570c0 00000080 : fixdu.obj (.text:__c6xabi_fixdu)
    0c057140 00000080 : fixfu.obj (.text:__c6xabi_fixfu)
    0c0571c0 00000080 : llshift.obj (.text:__c6xabi_llshl)
    0c057240 00000080 : trgmsg.obj (.text:readmsg)
    0c0572c0 00000080 : strncpy.obj (.text:strncpy)
    0c057340 00000080 ti.platform.evm6678l.ae66 : evm66x_i2c.obj (.text)
    0c0573c0 00000080 rts6600_elf.lib : lowlev.obj (.text:unlink)
    0c057440 00000060 : cpp_init.obj (.text:__TI_cpp_init)
    0c0574a0 00000060 : frcmpyd_div.obj (.text:__c6xabi_frcmpyd_div)
    0c057500 00000060 : llshift.obj (.text:__c6xabi_llshru)
    0c057560 00000060 : imath64.obj (.text:_subcull)
    0c0575c0 00000060 : memccpy.obj (.text:memccpy)
    0c057620 00000060 : vsprintf.obj (.text:vsprintf)
    0c057680 00000060 : trgmsg.obj (.text:writemsg)
    0c0576e0 00000040 : isinf.obj (.text:__c6xabi_isinf)
    0c057720 00000040 : _printfi.obj (.text:__c6xabi_isnan)
    0c057760 00000040 : args_main.obj (.text:_args_main)
    0c0577a0 00000040 : vsprintf.obj (.text:_outs)
    0c0577e0 00000040 : fputs.obj (.text:puts)
    0c057820 00000040 : strlen.obj (.text:strlen)
    0c057860 00000020 : negll.obj (.text:__c6xabi_negll)
    0c057880 00000020 : _lock.obj (.text:_nop)
    0c0578a0 00000020 : printf.obj (.text:_outc)
    0c0578c0 00000020 : vsprintf.obj (.text:_outc)
    0c0578e0 00000020 : printf.obj (.text:_outs)
    0c057900 00000020 : exit.obj (.text:abort)
    0c057920 00000020 : copy_decompress_none.obj (.text:decompress:none:__TI_decompress_none)
    0c057940 00000020 : copy_decompress_rle.obj (.text:decompress:rle24:__TI_decompress_rle24)

    .const 0 0c057960 00002d3a
    0c057960 00001c54 SRIO_Test.obj (.const:.string:gTVP5158_patch)
    0c0595b4 00000002 rts6600_elf.lib : fputs.obj (.const:.string)
    0c0595b6 00000002 --HOLE-- [fill = 0]
    0c0595b8 00000630 SRIO_PktDMA_Init.obj (.const:acc48_le)
    0c059be8 000002ba SRIO_Test.obj (.const:.string)
    0c059ea2 00000200 SRIO_PktDMA_Init.obj (.const:.string)
    0c05a0a2 00000199 KeyStone_Multicore_Navigator_drv.obj (.const:.string)
    0c05a23b 0000012b SRIO_Interrupts.obj (.const:.string)
    0c05a366 00000002 --HOLE-- [fill = 0]
    0c05a368 00000101 rts6600_elf.lib : ctype.obj (.const:.string:_ctypes_)
    0c05a469 00000067 Keystone_I2C_init_drv.obj (.const:.string)
    0c05a4d0 00000058 ti.platform.evm6678l.ae66 : platform.obj (.const:.string)
    0c05a528 00000057 KeyStone_common.obj (.const:.string)
    0c05a57f 00000041 KeyStone_DDR_Init.obj (.const:.string)
    0c05a5c0 0000003b common.obj (.const:.string)
    0c05a5fb 0000002d SRIO_2DSP_Test.obj (.const:.string)
    0c05a628 00000023 rts6600_elf.lib : _printfi.obj (.const:.string)
    0c05a64b 00000021 Keystone_SRIO_drv.obj (.const:.string)
    0c05a66c 00000004 --HOLE-- [fill = 0]
    0c05a670 00000010 KeyStone_SRIO_Init.obj (.const:$P$T0$1)
    0c05a680 0000000a ti.platform.evm6678l.ae66 : evm66x_nand.obj (.const:.string:$P$T0$1)
    0c05a68a 00000006 --HOLE-- [fill = 0]
    0c05a690 0000000a : evm66x_nand.obj (.const:.string:$P$T1$2)

    .fardata 0 0c05a6a0 00000b58
    0c05a6a0 000001e0 rts6600_elf.lib : defs.obj (.fardata:_ftable)
    0c05a880 00000150 SRIO_PktDMA_Init.obj (.fardata:flowCfgTable)
    0c05a9d0 00000120 SRIO_Test.obj (.fardata:DSP0_message_map)
    0c05aaf0 00000120 SRIO_Test.obj (.fardata:DSP1_message_map)
    0c05ac10 00000120 SRIO_PktDMA_Init.obj (.fardata:freeHostQueueCfgTable)
    0c05ad30 0000010c saa7115h.obj (.fardata:saa7115PAL)
    0c05ae3c 00000004 common.obj (.fardata)
    0c05ae40 000000a0 rts6600_elf.lib : lowlev.obj (.fardata:_stream)
    0c05aee0 0000008e saa7129h.obj (.fardata:saa7129hPAL)
    0c05af6e 00000002 --HOLE--
    0c05af70 00000078 rts6600_elf.lib : lowlev.obj (.fardata:_device)
    0c05afe8 00000048 Keystone_SRIO_drv.obj (.fardata:LSU_state_index_table)
    0c05b030 00000048 SRIO_PktDMA_Init.obj (.fardata:descMemRegionsCfg)
    0c05b078 00000044 SRIO_2DSP_Test.obj (.fardata)
    0c05b0bc 00000004 rts6600_elf.lib : defs.obj (.fardata)
    0c05b0c0 00000030 SRIO_Test.obj (.fardata:TX_Queue_Sch_Info)
    0c05b0f0 00000030 SRIO_Test.obj (.fardata:dsp0_device_ID_routing_config)
    0c05b120 00000030 SRIO_Test.obj (.fardata:dsp1_device_ID_routing_config)
    0c05b150 00000028 SRIO_Interrupts.obj (.fardata:interrupt_map)
    0c05b178 00000020 SRIO_Test.obj (.fardata:path_str)
    0c05b198 00000018 SRIO_Test.obj (.fardata:type_str)
    0c05b1b0 00000010 KeyStone_common.obj (.fardata:mem_prot_key)
    0c05b1c0 0000000c rts6600_elf.lib : exit.obj (.fardata)
    0c05b1cc 0000000c : memory.obj (.fardata)
    0c05b1d8 00000008 KeyStone_Multicore_Navigator_drv.obj (.fardata:qmPdspCmd)
    0c05b1e0 00000008 KeyStone_Multicore_Navigator_drv.obj (.fardata:qmPdspCtrlRegs)
    0c05b1e8 00000008 KeyStone_Multicore_Navigator_drv.obj (.fardata:qmPdspIRam)
    0c05b1f0 00000008 rts6600_elf.lib : _lock.obj (.fardata)

    .far 0 0c05b1f8 000005d8 UNINITIALIZED
    0c05b1f8 00000228 common.obj (.far)
    0c05b420 00000190 SRIO_Test.obj (.far)
    0c05b5b0 00000140 rts6600_elf.lib : defs.obj (.far)
    0c05b6f0 00000080 SRIO_PktDMA_Init.obj (.far)
    0c05b770 00000044 ti.platform.evm6678l.ae66 : evmc66x_i2c_eeprom.obj (.far)
    0c05b7b4 00000014 SRIO_Interrupts.obj (.far)
    0c05b7c8 00000008 rts6600_elf.lib : trgdrv.obj (.far)

    .neardata
    * 0 0c05b800 000004b8
    0c05b800 000003c4 SRIO_Interface.obj (.neardata)
    0c05bbc4 00000064 KeyStone_Multicore_Navigator_drv.obj (.neardata)
    0c05bc28 00000054 KeyStone_common.obj (.neardata)
    0c05bc7c 00000018 SRIO_Test.obj (.neardata)
    0c05bc94 00000004 KeyStone_DDR_Init.obj (.neardata)
    0c05bc98 00000010 TSC.obj (.neardata)
    0c05bca8 00000008 Keystone_I2C_init_drv.obj (.neardata)
    0c05bcb0 00000008 ti.platform.evm6678l.ae66 : platform.obj (.neardata)

    .DDRText 0 0c05bcc0 000000e0
    0c05bcc0 000000e0 MulticoreBoot.obj (.text)

    .bss 0 0c05bdc0 000000d0 UNINITIALIZED
    0c05bdc0 00000088 SRIO_Interface.obj (.bss)
    0c05be48 0000002c common.obj (.bss)
    0c05be74 0000000c SRIO_PktDMA_Init.obj (.bss)
    0c05be80 00000008 SRIO_Test.obj (.bss)
    0c05be88 00000004 KeyStone_SRIO_Init.obj (.bss)
    0c05be8c 00000004 ti.platform.evm6678l.ae66 : evmc66x_spi.obj (.bss)

    .switch 0 0c05be90 00000090
    0c05be90 00000070 ti.csl.ae66 : csl_chip.oe66 (.switch:CSL_chipReadReg)
    0c05bf00 00000020 ti.platform.evm6678l.ae66 : platform.obj (.switch:platform_internal_memory_test)

    PacketData.buffer_DDR
    * 0 0c05bf20 00104000 UNINITIALIZED
    0c05bf20 00104000 SRIO_PktDMA_Init.obj (PacketData.buffer_DDR)

    PacketData.buffer_SL2
    * 0 0c15ff20 00042000 UNINITIALIZED
    0c15ff20 00042000 SRIO_PktDMA_Init.obj (PacketData.buffer_SL2)

    PacketData.buffer_LL2
    * 0 0c1a1f20 00022000 UNINITIALIZED
    0c1a1f20 00022000 SRIO_PktDMA_Init.obj (PacketData.buffer_LL2)

    QMSS_Data.Descriptor_DDR
    * 0 0c1c3f80 00001400 UNINITIALIZED
    0c1c3f80 00001400 SRIO_PktDMA_Init.obj (QMSS_Data.Descriptor_DDR)

    QMSS_Data.Descriptor_LL2
    * 0 0c1c5380 00000a00 UNINITIALIZED
    0c1c5380 00000a00 SRIO_PktDMA_Init.obj (QMSS_Data.Descriptor_LL2)

    QMSS_Data.Descriptor_SL2
    * 0 0c1c5d80 00000a00 UNINITIALIZED
    0c1c5d80 00000a00 SRIO_PktDMA_Init.obj (QMSS_Data.Descriptor_SL2)

    .cinit 0 0c1c6780 0000090c
    0c1c6780 000006ef (.cinit..fardata.load) [load image, compression = rle]
    0c1c6e6f 00000001 --HOLE-- [fill = 0]
    0c1c6e70 000000d7 (.cinit..neardata.load) [load image, compression = rle]
    0c1c6f47 00000001 --HOLE-- [fill = 0]
    0c1c6f48 0000009f (.cinit.platform_lib.load) [load image, compression = rle]
    0c1c6fe7 00000001 --HOLE-- [fill = 0]
    0c1c6fe8 0000000c (__TI_handler_table)
    0c1c6ff4 00000008 (.cinit..bss.load) [load image, compression = zero_init]
    0c1c6ffc 00000008 (.cinit..far.load) [load image, compression = zero_init]
    0c1c7004 00000008 (.cinit.PacketData.buffer_DDR.load) [load image, compression = zero_init]
    0c1c700c 00000008 (.cinit.PacketData.buffer_LL2.load) [load image, compression = zero_init]
    0c1c7014 00000008 (.cinit.PacketData.buffer_SL2.load) [load image, compression = zero_init]
    0c1c701c 00000008 (.cinit.QMSS_Data.Descriptor_DDR.load) [load image, compression = zero_init]
    0c1c7024 00000008 (.cinit.QMSS_Data.Descriptor_LL2.load) [load image, compression = zero_init]
    0c1c702c 00000008 (.cinit.QMSS_Data.Descriptor_SL2.load) [load image, compression = zero_init]
    0c1c7034 00000058 (__TI_cinit_table)

    vecs 0 10800000 00000200
    10800000 00000200 vectors.obj (vecs)

    .myboot 0 10800200 00000080
    10800200 00000080 rts6600_elf.lib : boot.obj (.text:_c_int00)

    .stack 0 108002c0 00008000 UNINITIALIZED
    108002c0 00000008 rts6600_elf.lib : boot.obj (.stack)
    108002c8 00007ff8 --HOLE--

    .cio 0 108082c0 00000120 UNINITIALIZED
    108082c0 00000120 rts6600_elf.lib : trgmsg.obj (.cio)

    platform_lib
    * 0 b0000000 00001370
    b0000000 00001058 ti.platform.evm6678l.ae66 : platform.obj (platform_lib:uninit) [fill = 0]
    b0001058 00000210 : evm66x_nand.obj (platform_lib) [fill = 0]
    b0001268 00000108 : platform.obj (platform_lib:init)


    LINKER GENERATED COPY TABLES

    __TI_cinit_table @ 0c1c7034 records: 11, size/record: 8, table size: 88
    .fardata: load addr=0c1c6780, load size=000006ef bytes, run addr=0c05a6a0, run size=00000b58 bytes, compression=rle
    .neardata: load addr=0c1c6e70, load size=000000d7 bytes, run addr=0c05b800, run size=000004b8 bytes, compression=rle
    platform_lib: load addr=0c1c6f48, load size=0000009f bytes, run addr=b0000000, run size=00001370 bytes, compression=rle
    .bss: load addr=0c1c6ff4, load size=00000008 bytes, run addr=0c05bdc0, run size=000000d0 bytes, compression=zero_init
    .far: load addr=0c1c6ffc, load size=00000008 bytes, run addr=0c05b1f8, run size=000005d8 bytes, compression=zero_init
    PacketData.buffer_DDR: load addr=0c1c7004, load size=00000008 bytes, run addr=0c05bf20, run size=00104000 bytes, compression=zero_init
    PacketData.buffer_LL2: load addr=0c1c700c, load size=00000008 bytes, run addr=0c1a1f20, run size=00022000 bytes, compression=zero_init
    PacketData.buffer_SL2: load addr=0c1c7014, load size=00000008 bytes, run addr=0c15ff20, run size=00042000 bytes, compression=zero_init
    QMSS_Data.Descriptor_DDR: load addr=0c1c701c, load size=00000008 bytes, run addr=0c1c3f80, run size=00001400 bytes, compression=zero_init
    QMSS_Data.Descriptor_LL2: load addr=0c1c7024, load size=00000008 bytes, run addr=0c1c5380, run size=00000a00 bytes, compression=zero_init
    QMSS_Data.Descriptor_SL2: load addr=0c1c702c, load size=00000008 bytes, run addr=0c1c5d80, run size=00000a00 bytes, compression=zero_init


    LINKER GENERATED HANDLER TABLE

    __TI_handler_table @ 0c1c6fe8 records: 3, size/record: 4, table size: 12
    index: 0, handler: __TI_zero_init
    index: 1, handler: __TI_decompress_rle24
    index: 2, handler: __TI_decompress_none


    GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name

    address name
    -------- ----
    0c057900 C$$EXIT
    0c0576d8 C$$IO$$
    0c05bc2c CGEM_regs
    0c0422c0 CSL_GPIO_open
    0c054ea0 CSL_chipReadReg
    0c041f80 Convert_CoreLocal2GlobalAddr
    0c044fd4 CorePllcGetHwSetup
    0c044d78 CorePllcHwSetup
    0c045514 DDR3Init
    0c05bc94 DDR_Regs
    0c05a9d0 DSP0_message_map
    0c05aaf0 DSP1_message_map
    0c05b3a0 FPGAframe_address_dst
    0c056800 HOSTclose
    0c0556e0 HOSTlseek
    0c055ae0 HOSTopen
    0c0562c0 HOSTread
    0c054860 HOSTrename
    0c056380 HOSTunlink
    0c056440 HOSTwrite
    0c043c4c I2C_5158_init
    0c043acc I2C_7115_init
    0c043a10 I2C_7129_init
    0c050d60 I2C_Master_Init
    0c0511a4 I2C_block
    0c0511a0 I2C_free
    0c051074 I2C_read
    0c05bcac I2C_speed_KHz
    0c050dc8 I2C_wait_flag
    0c050f4c I2C_write
    0c043928 InitDataBuffer
    0c0520a4 InitLsuDoorbell
    0c0438ac InitLsuTransfer
    0c050298 Init_SGMII
    0c0483c0 KeyStone_DDR_PLL_init
    0c04a518 KeyStone_Host_Descriptor_Queues_init
    0c04816c KeyStone_L1_cfg
    0c047f24 KeyStone_L2_cfg
    0c04a388 KeyStone_Mono_Descriptor_Queues_init
    0c047e00 KeyStone_PA_PLL_init
    0c04a104 KeyStone_QMSS_Descriptor_Regions_init
    0c04a068 KeyStone_QMSS_Linking_RAM_init
    0c049f00 KeyStone_Qmss_Config_Acc_Channel
    0c049eac KeyStone_Qmss_Config_Reclaim_Queue
    0c049d68 KeyStone_Qmss_Download_Firmware
    0c049d14 KeyStone_Qmss_config_Acc_Timer
    0c049c74 KeyStone_Qmss_disable_Acc_Channel
    0c047c60 KeyStone_XM_cfg
    0c047990 KeyStone_main_PLL_init
    0c049c48 KeyStone_pktDma_Global_Control
    0c049c18 KeyStone_pktDma_TxCh_config
    0c0496a0 KeyStone_pktDma_configureRxFlow
    0c04dc00 Keystone_SGMII_Serdes_init
    0c04d618 Keystone_SRIO_Build_Type11_Msg_Desc
    0c04d5ac Keystone_SRIO_Build_Type9_Msg_Desc
    0c046764 Keystone_SRIO_CSR_CAR_Config
    0c046a44 Keystone_SRIO_Datastreaming_init
    0c04d4b0 Keystone_SRIO_DirectIO
    0c04d3b0 Keystone_SRIO_DoorBell
    0c046bc0 Keystone_SRIO_Error_Capture_Enable
    0c046af8 Keystone_SRIO_Flow_Control
    0c046aac Keystone_SRIO_Garbage_Queue_Cfg
    0c046710 Keystone_SRIO_GlobalEnable
    0c04d700 Keystone_SRIO_HyperLink_Serdes_init
    0c046cb8 Keystone_SRIO_Init
    0c0464e8 Keystone_SRIO_Interrupt_init
    0c04ceb0 Keystone_SRIO_LSU_transfer
    0c04d024 Keystone_SRIO_Maintenance
    0c0464a8 Keystone_SRIO_MulticastID_Cfg
    0c046460 Keystone_SRIO_Prioirity_Permission_Setup
    0c0463e0 Keystone_SRIO_RxMode_Setup
    0c046274 Keystone_SRIO_TX_Queue_Cfg
    0c046114 Keystone_SRIO_Timeout_Config
    0c045ba8 Keystone_SRIO_disable_all_blocks
    0c045f88 Keystone_SRIO_enable_blocks
    0c04d370 Keystone_SRIO_get_LSU_completion_context_code
    0c045f68 Keystone_SRIO_little_endian_swap
    0c04d154 Keystone_SRIO_match_ACK_ID
    0c045ec8 Keystone_SRIO_packet_forwarding_Cfg
    0c045e9c Keystone_SRIO_set_1x2x4x_Path
    0c045de4 Keystone_SRIO_set_device_ID
    0c045c0c Keystone_SRIO_soft_reset
    0c04ce20 Keystone_SRIO_wait_LSU_completion
    0c04d6a0 Keystone_Serdes_disable
    0c047904 Keystone_disable_PSC_Power_Domain
    0c047870 Keystone_disable_PSC_module
    0c0477b8 Keystone_enable_PSC_module
    0c045900 Keystone_map_SRIO_RX_message
    0c05afe8 LSU_state_index_table
    0c05bce4 MulticoreBoot
    0c049578 NandGetDetails
    0c048c6c NandReadSpareArea
    0c048f8c NandWriteDataBytes
    0c0491f0 NandWriteSpareArea
    0c04c6b8 Nyquist_EVM_DDR_Init
    0c05bcd0 Osal_platformFree
    0c05bcc8 Osal_platformMalloc
    0c05bcc4 Osal_platformSpiCsEnter
    0c05bcc0 Osal_platformSpiCsExit
    0c0452b4 PowerUpDomains
    0c04e570 QMSS_Accumulation_config
    0c051fec SRIO_2DSP_Test_in
    0c04e414 SRIO_Check_Free_Queues
    0c04e3c4 SRIO_Check_Queue
    0c04e170 SRIO_Check_TxRx_Queues
    0c052704 SRIO_Doorbell_ISR
    0c04df64 SRIO_Handle_Error_Queues
    0c0568a0 SRIO_Interrupts_Init
    0c052460 SRIO_Message_ISR
    0c04de60 SRIO_PktDM_init
    0c0435b0 SRIOandInterupt_Init
    0c051f60 Send_DoorBell_To_DSP2
    0c045350 SetDDR3PllConfig
    0c0450c0 SetPaPllConfig
    0c04c260 Shannon_EVM_DDR_Init
    0c055324 TSC_delay_ms
    0c0552d4 TSC_delay_us
    0c0552c4 TSC_init
    0c0432e4 TVP5158_Config
    0c043234 TVP5158_checkChipId
    0c042f38 TVP5158_patchDownload
    0c042f0c TVP5158_selectRead
    0c042ee0 TVP5158_selectWrite
    0c042de4 TVP5158_vbusWrite
    0c05b0c0 TX_Queue_Sch_Info
    0c052780 UartInit
    0c052a4c UartIsDataReady
    0c052950 UartReadBaudRate
    0c0529c0 UartReadData
    0c0528d8 UartSetBaudRate
    0c0529ec UartWriteData
    0c042b24 VerifyData
    0c05bc28 XMC_regs
    0c04aec0 _Z11h265_mallociPja
    0c04e600 _Z14SleepForAWhilei
    0c04b2d4 _Z16h265_init_globalv
    0c04afd4 _Z18h265_param_defaultP12h265_param_t
    0c04af78 _Z18h265_picture_allocP12h265_image_tii
    0c04ae74 _Z18h265_picture_cleanP12h265_image_t
    0c04a7c0 _Z20h265_initSigLastScanPsS_S_S_iii
    0c04ea14 _Z21init_addr_for_encoderv
    0c04a72c _Z26h265_getNumRpsCurrTempListP12slice_header
    0c04a714 _Z8h265_logP6h265_tiPKcz
    0c04a700 _Z9h265_freePv
    108082c0 __CIOBUF_
    0c1c7034 __TI_CINIT_Base
    0c1c708c __TI_CINIT_Limit
    0c1c6fe8 __TI_Handler_Table_Base
    0c1c6ff4 __TI_Handler_Table_Limit
    UNDEFED __TI_INITARRAY_Base
    UNDEFED __TI_INITARRAY_Limit
    108082c0 __TI_STACK_END
    00008000 __TI_STACK_SIZE
    0c05b800 __TI_STATIC_BASE
    00040000 __TI_SYSMEM_SIZE
    UNDEFED __TI_TLS_INIT_Base
    UNDEFED __TI_TLS_INIT_Limit
    00000001 __TI_args_main
    0c057440 __TI_cpp_init
    0c057920 __TI_decompress_none
    0c057940 __TI_decompress_rle24
    0c05b1c8 __TI_enable_exit_profile_output
    ffffffff __TI_pprof_out_hndl
    ffffffff __TI_prof_data_size
    ffffffff __TI_prof_data_start
    0c056740 __TI_tls_init
    0c055f40 __TI_zero_init
    ffffffff __binit__
    0c04ed00 __c6xabi_divd
    0c053020 __c6xabi_divf
    0c055bc0 __c6xabi_divi
    0c056500 __c6xabi_divu
    0c054a00 __c6xabi_divul
    0c0537a0 __c6xabi_divull
    0c0570c0 __c6xabi_fixdu
    0c057140 __c6xabi_fixfu
    0c0574a0 __c6xabi_frcmpyd_div
    0c0576e0 __c6xabi_isinf
    0c0571c0 __c6xabi_llshl
    0c057500 __c6xabi_llshru
    0c057860 __c6xabi_negll
    0c056940 __c6xabi_remu
    ffffffff __c_args__
    0c055bc0 __divi
    0c056500 __divu
    0c056940 __remu
    0c057760 _args_main
    0c0557e0 _auto_init_elf
    10800200 _c_int00
    0c0569e0 _cleanup
    0c05b1c0 _cleanup_ptr
    0c055380 _closefile
    0c05a368 _ctypes_
    0c0565c0 _doflush
    0c05b1c4 _dtors_ptr
    0c05b0bc _ft_end
    0c05a6a0 _ftable
    0c05b1f0 _lock
    0c056bc0 _minit
    0c057880 _nop
    0c0511c0 _printfi
    108002c0 _stack
    0c057560 _subcull
    0c000000 _sys_memory
    0c05b5b0 _tmpnams
    0c05b1f4 _unlock
    0c0558e0 _wrt_ok
    0c057900 abort
    0c0595b8 acc48_le
    0c055d80 atoi
    ffffffff binit
    0c05bbc0 bistream_num_h
    0c05bac0 bit_stream_head
    0c05bb00 bit_stream_rear
    0c05bb40 bit_stream_size
    0c05b400 bitstreamLen_ddr
    0c05b380 bitstream_ddr
    0c05bc30 boot_cfg_regs
    0c05528c calc_cycle_measure_overhead
    0c051f10 check_srio_state
    0c055e60 close
    0c0429a4 common_init
    0c050220 configSerdes
    0c0559e0 copy_in
    0c05bc34 cpIntc0Regs
    0c05bc38 cpIntc1Regs
    0c05b900 curr_frame_idx
    0c05b9c0 curr_send_idx
    0c05bc98 cycle_measure_overhead
    0c05b030 descMemRegionsCfg
    0c05b0f0 dsp0_device_ID_routing_config
    0c05b980 dsp1_coder_send_count
    0c05b120 dsp1_device_ID_routing_config
    0c042870 dsp1_init
    0c05b940 dsp2_coder_send_count
    0c0473c8 edma_Init
    b0001368 emac_port_mode
    0c057340 evmI2CInit
    0c056680 exit
    0c042864 first_init
    0c05a880 flowCfgTable
    0c050938 fpgaControlUserLEDs
    0c050b0c fpgaDisableEepromWriteProtect
    0c0509f8 fpgaDisableNandWriteProtect
    0c050a84 fpgaDisableNorWriteProtect
    0c050b50 fpgaEnableEepromWriteProtect
    0c050a40 fpgaEnableNandWriteProtect
    0c050ac8 fpgaEnableNorWriteProtect
    0c050be0 fpgaGetAMCDetect
    0c050b94 fpgaGetUserSwitch
    0c050cd0 fpgaReadConfigurationRegister
    0c050c24 fpgaWriteConfigurationRegister
    0c054080 fputc
    0c051a80 fputs
    0c05b840 frameNumEncoded
    0c05b800 frameNumRecieved
    0c05b880 frameNumsended
    0c05bc80 frame_NUM
    0c05b510 frame_address_U
    0c05b570 frame_address_U_dst
    0c05b530 frame_address_V
    0c05b590 frame_address_V_dst
    0c05b4f0 frame_address_Y
    0c05b550 frame_address_Y_dst
    0c053520 free
    0c05ac10 freeHostQueueCfgTable
    0c0555c0 fseek
    b00012f4 gDeviceEeprom0
    b000132c gDeviceEeprom1
    b0001284 gDeviceNand
    b0000058 gDeviceNandBBlist
    b00012bc gDeviceNor
    0c05bc4c gEDMACC0Regs
    0c05bc50 gEDMACC1Regs
    0c05bc54 gEDMACC2Regs
    0c05b770 gI2cBlock
    0c057960 gTVP5158_patch
    0c05b2c0 g_aiSigLastScan
    0c05b1f8 g_aucConvertToBit
    0c05ae3d g_bitDepthC
    0c05ae3c g_bitDepthY
    0c05be70 g_ddr3_share_addr
    0c05ba80 g_doorbell_info
    0c05be00 g_dst_srio
    0c05be44 g_flag_srio
    0c05be5c g_iCUInverseOrdermap
    0c05be58 g_iCUOrdermap
    0c05ae3e g_iIBDI_MAX
    0c05be50 g_iRaster2PixelX
    0c05be54 g_iRaster2PixelY
    0c05be4c g_iRaster2Zscan
    0c05be48 g_iZscan2Raster
    0c05be40 g_length_srio
    0c05b240 g_sigLastScanCG32x32
    0c05bdc0 g_src_srio
    0c05be6c g_startDDR3Address
    0c05be68 g_startDataAddress
    0c05be64 g_startHeapAddress
    0c05be60 g_startMSMCAddress
    0c0508a0 getBoardVersion
    0c0508ec getFpgaDevID
    0c055274 get_TSC
    0c0427d4 get_packet_type_string
    0c042728 get_path_string
    0c1c3f80 hostDescriptor_DDR
    0c1c5380 hostDescriptor_LL2
    0c1c5d80 hostDescriptor_SL2
    0c05bc48 hyperLinkRegs
    0c04bf00 i2cEepromMacRead
    0c04bc68 i2cEepromMacWrite
    0c04b7ec i2cEepromRead
    0c04b9f0 i2cEepromWrite
    0c04b524 i2cEepromWriteBlock
    0c04bb10 i2cEepromWriteByteAddr
    0c05bca8 i2cRegs
    0c0424a8 init_address
    0c042320 init_each_core
    0c05b7b4 interrupt_cfg
    0c05b150 interrupt_map
    0c05b8c0 last_buffer_idx
    0c05ba40 last_contextBit
    0c05ba00 last_transactionID
    0c05bc24 linkingEntrySize
    0c04734c lock_mem_prot_regs
    0c05bc8c loopback_mode
    0c056da0 lseek
    0c056020 ltoa
    0c04e624 main
    0c054d20 malloc
    0c05b1b0 mem_prot_key
    0c0575c0 memccpy
    0c056e40 memcpy
    0c056100 memset
    0c05b478 msg_cfg
    0c051e20 myInitLsuDoorbell
    0c049318 nandFlashBlockErase
    0c049680 nandInit
    0c050774 nor_erase
    0c050400 nor_get_details
    0c05048c nor_init
    0c050504 nor_read
    0c050594 nor_write
    0c05bb80 offset_addr
    0c05be84 p_doorbrll
    0c05bc10 paDmaCfgRegs
    0c05bc18 paDmaRxChCfgRegs
    0c05bc20 paDmaRxFlowCfgRegs
    0c05bc14 paDmaTxChCfgRegs
    0c05bc1c paDmaTxChPriority
    0c05bf20 packetBuffer_DDR_Size0
    0c05ff20 packetBuffer_DDR_Size1
    0c1a1f20 packetBuffer_LL2_Size0
    0c1a3f20 packetBuffer_LL2_Size1
    0c15ff20 packetBuffer_SL2_Size0
    0c161f20 packetBuffer_SL2_Size1
    0c05b178 path_str
    0c041890 platform_blocknpage_to_offset
    0c040db0 platform_delay
    0c040e10 platform_delaycycles
    0c041318 platform_device_close
    0c041eb4 platform_device_erase_block
    0c041450 platform_device_mark_block_bad
    0c041194 platform_device_open
    0c041610 platform_device_read
    0c0413b0 platform_device_read_spare_data
    0c041984 platform_device_write
    0c041570 platform_device_write_spare_data
    0c05bcb0 platform_errno
    0c040e50 platform_external_memory_test
    0c040ad4 platform_get_coreid
    0c040ae8 platform_get_emac_info
    0c04058c platform_get_info
    0c040b78 platform_get_macaddr
    0c040c0c platform_get_phy_addr
    0c040c84 platform_get_switch_state
    0c040894 platform_init
    0c05bcb4 platform_init_return_code
    0c040ed0 platform_internal_memory_test
    0c040d68 platform_led
    0c041768 platform_offset_to_blocknpage
    0c040c20 platform_phy_link_status
    0c040d48 platform_uart_init
    0c040c90 platform_uart_read
    0c040d14 platform_uart_set_baudrate
    0c040cf8 platform_uart_write
    0c041080 platform_write
    0c041044 platform_write_configure
    0c05bc3c pllc_regs
    0c0561e0 printf
    0c044c14 prog_pll1_values
    0c05bc40 pscRegs
    0c0577e0 puts
    0c05bbc4 qmCfgRegs
    0c05bbc8 qmDescriptorRegions
    0c05bbe8 qmDmaCfgRegs
    0c05bbf0 qmDmaRxChCfgRegs
    0c05bbf8 qmDmaRxFlowCfgRegs
    0c05bbec qmDmaTxChCfgRegs
    0c05bbf4 qmDmaTxChPriority
    0c05bbe4 qmIntRegs
    0c05b1d8 qmPdspCmd
    0c05b1e0 qmPdspCtrlRegs
    0c05b1e8 qmPdspIRam
    0c05bbd4 queueManageData
    0c05bbd8 queueManageProxyData
    0c05bbd0 queueManageProxyRegs
    0c05bbcc queueManageRegs
    0c05bbdc queueStatusConfigRegs
    0c05bbe0 queueThresholdStatus
    0c048d58 readNandPage
    0c057240 readmsg
    0c05bc7c recive_flag
    0c0573c0 remove
    0c05b420 rxMode
    0c05ad30 saa7115PAL
    0c05aee0 saa7129hPAL
    0c051e44 send2_DSP2
    0c0422cc sendGPIO2CPLD
    0c05bc84 send_NUM
    0c05bc88 send_total
    0c05b44c serdesLinkSetup
    0c05b434 serdes_cfg
    0c040474 serial_num_isvalid
    0c0544a0 setvbuf
    0c04f8b0 spi_claim
    0c04fba4 spi_cmd
    0c04fc08 spi_cmd_read
    0c04fc68 spi_cmd_write
    0c04fcc8 spi_read_word
    0c04fa58 spi_release
    0c04fd80 spi_write_word
    0c04fa70 spi_xfer
    0c05bbfc srioDmaCfgRegs
    0c05bc04 srioDmaRxChCfgRegs
    0c05bc0c srioDmaRxFlowCfgRegs
    0c05bc00 srioDmaTxChCfgRegs
    0c05bc08 srioDmaTxChPriority
    0c05bc44 srioRegs
    0c05be88 srioSerdesRegs
    0c05b498 srio_cfg
    0c042268 srio_doorbell_latency_test
    0c042060 srio_identify_used_ports_lanes
    0c055260 start_TSC
    0c05bca0 start_time
    0c057820 strlen
    0c0572c0 strncpy
    0c05b078 test_2DSP_cfg
    0c05bc58 timer0Regs
    0c05bc5c timer1Regs
    0c05bc60 timer2Regs
    0c05bc64 timer3Regs
    0c05bc68 timer4Regs
    0c05bc6c timer5Regs
    0c05bc70 timer6Regs
    0c05bc74 timer7Regs
    0c05bc78 timer8Regs
    0c04200c tvp5158a_rget
    0c041fe0 tvp5158a_rset
    0c05b198 type_str
    0c05be80 uiDoorbell_TSC
    0c05be78 uiInitialHostFdqNum
    0c05bc90 uiTestID
    0c05be74 uiUsedDescRegionNum
    0c05be7c uiUsedRxFlowNum
    0c05b6f0 uiaDescriptorAccumulationList
    0c0573c0 unlink
    0c0472e0 unlock_mem_prot_regs
    10800000 vectors
    0c05b320 videoBuffer_ddr
    0c057620 vsprintf
    0c057020 write
    0c048ff0 writeNandPage
    0c057680 writemsg
    0c0454c0 xmc_setup


    GLOBAL SYMBOLS: SORTED BY Symbol Address

    address name
    -------- ----
    00000001 __TI_args_main
    00008000 __TI_STACK_SIZE
    00040000 __TI_SYSMEM_SIZE
    0c000000 _sys_memory
    0c040474 serial_num_isvalid
    0c04058c platform_get_info
    0c040894 platform_init
    0c040ad4 platform_get_coreid
    0c040ae8 platform_get_emac_info
    0c040b78 platform_get_macaddr
    0c040c0c platform_get_phy_addr
    0c040c20 platform_phy_link_status
    0c040c84 platform_get_switch_state
    0c040c90 platform_uart_read
    0c040cf8 platform_uart_write
    0c040d14 platform_uart_set_baudrate
    0c040d48 platform_uart_init
    0c040d68 platform_led
    0c040db0 platform_delay
    0c040e10 platform_delaycycles
    0c040e50 platform_external_memory_test
    0c040ed0 platform_internal_memory_test
    0c041044 platform_write_configure
    0c041080 platform_write
    0c041194 platform_device_open
    0c041318 platform_device_close
    0c0413b0 platform_device_read_spare_data
    0c041450 platform_device_mark_block_bad
    0c041570 platform_device_write_spare_data
    0c041610 platform_device_read
    0c041768 platform_offset_to_blocknpage
    0c041890 platform_blocknpage_to_offset
    0c041984 platform_device_write
    0c041eb4 platform_device_erase_block
    0c041f80 Convert_CoreLocal2GlobalAddr
    0c041fe0 tvp5158a_rset
    0c04200c tvp5158a_rget
    0c042060 srio_identify_used_ports_lanes
    0c042268 srio_doorbell_latency_test
    0c0422c0 CSL_GPIO_open
    0c0422cc sendGPIO2CPLD
    0c042320 init_each_core
    0c0424a8 init_address
    0c042728 get_path_string
    0c0427d4 get_packet_type_string
    0c042864 first_init
    0c042870 dsp1_init
    0c0429a4 common_init
    0c042b24 VerifyData
    0c042de4 TVP5158_vbusWrite
    0c042ee0 TVP5158_selectWrite
    0c042f0c TVP5158_selectRead
    0c042f38 TVP5158_patchDownload
    0c043234 TVP5158_checkChipId
    0c0432e4 TVP5158_Config
    0c0435b0 SRIOandInterupt_Init
    0c0438ac InitLsuTransfer
    0c043928 InitDataBuffer
    0c043a10 I2C_7129_init
    0c043acc I2C_7115_init
    0c043c4c I2C_5158_init
    0c044c14 prog_pll1_values
    0c044d78 CorePllcHwSetup
    0c044fd4 CorePllcGetHwSetup
    0c0450c0 SetPaPllConfig
    0c0452b4 PowerUpDomains
    0c045350 SetDDR3PllConfig
    0c0454c0 xmc_setup
    0c045514 DDR3Init
    0c045900 Keystone_map_SRIO_RX_message
    0c045ba8 Keystone_SRIO_disable_all_blocks
    0c045c0c Keystone_SRIO_soft_reset
    0c045de4 Keystone_SRIO_set_device_ID
    0c045e9c Keystone_SRIO_set_1x2x4x_Path
    0c045ec8 Keystone_SRIO_packet_forwarding_Cfg
    0c045f68 Keystone_SRIO_little_endian_swap
    0c045f88 Keystone_SRIO_enable_blocks
    0c046114 Keystone_SRIO_Timeout_Config
    0c046274 Keystone_SRIO_TX_Queue_Cfg
    0c0463e0 Keystone_SRIO_RxMode_Setup
    0c046460 Keystone_SRIO_Prioirity_Permission_Setup
    0c0464a8 Keystone_SRIO_MulticastID_Cfg
    0c0464e8 Keystone_SRIO_Interrupt_init
    0c046710 Keystone_SRIO_GlobalEnable
    0c046764 Keystone_SRIO_CSR_CAR_Config
    0c046a44 Keystone_SRIO_Datastreaming_init
    0c046aac Keystone_SRIO_Garbage_Queue_Cfg
    0c046af8 Keystone_SRIO_Flow_Control
    0c046bc0 Keystone_SRIO_Error_Capture_Enable
    0c046cb8 Keystone_SRIO_Init
    0c0472e0 unlock_mem_prot_regs
    0c04734c lock_mem_prot_regs
    0c0473c8 edma_Init
    0c0477b8 Keystone_enable_PSC_module
    0c047870 Keystone_disable_PSC_module
    0c047904 Keystone_disable_PSC_Power_Domain
    0c047990 KeyStone_main_PLL_init
    0c047c60 KeyStone_XM_cfg
    0c047e00 KeyStone_PA_PLL_init
    0c047f24 KeyStone_L2_cfg
    0c04816c KeyStone_L1_cfg
    0c0483c0 KeyStone_DDR_PLL_init
    0c048c6c NandReadSpareArea
    0c048d58 readNandPage
    0c048f8c NandWriteDataBytes
    0c048ff0 writeNandPage
    0c0491f0 NandWriteSpareArea
    0c049318 nandFlashBlockErase
    0c049578 NandGetDetails
    0c049680 nandInit
    0c0496a0 KeyStone_pktDma_configureRxFlow
    0c049c18 KeyStone_pktDma_TxCh_config
    0c049c48 KeyStone_pktDma_Global_Control
    0c049c74 KeyStone_Qmss_disable_Acc_Channel
    0c049d14 KeyStone_Qmss_config_Acc_Timer
    0c049d68 KeyStone_Qmss_Download_Firmware
    0c049eac KeyStone_Qmss_Config_Reclaim_Queue
    0c049f00 KeyStone_Qmss_Config_Acc_Channel
    0c04a068 KeyStone_QMSS_Linking_RAM_init
    0c04a104 KeyStone_QMSS_Descriptor_Regions_init
    0c04a388 KeyStone_Mono_Descriptor_Queues_init
    0c04a518 KeyStone_Host_Descriptor_Queues_init
    0c04a700 _Z9h265_freePv
    0c04a714 _Z8h265_logP6h265_tiPKcz
    0c04a72c _Z26h265_getNumRpsCurrTempListP12slice_header
    0c04a7c0 _Z20h265_initSigLastScanPsS_S_S_iii
    0c04ae74 _Z18h265_picture_cleanP12h265_image_t
    0c04aec0 _Z11h265_mallociPja
    0c04af78 _Z18h265_picture_allocP12h265_image_tii
    0c04afd4 _Z18h265_param_defaultP12h265_param_t
    0c04b2d4 _Z16h265_init_globalv
    0c04b524 i2cEepromWriteBlock
    0c04b7ec i2cEepromRead
    0c04b9f0 i2cEepromWrite
    0c04bb10 i2cEepromWriteByteAddr
    0c04bc68 i2cEepromMacWrite
    0c04bf00 i2cEepromMacRead
    0c04c260 Shannon_EVM_DDR_Init
    0c04c6b8 Nyquist_EVM_DDR_Init
    0c04ce20 Keystone_SRIO_wait_LSU_completion
    0c04ceb0 Keystone_SRIO_LSU_transfer
    0c04d024 Keystone_SRIO_Maintenance
    0c04d154 Keystone_SRIO_match_ACK_ID
    0c04d370 Keystone_SRIO_get_LSU_completion_context_code
    0c04d3b0 Keystone_SRIO_DoorBell
    0c04d4b0 Keystone_SRIO_DirectIO
    0c04d5ac Keystone_SRIO_Build_Type9_Msg_Desc
    0c04d618 Keystone_SRIO_Build_Type11_Msg_Desc
    0c04d6a0 Keystone_Serdes_disable
    0c04d700 Keystone_SRIO_HyperLink_Serdes_init
    0c04dc00 Keystone_SGMII_Serdes_init
    0c04de60 SRIO_PktDM_init
    0c04df64 SRIO_Handle_Error_Queues
    0c04e170 SRIO_Check_TxRx_Queues
    0c04e3c4 SRIO_Check_Queue
    0c04e414 SRIO_Check_Free_Queues
    0c04e570 QMSS_Accumulation_config
    0c04e600 _Z14SleepForAWhilei
    0c04e624 main
    0c04ea14 _Z21init_addr_for_encoderv
    0c04ed00 __c6xabi_divd
    0c04f8b0 spi_claim
    0c04fa58 spi_release
    0c04fa70 spi_xfer
    0c04fba4 spi_cmd
    0c04fc08 spi_cmd_read
    0c04fc68 spi_cmd_write
    0c04fcc8 spi_read_word
    0c04fd80 spi_write_word
    0c050220 configSerdes
    0c050298 Init_SGMII
    0c050400 nor_get_details
    0c05048c nor_init
    0c050504 nor_read
    0c050594 nor_write
    0c050774 nor_erase
    0c0508a0 getBoardVersion
    0c0508ec getFpgaDevID
    0c050938 fpgaControlUserLEDs
    0c0509f8 fpgaDisableNandWriteProtect
    0c050a40 fpgaEnableNandWriteProtect
    0c050a84 fpgaDisableNorWriteProtect
    0c050ac8 fpgaEnableNorWriteProtect
    0c050b0c fpgaDisableEepromWriteProtect
    0c050b50 fpgaEnableEepromWriteProtect
    0c050b94 fpgaGetUserSwitch
    0c050be0 fpgaGetAMCDetect
    0c050c24 fpgaWriteConfigurationRegister
    0c050cd0 fpgaReadConfigurationRegister
    0c050d60 I2C_Master_Init
    0c050dc8 I2C_wait_flag
    0c050f4c I2C_write
    0c051074 I2C_read
    0c0511a0 I2C_free
    0c0511a4 I2C_block
    0c0511c0 _printfi
    0c051a80 fputs
    0c051e20 myInitLsuDoorbell
    0c051e44 send2_DSP2
    0c051f10 check_srio_state
    0c051f60 Send_DoorBell_To_DSP2
    0c051fec SRIO_2DSP_Test_in
    0c0520a4 InitLsuDoorbell
    0c052460 SRIO_Message_ISR
    0c052704 SRIO_Doorbell_ISR
    0c052780 UartInit
    0c0528d8 UartSetBaudRate
    0c052950 UartReadBaudRate
    0c0529c0 UartReadData
    0c0529ec UartWriteData
    0c052a4c UartIsDataReady
    0c053020 __c6xabi_divf
    0c053520 free
    0c0537a0 __c6xabi_divull
    0c054080 fputc
    0c0544a0 setvbuf
    0c054860 HOSTrename
    0c054a00 __c6xabi_divul
    0c054d20 malloc
    0c054ea0 CSL_chipReadReg
    0c055260 start_TSC
    0c055274 get_TSC
    0c05528c calc_cycle_measure_overhead
    0c0552c4 TSC_init
    0c0552d4 TSC_delay_us
    0c055324 TSC_delay_ms
    0c055380 _closefile
    0c0555c0 fseek
    0c0556e0 HOSTlseek
    0c0557e0 _auto_init_elf
    0c0558e0 _wrt_ok
    0c0559e0 copy_in
    0c055ae0 HOSTopen
    0c055bc0 __c6xabi_divi
    0c055bc0 __divi
    0c055d80 atoi
    0c055e60 close
    0c055f40 __TI_zero_init
    0c056020 ltoa
    0c056100 memset
    0c0561e0 printf
    0c0562c0 HOSTread
    0c056380 HOSTunlink
    0c056440 HOSTwrite
    0c056500 __c6xabi_divu
    0c056500 __divu
    0c0565c0 _doflush
    0c056680 exit
    0c056740 __TI_tls_init
    0c056800 HOSTclose
    0c0568a0 SRIO_Interrupts_Init
    0c056940 __c6xabi_remu
    0c056940 __remu
    0c0569e0 _cleanup
    0c056bc0 _minit
    0c056da0 lseek
    0c056e40 memcpy
    0c057020 write
    0c0570c0 __c6xabi_fixdu
    0c057140 __c6xabi_fixfu
    0c0571c0 __c6xabi_llshl
    0c057240 readmsg
    0c0572c0 strncpy
    0c057340 evmI2CInit
    0c0573c0 remove
    0c0573c0 unlink
    0c057440 __TI_cpp_init
    0c0574a0 __c6xabi_frcmpyd_div
    0c057500 __c6xabi_llshru
    0c057560 _subcull
    0c0575c0 memccpy
    0c057620 vsprintf
    0c057680 writemsg
    0c0576d8 C$$IO$$
    0c0576e0 __c6xabi_isinf
    0c057760 _args_main
    0c0577e0 puts
    0c057820 strlen
    0c057860 __c6xabi_negll
    0c057880 _nop
    0c057900 C$$EXIT
    0c057900 abort
    0c057920 __TI_decompress_none
    0c057940 __TI_decompress_rle24
    0c057960 gTVP5158_patch
    0c0595b8 acc48_le
    0c05a368 _ctypes_
    0c05a6a0 _ftable
    0c05a880 flowCfgTable
    0c05a9d0 DSP0_message_map
    0c05aaf0 DSP1_message_map
    0c05ac10 freeHostQueueCfgTable
    0c05ad30 saa7115PAL
    0c05ae3c g_bitDepthY
    0c05ae3d g_bitDepthC
    0c05ae3e g_iIBDI_MAX
    0c05aee0 saa7129hPAL
    0c05afe8 LSU_state_index_table
    0c05b030 descMemRegionsCfg
    0c05b078 test_2DSP_cfg
    0c05b0bc _ft_end
    0c05b0c0 TX_Queue_Sch_Info
    0c05b0f0 dsp0_device_ID_routing_config
    0c05b120 dsp1_device_ID_routing_config
    0c05b150 interrupt_map
    0c05b178 path_str
    0c05b198 type_str
    0c05b1b0 mem_prot_key
    0c05b1c0 _cleanup_ptr
    0c05b1c4 _dtors_ptr
    0c05b1c8 __TI_enable_exit_profile_output
    0c05b1d8 qmPdspCmd
    0c05b1e0 qmPdspCtrlRegs
    0c05b1e8 qmPdspIRam
    0c05b1f0 _lock
    0c05b1f4 _unlock
    0c05b1f8 g_aucConvertToBit
    0c05b240 g_sigLastScanCG32x32
    0c05b2c0 g_aiSigLastScan
    0c05b320 videoBuffer_ddr
    0c05b380 bitstream_ddr
    0c05b3a0 FPGAframe_address_dst
    0c05b400 bitstreamLen_ddr
    0c05b420 rxMode
    0c05b434 serdes_cfg
    0c05b44c serdesLinkSetup
    0c05b478 msg_cfg
    0c05b498 srio_cfg
    0c05b4f0 frame_address_Y
    0c05b510 frame_address_U
    0c05b530 frame_address_V
    0c05b550 frame_address_Y_dst
    0c05b570 frame_address_U_dst
    0c05b590 frame_address_V_dst
    0c05b5b0 _tmpnams
    0c05b6f0 uiaDescriptorAccumulationList
    0c05b770 gI2cBlock
    0c05b7b4 interrupt_cfg
    0c05b800 __TI_STATIC_BASE
    0c05b800 frameNumRecieved
    0c05b840 frameNumEncoded
    0c05b880 frameNumsended
    0c05b8c0 last_buffer_idx
    0c05b900 curr_frame_idx
    0c05b940 dsp2_coder_send_count
    0c05b980 dsp1_coder_send_count
    0c05b9c0 curr_send_idx
    0c05ba00 last_transactionID
    0c05ba40 last_contextBit
    0c05ba80 g_doorbell_info
    0c05bac0 bit_stream_head
    0c05bb00 bit_stream_rear
    0c05bb40 bit_stream_size
    0c05bb80 offset_addr
    0c05bbc0 bistream_num_h
    0c05bbc4 qmCfgRegs
    0c05bbc8 qmDescriptorRegions
    0c05bbcc queueManageRegs
    0c05bbd0 queueManageProxyRegs
    0c05bbd4 queueManageData
    0c05bbd8 queueManageProxyData
    0c05bbdc queueStatusConfigRegs
    0c05bbe0 queueThresholdStatus
    0c05bbe4 qmIntRegs
    0c05bbe8 qmDmaCfgRegs
    0c05bbec qmDmaTxChCfgRegs
    0c05bbf0 qmDmaRxChCfgRegs
    0c05bbf4 qmDmaTxChPriority
    0c05bbf8 qmDmaRxFlowCfgRegs
    0c05bbfc srioDmaCfgRegs
    0c05bc00 srioDmaTxChCfgRegs
    0c05bc04 srioDmaRxChCfgRegs
    0c05bc08 srioDmaTxChPriority
    0c05bc0c srioDmaRxFlowCfgRegs
    0c05bc10 paDmaCfgRegs
    0c05bc14 paDmaTxChCfgRegs
    0c05bc18 paDmaRxChCfgRegs
    0c05bc1c paDmaTxChPriority
    0c05bc20 paDmaRxFlowCfgRegs
    0c05bc24 linkingEntrySize
    0c05bc28 XMC_regs
    0c05bc2c CGEM_regs
    0c05bc30 boot_cfg_regs
    0c05bc34 cpIntc0Regs
    0c05bc38 cpIntc1Regs
    0c05bc3c pllc_regs
    0c05bc40 pscRegs
    0c05bc44 srioRegs
    0c05bc48 hyperLinkRegs
    0c05bc4c gEDMACC0Regs
    0c05bc50 gEDMACC1Regs
    0c05bc54 gEDMACC2Regs
    0c05bc58 timer0Regs
    0c05bc5c timer1Regs
    0c05bc60 timer2Regs
    0c05bc64 timer3Regs
    0c05bc68 timer4Regs
    0c05bc6c timer5Regs
    0c05bc70 timer6Regs
    0c05bc74 timer7Regs
    0c05bc78 timer8Regs
    0c05bc7c recive_flag
    0c05bc80 frame_NUM
    0c05bc84 send_NUM
    0c05bc88 send_total
    0c05bc8c loopback_mode
    0c05bc90 uiTestID
    0c05bc94 DDR_Regs
    0c05bc98 cycle_measure_overhead
    0c05bca0 start_time
    0c05bca8 i2cRegs
    0c05bcac I2C_speed_KHz
    0c05bcb0 platform_errno
    0c05bcb4 platform_init_return_code
    0c05bcc0 Osal_platformSpiCsExit
    0c05bcc4 Osal_platformSpiCsEnter
    0c05bcc8 Osal_platformMalloc
    0c05bcd0 Osal_platformFree
    0c05bce4 MulticoreBoot
    0c05bdc0 g_src_srio
    0c05be00 g_dst_srio
    0c05be40 g_length_srio
    0c05be44 g_flag_srio
    0c05be48 g_iZscan2Raster
    0c05be4c g_iRaster2Zscan
    0c05be50 g_iRaster2PixelX
    0c05be54 g_iRaster2PixelY
    0c05be58 g_iCUOrdermap
    0c05be5c g_iCUInverseOrdermap
    0c05be60 g_startMSMCAddress
    0c05be64 g_startHeapAddress
    0c05be68 g_startDataAddress
    0c05be6c g_startDDR3Address
    0c05be70 g_ddr3_share_addr
    0c05be74 uiUsedDescRegionNum
    0c05be78 uiInitialHostFdqNum
    0c05be7c uiUsedRxFlowNum
    0c05be80 uiDoorbell_TSC
    0c05be84 p_doorbrll
    0c05be88 srioSerdesRegs
    0c05bf20 packetBuffer_DDR_Size0
    0c05ff20 packetBuffer_DDR_Size1
    0c15ff20 packetBuffer_SL2_Size0
    0c161f20 packetBuffer_SL2_Size1
    0c1a1f20 packetBuffer_LL2_Size0
    0c1a3f20 packetBuffer_LL2_Size1
    0c1c3f80 hostDescriptor_DDR
    0c1c5380 hostDescriptor_LL2
    0c1c5d80 hostDescriptor_SL2
    0c1c6fe8 __TI_Handler_Table_Base
    0c1c6ff4 __TI_Handler_Table_Limit
    0c1c7034 __TI_CINIT_Base
    0c1c708c __TI_CINIT_Limit
    10800000 vectors
    10800200 _c_int00
    108002c0 _stack
    108082c0 __CIOBUF_
    108082c0 __TI_STACK_END
    b0000058 gDeviceNandBBlist
    b0001284 gDeviceNand
    b00012bc gDeviceNor
    b00012f4 gDeviceEeprom0
    b000132c gDeviceEeprom1
    b0001368 emac_port_mode
    ffffffff __TI_pprof_out_hndl
    ffffffff __TI_prof_data_size
    ffffffff __TI_prof_data_start
    ffffffff __binit__
    ffffffff __c_args__
    ffffffff binit
    UNDEFED __TI_INITARRAY_Base
    UNDEFED __TI_INITARRAY_Limit
    UNDEFED __TI_TLS_INIT_Base
    UNDEFED __TI_TLS_INIT_Limit

    [474 symbols]

  • Anqi Liu,

    你描述的现象比较少见,我想问下你的flash在自己的板子上是否做过在线读写测试

    可以参照TI PDK6678 里的 platform 例程 修改测试 。我们希望全部sector都能读写无误。至少满足烧写镜像大小的低地址区域应该如此。

    striker

  • striker

    感谢您的建议,今天测试了一下,确实在线调试也存在问题,不同的cmd映射时,程序可能跑不起来。看了一下是因为我的程序里面有一个自己配置的PLL函数,代码一直在那里等待,或者是程序在线load之后自己就run了,试问一下,这些问题对BOOT有哪些影响啊?

  • kloud,

    一个可能的原因是你的cmd文件里指定的L2SRAM 没有使用全局地址,如果是以0x008xxxxx 开始的L2地址是不能被Boot Rom识别的。

    全局地址示例:

    Core N 局部地址        0x00800000

    Core N 对应全局地址 0x1N800000

    striker

  • zhonghong zhang,

    影响就是 - - 在线卡在哪,boot起来后就卡在哪,在线死在哪,boot 起来后就死在哪。

    boot起来后一旦死了你都不知道是没boot起来还是程序跑飞了,所以验证在线测试的正确性尤为重要。

    其实细节不止于此,在多核带bios的工程中,我们甚至需要在代码里做一次多核同步。因为8个核并不是真正意义上的“同时”开始跑。

    有一个小技巧,在main函数前几行定义一个volatile int flag = 1;while(flag){};

    如果能boot起来,连上jtag,一定是停在那,这个时候在线设定flag = 0,程序就可以继续跑。这种方法可以判定是boot的问题还是代码的问题。别让一上电就跑飞了的代码让你误认为是boot的问题。

    希望对你能有帮助。

    striker

  • striker

    谢谢您不厌其烦给我的指导,也非常感谢您的小技巧,真的是获益颇深。

    zhonghong zhang

  • guohua wei,

    我没有做过严格的性能测试。即使是多核共享同一套代码,也和代码具体执行的情况有关系。应该不会比放在local L2 慢很多。

    但是可以肯定的是,即使存在竞争,也比放在DDR 外部存储要快的多。

    striker

  • fan li2,

    map文件看起来很正常。有两个问题,

    1. 你的代码几个核在访问DDR?能否大概描述下你的多核访问DDR的行为。

    2. 你在线多核调试这套代码有同样的问题吗

    striker