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.

[参考译文] CCS/TMS320C6748:链接器 cmd 文件中的 C6748存储器映射

Guru**** 2538950 points
Other Parts Discussed in Thread: TMS320C6748, SYSBIOS

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/828833/ccs-tms320c6748-c6748-memory-map-in-linker-cmd-file

器件型号:TMS320C6748
Thread 中讨论的其他器件: OMAPL138SYSBIOS

工具/软件:Code Composer Studio

我有一个 C6748定制板。 我们通过 USB OTG 接口提供 USB 记录功能(在 msc 主机模式下)。

使用 JTAG 进行仿真时、所有内容都运行良好、但会因刷写的目标而崩溃。

我注意到 cmd 文件中的内存映射可以解决我的问题。

--args=64
存储器

     FLASH_CS2    org=0x60000000 len=0x02000000 /* AEMIF CS2区域*/
     FLASH_boot   org=0x62000000 len=0x02000000 //* AEMIF CS3区域*/
     FLASH_org=0x64000000    len=0x02000000 //* AEMIF CS4区域*/
     SHRAM        org=0x66000000 len=0x02000000


部分


   a.aemif_mem:
   {   
   }> FLASH_boot、run_start (NANDStart)

   "CFG"> DDR_CFG

   "DDR"> DDR

   .bss       > SHRAM <--- 这会产生影响
   .text      > DDR  
   .stack     > DDR                            
   .cio       > DDR                            
   .const     > DDR                            
   .data      > DDR                            
   .switch    > DDR                            
   .sysmem    > DDR                            
   .far       > DDR                        
   .args      > DDR

   /* COFF 段*/
   .pinit     > DDR
   .cinit     > DDR

   .DDRRAM :
   {   
       。 += 0x07000000;
   }> DDR、type=DSECT、run_start (external_RAM_start)、run_end (external_RAM_end)



**如果我从段中删除.bss 宏,则至少它不会在刷写的目标中崩溃,但 USB 日志记录在仿真中不起作用

如果我向该段添加.bass、则 USB 日志记录在仿真中工作、但它在刷写目标中崩溃。

我犯了什么错误?

谢谢、

Dan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是我的实际存储器映射。

    -stack 0x2000
    堆0x1000

    --args=64
    存储器
    {     
         FLASH_CS2    org=0x60000000 len=0x02000000 /* AEMIF CS2区域*/
         FLASH_boot   org=0x62000000 len=0x02000000 //* AEMIF CS3区域*/
         FLASH_org=0x64000000    len=0x02000000 //* AEMIF CS4区域*/


    部分


       a.aemif_mem:
       {   
       }> FLASH_boot、run_start (NANDStart)

       "CFG"> DDR_CFG

       "DDR"> DDR

       .bss       > DDR
       .text      > DDR  
       .stack     > DDR                            
       .cio       > DDR                            
       .const     > DDR                            
       .data      > DDR                            
       .switch    > DDR                            
       .sysmem    > DDR                            
       .far       > DDR                        
       .args      > DDR

       /* COFF 段*/
       .pinit     > DDR
       .cinit     > DDR

       .DDRRAM :
       {   
           。 += 0x04000000;
       }> DDR、type=DSECT、run_start (external_RAM_start)、run_end (external_RAM_end)



  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是哪个处理器 SDK RTOS?

    此致、
    Yordan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它是一款基于 TMS320C6748的定制板、具有128 MB 的外部 DDR。

    当 USB_open 被命中时、它始终在闪存引导时崩溃。 但是、它在 JTAG 仿真模式下运行良好。 这是我们产品中主机模式下 USB 记录功能的一部分。

    如果我从代码中删除 USB_open(),则闪存启动时不会崩溃。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    使用 pdk_omapl138_1_0_8。

    编译器 TI v8.3.3

    XDC 3.51.1.18_CORE

    SYSBIOS 6.75.2.00

    定制平台:

    metaonly 模块平台继承 xdc.platform.IPlatform{

       配置 ti.platforms.generic.Platform.Instance CPU =
           ti.platforms.generic.Platform.create("CPU"、{
               时钟速率:     300.0、
               CatalogName:   "ti.catalog.c6000"、
               DeviceName:    "TMS320C6748"、
               定制内存映射:
              [
                   ["IRAM"、
                        {
                           名称:"IRAM"、
                           基地址:0x11800000、
                           Len:0x00040000、
                           太空:"代码/数据"、
                           访问:"rwx"、
                        }
                   ]、
                   ["IROM"、
                        {
                           名称:"irom"、
                           基地址:0x11700000、    
                           Len:0x00100000、    
                           太空:"代码/数据"、
                           访问:"Rx"、
                        }
                   ]、
                   ["L3_CBA_RAM"、
                        {
                           名称:"L3_CBA_RAM"、
                           基地址:0x8000000、    
                           Len:0x00020000、    
                           太空:"代码/数据"、
                           访问:"rwx"、
                        }
                   ]、
                   ["DDR"、
                        {
                           名称:"DDR"、
                           基地址:0xC0000000、    
                           Len:0x7FF33EC、    
                           太空:"代码/数据"、
                           访问:"rwx"、
                        }] ,
                   ["DDR_CFG"、
                        {
                           名称:"DDR_CFG"、
                           基地址:0xC7FF33EC、
                           Len:0xCC14、
                           太空:"代码/数据"、
                           访问:"rwx"、
                        }
                   ]、
              ]、
             L2模式:"0K"、
             L1PMode:"32K"、
             L1DMode:"32K"、

       });

    实例:

       覆盖配置字符串 codeMemory ="DDR";
       覆盖配置字符串 dataMemory ="DDR";
       覆盖配置字符串 stackMemory ="IRAM";

       配置字符串 l2Mode ="0k";
       配置字符串 l1PMode ="32k";
       配置字符串 l1DMode ="32k";

    定制

                   ]、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们的.out 文件大小约为4.7MB。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

    这听起来像是 AISgen 中未正确配置的内容(即 PSC 或 PINMUX 未配置用于 USB)、因此引导加载程序不会初始化之前在 GEL 文件中初始化的内容。  

    在您的器件无法引导后、我建议按照 OMAPL138/C6748 ROM 引导加载程序资源和常见问题 解答应用手册的第4节所述运行调试 GEL 文件、以确定 PSC 和 PLL 的状态。 您可以在此处共享输出。 请分享您使用的 GEL 文件以及您的 AISgen 设置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,pinmuxing 在 main()中作为 USB 初始化的一部分完成。

    空 Init_USB (空)

       uint16 i;

       //电路板解锁
       sysRegs->KICK0R = 0x83e70b13;//写入访问密钥0
       sysRegs->KICK1R = 0x95A4F1E0;//写入访问密钥1.

       //针对 USB 的 C6748 PINMUXING
       sysRegs->PINMUX9|=(0x1 <<4);//设置 bit4 Pinmux9供 USB 使用
       sysRegs->PINMUX9&= 0xFFFFFF7F; //清除位7 Pinmux9以供 USB 使用

       //重置 USB 控制器:
       usbRegs->ctrlr|= 0x00000001;

       //等待控制器完成复位。
       //完成后,将清除复位位位字段。
       while ((usbRegs->ctrlr& 0x1)=1);

       //复位:保持 PHY 处于复位状态
       sysRegs->CFGCHIP2 |= 0x00008000;//将 PHY 保持在复位状态

       //驱动复位几个时钟周期
       对于(i=0;i<50;i++);sysRegs->CFGCHIP2&= 0xFFFFFFF;//从复位状态释放 PHY

       //使用所需的操作配置 PHY

       // OTGMODE
       sysRegs->CFGCHIP2&= 0xFFFFFFF;// 00=>不要覆盖 PHY 值

       // PHYPWDN
       sysRegs->CFGCHIP2&= 0xFFFFFF;// 1/0=>电源关闭/错误操作

       // OTGPWRDN
       sysRegs->CFGCHIP2&= 0xFFFFFF;// 1/0=>电源关闭/错误操作

       // DATAPOL
       sysRegs->CFGCHIP2|= 0x00000100;// 1/0 =>正常/反向

       // SESNDEN
       sysRegs->CFGCHIP2|= 0x00000020;// 1/0 => normalOperation/SessionEnd

       // VBDTCTEN
       sysRegs->CFGCHIP2|= 0x00000010;// 1/0 => VBUS 比较器启用/禁用

       //配置 PHY PLL 使用并选择源

       // REF_FREQ[3:0]
       sysRegs->CFGCHIP2|= 0x00000002;// 0010b=>24MHzInputSource
    (笑声)

    (笑声)

    (笑声)

    GEL:我使用的是 C6748_LCDK.gel 文件、但未进行任何修改。 我应该修改 GEL 文件吗?

    AISgen:

    [常规选项卡]

    器件类型:d800k008 dsp

    引导模式:NAND 闪存

    时钟源:24MHz 时的晶体

    选中复选框:配置 PLL0、配置 PSC、配置 DDR

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

    如果您的应用程序在未修改的情况下使用 LCDK GEL 文件运行正常、则应该可以。 如果您在应用中进行引脚多路复用、我们可以排除这种情况。  

    器件引导后、您能否运行随附的调试 GEL 文件并在此处共享输出?

    e2e.ti.com/.../OMAPL1x_5F00_debug_5F00_v9.zip

    e2e.ti.com/.../OMAPL1x_5F00_debug_5F00_v9_5F00_CCSv6.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尝试您的 GEL 文件。

    不确定这对调试是否有用、但我看到下面添加了"-mem_model:const=data -mem_model:data=far"选项进行编译时:

    说明   资源   路径   位置   类型
    "="">processors.wiki.ti.com/.../17003"> QueueDescriptor.c:从函数"ti_UIA_RUNTIME_QueueDescriptor_addToList___E"重新定位到符号"ti_UIA_RUNTIME_QueueDescriptor_gPtToFirstDescriptor"溢出;21位重定位地址0x115d5c 太大、无法在15位无符号字段中进行编码(类型='SBR_C6000_gDescriptor_g\b\UIA_release = ti.uia.runtime.ae674)\UIa\UIa\U30\UIa\UIa\U30\UIa\UIa\U30_lib\UIa\UIa\U30\UIa\U11\ "、OFFSET = 0x0000005c、SECTION =".text:ti_UIA_Runtime_QueueDescriptor_addToList___E")   PDI_Razor      line 111   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> QueueDescriptor.c:从函数"ti_UIA_RUNTIME_QueueDescriptor_addToList___E"重新定位到符号"ti_UIA_RUNTIME_QueueDescriptor_gPtToFirstDescriptor"溢出;21位重定位地址0x115d5c 太大、无法在15位无符号字段中进行编码(类型='SBR_C6000_gDescriptor_g\b\UIA_release = ti.uia.runtime.ae674)\UIa\UIa\U30\UIa\UIa\U30\UIa\UIa\U30_lib\UIa\UIa\U30\UIa\U11\ "、OFFSET = 0x0000006c、SECTION =".text:ti_UIA_Runtime_QueueDescriptor_addToList___E")   PDI_Razor      line 112   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> QueueDescriptor.c:从函数"ti_UIA_RUNTIME_QueueDescriptor_addToList___E"重定位到符号"ti_UIA_RUNTIME_QueueCount"溢出;21位重定位地址0x115d5d 太大、无法在15位无符号字段中进行编码(类型='R_C6000_gUpdateCount');\ti_runtime = 0x115d5d5d5d\UIA_unsigned (类型= ti.uia.runtime.ae674)\UIA_015\UIA_30\UIA_unsignal\UIA\UIa\UIa\UIa\UIa\UIa\U30 "、OFFSET = 0x000000bc、SECTION =".text:ti_UIA_Runtime_QueueDescriptor_addToList___E")   PDI_Razor      line 135   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> QueueDescriptor.c:从函数"ti_UIA_RUNTIME_QueueDescriptor_addToList___E"重定位到符号"ti_UIA_RUNTIME_QueueCount"溢出;21位重定位地址0x115d5d 太大、无法在15位无符号字段中进行编码(类型='R_C6000_gUpdateCount');\ti_runtime = 0x115d5d5d5d\UIA_unsigned (类型= ti.uia.runtime.ae674)\UIA_015\UIA_30\UIA_unsignal\UIA\UIa\UIa\UIa\UIa\UIa\U30 "、OFFSET = 0x000000d0、SECTION =".text:ti_UIA_Runtime_QueueDescriptor_addToList___E")   PDI_Razor      line 135   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> src="/FATFS_drv.c:从函数"FATFS_Close"重新定位到符号"FATFS_volumeStatus$0"溢出;21位重定位地址0x115d5b 太大、无法在15位无符号字段中进行编码(类型='R_C6000_SBR_U15_W'(13)、文件="fatfs\g\fatfs\d1.674\g\gfatfs\d1.dk\g\gfs\dma1.dma1.dfs\dfs\d1.dma\g\gfs\dfs\dfs\dfs\dfs\d1.364\g\g\g. "、OFFSET = 0x00000120、SECTION =".text:FATFS_CLOSE")   PDI_Razor      line 149   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> src="FATFS_drv.c:从函数"FATFS_diskInitialize"重新定位到符号"FATFS_volumeStatus$0"溢出;21位重定位地址0x115d5b 太大、无法在15位无符号字段中进行编码(类型='R_C6000_SBR_U15_W'(13)、文件="fatfs\d1.674\ti\gs\datfs\datfs\d1.dma\g\fs\dma1.dma\g\gfs\dma1.dma\g.microcontrollers\g\g\fs\dfs\d1.d1.dfs\dfs\d1.d1. "、OFFSET = 0x000000EC、SECTION =".text:FATFS_diskInitializ$0")   PDI_Razor      line 425   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> src="FATFS_drv.c:从函数"FATFS_init"重新定位到符号"FATFS_COUNT$0"溢出;21位重定位地址0x115d674太大、无法在15位无符号字段中进行编码(类型='R_C6000_SBR_U15_W'(13)、文件="G:\fatfs\d1\fatfs\dk\gfs\gfs\gfs\moti_1.d1.dk\gs\gfs\gfs\gfs\gfs\g1.moti\fs\gfs\d1.d1.moti\fs\d1.moti\ "、OFFSET = 0x00000000、SECTION =".text:FATFS_INIT")   PDI_Razor      line 191   C/C++ problem
    "="">processors.wiki.ti.com/.../17003"> src="FATFS_drv.c:从函数"FATFS_init"重新定位到符号"FATFS_COUNT$0"溢出;21位重定位地址0x115d674太大、无法在15位无符号字段中进行编码(类型='R_C6000_SBR_U15_W'(13)、文件="G:\fatfs\d1\fatfs\dk\gfs\gfs\gfs\moti_1.d1.dk\gs\gfs\gfs\gfs\gfs\g1.moti\fs\gfs\d1.d1.moti\fs\d1.moti\ "、OFFSET = 0x0000002c、SECTION =".text:FATFS_INIT")   PDI_Razor      line 201   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> src="FATFS_drv.c:从函数"FATFS_init"重新定位到符号"FATFS_COUNT$0"溢出;21位重定位地址0x115d674太大、无法在15位无符号字段中进行编码(类型='R_C6000_SBR_U15_W'(13)、文件="G:\fatfs\d1\fatfs\dk\gfs\gfs\gfs\moti_1.d1.dk\gs\gfs\gfs\gfs\gfs\g1.moti\fs\gfs\d1.d1.moti\fs\d1.moti\ "、OFFSET = 0x00000084、SECTION =".text:FATFS_INIT")   PDI_Razor      line 201   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> src="/FATFS_drv.c:从函数"FATFS_open"重新定位到符号"FATFS_volumeStatus$0"溢出;21位重定位地址0x115d5b 太大、无法在15位无符号字段中进行编码(类型='R_C6000_SBR_U15_W'(13)、文件="fatfs\g\fatfs\d1.674\g\gfatfs\d1.dk\g\gfs\dma1.dma1.dfs\dfs\d1.dma\g\gfs\dfs\dfs\dfs\dfs\d1.364\g\g\g. "、OFFSET = 0x0000034c、SECTION =".text:FATFS_OPEN")   PDI_Razor      line 149   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> src="/FATFS_drv.c:从函数"FATFS_open"重新定位到符号"FATFS_volumeStatus$0"溢出;21位重定位地址0x115d5b 太大、无法在15位无符号字段中进行编码(类型='R_C6000_SBR_U15_W'(13)、文件="fatfs\g\fatfs\d1.674\g\gfatfs\d1.dk\g\gfs\dma1.dma1.dfs\dfs\d1.dma\g\gfs\dfs\dfs\dfs\dfs\d1.364\g\g\g. "、OFFSET = 0x0000035c、SECTION =".text:FATFS_OPEN")   PDI_Razor      line 312   C/C++ problem
    "="">processors.wiki.ti.com/.../17003"> src/tirtos/Hwip_tirtos.c:从函数"Hwip_create"重定位到符号"gOsalHwiAlloccn"溢出;21位重定位地址0x115d50太大、无法在15位无符号字段中进行编码(类型='R_C6000_SBR_U15_W')(\tisoti_reease\red13\ti_prelease\ree.d674\tos\tos\tos\tosr136\ti_pru136\ti_pru_pru_k\tosrinu_pru1.364\tos\tos\tos\ree. "、OFFSET = 0x0000006c、SECTION =".text:Hwip_create")   PDI_Razor      line 152   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> src/tirtos/Hwip_tirtos.c:从函数"Hwip_create"重定位到符号"gOsalHwiAlloccn"溢出;21位重定位地址0x115d50太大、无法在15位无符号字段中进行编码(类型='R_C6000_SBR_U15_W')(\tisoti_reease\red13\ti_prelease\ree.d674\tos\tos\tos\tosr136\ti_pru136\ti_pru_pru_k\tosrinu_pru1.364\tos\tos\tos\ree. "、OFFSET = 0x000000c4、SECTION =".text:Hwip_create")   PDI_Razor      line 158   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> src/tirtos/Hwip_tirtos.c:从函数"Hwip_create"重定位到符号"gOsalHwippeak"溢出;21位重定位地址0x115d51太大、无法在15位无符号字段中进行编码(类型='R_C6000_SBR_U15_W'(13)、文件0x115d51太大、无法在15位无符号字段中进行编码(类型='r_pdk\tose\r)\reease\tosr1346\tos\rema\rema1.pru_pru_d\tosrin\tosr136\tos\tos\ "、OFFSET = 0x00000060、SECTION =".text:Hwip_create")   PDI_Razor      line 152   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> src/tirtos/Hwip_tirtos.c:从函数"Hwip_create"重定位到符号"gOsalHwippeak"溢出;21位重定位地址0x115d51太大、无法在15位无符号字段中进行编码(类型='R_C6000_SBR_U15_W'(13)、文件0x115d51太大、无法在15位无符号字段中进行编码(类型='r_pdk\tose\r)\reease\tosr1346\tos\rema\rema1.pru_pru_d\tosrin\tosr136\tos\tos\ "、OFFSET = 0x000000cc、SECTION =".text:Hwip_create")   PDI_Razor      line 152   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> src/tirtos/SemaphoreP_tirtos.c:从函数"SemaphoreP_CREATE"重定位到符号"gOsalSemAlloccn"溢出;21位重定位地址0x115d4c 太大、无法在15位无符号字段中进行编码(type ='R_C6000_SBR_U15_U15_pdk\tisoti\r)、"prelease8\reat_k_moti\ree.1346\tosr_pru136\tose\pru_k_moti\tosr136\tose\tosr138.moti_k_pru_mos\r \r \ "、OFFSET = 0x00000074、SECTION =".text:SemaphoreP_create")   PDI_Razor      line 108   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> src/tirtos/SemaphoreP_tirtos.c:从函数"SemaphoreP_CREATE"重定位到符号"gOsalSemAlloccn"溢出;21位重定位地址0x115d4c 太大、无法在15位无符号字段中进行编码(type ='R_C6000_SBR_U15_U15_pdk\tisoti\r)、"prelease8\reat_k_moti\ree.1346\tosr_pru136\tose\pru_k_moti\tosr136\tose\tosr138.moti_k_pru_mos\r \r \ "、OFFSET = 0x00000104、SECTION =".text:SemaphoreP_create")   PDI_Razor      line 119   C/C++ Problem
    "="">processors.wiki.ti.com/.../17003"> src/tirtos/SemaphoreP_tirtos.c:从函数"SemaphoreP_create"重定位到符号"gOsalSempeak"溢出;21位重定位地址0x115d4d 太大、无法在15位无符号字段中进行编码(类型='R_C6000_SBR_U15_W')(\tisoti_reease0\prele8\d136\tose\pru_k\tose8\pru_pruati\ree.136\tose\pru_k\ree.136\tose\pru_pru_pru_d\pru_d\ree. "、OFFSET = 0x00000040、SECTION =".text:SemaphoreP_create")   PDI_Razor      line 113   C/C++ Problem

    **但是**,闪存引导在 USB 不工作时工作正常。 如果我选择"-mem_model:const=data --mem_model:data=far_aggregates、则没有警告消息、但闪存启动崩溃。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    C674x_0:GEL 输出:
    ----------------------
    C674x_0:GEL 输出:|            器件信息           |
    C674x_0:GEL 输出:-------------------------------------------------------
    C674x_0:GEL 输出:DEV_INFO_00 = 0x1B7D102F
    C674x_0:GEL 输出:DEV_INFO_01 = 0x00000000
    C674x_0:GEL 输出:DEV_INFO_02 = 0x00000010
    C674x_0:GEL 输出:DEV_INFO_03 = 0x00000005
    C674x_0:GEL 输出:DEV_INFO_04 = 0x00000000
    C674x_0:GEL 输出:DEV_INFO_05 = 0x000003E0
    C674x_0:GEL 输出:DEV_INFO_06 = 0x00000080
    C674x_0:GEL 输出:DEV_INFO_07-DEV_INFO_08-DEV_INFO_09-DEV_INFO_10-DEV_INFO_11-DEV_INFO_12 = 0-0-4519626-7-37-17
    C674x_0:GEL 输出:DEV_INFO_13、DEV_INFO_14、DEV_INFO_15、DEV_INFO_16 = 5、0、6795
    C674x_0:GEL 输出:---
    C674x_0:GEL 输出:DEV_INFO_17 = 0x00030003
    C674x_0:GEL 输出:DEV_INFO_18 = 0x00000000
    C674x_0:GEL 输出:DEV_INFO_19 =C674x_0:GEL 输出:0C674x_0:GEL 输出:0C674x_0:GEL 输出:0C674x_0:GEL 输出:0C674x_0:GEL 输出:0C674x_0:GEL 输出:0C674x_0:
    C674x_0:GEL 输出:---
    C674x_0:GEL 输出:DEV_INFO_20 = 0x303864
    C674x_0:GEL 输出:DEV_INFO_21 = 0x3830306B
    C674x_0:GEL 输出:DEV_INFO_22 = 0x00000000
    C674x_0:GEL 输出:DEV_INFO_23 = 0x00000000
    C674x_0:GEL 输出:---
    C674x_0:GEL 输出:DEV_INFO_24 = 0x07011025
    C674x_0:GEL 输出:DEV_INFO_25 = 0x0044F6CA
    C674x_0:GEL 输出:DEV_INFO_06 = 0x00000080
    C674x_0:GEL 输出:DEV_INFO_26 = 0x35160005
    C674x_0:GEL 输出:

    C674x_0:GEL 输出:-------------------------------------------------------
    C674x_0:GEL 输出:|              引导 ROM 信息               |
    C674x_0:GEL 输出:-------------------------------------------------------
    C674x_0:GEL 输出:ROM ID:d800k008
    C674x_0:GEL 输出:器件修订版本2.1
    C674x_0:GEL 输出:引导引脚:16
    C674x_0:GEL 输出:引导模式:NAND 16
    C674x_0:GEL 输出:
    ROM 状态代码:0x00000000
    说明:C674x_0:GEL 输出:无错误
    C674x_0:GEL 输出:
    程序计数器(PC)= 0xC0C9CA04
    C674x_0:GEL 输出:
    C674x_0:GEL 输出:-------------------------------------------------------
    C674x_0:GEL 输出:|             时钟信息            |
    C674x_0:GEL 输出:-------------------------------------------------------
    C674x_0:GEL 输出:
    C674x_0:GEL 输出:配置为利用晶体的 PLL。
    C674x_0:GEL 输出:ASYNC3 = PLL0_SYSCLK2
    C674x_0:GEL 输出:
    C674x_0:GEL 输出:注意: 以下 PLL 部分中的所有时钟频率都是基于的
    C674x_0:GEL 输出:关闭 OSCIN = 24MHz。  如果该值与您的硬件不匹配
    C674x_0:GEL 输出:您应该更改 GEL 文件顶部的#define 并将其保存、
    C674x_0:GEL 输出:然后重新加载。
    C674x_0:GEL 输出:
    C674x_0:GEL 输出:-------------------------------------------------------
    C674x_0:GEL 输出:|             PLL0信息            |
    C674x_0:GEL 输出:-------------------------------------------------------
    C674x_0:GEL 输出:
    C674x_0:GEL 输出:PLL0_SYSCLK1 = 300MHz
    C674x_0:GEL 输出:PLL0_SYSCLK2 = 150MHz
    C674x_0:GEL 输出:PLL0_SYSCLK3 = 25MHz
    C674x_0:GEL 输出:PLL0_SYSCLK4 = 75MHz
    C674x_0:GEL 输出:PLL0_SYSCLK5 = 100MHz
    C674x_0:GEL 输出:PLL0_SYSCLK6 = 300MHz
    C674x_0:GEL 输出:PLL0_SYSCLK7 = 50MHz
    C674x_0:GEL 输出:
    C674x_0:GEL 输出:-------------------------------------------------------
    C674x_0:GEL 输出:|             PLL1信息            |
    C674x_0:GEL 输出:-------------------------------------------------------
    C674x_0:GEL 输出:
    C674x_0:GEL 输出:PLL1_SYSCLK1 = 300MHz
    C674x_0:GEL 输出:PLL1_SYSCLK2 = 150MHz
    C674x_0:GEL 输出:PLL1_SYSCLK3 = 100MHz
    C674x_0:GEL 输出:
    C674x_0:GEL 输出:-------------------------------------------------------
    C674x_0:GEL 输出:|             PSC0信息            |
    C674x_0:GEL 输出:-------------------------------------------------------
    C674x_0:GEL 输出:
    C674x_0:GEL 输出:状态解码器:
    C674x_0:GEL 输出: 0 = SwRstDisable (复位有效、时钟关闭)
    C674x_0:GEL 输出: 1 = SyncReset (已连接复位、时钟打开)
    C674x_0:GEL 输出: 2 =禁用(复位取消置位、时钟关闭)
    C674x_0:GEL 输出: 3 =使能(复位取消置位、时钟开启)
    C674x_0:GEL 输出:>3 =正在进行转换
    C674x_0:GEL 输出:
    C674x_0:GEL 输出:模块0:   EDMA3CC (0)       状态= 3
    C674x_0:GEL 输出:模块1:   EDMA3 TC0         状态= 3
    C674x_0:GEL 输出:模块2:   EDMA3 TC1         状态= 3
    C674x_0:GEL 输出:模块3:   EMIFA (BR7)       状态= 3
    C674x_0:GEL 输出:模块4:   SPI 0             状态= 3
    C674x_0:GEL 输出:模块5:   MMC/SD 0          状态= 3
    C674x_0:GEL 输出:模块6:   AINTC             状态= 0
    C674x_0:GEL 输出:模块7:   ARM RAM/ROM       状态= 3
    C674x_0:GEL 输出:模块9:   UART 0            状态= 3
    C674x_0:GEL 输出:模块10:   SCR 0 (br0/1/2/8) 状态= 3
    C674x_0:GEL 输出:模块11:   SCR 1 (BR4)       状态= 3
    C674x_0:GEL 输出:模块12:   SCR 2 (BR3/5/6)   状态= 3
    C674x_0:GEL 输出:模块13:   PRUSS             状态= 0
    C674x_0:GEL 输出:模块14:   ARM               状态= 0
    C674x_0:GEL 输出:模块15:   DSP               状态= 3
    C674x_0:GEL 输出:
    C674x_0:GEL 输出:-------------------------------------------------------
    C674x_0:GEL 输出:|             PSC1信息            |
    C674x_0:GEL 输出:-------------------------------------------------------
    C674x_0:GEL 输出:
    C674x_0:GEL 输出:状态解码器:
    C674x_0:GEL 输出: 0 = SwRstDisable (复位有效、时钟关闭)
    C674x_0:GEL 输出: 1 = SyncReset (已连接复位、时钟打开)
    C674x_0:GEL 输出: 2 =禁用(复位取消置位、时钟关闭)
    C674x_0:GEL 输出: 3 =使能(复位取消置位、时钟开启)
    C674x_0:GEL 输出:>3 =正在进行转换
    C674x_0:GEL 输出:
    C674x_0:GEL 输出:模块0:   EDMA3CC (1)       状态= 3
    C674x_0:GEL 输出:模块1:   USB0 (2.0)        状态= 3
    C674x_0:GEL 输出:模块2:   USB1 (1.1)        状态= 3
    C674x_0:GEL 输出:模块3:   GPIO              状态= 3
    C674x_0:GEL 输出:模块4:   UHPI              状态= 3
    C674x_0:GEL 输出:模块5:   EMAC              状态= 3
    C674x_0:GEL 输出:模块6:   DDR2和 SCR F3   状态= 3
    C674x_0:GEL 输出:模块7:   McASP0 + FIFO     状态= 3
    C674x_0:GEL 输出:模块8:   SATA              状态= 3
    C674x_0:GEL 输出:模块9:   VPIF              状态= 3
    C674x_0:GEL 输出:模块10:   SPI 1             状态= 3
    C674x_0:GEL 输出:模块11:   I2C 1             状态= 3
    C674x_0:GEL 输出:模块12:   UART 1            状态= 3
    C674x_0:GEL 输出:模块13:   UART 2            状态= 3
    C674x_0:GEL 输出:模块14:   McBSP0 + FIFO     状态= 3
    C674x_0:GEL 输出:模块15:   McBSP1 + FIFO     状态= 3
    C674x_0:GEL 输出:模块16:   LCDC              状态= 3
    C674x_0:GEL 输出:模块17:   eHRPWM (全部)      状态= 3
    C674x_0:GEL 输出:模块18:   MMC/SD 1          状态= 3
    C674x_0:GEL 输出:模块19:   upp               状态= 3
    C674x_0:GEL 输出:模块20:   ECAP (全部)        状态= 3
    C674x_0:GEL 输出:模块21:   EDMA3 TC2         状态= 3
    C674x_0:GEL 输出:模块24:   SCR-F0 BR-F0      状态= 3
    C674x_0:GEL 输出:模块25:   SCR-F1 BR-F1      STATE = 3
    C674x_0:GEL 输出:模块26:   SCR-F2 BR-F2      状态= 3
    C674x_0:GEL 输出:模块27:   SCR-F6 BR-F3      状态= 3
    C674x_0:GEL 输出:模块28:   SCR-F7 BR-F4      STATE = 3
    C674x_0:GEL 输出:模块29:   SCR-F8 BR-F5      状态= 3
    C674x_0:GEL 输出:模块30:   BR-F7 (DDR 控制器) 状态= 3
    C674x_0:GEL 输出:模块31:   L3 RAM、SCR-F4、BR-F6状态= 3

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

    感谢您的更新。 我们将对此进行研究并返回给您。

    同时、您能否查看此用于 LCDK 的 AISgen 配置文件是否适合您?

    e2e.ti.com/.../LCDK_5F00_AISGen_5F00_Config.cfg

    此外、您能否确认在使用引导加载程序(而不是 CCS)引导器件后运行了调试 GEL 文件?

    此致、
    Sahin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel:

    您能不能指出您在哪里获得了链接器命令文件。 此器件上的 SHRAM 或片上 RAM 位于0x80000000、而不是0x66000000、这是为 EMIFA CS5异步存储器接口的直接寻址保留的地址。 您的设计是否使用连接到 EMIFA 的 SDRAM?  您是否还可以指示应用程序是直接从 ROM 引导、还是使用辅助引导加载程序(SBL)进行两阶段引导

    请注意、从 NAND 引导和使用 GEL 文件进行调试时完成的初始化是不同的。 调试 GEL 设置时、器件上的时钟以及 DDR 和 PSC 会将内核置于干净状态。 在 ROM 引导生成器中、引导映像的 AIS 配置和引导介质会引导 ROM 代码初始化器件时钟、pinmux、PSC 和存储器接口。 您可以在 JTAG 工作设置以及应用程序失败时运行调试 GEL 脚本、并在两个设置中比较系统状态。 请注意、在调试引导方案时、删除除调试 GEL 之外的任何其他 GEL、以防止冲突。

    此处介绍了引导调试技巧:

    http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_Foundational_Components.html#software-debug-steps

    另一个可能有用的实验是检查将.bss 重新放置到片上 SHRAM 是否会使您的应用正常工作。 此外、请描述 USB 模块是否由外部计时。  

    此致、

    Rahul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我实际上怀疑 TI 的 USB 驱动程序。

    extern const USB_Config USB_config[];

    USB_handle open_usb (unsigned int 索引、USB_Params *参数)

       USB_Handle        句柄;
       Handle =(USB_Handle)&(USB_CONFIG[index]);

       返回(handle->fxnTablePtr ->openFxn (handle、params));<--- 从闪存启动时崩溃。


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel:

    感谢 root 用户将此问题发送到代码中看似失败的特定区域。 您可以在  pdk_omapl138_1_0_xx\packages/ti\drv\usb\src\musb 的文件中的 USB_open_musb 处设置断点、以进一步缩小此范围。 它最终将调用 以下任一函数、这些函数将提供 USB 时钟  

    • 静态空 setupMusbDevMsc (USB_Params*参数);
    • 静态空 setupMusbHostMsc (USB_Params*参数);
    • 静态空 setupMusbDevAc (USB_Params* params);

    该器件上的 USB2.0使用 SYSCLK2计时、而 USB1.1使用外部时钟计时。 AISGen 中是否有任何与 GEL 文件中的设置方式不同的时钟配置。

    此致、

    Rahul