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.

TMS320C6748 二次BootLoader如何实现?

Other Parts Discussed in Thread: TMS320C6748, OMAP-L138

硬件启动方式:TMS320C6748+SPI NORFLASH ;

现有固件升级方式:现在采用的串口升级固件方式由于升级功能是固件中的一部分,每次升级都会将FLASH中的覆盖掉,如果在升级过程中掉电就存在需要连接仿真器才能升级的问题。如何实现二级Bootloader呢,每次上通过固化的Bootloader来判定是否升级,并将需要升级的application放在另外的一段flash地址中,防止对升级bootloader的覆盖。

《Using the TMS320C6748/C6746/C6742 Bootloader》一文中提到了用AISGen工具可以将多个application生成一个.bin文件,这个功能的意义何在?是为了解决二级Bootloader么?

  • 二次bootloader实现的功能如下,具体要自己写代码,我们没有例程可以参考。

    1. 判断是否需要升级代码,如果需要升级,通过uart口从host端读取代码并烧写到SPI flash,烧写完成后从flash加载并运行代码。
    2. 如果不需要升级,从spi flash加载代码并运行代码。

    二次bootloader代码烧写到SPI flash地址0, 应用代码烧写到其他固定地址。

    请问哪里有提到"提到了用AISGen工具可以将多个application生成一个.bin文件"?
  • 1.大概思路如下,建立两个工程,一个bootloader,一个application,两个工程分别用aisgen工具生成bin,bootloader下载到spiflash地址0,应用下载另外的地址,在bootloader跳转中是否还需要设置application的堆栈,复位向量?

    直接在bootloader中实现把application搬运到ram中指定地址,直接跳转时是否可行,都是用Aisgen生成的bin

    2.文档中提到多个程序可以指定入口地址,这个用处是啥?

  • lingshan lan 说:
    现有固件升级方式:现在采用的串口升级固件方式由于升级功能是固件中的一部分,每次升级都会将FLASH中的覆盖掉,如果在升级过程中掉电就存在需要连接仿真器才能升级的问题。

    你的这个串口升级工具是你自己修改过的吗?如果是,你可以在这个基础上修改成你需要的功能。

    lingshan lan 说:
    如何实现二级Bootloader呢,每次上通过固化的Bootloader来判定是否升级,并将需要升级的application放在另外的一段flash地址中,防止对升级bootloader的覆盖。

    这需要你自己在二级boot中软件实现。

    lingshan lan 说:
    《Using the TMS320C6748/C6746/C6742 Bootloader》一文中提到了用AISGen工具可以将多个application生成一个.bin文件,这个功能的意义何在?是为了解决二级Bootloader么?

    这个功能更实现不了你要的功能。这只是为了方便烧写,合成一个,只需要烧写一个bin文件就好了。

  • 我说一下思路,请教一下是否可以实现或者有没有漏掉的:

    1.应用程序单独的工程,生成的.out文件用仿真器下载到ram中,在通过ram把这个导出来作为写入flash的应用程序文件(或者用ti官方的有个.out转hex的软件)。

    2.bootloader单独的工程,用aisgen工具生成bin文件,在其中实现对应用程序的搬运到RAM中,实现跳转到RAM地址。

    有几个问题:1.应用程序生成的方式可以不?2.两个工程的cmd有什么需要注意的?3.bootloader里面是否需要在跳转之前还要进行堆栈,中断等等的处理?

  • lingshan lan 说:
    1.应用程序生成的方式可以不

    可以,一般用hex工具转成boot table格式的bin文件,这样格式简单方便。

    lingshan lan 说:
    2.两个工程的cmd有什么需要注意的?

    只是初始化段不要重叠即可,比如应用工作的.bss这样未初始化段可以与二级boot的代码段重叠。

    lingshan lan 说:
    3.bootloader里面是否需要在跳转之前还要进行堆栈,中断等等的处理?

    不需要,二个工程是完全独立的,是由各自的_c_int00重新初始化堆栈等这些C环境初始化。

  • 其实你参考这个串口烧写工具包里的DSP的UBL就好了。

    在安装目录下的工程:

    OMAPL138\OMAP-L138_FlashAndBootUtils_2_40\OMAP-L138\CCS\UBL_DSP