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

 
 
> Проблема "смещения памяти" Cortex M3
AntoXa01
сообщение Jan 18 2011, 09:25
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 1-11-10
Пользователь №: 60 574



Добрый день
Есть плата LM3S6965
Среда разработки - Eclipse + ARM plugin + GCC

Задание: вывести меню на дисплей 4*20

меню хранится так

CODE
volatile struct MenuItem {
char LongName[21];
char VisibleFor: 3;
unsigned char SubMenuLength: 5;
};

struct MenuItem menu[] = {
{" Калибровка ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройки напряж-я ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка тока ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка АПВ ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка АВР ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка БРУ ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка Земля ", MENU_VISIBLE_MODE_USER, 0},
{" 8.vendorpass ", MENU_VISIBLE_MODE_VENDOR, 0},
{" 9.userpass 2 ", MENU_VISIBLE_MODE_USER, 0},
{" 10.vendorpass 2 ", MENU_VISIBLE_MODE_VENDOR, 0}
};



при отладке данные в этом массиве сдвигаются на 3 байта, непонятно, почему



а теперь самое интересное
вот фрагмент кода
(visible - показывает пункты меню или нет, в зависимости от уровня доступа)
CODE
void MenuInit(void){
TOTAL_MENU_ITEMS_COUNT = 10;
MakeVisibleMenu(mode);
}


//void Atas (int i) {
//i='A';
//}

void MakeVisibleMenu(char mode) {
char i;
VISIBLE_MENU_ITEMS_COUNT = -1;


1я функция - инициализация
2я, закомментированная - ничего не делает и нигде не вызывается
3я функция покаызвает меню (пукнты, которые нужно показать)



внимание, вопрос:
если убрать комментарии с функции - все класс, все работает (но функция-то нигде не вызывается)
если оставить или удалить функцию - сдвиг данных

что делать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AntoXa01
сообщение Jan 18 2011, 14:19
Сообщение #2





Группа: Новичок
Сообщений: 5
Регистрация: 1-11-10
Пользователь №: 60 574



CODE
struct MenuItem menu[] = {
{"1 ", MENU_VISIBLE_MODE_ALL, 0, 0},
{"2 ", MENU_VISIBLE_MODE_ALL, 0, 0},
{"3 ", MENU_VISIBLE_MODE_USER, 0, 0},
{"4 ", MENU_VISIBLE_MODE_VENDOR, 0, 0}
};


вот дамп

CODE
{{LongName = "\000\000\000\000\061", ' ' <repeats 16 times>, VisibleFor = 0 '\000', SubMenuLength = 4 '\004', SubMenu = 0x300},
{LongName = "\000\000\000\000\062", ' ' <repeats 16 times>, VisibleFor = 0 '\000', SubMenuLength = 4 '\004', SubMenu = 0x300},
{LongName = "\000\000\000\000\063", ' ' <repeats 16 times>, VisibleFor = 0 '\000', SubMenuLength = 4 '\004', SubMenu = 0x100},
{LongName = "\000\000\000\000\064", ' ' <repeats 16 times>, VisibleFor = 0 '\000', SubMenuLength = 4 '\004', SubMenu = 0x200}}


о, еще 1 "открыл"
если в любой функции вставить массив char 3 элементов - тоже работает
напрмер, char a[] = "Ant";

что это может быть?

Сообщение отредактировал AntoXa01 - Jan 18 2011, 13:29
Go to the top of the page
 
+Quote Post



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

 


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


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