硬件启动方式:TMS320C6748+SPI NORFLASH ;
现有固件升级方式:现在采用的串口升级固件方式由于升级功能是固件中的一部分,每次升级都会将FLASH中的覆盖掉,如果在升级过程中掉电就存在需要连接仿真器才能升级的问题。如何实现二级Bootloader呢,每次上通过固化的Bootloader来判定是否升级,并将需要升级的application放在另外的一段flash地址中,防止对升级bootloader的覆盖。
《Using the TMS320C6748/C6746/C6742 Bootloader》一文中提到了用AISGen工具可以将多个application生成一个.bin文件,这个功能的意义何在?是为了解决二级Bootloader么?
Shine:
二次bootloader实现的功能如下,具体要自己写代码,我们没有例程可以参考。
1. 判断是否需要升级代码,如果需要升级,通过uart口从host端读取代码并烧写到SPI flash,烧写完成后从flash加载并运行代码。
2. 如果不需要升级,从spi flash加载代码并运行代码。二次bootloader代码烧写到SPI flash地址0, 应用代码烧写到其他固定地址。
请问哪里有提到"提到了用AISGen工具可以将多个application生成一个.bin文件"?
lingshan lan:
回复 Shine:
1.大概思路如下,建立两个工程,一个bootloader,一个application,两个工程分别用aisgen工具生成bin,bootloader下载到spiflash地址0,应用下载另外的地址,在bootloader跳转中是否还需要设置application的堆栈,复位向量?
直接在bootloader中实现把application搬运到ram中指定地址,直接跳转时是否可行,都是用Aisgen生成的bin
2.文档中提到多个程序可以指定入口地址,这个用处是啥?
Tony Tang:
lingshan lan现有固件升级方式:现在采用的串口升级固件方式由于升级功能是固件中的一部分,每次升级都会将FLASH中的覆盖掉,如果在升级过程中掉电就存在需要连接仿真器才能升级的问题。
你的这个串口升级工具是你自己修改过的吗?如果是,你可以在这个基础上修改成你需要的功能。
lingshan lan如何实现二级Bootloader呢,每次上通过固化的Bootloader来判定是否升级,并将需要升级的application放在另外的一段flash地址中,防止对升级bootloader的覆盖。
这需要你自己在二级boot中软件实现。
lingshan lan《Using the TMS320C6748/C6746/C6742 Bootloader》一文中提到了用AISGen工具可以将多个application生成一个.bin文件,这个功能的意义何在?是为了解决二级Bootloader么?
这个功能更实现不了你要的功能。这只是为了方便烧写,合成一个,只需要烧写一个bin文件就好了。
lingshan lan:
回复 Tony Tang:
我说一下思路,请教一下是否可以实现或者有没有漏掉的:
1.应用程序单独的工程,生成的.out文件用仿真器下载到ram中,在通过ram把这个导出来作为写入flash的应用程序文件(或者用ti官方的有个.out转hex的软件)。
2.bootloader单独的工程,用aisgen工具生成bin文件,在其中实现对应用程序的搬运到RAM中,实现跳转到RAM地址。
有几个问题:1.应用程序生成的方式可以不?2.两个工程的cmd有什么需要注意的?3.bootloader里面是否需要在跳转之前还要进行堆栈,中断等等的处理?
Tony Tang:
回复 lingshan lan:
其实你参考这个串口烧写工具包里的DSP的UBL就好了。
在安装目录下的工程:
OMAPL138\OMAP-L138_FlashAndBootUtils_2_40\OMAP-L138\CCS\UBL_DSP