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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> LPC2292 c внешней ОЗУ и JTAG, как грузить в 16 бит
asen
сообщение May 17 2006, 14:55
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 513
Регистрация: 5-09-05
Из: Барнаул
Пользователь №: 8 220



Добрый день, вечер и утро всем!!!

Вот проблема есть такая был у меня модуль LPC-H2294 так как известно две микросхемы ОЗУ установлено с 16-ти битной организацией, другими словами на 32-х битную шину данных прицеплена ОЗУ. Так вот я прописывал в IAR адреса ПЗУ и ОЗУ в адресном пространстве внешнего ОЗУ и грузил туда через JTAG программу объемом ~200кБайт и все было ОК.
А потом при разработки принципиальной схемы пришлось отказаться от 32-ти битной шины данных и сделал 16-ти битную шину но вот не задача теперь когда пытаюсь грузить данные в внешнюю ОЗУ через JTAG данные теряются как мне кажется это обусловлено тем что данные передаются 32-х битными словами.

Так вот вопрос может можно заставить грузить данные 16 битными словами?
Может в трумб режиме ?
Go to the top of the page
 
+Quote Post
Alex03
сообщение May 17 2006, 18:11
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



А загрузить во внутреннюю память тестик внешней и прогнать? Всё нормально?

Посмотрите на регистры BCFG0..BCFG3. Не инициализировали ли Вы их раньше в какихнить скриптах (я с ИАР-ом не работал.)
Если нет, то видимо Вы ранее полагались на дефолтные установки и использовали банк 1, т.е. диапазон адресов 0x81000000-0x81FFFFFF.
Если так то сейчас Вам надо использовать банк 2 (CS2 и соответственно диапазон 0x82000000-0x82FFFFFF). Или инициализировать нужный BCFGх соответствующим значением перед загрузкой.

тумб/арм тут не при чём.
Go to the top of the page
 
+Quote Post
asen
сообщение May 18 2006, 02:55
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 513
Регистрация: 5-09-05
Из: Барнаул
Пользователь №: 8 220



адреса прописаны верно
и вообще какая разници в настройках BCFG0..BCFG3 при загрузки процессора через JTAG ведь она выполняется аппаратно. BCFG0..BCFG3 нужны чтобы конфигурировать разрядность и другое при чтении/записи во внешнее ОЗУ в рабочем режиме. Озу подключена ко всем сигналам CS0,CS1 по одной микрухе K6R4016 к каждому.
Вопрос в том как заставить аппартно укладывать данные полученые из JTAG 16-ти битными словами чтобы потом при запуске части программы из внутреннего ОЗУ настроить шину в 16-ти битный режим и продолжить выполнение программы уже из внешнего ОЗУ.
Go to the top of the page
 
+Quote Post
Alex03
сообщение May 18 2006, 04:43
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Цитата(asen @ May 18 2006, 08:55) *
адреса прописаны верно
и вообще какая разници в настройках BCFG0..BCFG3 при загрузки процессора через JTAG ведь она выполняется аппаратно. BCFG0..BCFG3 нужны чтобы конфигурировать разрядность и другое при чтении/записи во внешнее ОЗУ в рабочем режиме. Озу подключена ко всем сигналам CS0,CS1 по одной микрухе K6R4016 к каждому.


Сам проц про внешнюю память ничего не знает, поэтому ему надо сказать об этом.
В регистрах BCFGx есть биты 29:28 которые отвечают за разрядность памяти в соответствующем банке.
По ресету они устанавливаются в:
Банк 0 - В зависимости от входов BOOT[1:0] во время ресета.
Банк 1 - 32 рагдяда
Банк 2 - 16 рагдядов
Банк 3 - 8 рагдядов

Цитата
Вопрос в том как заставить аппартно укладывать данные полученые из JTAG 16-ти битными словами чтобы потом при запуске части программы из внутреннего ОЗУ настроить шину в 16-ти битный режим и продолжить выполнение программы уже из внешнего ОЗУ.


Прописать BCGFx, проц сам будет разбивать одно 32-х разрядное обращение на два 16-ти.
Go to the top of the page
 
+Quote Post
asen
сообщение May 18 2006, 07:37
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 513
Регистрация: 5-09-05
Из: Барнаул
Пользователь №: 8 220



Ладно бох с ним с JTAG
Может кто нибуть сказать как обратится (записать/прочитать) в IAR к конкретной ячейке по заданому адресу памяти подключеной к внешней шине.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 18 2006, 07:43
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(asen @ May 18 2006, 10:37) *
Ладно бох с ним с JTAG
Может кто нибуть сказать как обратится (записать/прочитать) в IAR к конкретной ячейке по заданому адресу памяти подключеной к внешней шине.

Абсолютно аналогично как и к внутренней, и как к 'портам'. Или я чего-то не понимаю в проблеме?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
asen
сообщение May 18 2006, 07:50
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 513
Регистрация: 5-09-05
Из: Барнаул
Пользователь №: 8 220



Вообщем на внешней шине у меня висит дисплей PG320240-D И линия А4 завадена для выбора команда/данные вот мне надо писать по адресу 0x83000001 данные и 0x83000011 команды чтобы соответственно на передаче данных А4 = 0, а на ппередаче адреса А4=0. Вот попробывал так обьявить но видемо на правельно. Может как еще можно?

__IO_REG8 (LCD_DATA, 0x83000001,__READ_WRITE);
__IO_REG8 (LCD_COM, 0x83000011,__READ_WRITE);
Go to the top of the page
 
+Quote Post
KRS
сообщение May 18 2006, 07:50
Сообщение #8


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(asen @ May 18 2006, 11:37) *
Ладно бох с ним с JTAG
Может кто нибуть сказать как обратится (записать/прочитать) в IAR к конкретной ячейке по заданому адресу памяти подключеной к внешней шине.

1 способ через указатель, годится для любого С
Код
unsigned short* Ptr;
Ptr=(unsigned short*)(0x82000000);
Ptr[0]=0x55AA;
if (Ptr[0]!=0x55AA) .....
.....


2 способ использовать @ (фишка IAR)
Код
unsigned short ExtRam[8192]@0x82000000;


3 способ использовать сегменты и XCL файл
Go to the top of the page
 
+Quote Post
asen
сообщение May 18 2006, 08:20
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 513
Регистрация: 5-09-05
Из: Барнаул
Пользователь №: 8 220



Попробывал вот этот способ

unsigned short LCD_DATA@0x83000001;
unsigned short LCD_COM@0x83000011;

но он выдает ошибку

Error[Be012]: location address not allowed (object must have static storage duration and be const or __no_init) C:\prog\proba\main.cpp 6
Error[Be012]: location address not allowed (object must have static storage duration and be const or __no_init) C:\prog\proba\main.cpp 7
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 18 2006, 08:40
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(asen @ May 18 2006, 11:20) *
Error[Be012]: location address not allowed (object must have static storage duration and be const or __no_init) C:\prog\proba\main.cpp 6

Ну так успокойте его - скажите, что согласны не инициализировать
Ну и главное - адреса-то странные- смещенные.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
asen
сообщение May 18 2006, 14:25
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 513
Регистрация: 5-09-05
Из: Барнаул
Пользователь №: 8 220



С адресацией я разобрался всем спасибо !!!
Вот только теперь другая проблема у меня по сигналу CS3 выбирается ЖКИ подключенной к внешней шине к младшим 8 разрядам. А адресация между командами/данными выполняется за счет линии А4. Дисплей имеет контроллер SED1335 и имеет возможность работать в режиме i8080. Так проблема собственно следующая так как дисплей имеет питание 5 В а контроллер питается от 3,3 В и видимо уровни не дотягивают. В общем, он отказывается работать. Когда до этого я его запускал совместно с модулем LPC-H2294, я ставил на порты подтягивающие резисторы к +5В. А на шину ставить боюсь, так как не кто не гарантирует, что внешняя шина у контроллера тоже не боится 5 В.
Вопросы следующие
1. Может, кто пробовал цеплять к внешней шине привязывающие резисторы
2. Может можно еще как то поднять уровни до 5 вольтовых.
Go to the top of the page
 
+Quote Post
Alex03
сообщение May 18 2006, 17:56
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Оно и без подтяжки работать должно.
Сравните минимальные/максимальные уровни напряжения на вход/выход LPC и SED
Go to the top of the page
 
+Quote Post
asen
сообщение May 19 2006, 01:42
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 513
Регистрация: 5-09-05
Из: Барнаул
Пользователь №: 8 220



В том то и дело что минимальный высокий входной уровень на входе ЖКИ 4В а максимальный который может обеспечить микроконтроллер 3-3,3 В вот такая борада!!!
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 19 2006, 05:35
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(asen @ May 18 2006, 17:25) *
В общем, он отказывается работать. Когда до этого я его запускал совместно с модулем LPC-H2294, я ставил на порты подтягивающие резисторы к +5В. А на шину ставить боюсь, так как не кто не гарантирует, что внешняя шина у контроллера тоже не боится 5 В.

А документацию почитать что мешает?

[6] 5 V tolerant pad with built-in pull-up resistor providing digital I/O functions with TTL levels and hysteresis and 10 ns slew rate control.
The pull-up resistor’s value ranges from 60 kΩ to 300 kΩ.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Alex03
сообщение May 19 2006, 05:52
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



ХМ
В том PDF-е на SED1335 который у меня есть D0..D7 и все остальные линии микропроцессорного интерфейса обозваны как TTL.А далее в табличке про TTL:

Код
                                 min  typ    max
Supply voltage            VDD   4.5    5.0  5.5      V
HIGH-level input voltage  VIHT  0.5VDD  —  VDD       V
LOW-level input voltage   VILT  VSS     —  0.2VDD    V
HIGH-level output voltage VOHT  2.4     —  —        V
LOW-level output voltage  VOLT   —     —  VSS + 0.4  V


Где:
Vss - 0В
PDF - Seiko Epson corporation 1999.


Цитата(zltigo @ May 19 2006, 11:35) *
[6] 5 V tolerant pad with built-in pull-up resistor providing digital I/O functions with TTL levels and hysteresis and 10 ns slew rate control.
The pull-up resistor’s value ranges from 60 kΩ to 300 kΩ.


НУ и не забудте удостовериться что на другие чипы по шине данных (и др. общ. сигналах) также можно подавать +5В
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:08
Рейтинг@Mail.ru


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