Jump to content

    

Отвечу на вопросы по PowerQUICC

У пользователя VladA отключен личный ящик, поэтому отвечаю здесь.

 

Честно говоря, я создавал эту тему для того, чтобы как-то помочь людям разобраться с powerquicc.

У меня нету цели как-то рекламировать себя и я не ищу себе какие-то дополнительные подработки.

Поэтому - я готов бесплатно ответить на ваши вопросы в этой теме, если они у вас есть.

 

Если нет желания разбираться самостоятельно, то лучше создать тему в разделе "Предлагаю работу".

Желание разобраться есть. Конкретный вопрос: как заставить работать eLBC в режиме burst read/write?

На пример: используя Freescale UPM editor, мы создали свой шаблон контрольных сигналов, которые должны генерироваться на локальной шине. Как инициировать начало обмена? Используя DMA? Или есть другие способы?

В вurst Rd/Wr режиме мы хотим читать/записывать 16 16 битовых слов по одному и тому же адресу (по принципу FIFO, поддерживаемому FPGA).

Share this post


Link to post
Share on other sites
MPC8360 - выбрали для новой разработки, вы с ним работали?

Какие посоветуете референс дизайны?

Работал, немного. Референс-дизайнов там всего два, MPC8360E-MDS и MPC8360E-RDK.

Второй по-моему разработан какой-то левой фирмой, как все дешевые платки.

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

 

Есть ли собственные разработки схемотехники и плат?

Че-нить наверное найдется, но может быть на 8323, а не на 8360. И не уверен что до ума доведено.

 

Конкретный вопрос: как заставить работать eLBC в режиме burst read/write?

Да, тут есть подводный камень - само ядро никак нельзя заставить. Там есть инструкции типа stmv, но даже эти инструкции burst не генерят.

 

На пример: используя Freescale UPM editor, мы создали свой шаблон контрольных сигналов, которые должны генерироваться на локальной шине. Как инициировать начало обмена? Используя DMA? Или есть другие способы?

В общем случае - да, либо DMA либо любой другой bus master кроме ядра, например cache-контроллер. Т.е. при включенном кэше ядро будет лазить в память бурстами через cache-контроллер. Только имейте ввиду, что кэш без MMU включать нельзя.

 

В вurst Rd/Wr режиме мы хотим читать/записывать 16 16 битовых слов по одному и тому же адресу (по принципу FIFO, поддерживаемому FPGA).

В вашем же конкретном случае - никак, ибо по одному и тому же адресу burst невозможен. Бурст подразумевает последовательное чтение 32-х последовательных адресов, причем выровненных по модулю 32. Надо имитировать ситуацию, как будто у вас burst по 32-м последовательным адресам, ну а внутри вашего target-девайса просто игнорировать младшие 5 адресов.

 

Т.е., если конкретно, то вы допустим читаете бурстом начиная с адреса 0, т.е. будет выполнены последовательные чтения с адресами 0, 2, 4, 6, 8, и т.д. всего 16 раз. Это все на шине пройдет как одна бурстовая транзакция. А внутри вашего девайса все эти адреса должны ссылаться в одно место. Только так можно получить бурст.

 

Внутри самого UPM-ного цикла адреса никак трогать не надо, достаточно 16 раз дернуть transfer acknowledge.

Share this post


Link to post
Share on other sites

А кто нить может поделится примером схемотехники на MPC8536?? :blush: Интересует подключение шины LBC (GPMC и FCM).

Share this post


Link to post
Share on other sites

У Freescale есть плата на базе MPC8536, называется MPC8536DS, либо "Calamari". Схема от нее наверное должна быть доступна всем желающим, только на сайте почему-то не вижу. Можно спросить в сапорте, наверное пришлют.

Share this post


Link to post
Share on other sites

Подключаю сейчас шину eLBC (GPCM режим, 32 бита для ОЗУ-2Д) Так вот…

 

1. Правильно ли я понял, что для адреса LSB это LAD[24:31], а для данных MSB-LAD[0:7]?

Для чего так сделано?

 

2. Обязательно подключать адрес через защелку? Или можно LA использовать? Посоветуйте, как лучше сделать.

 

 

P.S. это у меня первый серьезный проект, поэтому не судите строго за глупые вопросы))

Edited by gosu-art

Share this post


Link to post
Share on other sites

UPD: Протупил, извиняюсь. Схема платы лежит внутри ISO-шника с Linux BSP на эту плату, ISO-шник можно скачать с сайта:

 

http://www.freescale.com/webapp/sps/site/o...5XX&tid=CWH

 

Называется так: "MPC8536DS Linux Board Support Package - LTIB (DVD 4)"

 

Ну 2 гига весит, к сожалению, но схема там точно есть внутри, в директории /help/hardware/DS

 

В принципе это справедливо для всех плат - схема платы лежит внутри ISO-шника с линуксом.

 

Подключаю сейчас шину eLBC (GPCM режим, 32 бита для ОЗУ-2Д) Так вот…

 

1. Правильно ли я понял, что для адреса LSB это LAD[24:31], а для данных MSB-LAD[0:7]?

Для чего так сделано?

Да, для 8-bit устройства.

Зачем так сделано - не знаю, всегда так было в PowerQUICC.

 

2. Обязательно подключать адрес через защелку? Или можно LA использовать? Посоветуйте, как лучше сделать.

Не обязательно, можно использовать LA. Только их всего 5 штук, не очень понимаю что вы на этом можете съэкономить.

В мануале везде написано LA[7:31], так вот это неправда, на самом деле LA[27:31].

 

На самом деле вопрос об использовании не-мультиплексированных адресов вовсе не простой. В случае, если вы используете UPM и пытаетесь burst-транзакции делать - можно будет делать инкрементацию адреса без вставки LALE-циклов. Но для обычной флешки подключенной через GPCM об этом можно не думать.

Edited by _SY_

Share this post


Link to post
Share on other sites
Да, для 8-bit устройства.

Зачем так сделано - не знаю, всегда так было в PowerQUICC.

А разве для 32 битной шины не нужно младший байт LAD[0:7] цеплять на старший DATA [24:31] ? И как при этом подключать адрес? В даташиите написано, что младший для адреса байт – LAD[24:31]. т.е цепляем LAD[24:31] на ADR[0:7]?А остальные лини по стандарту? т.е. LAD[8:23] на DATA[8:23], и так же соответственно адрес?

Share this post


Link to post
Share on other sites
А разве для 32 битной шины не нужно младший байт LAD[0:7] цеплять на старший DATA [24:31] ?

 

Для 32-bit шины LAD[0:31] надо цеплять на DATA[31:0], именной в обратной последовательности, нулевой к 31-му и т.д. При этом старший байт LAD[0:7] будет соответствовать DATA[31:24], и это именно старший байт, не младший.

Для 16-bit - LAD[0:7] надо цеплять на DATA[15:8], LAD[8:15] на DATA[7:0]

Для 8-bit - LAD[0:7] надо цеплять на DATA[7:0]

 

И как при этом подключать адрес? В даташиите написано, что младший для адреса байт – LAD[24:31]. т.е цепляем LAD[24:31] на ADR[0:7]?А остальные лини по стандарту? т.е. LAD[8:23] на DATA[8:23], и так же соответственно адрес?

В этих процессорах (традиционно) используется обратная нумерация, как шины адреса, так и шины данных.

Т.е. внутри группы LAD[0:31] старшим значащим является LAD[0], младшим - LAD[31].

Поэтому при подключении, допустим, к обычной флешке - все адресные веревки должны быть перевернуты.

 

Для 8-bit шины LAD[0:31] надо цеплять (через адресный latch) на ADDR[31:0], именно в обратной последовательности, нулевой к 31-му и т.д. При этом если флешка меньше размером, то старшие LAD[0], LAD[1] и т.д. остаются висеть в воздухе.

Для 16-bit - LAD[31] не используется, надо цеплять LAD[0:30] на ADDR[30:0], тоже в обратной последовательности

Для 32-bit - не используются LAD[31] и LAD[30], надо цеплять начиная с LAD[29], т.е. LAD[0:29] на ADDR[29:0], и тоже в обратной последовательности

Share this post


Link to post
Share on other sites
Для 16-bit - LAD[31] не используется.......

Для 32-bit - не используются LAD[31] и LAD[30]............

Вроде это про LA, а не про LAD(п. 13.5.1.1 Multiplexed Address/Data Bus for 32-Bit Addressing). Или я ошибаюсь?

 

The eLBC supports port sizes of 8, 16, and 32 bits. When there is an access larger than the port size, the

eLBC breaks up the access into smaller transactions using the non-multiplexed address signals LAn. For

32-bit devices, LA[30:31] are irrelevant since these address bits are implicit in the byte lanes which carry

data. Similarly, for 16-bit devices, LA[30] is used and LA[31] is irrelevant; however, for 8-bit devices,

LA[30:31] are necessary.

Share this post


Link to post
Share on other sites

Это вообще для всех. Попробую объяснить, извиняюсь если слишком подробно:

 

Каждое значение адреса адресует 1 байт.

 

Если у вас ваша флешка 8-битная, и вы пишете 8-bit по адресу 0x00000000, то следующие 8-bit будут по адресу +1, т.е 0x00000001

 

Если у вас ваша флешка 16-битная, и вы пишете 16-bit (2 байта) по адресу 0x00000000, то следующие 16-bit будут по адресу +2, т.е 0x00000002

Ну и так далее:

 

0x00000000

0x00000002

0x00000004

0x00000006

0x00000008

 

Видно, что младший бит адреса всегда равен нулю.

 

А со стороны флешки - каждый адрес адресует 16-бит. Т.е. можно записать 16 бит по адресу 0 и следующие 16-бит по адресу 1.

Поэтому, младший адрес флешки в таком случае подключают не к первому (младшему) адресу шины, а ко второму.

 

Для 32-bit устройства все аналогично, только не используются два младших адреса.

В этом смысле разницы между LAD[] и LA[] нету.

Edited by _SY_

Share this post


Link to post
Share on other sites

Спасибо за развернутый ответ!!! Все понял!

Но по ходу возникли следующие вопросы)))):

1. Могу ли я заменить ADR[29:27] на LA[29:27] для GPCM ? (полагаю да)

2. Для глобальной записи из WE юзать? WE[0]?

3. Если мне нужны сигналы LBS[0:3] (при чтении и при записи), то уже GPСМ использовать не получится? Откуда в этом случае можно взять глобальный сигнал записи?

Прилагаю схемку….

post-52939-1274873925_thumb.jpg

Share this post


Link to post
Share on other sites
1. Могу ли я заменить ADR[29:27] на LA[29:27] для GPCM ? (полагаю да)

Да, конечно.

 

2. Для глобальной записи из WE юзать? WE[0]?

Если возможна запись только 32-bit целиком, то можно использовать любой из WE[0:3], т.к. при записи 32 бит они все будут активны.

Если устройство поддерживает побайтовую запись, т.е. использует сигналы байт-селектов, то либо объединять все 4 вместе по или (точнее - и), либо использовать глобальный LBCTL.

 

3. Если мне нужны сигналы LBS[0:3] (при чтении и при записи), то уже GPСМ использовать не получится? Откуда в этом случае можно взять глобальный сигнал записи?

Байт-селектов в GPCM нету, только индивидуальные WE. Либо использовать UPM (что вобщем тоже несложно), либо городить на внешней логике схемку из WE[0:3] и OE.

 

Либо третий вариант - принять мужественное решение забить на байт-селекты и обращаться к этой памяти только 32-битными транзакциями.

 

Прилагаю схемку….

По схемке:

 

1. Байт-селекты перепутаны. LBS0 соответствует LAD[0:7], LBS1 - LAB[8:15], и т.д.

У вас на схеме LBS0 подключен к BE0L, который по всей видимости разрешает первый байт I/O[0:7], а там LAD[24:31].

 

2. GPCM не будет работать без пулапа на LGTA

 

3. LSYNC_IN должен быть соединен с LSYNC_OUT через петлю обратной связи, если local bus будет использоваться на высокой частоте, т.к. там надо будет включать DLL mode.

 

4. Адресный latch наверное такой большой не нужен, если всего 14 адресов использовать.

 

5. Стартовать ваш процессор откуда будет, если LCS0 не подключен?

Edited by _SY_

Share this post


Link to post
Share on other sites

Такой ламерский вопрос... Никогда с DDR2 не работал...

1. Можно ли подключить 1 чип MT47H16M16BG к MPC8323 или обязалово пару надо?

2. Есть ли аналоги подешевле, ну или какими чипами памяти пользуетесь вы?

3. Выкладывают ли на фрискейлы прошивки для I2C епромки, которая грузит ю-бут через кермит в параллельную флешку?

 

Один чип MT47H16M16BG стоит 9-10 баксов... несправедливо как то, если учесть что целая планка DDR2 в комп стоит столько же, где штук 8 чипов стоит аналогичных...

Share this post


Link to post
Share on other sites
1. Можно ли подключить 1 чип MT47H16M16BG к MPC8323 или обязалово пару надо?

Нет, MPC8323 DDR контроллер не поддерживает 16-bit, эта поддержка есть в 8313 и 8315

 

2. Есть ли аналоги подешевле, ну или какими чипами памяти пользуетесь вы?

Ну аналоги-то известны - Samsung, Kingston, Hynix

Пользоваться удобнее готовыми SODIMM модулями, там где размер платы позволяет.

Просто потому что за счет SPD информации появляется некоторая гибкость настройки.

 

3. Выкладывают ли на фрискейлы прошивки для I2C епромки, которая грузит ю-бут через кермит в параллельную флешку?

Не видел, но я думаю никакого секрета в ней нету, напишите в сапорт - пришлют образ.

 

Один чип MT47H16M16BG стоит 9-10 баксов... несправедливо как то, если учесть что целая планка DDR2 в комп стоит столько же, где штук 8 чипов стоит аналогичных...

Ну не совсем "аналогичных", 16-битных чипов вы там скорее всего не найдете.

А если найдутся, то что мешает распаять планку? Бывало и такое.

Share this post


Link to post
Share on other sites
Нет, MPC8323 DDR контроллер не поддерживает 16-bit, эта поддержка есть в 8313 и 8315

Не понятно... А чипы есть 32-битные? Ни у микрона, ни у самсунга не нашел модулей x32

 

most JEDEC standard x8, x16, or x32 DDR2 and DDR memories available.

x8 x16 x32 width модулей - это и есть разрядность модулей?

тоесть чтобы подключить память над или 4 модуля x8, или 2модуля x16, или 1x32?

 

Не видел, но я думаю никакого секрета в ней нету, напишите в сапорт - пришлют образ.

В какой момент загрузки линукса (от включения питания до логина) происходит инициализация DDR контроллера?

Просто если поменять память, пойдет ли этот образ I2C флешки для новой системы?

И где хранится конфигурация в образе линукс, чтоб можно было ее изменить? :smile3046:

 

Ну не совсем "аналогичных", 16-битных чипов вы там скорее всего не найдете.

А если найдутся, то что мешает распаять планку? Бывало и такое.

Это идея :) А какие там обычно чипы используются?

 

Кому интересно - ссылка на сравнительную таблицу продуктов PowerQUICC на сайте freescale

http://www.freescale.com/files/32bit/doc/b...RDSDPRODSUM.pdf

В этой таблице написано что у MPC8323E: T1/E1 - 2 , T3/E3 - вообще нету!!!! В даташите:

The SI includes the following features:

• Can connect to four independent TDM channels. Each can be one of the following:

— T1 or CEPT line

— Integrated services digital network primary rate (PRI)

— ISDN basic rate–interchip digital link in 4 channels (IDL)

— E3 or DS3 clear channel. ---------4 Е3!!!!

— User-defined interfaces.

• Independent, programmable transmit and receive routing paths.

• Total of 512 routing entries for receive and transmit each. ----- 512 таймслотов - это 16х32, тоесть как раз Е3 поток

• Total of 256 routing entries + 256 shadow routing entries for receive and transmit each. Эта строчка пока непонятна...

-----------------------------------------------------------------------

Кому верить то? В таблице - 2хЕ1, а в даташите 4хЕ3!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this