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.

6746的NOR FLASH的bootload问题

Other Parts Discussed in Thread: OMAP-L138

目前在做6713到6746的程序移植,关于二级bootload想要咨询,我们使用的是NOR FLASH的boot方式,6746介绍的NOR FLASH的boot模式中有一种是AIS方式,想要咨询下面几个问题:

1)NOR FLASH BOOT有三种模式,需要通过设置The NOR boot configuration word register中的METHOD段来确定到底是使用NOR FLASH中的哪一种,从数据手册上看见:

For this boot mode, the bootloader configures EMIFA for 8-bit access and reads the first word from the NOR Flash. This first word indicates if the NOR Flash should be accessed in 16-bit or 8-bit mode, as well as which boot method to be used.

感觉这个NOR boot configuration word register是在NOR FLASH的第一个字里,这样理解对吗?如果是对的,那么这个初始是怎么写进NOR FLASH中的?

2)使用AIS工具来实现boot,是否只需要把编译完成的目标代码使用AIS工具包装一下,就变成可以直接烧写的二进制文件了?

3)以前编写6713的二级bootload代码时,需要指定把代码从NOR FLASH搬移到哪个地址,使用AIS工具好像没有地方设置这个目标地址,那么我怎么指定把NOR FLASH中的代码搬移到L2 ram或者是搬移到片外的DDR中?

  • xiaoan li 说:

    1)NOR FLASH BOOT有三种模式,需要通过设置The NOR boot configuration word register中的METHOD段来确定到底是使用NOR FLASH中的哪一种,从数据手册上看见:

    For this boot mode, the bootloader configures EMIFA for 8-bit access and reads the first word from the NOR Flash. This first word indicates if the NOR Flash should be accessed in 16-bit or 8-bit mode, as well as which boot method to be used.

    感觉这个NOR boot configuration word register是在NOR FLASH的第一个字里,这样理解对吗?如果是对的,那么这个初始是怎么写进NOR FLASH中的?

    [TT] 你的理解是对的,工具AISGEN已经将这个字放在AIS文件头了。如果你不是用AIS模式,则在写flash开始时写入就好了。

    2)使用AIS工具来实现boot,是否只需要把编译完成的目标代码使用AIS工具包装一下,就变成可以直接烧写的二进制文件了?

    [TT] 是的。这种方式简单方便,可以在AIS文件里加入芯片初始化配置,没有代码大小限制,可以直接boot到DDR。

    3)以前编写6713的二级bootload代码时,需要指定把代码从NOR FLASH搬移到哪个地址,使用AIS工具好像没有地方设置这个目标地址,那么我怎么指定把NOR FLASH中的代码搬移到L2 ram或者是搬移到片外的DDR中?

    [TT]C6713 NOR boot是boot到片上内存,且规定只能从片上内存开始处运行,大小有限制,boot的格式是内存image,简单说就是内存的拷贝,所以这个image是没有格式的。而AIS里数据的组织方式类似于boot table,section的地址,长度信息都从.out里提取出来放在AIS文件里(源头是在cmd文件里分配的),ROM bootloader根据这些信息将之搬到相应的地址去。而C6713的image里是没有这些信息的。这一块的区别很大。legacy模式类似于C6713的,只是在flash的首地址加了一个配置字。

  • 谢谢您的回复,关于6746的NOR BOOT模式还有几个相关问题咨询您:

    1)如果使用AIS NORBOOT模式来实现bootload,只需要在应用程序对应的cmd文件中定义好某段代码存放在某个地址段即可,举例说可以把某个函数放在片内L2 RAM中,把另一个函数放在片外DDR中,只要定义好CMD文件,在bootload的时候就会自动把相应的代码搬移到相应的地址去,这样理解是否正确?

    2)如果使用legency NORBOOT模式来实现bootload,是否有相应的二级bootload相关的资料?与6713的二级bootload方式一致吗?是否也需要使用类似hex6x.exe的工具把out文件转换为相应可烧写的文件?

    3)TI是否提供legency NORBOOT模式下二级bootload的例程?

    谢谢!

  • xiaoan li 说:
    1)如果使用AIS NORBOOT模式来实现bootload,只需要在应用程序对应的cmd文件中定义好某段代码存放在某个地址段即可,举例说可以把某个函数放在片内L2 RAM中,把另一个函数放在片外DDR中,只要定义好CMD文件,在bootload的时候就会自动把相应的代码搬移到相应的地址去,这样理解是否正确?

    是的。在AISgen里填上正确的DDR时序参数,就可以在boot时用上DDR。

    xiaoan li 说:
    2)如果使用legency NORBOOT模式来实现bootload,是否有相应的二级bootload相关的资料?与6713的二级bootload方式一致吗?是否也需要使用类似hex6x.exe的工具把out文件转换为相应可烧写的文件?

    二级bootloader是一个软件的概念,用来搬运用户的应用代码,所以你的C6713上用的方法是可以用到C6746上的,除了一点,在flash的开始写入配置字.

    xiaoan li 说:
    3)TI是否提供legency NORBOOT模式下二级bootload的例程?

    没有,但有问题可以解答。

  • 想把生成的AIS文件烧入到C6748 的外部NOR FLASH中,是按照地址把AIS文件写入到NOR FLASH的起始地址0x60000000中么?

  • 是的,从对应的CS开始地址开始写就行了。

    TI不是提供了烧写工程了吗?里面有源码啊。

  • 在startware里么?有写NOR FLSAH的么?谢谢啊

  • 从下面链接里下载。

    http://processors.wiki.ti.com/index.php/Serial_Boot_and_Flash_Loading_Utility_for_OMAP-L138

  • 里面有源码还就是一个软件啊?

  • 上面链接下载的包里有源码。

    starterware里是只有一个软件sfh.exe。

  • 您好,我打算写一个自举模式的nor flash 启动,请问跳转到main函数之前的c_int00()这个函数需要自己写么?还是自动生成的啊?

  • _c_int00在编译器自带的RTS库里的,工程编译时就自动加进来了,不然你的工程怎么能运行正常呢,一般不需要自己写,也没什么必要自己写。

  • 非常感谢…………我现在有两个工程(两个mian,也就是有两个_c_int00),一个IAP工程,一个工作工程,在DSP上电后IAP被搬移到RAM 0x0000h,工作工程被搬移到RAM 0X4000h,在IAP工程运行完成后使用b _c_int00,能跳转到工作工程的 _c_int00处么,还是通过b 0x4000跳转过去啊?谢谢

  • 是跳转到工作工程的 _c_int00处,这里_c_int00是工作工工程的地址,而不是符号,如果是符号就会识别成当前工程的_c_int00了。

  • 奥奥,谢谢,您的意思是在IAP main函数结束时,将工作过程的地址赋予_c_int00,然后b _c_int00就可以跳转到工作工程_c_int00处,否则不赋予地址,就会默认跳转到当前工程的_c_int00,即IAP的_c_int00处

  • 奥奥,谢谢,您的意思是在IAP main函数结束时,将工作过程的地址赋予_c_int00,然后b _c_int00就可以跳转到工作工程_c_int00处,否则不赋予地址,就会默认跳转到当前工程的_c_int00,即IAP的_c_int00处

  • 嗯,是这个意思。