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

 
 
> 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
Ответов
Kenelm
сообщение Oct 31 2011, 06:39
Сообщение #2





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



Цитата(Палыч @ Oct 31 2011, 10:31) *
Поскольку всё хорошо работает с xdata, но не работает с pdata, то тут какая-то "беда" с командами типа "movx @ri, a".
Вот что нашел в DS:

Угу, я на эту фразу много раз медитировал. sm.gif MPAGE по умолчанию сбрасывается в 0х00. Ну а мне и надо писать в начальную страницу xdata.

Цитата(AndreyS @ Oct 31 2011, 10:16) *
Вы смотрели содержимое массива именно в Watch? Проверьте содержимое в окне memory, и введите там адрес вашего массива (только префикс типа памяти не забудьте). Если там верная информация (а она должна быть именно такой, потому что через ваши указатели ptr_massiv информация отображается правильная), то не беспокойтесь.


В том-то все и дело, что смотрел и так и так. "ptr_massiv" указывает на "X:00". Смотрю память по этому адресу - пусто! Адрес &massiv[0] - "X:00". При этом *ptr_massiv = 0xAA, а massiv[0] = 0x00. Я близок к безумию...

Цитата(AndreyS @ Oct 31 2011, 10:16) *
Ну и посмотрите карту памяти, реально переменная попала в нужную область или нет (это как второй инструмент контроля над компилятором).

Память большущая - вручную тяжко её всю шерстить...

Сообщение отредактировал Kenelm - Oct 31 2011, 06:40
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 31 2011, 06:48
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



В Keil про СС1010 есть ещё загадочная фраза "Full System Debugging with Keil 5Vision". Что такое "5Vision"? Букву "мю" не смогли "нарисовать"? Или имеется в виду какая-то конкретная версия?
Go to the top of the page
 
+Quote Post
Kenelm
сообщение Oct 31 2011, 06:54
Сообщение #4





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



Цитата(Палыч @ Oct 31 2011, 10:48) *
В Keil про СС1010 есть ещё загадочная фраза "Full System Debugging with Keil 5Vision". Что такое "5Vision"? Букву "мю" не смогли "нарисовать"? Или имеется в виду какая-то конкретная версия?


С этим вообще отдельная песТня. 5Vision - это походу все-таки uVision. Но! Симулятор Keil по умолчанию некорректно работает с CC1010 (не отображается второй UART, некоторые прерывания и т. д.). Для полноценной симуляции поверх Кейла нужно ставить пришлепку CC1010IDE (бесплатно валяется на сайте Texas Instruments). Однако CC1010IDE совместим только со вторым Кейлом. sad.gif
Go to the top of the page
 
+Quote Post



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

 


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


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