AT91与SAM-BA的连接是由于芯片内有一段固化的代码运行起来后才会检测到目标板并建立连接。
假设现在你烧写了Bootstrap进去,芯片上电后发现有可运行的代码,从而就不执行片内固化的那个代码。因此,就无法与SAM-BA建立连接。解决方法主要有以下几个方面:
1.在开发板上已经预留了处理这个问题的硬件,即有个按钮,一旦这个按钮按下,测清除flash中的所有代码,以便让芯片上电后执行其片内固化的代码。当
然,这个要bootstrap里面软件的支持,就是bootstrap检测按钮是否按下,若按下则清除。这样,芯片上电检测不到有效的、可执行的代码就会
执行片内固化的部分。
2.还有一个比较不专业的办法,但很行至有效。我的开发板没有设计按钮,也没有在bootstrap中设计清除代码。但我这里有一招就是短接nand
flash(我板子上没有nor flash和data
flash)的地址线,大概是42脚左右的位置都行。这样做的目的就是让芯片不能正确的将nand
flash中的代码正确搬运到sdram中,因此芯片内的固化代码依然会执行。这就解决了和SAM-BA不能连接的问题。