Перейти к содержанию
    

5402 DSK - работа со внешней памятью борта

Есть большие массивы данных которые нужно закрузить в борд для обработки. Нужно загрусить их во внешнюю память (на борту есть 64кх16 SRAM). Как мне сказать линкеру определить секции данных во внешнюю память ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть большие массивы данных которые нужно закрузить в борд для обработки. Нужно загрусить их во внешнюю память (на борту есть 64кх16 SRAM). Как мне сказать линкеру определить секции данных во внешнюю память ?

Примерно так (в cmd-файле):

 

MEMORY 
{
/* ... */
   EXTRAM    : origin = <адрес>,  len = 0x100000 // <адрес> - адрес начала внешней памяти
                                                 // (зависит от CE-зоны, на которую повешена RAM-ка)
/* ... */
}

SECTIONS
{
/* ... */
  .data         > EXTRAM
/* ... */
}

Если через DSP/BIOS, то в настройках распределения памяти создать соответствующую область, и направить туда секцию ".data".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Примерно так (в cmd-файле):

 

MEMORY 
{
/* ... */
   EXTRAM    : origin = <адрес>,  len = 0x100000 // <адрес> - адрес начала внешней памяти
                                                 // (зависит от CE-зоны, на которую повешена RAM-ка)
/* ... */
}

SECTIONS
{
/* ... */
  .data         > EXTRAM
/* ... */
}

Если через DSP/BIOS, то в настройках распределения памяти создать соответствующую область, и направить туда секцию ".data".

 

БОльшое спасибо, будем пробовать. (Я не работаю с DSP/BIOS).

Размер внешней памяти - 64kB , значит наверно len = 0x10000. Внутреннего RAMa у 5402 - 16 кB, всего, насколко понял (если не ошибаюсь) может адресовать (в сумме) 64 kB, значит внешний RAM будет примерно от 0х4000 до 0х10000. Прицип такой ?

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Размер внешней памяти - 64kB , значит наверно len = 0x10000. Внутреннего RAMa у 5402 - 16 кB, всего, насколко понял (если не ошибаюсь) может адресовать (в сумме) 64 kB, значит внешний RAM будет примерно от 0х4000 до 0х10000. Прицип такой ?

 

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

1. len действительно 0x10000, это верно.

2. Внутренней, судя по документации 16к х 16, то есть 32 кбайта.

3. Внешний РАМ, мне кажется, на 0x8000 (я посмотрел в примерах для DSK5402, которые идут в комплекте с CCS). Вообще в документации на DSK должно быть сказано, на какое адресное пространство повешена внешняя память. Плюс к этому надо посмотреть на memory map камня. Оказывается у 5402 нет EMIF'а, так что забудьте все, что я сказал про CE :)

4. А подкачивать во внутреннюю вам поможет memcpy :)

 

[ADD]

И когда смотрите на memory map -- учитывайте какой у вас MAU (не знаю какой у 5402, но думаю 16 бит).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. len действительно 0x10000, это верно.

2. Внутренней, судя по документации 16к х 16, то есть 32 кбайта.

3. Внешний РАМ, мне кажется, на 0x8000 (я посмотрел в примерах для DSK5402, которые идут в комплекте с CCS). Вообще в документации на DSK должно быть сказано, на какое адресное пространство повешена внешняя память. Плюс к этому надо посмотреть на memory map камня. Оказывается у 5402 нет EMIF'а, так что забудьте все, что я сказал про CE :)

4. А подкачивать во внутреннюю вам поможет memcpy :)

 

[ADD]

И когда смотрите на memory map -- учитывайте какой у вас MAU (не знаю какой у 5402, но думаю 16 бит).

 

ОК, спасибо. MAU ? Что это ? (сорри за мою дилетантность начинающего...) и что такое EMIF ?

 

Дa, карта памяти у него (в его datasheet) говорит что RAMa у него 16 кWords, ot 0x0080 до 0x3FFF, затем идет external RAM: 0x4000 - 0xEFFF, после чего идет внутренний ROM (пока не понял для чего конкретно и как его использовать): 0xF000 - 0xFEFF (4 kWords), затем 0xFF00 - 0xFF7F - reserved и в конце interrupts:

0xFF80 - 0xFFFF.

Да, я тоже обратил внимание в примерах часто идет код/дата от 0х0080 до 0х8000 что по идее означает охват внутреннего RAMа и части внешнего....странно...

 

На борту стоит 64к х 16 SRAM, но видимо из него адресуется только примерно 48к х 16 оставшиеся от после внутреннего пространства...хмм, нет на руках документации по борту...

 

Я чего не пойму: ежели в .cmd указать PAGE данных по длинне превышающий размер внутреннего RAMа, но не указать EXTRAM (т.е. по идее он автоматом будет это понимать как указание на внутренний RAM, tak ?), то что происходит ? Означает ли что ежелу указывать размер охватывающий и внутренний и част внешнего RAM, но не указывая EXTRAM, он всеравно поймет что вы имели ввиду задействовать и внутреннюю и внешнюю ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ОК, спасибо. MAU ? Что это ? (сорри за мою дилетантность начинающего...) и что такое EMIF ?

 

Дa, карта памяти у него (в его datasheet) говорит что RAMa у него 16 кWords, ot 0x0080 до 0x3FFF, затем идет external RAM: 0x4000 - 0xEFFF, после чего идет внутренний ROM (пока не понял для чего конкретно и как его использовать): 0xF000 - 0xFEFF (4 kWords), затем 0xFF00 - 0xFF7F - reserved и в конце interrupts:

0xFF80 - 0xFFFF.

Да, я тоже обратил внимание в примерах часто идет код/дата от 0х0080 до 0х8000 что по идее означает охват внутреннего RAMа и части внешнего....странно...

 

На борту стоит 64к х 16 SRAM, но видимо из него адресуется только примерно 48к х 16 оставшиеся от после внутреннего пространства...хмм, нет на руках документации по борту...

 

Я чего не пойму: ежели в .cmd указать PAGE данных по длинне превышающий размер внутреннего RAMа, но не указать EXTRAM (т.е. по идее он автоматом будет это понимать как указание на внутренний RAM, tak ?), то что происходит ? Означает ли что ежелу указывать размер охватывающий и внутренний и част внешнего RAM, но не указывая EXTRAM, он всеравно поймет что вы имели ввиду задействовать и внутреннюю и внешнюю ?

1. MAU -- minimal addressable unit, то есть минимально адресуемая ячейка. Например, если MAU=16 bit word, то условно говоря адреса 0x0000-0xFFFF адресуют 64кслов, что есть 128 кбайт. Я это к тому, что если вы считаете в байтах, то надо еще учитывать и битность MAU, чтобы из memory map сделать вывод о количестве адресуемой памяти.

2. EMIF -- external memory interface, субконтроллер в DSP для управления различными видами памяти. Есть в 55-м семействе, в 6000-ном. В 5402 не замечен :)

3. У 5402 несколько режимов как я понял (microprocessor, microcomputer), надо исходя из этого тоже смотреть.

4. Документацию на DSK5402 сейчас найти проблематично, но на DSK5416 (не знаю насколько они похожи -- это проще вам выяснить) сказано

"For data space accesses there are two pages (2) of 32K words of SRAM mapped in the

VC5416’s data space from 0x8000 to 0xFFFF. Program space directly accesses the SRAM as long as the access is between 0x000000 to 0x3FFFFF."

5. Что касается указаний линкеру, то он понимает только то, что вы ему задали диапазон адресного пространства, и укладывает в этот диапазон секции кода/данных/стека/кучи/..., которые вы направили в этот диапазон. Укладывает как правило последовательно, если не указано иное (выравнивание там, pragma и т.п.). Внешняя память, внутренняя, РОМ, РАМ -- ему все равно, ему просто надо отлинковать адреса, привязавшись к конкретным значениям. А уж как распределить -- задача программиста.

 

P.S. Я не работал с 54-м семейством и в нем не разбираюсь -- поэтому говорю только о том, что похоже на другие процессоры. Конкретику читайте в документации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. MAU -- minimal addressable unit, то есть минимально адресуемая ячейка. Например, если MAU=16 bit word, то условно говоря адреса 0x0000-0xFFFF адресуют 64кслов, что есть 128 кбайт. Я это к тому, что если вы считаете в байтах, то надо еще учитывать и битность MAU, чтобы из memory map сделать вывод о количестве адресуемой памяти.

2. EMIF -- external memory interface, субконтроллер в DSP для управления различными видами памяти. Есть в 55-м семействе, в 6000-ном. В 5402 не замечен :)

3. У 5402 несколько режимов как я понял (microprocessor, microcomputer), надо исходя из этого тоже смотреть.

4. Документацию на DSK5402 сейчас найти проблематично, но на DSK5416 (не знаю насколько они похожи -- это проще вам выяснить) сказано

"For data space accesses there are two pages (2) of 32K words of SRAM mapped in the

VC5416’s data space from 0x8000 to 0xFFFF. Program space directly accesses the SRAM as long as the access is between 0x000000 to 0x3FFFFF."

5. Что касается указаний линкеру, то он понимает только то, что вы ему задали диапазон адресного пространства, и укладывает в этот диапазон секции кода/данных/стека/кучи/..., которые вы направили в этот диапазон. Укладывает как правило последовательно, если не указано иное (выравнивание там, pragma и т.п.). Внешняя память, внутренняя, РОМ, РАМ -- ему все равно, ему просто надо отлинковать адреса, привязавшись к конкретным значениям. А уж как распределить -- задача программиста.

 

P.S. Я не работал с 54-м семейством и в нем не разбираюсь -- поэтому говорю только о том, что похоже на другие процессоры. Конкретику читайте в документации.

 

 

OK, спасибо.

Ну насчет MAU - тут все понятно, я и говорил об words, не bytes. Просто не был в курсе абреввиатуры MAU... :biggrin:, в остальном будем разбираться.

Еще раз большое спасибо за помощь.. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...