Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2019-окт-19 03:47

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2 Все  След.
Автор Сообщение
 Заголовок сообщения: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-06 16:04 
Не в сети

Зарегистрирован: 2018-сен-14 15:48
Сообщения: 35
Добрый день.

По работе с NAND Flash:
В описании явно указаны ограничения размеров для внешних ОЗУ и ПЗУ, но не для NAND Flash.
Контроллер внешней шины может отправить до 7 байт адреса в фазе команды.
Это ограничивает размер микросхемы памяти в зависимости от того, как она обрабатывает эти байты.
Есть ли еще какие-либо ограничения размера внешней флеш-памяти со стороны МК?

По работе с внешней ПЗУ:
Не совсем понятно, как следует производить загрузку ПО во внешнюю ПЗУ?
Какая должна быть структура у программы, которая будет загружена во внешнюю ПЗУ?

По работе с внешней ОЗУ:
Контроллер DMA имеет доступ ко всему адресному пространству, которое соответствует внешней ОЗУ?
Как происходит процесс размещения данных во внешней ОЗУ? Аналогично размещению данных в старших 16 Кбайт внутренней ОЗУ или есть отличия?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-10 11:12 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 449
Откуда: ПКК "Миландр"
Dmitry_S писал(а):
Контроллер DMA имеет доступ ко всему адресному пространству, которое соответствует внешней ОЗУ?
Как происходит процесс размещения данных во внешней ОЗУ? Аналогично размещению данных в старших 16 Кбайт внутренней ОЗУ или есть отличия?


DMA имеет доступ ко всему, что за Bus Matrix. Туда входит и контроллер внешней шины, а через него и к подключенным ОЗУ и/или ПЗУ. Чтобы обратиться в ОЗУ/ПЗУ достаточно сделать чтение/запись в окно в адресном пространстве, которое ассоциировано с контроллером внешней шины.

Dmitry_S писал(а):
Не совсем понятно, как следует производить загрузку ПО во внешнюю ПЗУ?

Способ записи в ПЗУ определяется алгоритмом записи ПЗУ. Например для 1636РР1 это последовательность команд, например - https://startmilandr.ru/doku.php/prog:e ... us_rr1_ve1 . Для прошивки из под Keil обычно пишут FLM. Либо бывают отдельные программаторы для памяти.

Dmitry_S писал(а):
Какая должна быть структура у программы, которая будет загружена во внешнюю ПЗУ?

Абсолютно такая-же как и во внутреннем EEPROM, ядру все равно где лежит код. Бит ITCMLAEN задает откуда будет стартовать программа из внутренней EEPROM или с данных от внешней шины. Шина при ITCMLAEN = 0 настраивается аппаратно, стр. 15 спецификации.

Dmitry_S писал(а):
Есть ли еще какие-либо ограничения размера внешней флеш-памяти со стороны МК?

Не представляю что это может быть.


Вложения:
DMA_Bus.png
DMA_Bus.png [ 14.97 КБ | Просмотров: 869 ]

_________________
Отдел технической поддержки support@milandr.ru
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-11 14:39 
Не в сети

Зарегистрирован: 2018-сен-14 15:48
Сообщения: 35
Vasiliy писал(а):
Чтобы обратиться в ОЗУ/ПЗУ достаточно сделать чтение/запись в окно в адресном пространстве, которое ассоциировано с контроллером внешней шины.


Имелось в виду немного другое. В скрипте сборщика gcc есть следующий кусок:

Код:
   MEMORY
   {
      ...
      IRAM (rwx) : ORIGIN = 0x20100000, LENGTH = 16K
   }
   .ramfunc : AT (__edata)
   {
      __ramfunc_start__ = .;
      *(.ramfunc*)
      . = ALIGN(4);
      __ramfunc_end__ = .;
   } > IRAM


После сборки переменные с атрибутом "section(".ramfunc")" будут размещены по адресам, которые начинаются с 0x20100000 и обращение к этим переменным происходит корректно.

Допустим, я добавлю аналогичный кусок:

Код:
   MEMORY
   {
      ...
      ERAM (rwx) : ORIGIN = 0x60000000, LENGTH = 2M
   }
   ...
   .extram:
   {
      __extram_start__ = .;
      *(.extram*)
      . = ALIGN(4);
      __extram_end__ = .;
   } > ERAM
      ...

И после этого добавлю несколько переменных с атрибутом "section(".extram")".
После сборки переменные с атрибутом "section(".extram")" будут размещены по адресам, которые начинаются с 0x60000000. Но будет ли это работать?

Также, нашел такое сообщение:
-=Sergei=- писал(а):
rf.serega писал(а):
Здравствуйте!
Есть необходимость хранить код программы во внешнем ПЗУ, так как размера внутреннего ПЗУ не хватает.
Вопрос в том, какой разрядности должна быть шина адреса и данных внешнего ПЗУ для хранения в ней кода программы? ... Подходят ли микросхемы 1636РР1У, 1636РР2У для этого?


...
3. Только 1636РР1 и 1636РР2 и подходят :) Ну и 1645РУ1,3,4 конечно.
...


Возможно ли использование для хранения кода программы каких-либо других микросхем, кроме серии 1636РР* ?


Последний раз редактировалось Dmitry_S 2019-июн-13 16:35, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-11 15:48 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 449
Откуда: ПКК "Миландр"
Dmitry_S писал(а):
После сборки переменные с атрибутом "section(".extram")" будут размещены по адресам, которые начинаются с 0x60000000. Но будет ли это работать?

Будет.

Dmitry_S писал(а):
Возможно ли использование для хранения кода программы каких-либо других микросхем, кроме серии 1636РР* ?

Если интересует именно flash память производства Миландр, то нет. https://ic.milandr.ru/products/mikroskh ... stroystva/

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-13 16:34 
Не в сети

Зарегистрирован: 2018-сен-14 15:48
Сообщения: 35
Vasiliy писал(а):
Будет.


Будет работать корректно сразу после запуска контроллера или только после настройки внешней шины?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-13 17:22 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 449
Откуда: ПКК "Миландр"
Dmitry_S писал(а):
Будет работать корректно сразу после запуска контроллера или только после настройки внешней шины?


Уточните режим загрузки и что именно будет работать.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-13 18:00 
Не в сети

Зарегистрирован: 2018-сен-14 15:48
Сообщения: 35
Vasiliy писал(а):
Уточните режим загрузки и что именно будет работать.


Допустим, у меня есть ОЗУ, подключенная к МК.
Допустим, при сборке программы я размещу этим способом(viewtopic.php?f=34&t=4056#p24142) в адресном пространстве 0x60000000...0x9FFFFFFF несколько переменных. Будет ли обращение к этим переменным выполняться корректно? Если да, то сразу после включения МК или только после настройки внешней шины на работу с этим ОЗУ?
Режим загрузки - обычный, из внутренней памяти программ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-14 09:28 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 449
Откуда: ПКК "Миландр"
При загрузке из внутренней flash (MODE=b000, ITCMLAEN = 1) все выводы GPIO находятся в аналоговой функции. Не затактированы ни порты GPIO, ни контроллер внешней шины. Обращения во внешнюю память работать не будут, пока все это не будет настроено программно.

Посмотрите пример работы с 1636РР1, который я уже приводил - https://startmilandr.ru/doku.php/prog:e ... us_rr1_ve1

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-14 10:25 
Не в сети

Зарегистрирован: 2018-сен-14 15:48
Сообщения: 35
Vasiliy писал(а):
При загрузке из внутренней flash (MODE=b000, ITCMLAEN = 1) все выводы GPIO находятся в аналоговой функции. Не затактированы ни порты GPIO, ни контроллер внешней шины. Обращения во внешнюю память работать не будут, пока все это не будет настроено программно.


Тогда к чему относился этот ответ?
Vasiliy писал(а):
Dmitry_S писал(а):
После сборки переменные с атрибутом "section(".extram")" будут размещены по адресам, которые начинаются с 0x60000000. Но будет ли это работать?

Будет.


Vasiliy писал(а):
Посмотрите пример работы с 1636РР1, который я уже приводил - https://startmilandr.ru/doku.php/prog:e ... us_rr1_ve1


Смотрел. Есть тупой вопрос по этому примеру: после записи кода программы на внешнее ПЗУ этим способом, для начала его исполнения нужно только выставить ITCMLAEN в 0 и перезапустить МК?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-14 10:59 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 449
Откуда: ПКК "Миландр"
Dmitry_S писал(а):
Vasiliy писал(а):
При загрузке из внутренней flash (MODE=b000, ITCMLAEN = 1) все выводы GPIO находятся в аналоговой функции. Не затактированы ни порты GPIO, ни контроллер внешней шины. Обращения во внешнюю память работать не будут, пока все это не будет настроено программно.


Тогда к чему относился этот ответ?
Vasiliy писал(а):
Dmitry_S писал(а):
После сборки переменные с атрибутом "section(".extram")" будут размещены по адресам, которые начинаются с 0x60000000. Но будет ли это работать?

Будет.


При загрузке в режиме MODE=b000, ITCMLAEN=0 выводы GPIO аппаратно настраиваются в функцию внешней шины, как и сам контроллер шины. Повторяю - спецификация стр. 15. Примечание 2 к таблице 2. В этом режиме МК начнет исполнять программу с внешней шины.

В любом другом случае необходимо настраивать программно пины и контроллер внешней шины.

Dmitry_S писал(а):
Vasiliy писал(а):
Посмотрите пример работы с 1636РР1, который я уже приводил - https://startmilandr.ru/doku.php/prog:e ... us_rr1_ve1

Смотрел. Есть тупой вопрос по этому примеру: после записи кода программы на внешнее ПЗУ этим способом, для начала его исполнения нужно только выставить ITCMLAEN в 0 и перезапустить МК?


Проект показывает как настроить пины шины и контроллер шины для работы с 1636РР1, плюс выполняются операции чтения/записи с 1636РР1.
Для прошивки своего проекта в 1636РР1 необходимо написать свой FLM, на основе данного проекта. Либо посмотреть готовый вариант - FLM_ExtMem: https://github.com/StartMilandr/FLM

При прошивке с помощью FLM вход ITCMLAEN может быть подтянут куда угодно. Для старта программы необходимо подтянуть ITCMLAEN = 0, и включить питание.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-14 11:18 
Не в сети

Зарегистрирован: 2018-сен-14 15:48
Сообщения: 35
Vasiliy писал(а):
При загрузке в режиме MODE=b000, ITCMLAEN=0 выводы GPIO аппаратно настраиваются в функцию внешней шины, как и сам контроллер шины. Повторяю - спецификация стр. 15. Примечание 2 к таблице 2. В этом режиме МК начнет исполнять программу с внешней шины.

В любом другом случае необходимо настраивать программно пины и контроллер внешней шины.

Существует ли пример по обращению к данным, размещенным на внешней ОЗУ, для тупых?
В котором было бы четко указано что-то типа:
"Для того, чтобы корректно обращаться к данным(не инструкциям), которые размещены на внешнем ОЗУ, нужно:
1. Сделать так, чтобы МК "знал" что нужно обращаться по адресам, соответствующим внешнему ОЗУ,
2. Настроить шину для работы с внешним ОЗУ,
3. ???,
4. PROFIT!"


Vasiliy писал(а):
Проект показывает как настроить пины шины и контроллер шины для работы с 1636РР1, плюс выполняются операции чтения/записи с 1636РР1.
Для прошивки своего проекта в 1636РР1 необходимо написать свой FLM, на основе данного проекта. Либо посмотреть готовый вариант - FLM_ExtMem: https://github.com/StartMilandr/FLM


У меня используется eclipse, а не keil. Так что FLM тут не поможет. Отличается ли чем-либо процесс записи исполняемого кода на внешнее ПЗУ от записи любых других данных?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-14 11:39 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 449
Откуда: ПКК "Миландр"
Позвоните в техподержку (495) 221-13-55
Невозможно описывать словами очевидные вещи, либо я не понимаю сути Ваших вопросов.

Dmitry_S писал(а):
Существует ли пример по обращению к данным, размещенным на внешней ОЗУ, для тупых?

Пример на startmilandr - это вот он и есть.

Dmitry_S писал(а):
Чем отличается процесс записи исполняемого кода на внешнее ПЗУ от записи любых других данных?

ничем.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-14 11:44 
Не в сети

Зарегистрирован: 2018-сен-14 15:48
Сообщения: 35
Vasiliy писал(а):
Пример на startmilandr - это вот он и есть.

В примере речь идет про ПЗУ, не про ОЗУ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-14 11:53 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1357
Откуда: Тула
Dmitry_S писал(а):
Существует ли пример по обращению к данным, размещенным на внешней ОЗУ, для тупых?

Код:
*((int *)0xA0000000) = 1; // запись
int data = *((int *)0xA0000000); // чтение

адреса выбираете согласно 7 разделу спецификации.
Dmitry_S писал(а):
В котором было бы четко указано что-то типа:
"Для того, чтобы корректно обращаться к данным(не инструкциям), которые размещены на внешнем ОЗУ, нужно:
1. Сделать так, чтобы МК "знал" что нужно обращаться по адресам, соответствующим внешнему ОЗУ,
2. Настроить шину для работы с внешним ОЗУ,
3. ???,
4. PROFIT!"

1. правильно подключить память (ОЗУ и/или ПЗУ - не важно) к МК.
2. подать тактирование на порты и настроить их в решим шины.
3. подать тактирование и настроить контроллер шины (EXT_BUS).
4. ПРОФИТ!!! код обращения показан выше. Он один, что для ОЗУ, что для ПЗУ, хоть для чего! (в ПЗУ так просто обычно писАсть нельзя, знаете наверное...).

Dmitry_S писал(а):
У меня используется eclipse, а не keil. Так что FLM тут не поможет.

Вроде бы eclipse тоже работает через FLM. Знающие люди - поправьте меня.
Вот комрад гоняет на эклипсе https://github.com/in4lio/mdr1986x-pack-repo

Dmitry_S писал(а):
Отличается ли чем-либо процесс записи исполняемого кода на внешнее ПЗУ от записи любых других данных?

Нет. Главное, чтобы Вы изначально умели писать в это ПЗУ.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы про внешнюю шину
СообщениеДобавлено: 2019-июн-14 14:20 
Не в сети

Зарегистрирован: 2018-сен-14 15:48
Сообщения: 35
prostoRoman писал(а):
Dmitry_S писал(а):
Существует ли пример по обращению к данным, размещенным на внешней ОЗУ, для тупых?

Код:
*((int *)0xA0000000) = 1; // запись
int data = *((int *)0xA0000000); // чтение

адреса выбираете согласно 7 разделу спецификации.
Dmitry_S писал(а):
В котором было бы четко указано что-то типа:
"Для того, чтобы корректно обращаться к данным(не инструкциям), которые размещены на внешнем ОЗУ, нужно:
1. Сделать так, чтобы МК "знал" что нужно обращаться по адресам, соответствующим внешнему ОЗУ,
2. Настроить шину для работы с внешним ОЗУ,
3. ???,
4. PROFIT!"

1. правильно подключить память (ОЗУ и/или ПЗУ - не важно) к МК.
2. подать тактирование на порты и настроить их в решим шины.
3. подать тактирование и настроить контроллер шины (EXT_BUS).
4. ПРОФИТ!!! код обращения показан выше.

Спасибо. Именно этот ответ мне и был нужен. В принципе, можно заменять имена переменных адресами обращения и во время сборки проекта.

prostoRoman писал(а):
Он один, что для ОЗУ, что для ПЗУ, хоть для чего! (в ПЗУ так просто обычно писАсть нельзя, знаете наверное...).

Все же обращение к ОЗУ:
Код:
*((int *)0xA0000000) = 1;

несколько отличается от последовательности обращения к ПЗУ:
Код:
   
*((volatile uint32_t *)0xA0001554) = 0xAAAAAAAA;
*((volatile uint32_t *)0xA0000AA8) = 0x55555555;
*((volatile uint32_t *)0xA0001554) = 0xA0A0A0A0;

*((volatile uint32_t *)0xA0000000) = 1;

*проверки начала/окончания записи*


prostoRoman писал(а):
Вроде бы eclipse тоже работает через FLM. Знающие люди - поправьте меня.
Вот комрад гоняет на эклипсе https://github.com/in4lio/mdr1986x-pack-repo

Я не находил упоминания FLM файлов в его теме или сообщениях: viewtopic.php?f=22&t=3365
Сами файлы тянутся из этого репозитория - https://github.com/eldarkg/emdr1986x-st ... 3b7c77302a


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2 Все  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB