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

 
 
> Chipcon CC1010. Пытаюсь запихнуть переменные в pdata. Дошел уже до исступления...
Kenelm
сообщение Oct 29 2011, 15:25
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 19-11-08
Пользователь №: 41 748



Среда Keil uVision2. Поверх поставлен CC1010IDE. Выбрано устройство "CC1010_debug".

Пытаюсь разместить массив в pdata и создать на него указатель, расположенный в data.

char pdata massiv[32];
char pdata * data ptr_massiv = massiv;

code void main()
{
*ptr_massiv = 0xAA;
*(ptr_massiv + 1) = 0xBB;
}

В результате при дебаггинге в окне "Watch" смотрю на содержание массива "massiv" - пустой (все элементы равны нулю). Смотрю на *ptr_massiv и *(ptr_massiv + 1) - отображается, что там содержится 0xAA и 0xBB, соответственно!!! При этом ptr_massiv указывает именно на "голову" массива "massiv"! wacko.gif

В настройках проекта стоит:
Memory model: Compact (variables in PDATA)
Стоит галка напротив "Use On-chip XDATA"

В startup.a51:
PPAGEENABLE EQU 1
PPAGE EQU 0
PPAGE_SFR DATA 092H

PS. Если массив запихнуть в data или xdata, то все работет ок.

Сообщение отредактировал Kenelm - Oct 29 2011, 16:02
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AndreyS
сообщение Oct 31 2011, 06:16
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(Kenelm @ Oct 29 2011, 19:25) *
Среда Keil uVision2. Поверх поставлен CC1010IDE. Выбрано устройство "CC1010_debug".
В результате при дебаггинге в окне "Watch" смотрю на содержание массива "massiv" - пустой (все элементы равны нулю). Смотрю на *ptr_massiv и *(ptr_massiv + 1) - отображается, что там содержится 0xAA и 0xBB, соответственно!!! При этом ptr_massiv указывает именно на "голову" массива "massiv"! wacko.gif

PS. Если массив запихнуть в data или xdata, то все работет ок.


Добрый день.

Вы смотрели содержимое массива именно в Watch? Проверьте содержимое в окне memory, и введите там адрес вашего массива (только префикс типа памяти не забудьте). Если там верная информация (а она должна быть именно такой, потому что через ваши указатели ptr_massiv информация отображается правильная), то не беспокойтесь. Это глюк кейла. Я помню напарывался на подобный эффект, когда в ватчах отображалось не то что там реально находилось. Так что дамп ОЗУ лучший инструмент. Ну и посмотрите карту памяти, реально переменная попала в нужную область или нет (это как второй инструмент контроля над компилятором).

Удачи.


--------------------
Удачи.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 26th August 2025 - 07:46
Рейтинг@Mail.ru


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