|
STR71xF and access to External memory, Некоректная запись... |
|
|
|
Nov 12 2007, 09:43
|

Участник

Группа: Участник
Сообщений: 25
Регистрация: 10-05-06
Из: Киев
Пользователь №: 16 944

|
Устройство состоит из STR71xF и CMOS Static RAM K6F8016V3A. Доступ к SRAM отконфигурирован через 16 бит шину данных. В программе инициализированно куча структур и масивов расположенных в этой памяти, в том числе и char типа. Работа с memcpy затруднена, работает не так как надо ..... char ext_array[5]; // ext. memory char intern_array[3]={1,2,3}; //internal memory ..... memcpy(ext_array,intern_array,3);
В результате копирования 2 затирается. Проблема в том что переконфигурировать память нельзя (заказчик не согласен). Может есть какие то опции компилятора для решения данного вопроса?  P.S используется RealView® Developer Kit V2.1
Сообщение отредактировал Странник - Nov 12 2007, 09:56
|
|
|
|
|
 |
Ответов
|
Nov 12 2007, 10:32
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343

|
у него вроде только __packed. Попробуйте объявить так: Код __packed char ext_array[5]; // ext. memory __packed char intern_array[3]={1,2,3}; //internal memory и посмотреть в дизассемблере, что делается в мемкопи.
|
|
|
|
|
Nov 12 2007, 12:29
|

Участник

Группа: Участник
Сообщений: 25
Регистрация: 10-05-06
Из: Киев
Пользователь №: 16 944

|
Цитата(Leen @ Nov 12 2007, 14:32)  у него вроде только __packed. Попробуйте объявить так: Код __packed char ext_array[5]; // ext. memory __packed char intern_array[3]={1,2,3}; //internal memory и посмотреть в дизассемблере, что делается в мемкопи. Тут обнаружилась вот ещё какая штука: когда в дебагере меняешь значение четного адреса ext. memory то автоматически меняется значение следующего нечетного. Это может на что то говорить? По поводу _packed: действительно есть такая штука, но как то результатов не получил
|
|
|
|
|
Nov 12 2007, 12:34
|

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

|
Цитата(Странник @ Nov 12 2007, 14:29)  Тут обнаружилась вот ещё какая штука: когда в дебагере меняешь значение четного адреса ext. memory то автоматически меняется значение следующего нечетного. Как у вас подключена внешняя память? У вас ведь 16-битная микросхема, обычно при подключении 16-битных памятей ее вывод A0 идет на A1 процессора, A1 на A2 и т.д, вывод A0 процессора остается свободным, а выбор младшего/старшего осуществляется линиями UB/LB. Не знаю, как реализован интерфейс внешней памяти у STR, в даташите должны быть схемы.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Nov 12 2007, 13:07
|

Участник

Группа: Участник
Сообщений: 25
Регистрация: 10-05-06
Из: Киев
Пользователь №: 16 944

|
Цитата(Сергей Борщ @ Nov 12 2007, 16:34)  Как у вас подключена внешняя память? У вас ведь 16-битная микросхема, обычно при подключении 16-битных памятей ее вывод A0 идет на A1 процессора, A1 на A2 и т.д, вывод A0 процессора остается свободным, а выбор младшего/старшего осуществляется линиями UB/LB. Не знаю, как реализован интерфейс внешней памяти у STR, в даташите должны быть схемы. Так и есть, только UB/LB сидят на земле
|
|
|
|
Сообщений в этой теме
Странник STR71xF and access to External memory Nov 12 2007, 09:43 Leen Вопрос первый - какой компилятор?
Вопрос второй - ... Nov 12 2007, 09:57 Странник Цитата(Leen @ Nov 12 2007, 13:57) Вопрос ... Nov 12 2007, 10:13    Сергей Борщ Цитата(Странник @ Nov 12 2007, 15:07) Так... Nov 12 2007, 13:52     Странник Большое спасибо всем кто откликнулся Nov 12 2007, 20:04 KA_ru Рад что разобрался.
делали устройство на STR710 он... Nov 12 2007, 20:20 bigmaxtor Цитата(KA_ru @ Nov 13 2007, 01:20) делали... Nov 3 2008, 15:21
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|