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.

AM335x boot配置项用作gpio后,cpu不能启动



AM335x的boot选项配置与lcd的16根数据线复用了,现在我想把这16根数据线用作gpio来用,发现cpu不能启动了。我感觉现在的问题应该是gpio的上下拉电阻影响了启动项的电平,想问下大家有没有类似的问题,有什么解决方法呢?

 

  • 作为GPIO的设计,如果有上下拉电阻的设计,要特别小心,否则,在最初的采样时出现错误的采样,你的SYSBOOT配置就有问题了。

    我觉得,你可以尝试先看看,你所需要使用的SYSBOOT的上下拉和你设计的GPIO口的初态能否吻合,对SYSBOOT的采样,仅仅发生在PWRONRSTn拉高了之后,只要保证这段时间内电平值是符合你SYSBOOT的设置的即可。

    如果不吻合,一些GPIO口的设计初态必须为高,但是SYSBOOT的配置需为低(或反之),这时候可以考虑采用一个GPIO口控制的switch开关做分离,可以参考ERRATA中3.1.4Boot: Multiplexed Signals GPMC_WAIT0, GMII2_CRS, and RMII2_CRS_DV Cause NAND Boot Issue.,里面提到的用 a GPIO-controlled external 2-to-1 multiplexer来解决的方案,在上述场景下同样适用。

  • 如果我使用操作系统的话,用这个模拟开关来切换GPMC_WAIT0和RMII2_CRT_DV信号,那我怎么能知道操作系统什么时候会访问nandflash呢,这样做是否不太现实?

  • 首先,这个设计不是让你来回切换这两个信号。GPMC_WAIT0的设计仅仅是在启动时必须要用到,启动了之后,就直接配成了RMII2_CRT_DV。

    其次,走题了……我提到这个设计,意思是说,SYSBOOT pin也仅仅是在启动的时候需要用到,如果SYSBOOT pin的上下拉和你的GPIO的上下拉设计冲突的话,可以使用这个设计来避开冲突。

  • 好的,我知道了,多谢解答!