реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> TMS470R1A256 memory map непонятки
Vladimir Chekin
сообщение Apr 12 2007, 04:12
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 16-03-07
Из: МО, г.Балашиха
Пользователь №: 26 210



Люди, хелп. Перерыл всю имеющуюся у меня документацию на этот камень, но не смог найти ответ на простой вопрос - начальные адреса для RAM и HET RAM. В описании камня пишут:
---------
Memory Selects
Memory selects allow the user to address memory arrays (i.e., flash, RAM, and HET RAM) at user-defined
addresses. Each memory select has its own set (low and high) of memory base address registers (MFBAHRx
and MFBALRx) that, together, define the array's starting (base) address, block size, and protection.

The base address of each memory select is configurable to any memory address boundary that is a multiple of
the decoded block size.
---------
Как понимать "user-defined"? Разве начальный адрес внутренней RAM не должен быть физически задан в адресном простанстве конкретного камня?

Зачем для FLASH и RAM по два базовых адресных регистра? Правильно ли я понимаю, что перед тем как первый раз обратиться к RAM я должен проинициализировать пару MFBAxR2 и(или)MFBAxR3. Для чего нужны Coarse select регистры MCBAxRx?
Go to the top of the page
 
+Quote Post
etoja
сообщение Apr 12 2007, 06:55
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



ARM за 80USD здесь редко изпользуют.
Переходи на филипс и радуйся жизни.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 12 2007, 09:56
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Vladimir Chekin @ Apr 12 2007, 03:12) *
Как понимать "user-defined"? Разве начальный адрес внутренней RAM не должен быть физически задан в адресном простанстве конкретного камня?
С камнем не работал, но могу предположить, что при ресете в эти регистры заносится какое-то значение по умолчанию, которое и будет определять карту памяти после старта. Про второй вопрос пока пас.

Цитата(etoja @ Apr 12 2007, 05:55) *
Переходи на филипс и радуйся жизни.
Посоветовать вам перейти на еще более дешевый AVR?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
IV_K
сообщение Apr 12 2007, 11:47
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 17-06-05
Пользователь №: 6 087



Цитата
Перерыл всю имеющуюся у меня документацию на этот камень, но не смог найти ответ на простой вопрос - начальные адреса для RAM и HET RAM

при старте начальные адреса памятей не определены, значений по умолчанию нет, находятся где угодно =) . при работе из рама отладчик должен запускать макрос для инита карты памяти. при работе из флеши код начинает выполняться из первого сектора флеши с адреса 0 и этот код должен первым делом инициализировать карту памяти в low_level_init() или в cstartup()
Цитата
Как понимать "user-defined"? Разве начальный адрес внутренней RAM не должен быть физически задан в адресном простанстве конкретного камня?

для данных камней все делается через регистры (MFBAHRx and MFBALRx) и физически отображается на любой диапазон адресов
Цитата
Зачем для FLASH и RAM по два базовых адресных регистра? Правильно ли я понимаю, что перед тем как первый раз обратиться к RAM я должен проинициализировать пару MFBAxR2 и(или)MFBAxR3.

понимаешь правильно, сперва надо инициализировать.
// RAM is 12K at 0x00400000 is einitialized as follows
// Activate RAM at 0x00400000 that is connected to memory select 2,
// set size to 8KB
MFBAHR2 = 0x00000040;
MFBALR2 = BLOCK_SIZE_8K;

// RAM is 4K at 0x00402000 that is connected to memory select 3,
// set size to 4KB
MFBAHR3 = 0x00000040;
MFBALR3 = 0x00002030;
кусок кода из примера (рам состоит из 2-х частей.. 8К и 4К)

Цитата
Для чего нужны Coarse select регистры MCBAxRx?

для генерации чипселектов к внешней памяти, у 256 внешней шины нету, так что забей на них =)
Go to the top of the page
 
+Quote Post
Vladimir Chekin
сообщение Apr 12 2007, 15:50
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 16-03-07
Из: МО, г.Балашиха
Пользователь №: 26 210



Цитата(Сергей Борщ @ Apr 12 2007, 10:56) *
С камнем не работал, но могу предположить, что при ресете в эти регистры заносится какое-то значение по умолчанию, которое и будет определять карту памяти после старта.


При ресете они все базовые регистры обнуляются (по даташиту). Если для флешки 0-ой адрес подходит по умолчанию в качестве базового, то для работы с рамой её начальный адрес надо грузить в соответсвующий базовый регистр.

Цитата(IV_K @ Apr 12 2007, 12:47) *
при старте начальные адреса памятей не определены, значений по умолчанию нет, находятся где угодно =) .


Не совсем так. Начальные значения описаны в даташите - при ресете они обнуляются.

Цитата(IV_K @ Apr 12 2007, 12:47) *
при работе из рама отладчик должен запускать макрос для инита карты памяти. при работе из флеши код начинает выполняться из первого сектора флеши с адреса 0 и этот код должен первым делом инициализировать карту памяти в low_level_init() или в cstartup()


Это интуитивно я понял. Проблема в том, что я не нашёл эти адресА в документации ни на один из камней этой линейки? Ни в описании модулей, ну там и не должно, ни в описании на конкретный камень. Ни по тексту, ни на рисунках. В описании карты памяти указаны только границы адресуемого пространства 0x0000 0000 - 0xFFE0 0000:
---------
RAM
The A256 device contains 12K bytes of internal static RAM configurable by the SYS module to be addressed
within the range of 0x0000_0000 to 0xFFE0_0000. This RAM is implemented in one 12K-byte array selected by
two memory-select signals. This configuration imposes an additional constraint on the memory map for RAM;
the starting addresses for both RAM memory selects cannot be offset from each other by the multiples of the
size of the physical RAM (i.e., 12K bytes for the A256 device). The RAM is addressed through memory selects 2 and 3.
---------

Цитата(IV_K @ Apr 12 2007, 12:47) *
понимаешь правильно, сперва надо инициализировать.
// RAM is 12K at 0x00400000 is einitialized as follows

Вот где ты эту цифру прочитал? Предполагаю, что в хидере компилятора. А составители хидера где эту цифирь прочитали? Почему именно этот адрес, а не другой?

Пасиб всем за участие. Отдельным палдиез smile.gif
Go to the top of the page
 
+Quote Post
IV_K
сообщение Apr 12 2007, 16:01
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 17-06-05
Пользователь №: 6 087



цыфры для памяти имхо берутся с потолка =)) потому как можно указать любой адрес..
Go to the top of the page
 
+Quote Post
Vladimir Chekin
сообщение Apr 12 2007, 16:38
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 16-03-07
Из: МО, г.Балашиха
Пользователь №: 26 210



Цитата(IV_K @ Apr 12 2007, 17:01) *
цыфры для памяти имхо берутся с потолка =)) потому как можно указать любой адрес..

Получается, что декодер адреса настраиваемый? И для корректной работы надо один и тот же адрес грузить в базовый регистр и его же подсовывать линкеру, чтоб он правильно ссылки разрешил? Если так, то более менее становится ясно. Главное, чтоб области не перекрывались.

То С.Борщ: у MSP вроде тоже сквозное адресное пространство? Как там разрулен вопрос начальных адресов для флешки/рамы?
Go to the top of the page
 
+Quote Post
IV_K
сообщение Apr 12 2007, 16:48
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 17-06-05
Пользователь №: 6 087



получается что так.. настраиваемый.. я обычно беру инициализацию из примеров.. иногда области меняю, вроде пока все работает..
да.. главное чтоб адреса в инициализации и xcl файле совпадали
Go to the top of the page
 
+Quote Post
Vladimir Chekin
сообщение Apr 12 2007, 16:54
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 16-03-07
Из: МО, г.Балашиха
Пользователь №: 26 210



Ещё вопрос к клубу: зачем сделали по две адресуемые области и по два базовых регистра для флеша и рамы? Для реализации каких идей это может пригодиться?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 12 2007, 17:02
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Vladimir Chekin @ Apr 12 2007, 15:38) *
То С.Борщ: у MSP вроде тоже сквозное адресное пространство? Как там разрулен вопрос начальных адресов для флешки/рамы?
Вообще-то это первый встретившийся мне проц в котором эти адреса можно менять. Во всех остальных память лежит по фиксированным адресам. Еще слышал, что у С166 можно задавать адрес ОЗУ, куда отображаются регистры ядра. Там это можно было удачно использовать для переключения контекстов задач ОС. Зачем такое наворотили здесь - загадка. Читай даташит дальше smile.gif


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
IV_K
сообщение Apr 12 2007, 17:03
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 17-06-05
Пользователь №: 6 087



например для защиты одной области памяти.. есть в регистре битик read-only и бит чтения в привелигированном режиме..
Go to the top of the page
 
+Quote Post
Vladimir Chekin
сообщение Apr 12 2007, 21:43
Сообщение #12


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 16-03-07
Из: МО, г.Балашиха
Пользователь №: 26 210



IV_K >> например для защиты одной области памяти.. есть в регистре
>> битик read-only и бит чтения в привелигированном режиме..

Сергей Борщ >> Там это можно было удачно использовать для переключения >> контекстов задач ОС.

Сенькс, потихоньку проясняется.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 20:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01464 секунд с 7
ELECTRONIX ©2004-2016