с платой есть простейший пример подключение SRAM: 8данных, 19адресов, OE, WE и CS. все элементарно и понятно.
хочется писать-читать свои 8бит регистры (много регистров, штук 20) аналогично SRAM, просто используя те же 8данных, несколько адресов, OE, WE и отдельный CS (он очень удачно автором туда разведен)
вопросы такие:
1. как программно со стороны ARM будет это выглядеть?
2. что надо в программе сконфигурить, чтоб просто увидеть свои регистры как кусок памяти?
3. может этот CS уже к какой то области адресного пространства отнесен?
4. имеющаяся SRAM на fpga на каких адресах?
пример по работе с gpio через dev/mem из соседней ветки будет взят за основу...
1. как память и будет выглядеть
2. скорей всего достаточно включить нужный CS если он по умолчанию выключен
3. да - см.доку на процессор ;)
4. если это такой же пример как шел c LPC то память FPGA начинается прамо с 0x0 относительно своего куска этого CS
Я посылал пример на основе LPC-S3E там и FPGA прошивка была и драйвер для uClinux. Но видимо потерялся при переезде форума
может кто всеж подскажет:
1. какой адрес у fpga-шной sram?
2. какой адрес у дополнительного CS, и какой размер окна по умолчанию, и как это _Корректно_ изменить, не трогая образ линукса во флеше (пока не трогая, потом придется)?
вопрос этот, скорей к Павлу - общий ход действий многим понятен, но для автора платы все заметно проще :)
P.S. затребовать такты ожидания при доступе к sram плис у проца на данной плате судя по всему не получится (просто мне примерно 30мб/с желательно с sram внутрь fpga читать, и изредка в нее армом писать)?
Ну так в чем сложность то? Берем схему и смотри какой CS заведен на ПЛИС. Оказывается NCS0. Идем в доку и видим, что CS0 привязан с 0x1000_0000 до 0x1FFF_FFFF.
А если нужно быстри читать/писать - просто выставляете тайминги у SMC контроллера что бы ПЛИС поспевал и все.
Ура! я А19 на FP142 сразу на схеме не разглядел :)
получается так: с 0x1000 0000 до 0x1007 FFFF адресуем SRAM,
дополнительно нализируя А19==0 по сравнению с примером, а то что при А19==1 и активным F_CS0 используем под свои нужды?
доступ так будет выглядеть?
#include <sys/mman.h>
int fd;
void *mapped_base;
fd=open("/dev/mem",O_RDWR|O_SYNC);
mapped_base=mmap(0,0x100000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x10000000);
*(char*)(mapped_base+0x00000)= данные в sram[0]
*(char*)(mapped_base+0x80000)= данные в регистре[0]
Чего то у меня не вытанцовывается ARM-FPGA. Как SMC должен быть сконфигурирован? ПОнятно что в 8 бит, а что еще? У кого работает - покажите состояние 0xffffec00 - 0xffffecff.