Добрый день. Являюсь обладателем отладочной платы SK-AT91SAM9G45-XC6SLX от небезызвестных starterkit. Если вкратце описать плату, то к arm926 подцеплет spartan6 на EBI интерфейс и замаплен в адресное пространство 0x10000000 - 0x30000000, то есть, ему соответствуют чипселекты CS0 и CS1. Данная плата поставляется с комплектом софта(бутстрап+убут+ядро), на котором взаимодействие с FPGA через SMC прекрасно работает. В образовательных интересах решил собрать для этой платы наиболее актуальные версии bootstrap/uboot/kernel, но столкнулся со следующей проблемой: с новой версией ядра(3.16+) не могу заставить взаимодействовать fpga и arm нормально. Для проверки я написал прошивку для fpga, которая в SMC шину посылает данные, когда CS0 или CS0 равны 0 и сигнал RD(OE) Равен 0. Кроме того я вывел сигналы (CS0&&CS1), ~(CS0&&CS1), OE, ~OE на светодиоды. Заметил следующее: в стандартном ядре поведение светодиодов предсказуемое - 2 горят, 2 не горят. С новым ядром - ни один не горит. Кроме того, при ресете платы(именно перезагрузке, а не убирании питания), где-то во время убута нужные диоды загораются. Это позволяет предположить, что ядро перезаписывает какие-то регистры, управляющие EBI/SMC. Ознакомившись с pdf на данный чип я смог найти всего несколько мест, в которых хоть как-то можно настраивать EBI и SMC: для EBI это регистр CCFG_EBICSA, в котором выставляется поведение чипселектов, а для SMC - набор регистров SMC_MODE, в котором настривается режим работы данного SMC и SMC_CYCLE_REGISTER и еще 2 других регистра, в которых настраиваются клоки. Проблема заключается в том, что, насколько я могу судить, состояние этих регистров для старого и нового ядер - одинаково. Однако, в одном случае все работает, в другом - нет. Не подскажете, что я упускаю и куда стоит посмотреть? При необходимости выложу код для fpga, программы для чтения с шины и всего остального. Кроме того, прощу прощения, если создал тему не в том разделе. Заранее спасибо.
|