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.

FLASH空间不够,想用OTP

Other Parts Discussed in Thread: TMS320F28030

在用的2802,想用1K的OTP存放表格,如何去做?

是不是只在CMD文件中定义好段就可以了。以后这个表格也不会去更改了。读OTP与读FLASH有没区别?

  • 是的,只在CMD文件中定义好段就可以了。

    读取没有区别。

  • CPU第一次烧写时,OTP被写入了表格。但是第二次第三次烧写时,OTP肯定是不能写进去了,这样会报错吗?其他的烧写FLASH的还能不能写进去?

  • 不会报错,其他FLASH仍旧正常烧写。

    另外你也可以如下面这样写:

       KKK                :> OTP      PAGE = 0,TYPE = NOLOAD

  • 弱弱的问一下:如果第一次写入错了,那是不是还是可以用flash的API函数进行擦除和写入啊?

  • 不行,OTP的意思就是One-Time Programmable (OTP) Memory

    但是FLASH可以反复擦除。

  • 晕啊!如果第一次写入错了的话,那这块芯片就不能用了?

  • OTP是OTP,FLASH是FLASH。OTP不能再被写入并不代表芯片不能用。

    28335上只有1KB大小的OTP,但是有256KB的FLASH。

  • 按你说的在CMD文件中分配了段地址在OTP,但是烧写的时候出错了。什么情况?

  • 我的意思是:如果第一次你写入OTP时,写的内容错了!能不能重新再写一遍?

  • 所谓OTP,是指只能一次性写入,不能被擦除,所以已经写过的部分是不可以的。

    注意,写一次的对象是,不是字节,不是字,也不是一个区,所以OTP可多次写入,但对于一个位或一个地址所在,只能写一次。

  •   LACC GPR_AX
      MOVL XAR7,#TEMP_LIST
      ADDL XAR7,ACC
      PREAD GPR_AX,*XAR7

    这里TEMP_LIST是表头地址在OTP区域0X3D7901,GPR_AX是0,但是执行完后GPR_AX是0FFFFH,表格中前几个数都不是0FFFFH。问题在哪?

  • 哦哦!非常谢谢!不过我还有一个问题,不好意思哦!偶是第一次弄DSP的,让您见笑了!我要写一个基于CAN通信的TMS320F28030的bootloader程序,但现在遇到了几个问题如下:

         1, 自己写的Bootloader程序和芯片内部BootROM区固化的Bootloader程序,在引导加载程序时,它们之间的关系是什么?

         2,BootROM区固化的Bootloader 的有关函数可以直接调用吗?或者可以说如何读取BootROM区的内容?

  • 不好意思,让您见笑了!这些汇编代码的含义我就不知道,~~~~(>_<)~~~~ ,我网上搜也没找到DSP的汇编指令集啊?能否给个文档?

  • 新问题建立一个新的帖子吧。

    我觉得这个问题,10#已经解释的很清楚了。

  • 汇编指令的说明在下面的文档里:

    http://www.ti.com/litv/pdf/spru430e

  • OTP来做Bootloader可以参考下面的资料,里面有详细说明:

    http://www.ti.com/general/docs/litabsmultiplefilelist.tsp?literatureNumber=spraaq3

    http://www.ti.com/cn/litv/pdf/sprugo0a

    他们的关系是,上电-->运行芯片的bootrom中的bootloader-->符合sprugo0a文档中的要求会跳转指定的地址,比如您想做的OTP  loader。

    理论上BootROM区固化的Bootloader 的有关函数可以直接调用,因为可以读取bootrom的内容,但是TI并没有提供里面的函数地址,做起来会比较麻烦。

  • 关于#31错误说明如下,这是因为你第二次要往OTP该地址写入的值和第一次不一样,报错中说,OTP中该地址已经写入了0X0000:

  • 这段汇编要这样在MOVL XAR7,#TEMP_LIST前加:

        MOVW DP,#TEMP_LIST

  • 那0FFFFH是之前已经写入OTP的数据?

  • 问题已解决。OTP没写入数据之前是0XFFFF,可以更改数值。如果不是0XFFFF,就不能更改了。烧写时也是一样。只能烧写没有写过的OTP区域。

  • 你好,想问下,DSP28335调试中电源上电,DSP板偶尔不能进入主循环,程序卡在初始化过程中的问题,但复位一下OK,想知道是什么原因造成的,请大侠指教!

  • 以后有新问题请重发新帖。

    你的问题可能跟电源或复位信号有关,请检查一下上电时,正常和异常时的电源波形有无不同,复位信号是否正常。

    另外,也可能与初始化程序有关,建议可以使用例程测试一下先,然后对比一下主要看看顺序上是否有差别。