Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9G45(M10)-XC6SLX
ARM+FPGA на новом ядре linux
smd
Добавлено 30.10.2014 20:45 Редактировалось 30.10.2014 20:51
0
Сообщение: 1
smd
0

Пункты: 386
Регистрация: 26.03.2012
Добрйы день!
Являюсь обладателем платы SK-AT91SAM9G45-XC6SLX и возникла следующая проблема.
В образовательных интересах решил собрать для этой платы наиболее актуальные версии bootstrap/uboot/kernel(впоследствии оформить и выложить в вики), но столкнулся со следующей проблемой: с новой версией ядра(3.16+) не могу заставить работать шину между fpga и arm.
Для проверки я написал прошивку для фпга, которая выводит на диоды состояние пинов CS0, CS1 и OE, а в шину через тристейт буффер шлет константу: надеялся обратиться по физ. адресу из арма и считать эту константу. Со стандартным ядром пины CS0, CS1 и OE выставлены в 1(диоды горят), в моем же - 0.
Вероятно, мне нужно настроить шину EBI. В пдф на этот арм я, к сожалению, не нашел ничего, что мне могло бы помочь. Клок гейтинга для EBI в нем нет(по крайней мере я найти не смог), пины CS0, CS1 и OE не мультиплексируются(ОЕ может мультиплексироваться, если подключен компактфлеш), регистр CCFG_EBICSA настроен в значение 0x00070008.
Не подскажете, что я упускаю и куда стоит посмотреть?
В board-файлах для работы с SMC, если я правильно понял, достаточно только настроить работу сигнала CS и настроить тайминги SMC. В моем случае оба этих пункта выполнены, но что-то идет не так.
Заметил, что при перезагрузке платы на новом ядре в убуте светодиоды загораются, что позволяет сделать однозначный вывод о том, что ядро перезаписывает какие-то регистры.
Заранее спасибо.
ПС: при необходимости готов привести листинг dts и прошивки для фпга.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 31.10.2014 09:53 Сообщение: 2
Pavel Ivanchenko
Admin
4.39

Пункты: 91424
Регистрация: 24.03.2009
Пол: Мужчина
Вы заглядывали в штатный пример?
Там целиком внешняя шина инициализируется и обмен данными с синтезированным microblaze идет ...
Спуститься к концу Подняться к началу
Персональная информация
smd
Добавлено 31.10.2014 10:18 Сообщение: 3
smd
0

Пункты: 386
Регистрация: 26.03.2012
Разумеется, я смотрел в исходники fpga_test и fpga_loader: первый взял за основу программы, которая вычитывает адрес 0х10000000. В fpga_test пишутся 3 регистра с таймингами SMC и один регистр с SMC_MODE, эту часть программы я не изменял.
В исходники прошивки с микроблейзом, увы, не было возможности посмотреть, тк на фтп их найти не удалось.
В данный момент на стандартном ядре из поставки со своей прошивкой мне удается считать верные данные с шины(пускай почему-то только 4 бита), на новом - нет. Виной тому - неправильная работа сигналов CS0, CS1, OE.
Поясняю(возможно повторяюсь): в тестовой прошивке фпга я вывел на светодиоды сигналы (CS0&&CS1), ~(CS0&&CS1), OE, ~OE. На стандартном ядре эти светодиоды горели так, как и должны(2 горят, 2 не горят), в то время как на новом - все 4 светодиода не горели.
Хочу отметить, что с новым ядром при перезагрузке системы(именно перезагрузке, а не убирании питания) в u-boot светодиоды начинают гореть "нормально". Это позволяет сделать мне вывод, что ядро во время загрузки перезаписывает какие-то регистры, отвечающие за работу пинов CS и OE. Проблема в том, что я не могу найти ничего подобного в пдфке, из-за чего обратился за помощью на форум.
Спасибо.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 31.10.2014 10:56 Сообщение: 4
sasamy
4.70

Пункты: 77241
Регистрация: 14.08.2009
В новом ядре потенциального виновника ваших проблем вижу тут :)

http://lxr.free-electrons.com/source/arch/arm/mach-at91/sam9_smc.c
Спуститься к концу Подняться к началу
Персональная информация
smd
Добавлено 31.10.2014 11:13 Сообщение: 5
smd
0

Пункты: 386
Регистрация: 26.03.2012
sasamy, я уже смотрел на эти файлы(и board файлы тоже), когда пытался выявить проблему. Честно говоря, я не нашел ничего интересного в sam9_smc.c: там только выставляют тайминги SMC и рулят CSами(надо отметить, что CS0 всегда должен оставаться CS0, судя по документации). Кроме того, я выкинул из ядра поддержку ATAGS и использую dtb-файл. В dtb файле ничего про EBI/SMC нет(ну кроме нанда, который я временно отключил в ядре и в dtb).
Сегодня вечером попробую включить нанд обратно: вдруг нужные мне пины CS и OE примут нужное мне состояние. Тогда надо будет смотреть, как драйвер нанда инициализирует что-то там на чипе.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 31.10.2014 11:39 Редактировалось 31.10.2014 11:43 Сообщение: 6
sasamy
4.70

Пункты: 77241
Регистрация: 14.08.2009
Цитата

В dtb файле ничего про EBI/SMC нет


это не драйвер в полном смысле, а вспомогательные ф-ции общие для любого драйвера которому может потребоваться настроить smc, кроме nand например есть

http://lxr.free-electrons.com/source/drivers/ata/pata_at91.c#L259

но я все равно не очень понял - почему не хотите загрузить тестовый пример Павла - там настройка через полный маппинг регистров в юзерспейс и соотвественно ему все равно что до этого какой-то драйвер настроил. Это хотя бы даст представление о картине, а так может у вас светодиоды неисправны :)
Спуститься к концу Подняться к началу
Персональная информация
smd
Добавлено 31.10.2014 11:46 Сообщение: 7
smd
0

Пункты: 386
Регистрация: 26.03.2012
Все как раз таки началось с того, что я запустился с новыи ядром, попробовал запустить тестовый пример Павла, но он не заработал и я начал разбираться. НА данный момент удалось выяснить, что проблема кроется в управляющих сигналах.
И эту проблему настройка таймингов SMC решить не может. Складывается ощущение, что интерфейс EBI работает некорректно в моем случае. Но мне так и не удалось найти место, где его можно сконфигурировать(кроме регистра (CCFG_EBICSA).
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9G45(M10)-XC6SLX