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.

您好,问下关于DM6437 的flash启动问题

Other Parts Discussed in Thread: TMS320C6424

我现在想下载带dsp/bios的程序到flash进行开机启动,按照boards/dvdsk下面有个flashburns文件夹的一个flashing文档的步骤做,选择仿真器连接->下载FTBC->擦flash->下载(注:根据文档没有加载CMD文件)。然而发现dsp/bios的程序没有运行成功,但是不带bios的裸机程序按照上面的步骤可以成功,问题出在哪儿?请问有可行相关下载方法的文档提供么?感谢

  • 技术支持呢?就指导一下,通过什么样的方式可以flash启动,用你们提供的dvsdk/flashburns方式启动不了我的带bios内核的程序,这个程序用emulator都是可以跑的,谢谢

  • 你好,建议你在程序开头加上板子的初始化部分代码,试试看效果。

  • hi,Titan,我的工程是基于BIOS内核的

    代码我加了,就是现在我很模糊到底以什么样的方式把程序下载到flash。现在用的是参考TI提供的《creating a second bootloader for C6000》,但是没有效果(程序接仿真器时正常)。参照文档我的作法是这样的,1。在工程中加入boot.asm二次启动代码,修改工程cmd(为bootloader分配RAM段) .2。生成Out文件。3。编写convert.cmd利用Hex6x工具生成hex,然后flashburn烧写。然后结果不成功。我参照了成功的non-bios工程的map(hex6x工具生成一个.hex和一个.map)文件,发现二者主要区别在entry point 和BOOT TABLE下的run地址,成功的flashing例子run地址是IRAM,而我的自动生成map文件的run地址是DDR!由此我想到工程的BIOS配置,CCS3的TCF文件,发现在MEM的存储管理的bios code/bios data/complier 之类的都是指向DDR,我如何修改才能正确执行?

    可能字的有点多,但越详细越能帮助你为我解答问题,期待您的回复,非常感谢

  • 你好,在DSP/BIOS的TCF文件中加入:bios.MEM.USERCOMMANDFILE = 1;

    然后,在该工程文件下加入你自己的.CMD文件;

    在你的CMD文件中指定entry point 和BOOT TABLE的地址。

  • 我知道为什么将tcf里的mem->memory manage->compiler section 改成iram,不行了,会报错can't allocate .text, size 000168a0 (page 0) in IRAM,因为IRAM只有128K而 我的代码比128K要大,装不下,如何解决呢?

  • 非常感谢,但一点我不明白,entry point和BOOT TABLE地址如何定义呢,因为之前是hex6x工具自动生成的,现在自己定义在IRAM中?自定义?还有上面说到的memory manage中那些tab如bios code/bios data/complier section的选项如何做,load address在文档中说不使用了,因为hex6x会指定好外接flash的load地址

  • 恩,我建议先试试DSP/BIOS图像配置,mem->memory manage,你可以把大的数据段,放在DDR中,一些重要的数据放在IARM中。

  • 无论是bios或non-bios他们的map文件中entry point是不是都应该是iram的地址

  • 恩,是的,如果放在DDR中,还涉及到DDR初始化的问题。

  • 您好,我像你上面提到的将men.uercommand改成true,但是出现一系列的警告:

    warning: creating output section .bss without SECTIONS specification

    >> warning: creating output section .cinit without SECTIONS specification

    >> warning: creating output section .const without SECTIONS specification

    >> warning: creating output section .printf without SECTIONS specification

    >> warning: creating output section .far without SECTIONS specification

    >> warning: creating output section .switch without SECTIONS specification

    >> warning: creating output section .pinit without SECTIONS specification

    然后用hex6x.exe工具生成hex文件,出现warning,大体意思就是如.const section必须以4字节的整数倍,然后导致无法生成hex文件。

    其实这么和您说吧,我跑的不是自己的例程, 完全是你们提供的,主要是为了掌握如何在flash上运行bios内核的工程,我用的例程是DVSDK\dvsdk_1_01_00_15\psp_1_00_02_00\pspdrivers\system\dm6437\bios\dm6437_evm\src\video\sample\loopback,一直无法出来想要的结果,我在这个原有工程中加了boot.asm的二次搬移程序,在linker.cmd(还有一个cfg.cmd没做修改)加了bootloader的section指向iram0x1080 0000,其他的没有改,然后hex6x.exe生成hex文件,当然用了convert.cmd,这按照文档写的。就这些了,不知道你们是用的什么方法?问了这么多,很感谢您的回答!

  • 你好,将men.uercommand改成true,在图像配置下面,即如下图所示打钩操作:

    变灰色部分的数据均需要在用户的CMD文件中重新指定地址。。。

  • 我按照您说的改了下,

    SECTIONS{

    .bootld: > BOOT_RAM

    .text: > IRAM

    .switch:                     > DDR2

    .bss > DDR2

    .far > DDR2

    .cinit > DDR2

    .pinit > DDR2

    .const > DDR2

    .printf > DDR2

    .data > DDR2

    .cio > DDR2

    }

    哪怕我只改了.text的,也会出现

    "dm6437_evm_video_st_samplecfg.cmd", line 462: error: run placement fails for

      object ".LOG_system$buf", size 0x1000 (page 0).  Available ranges:

      IRAM         size: 0x20000      unused: 0x12c0       max hole: 0xec0  

    "dm6437_evm_video_st_samplecfg.cmd", line 465: error: run placement fails for

      object ".trace$buf", size 0x1000 (page 0).  Available ranges:

      IRAM         size: 0x20000      unused: 0x12c0       max hole: 0xec0

    这样的问题,我看了下载cfg.cmd中,有这么一段,我虽改了二者的大小,但是重新编译时,工程会自动将其改写为默认。。

    =========================================

    另外,您之前提到的DDR初始化得问题,我有两个想法:1。在二次bootloader的boot.asm中已经有对EMIF和PLL、DDR初始化得代码,但不排除有问题,我是从网上下的,对汇编不熟;2.如果我用hexAIS.exe这个工具也会自动调用6437.ini这个文件,而这个文件则包含一些初始化得代码,我估计不存在初始化得问题,附件中式我的boot.asm,非常感谢您的耐心回答,一直被这个flash拖着项目进度,也很着急

    boot.asm
  • 如果是DDR2初始化有问题的话,PLL和EMIF、DDR2初始化函数哪有呢,可以从GEL直接复制吗?毕竟GEL不和工程一起被下载

  • 请问你的问题解决了吗?

    我也遇到同样的问题,用的TMS320C6424,一个简单的点灯程序,如果不用bios的话就能烧写到flash并且自启动成功,但是如果带bios的话,用同样的代码烧到FLASH中,重新上电后就启动失败,请问是什么原因啊?