28377D芯片的BOOT1脚与EMIF数据12位EMIFD12复用了,如果程序在执行的过程中跑飞了,需要复位,需将BOOT0和BOOT1脚拉高,程序重新从flash中加载,但是EMIFD12是数据位,收到的数据可能是高也可能是低,若刚好在DSP复位时,数据位收到的数据为0,那么就会复位不成功。程序跑飞就没有办法在重新从flash中加载,存在这样的问题吗?
Green Deng:
一般来说,如果boot引脚被复用的话,只需要保证上电或者复位瞬间,引脚的电平满足boot电平要求就行。但是你的应用中被占用的boot脚会有不间断的数据信号接收,确实有可能会出现boot失败的情况。有没有可能在硬件上处理,在上电或者复位瞬间截断数据传输并给予一个固定的boot电平呢
user6335106:
回复 Green Deng:
在上电瞬间,还没有进行通信,BOOT脚可以拉成固定的电位值。但是在运行过程中,若程序跑飞了,看门狗要进行复位,CPU能知道要复位并将BOOT脚拉成固定的电位值吗,通信是双向的,CPU既能发送数据也能接收数据,是不是说明这个引脚CPU是可以控制的,在看门狗复位时,CPU能控制这个引脚拉成固定的电平?
Green Deng:
回复 user6335106:
我认为是不可以的,程序跑飞芯片复位的时候CPU没办法执行内部程序,也就没办法对引脚进行控制。只能通过外部硬件上操作来控制boot脚的电平
user6335106:
回复 Green Deng:
28377D有两组EMIF总线一组EMIF总线就会与BOOT1脚复用别的别的引脚可以替代那这样不可以使用要用EMIF1总线怎么解决这个问题
user6335106:
回复 user6335106:
28377D有两组EMIF总线 一组EMIF总线就会与BOOT1脚复用 没有别的引脚可以替代 那这样不可以 要使用EMIF1总线怎么解决这个问题
user6335106:
回复 user6335106:
28377D有两组EMIF总线 一组EMIF总线会与BOOT1脚复用 没有别的引脚可以替代 那这样不可以 使用要用EMIF1总线怎么解决这个问题芯片设计将BOOT1脚与EMIFD12引脚复用实际应用中怎么避免这个问题
Green Deng:
回复 user6335106:
如果一定要两组都用的话,可以更改默认BOOT引脚,参考TRM中的BOOTCTRL 寄存器。
这个寄存器是用来自定义引导模式选择引脚的,也就是说你可以更换其他引脚作为boot启动的配置引脚。如果你硬件上有空闲的拉高的引脚的话可以配置为这两个引脚作为boot引脚。就是这么做的话后期使用起来会比较麻烦,因为这个寄存器是需要写入OTP的,也就是说只能更改一次,后期没办法再改成其他引脚了。
user6335106:
回复 Green Deng:
今天我做了一下实验,用的28075芯片,BOOT1脚与EMIFD12复用了,DSP与FPGA之间用EMIF总线通信,FPGA一直发送低电平给DSP,DSP一直读FPGA给的数据,DSP跑15S后看门狗进行复位,这样测试没有问题,看门狗可以正常复位,程序可以重新跑。
user6335106:
回复 Green Deng:
程序跑飞芯片复位CPU没办法执行内部程序那还会接收数据吗这时候BOOT脚电位不是外部上拉的固定电平吗?
Green Deng:
回复 user6335106:
user6335106FPGA一直发送低电平给DSP,DSP一直读FPGA给的数据
你的意思是boot mode pin 1一直处于低电平状态下程序可以正常启动?有没有用示波器测试过复位的时候pin1上的电平是高还是低?
程序跑飞的情况下是没办法接收数据的,但是emif引脚上是否还有数据传输过来,即emif引脚的电平是怎么样的我确实没有做过这种测试。如果引脚上有外部上下拉,那肯定是跟随上下拉的电位,但如果没有上下拉,那么是否会受emif上的数据流电位的影响,这点建议你测试确认一下。