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

 
 
> Проблема с размещением массивов констан, LPC2368, Yagarto (4.3.2)
gte
сообщение May 12 2010, 21:50
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613



Взял свой тестовый проект двухгодичной давности за основу, при выводе на графический экран (wg19232) по мере наращивания и добавления массивов получил зависание программы. Такое ощущение, что попадает не по тому адресу.
Ради интереса из const перевел массивы в static. Программа начала работать нормально, но при наращивании текста в подпрограмме обработки 0 таймера получил опять вылеты. Да еще 2 года не пользовал Эклипс+АРМ :-(.

Размещение массивов в качестве const.
Код
*(.gcc_except_table)
*(.rodata)
*(.rodata*)
.rodata.gte8   0x00004228      0x300 lcd_wg19232b.o
                0x00004228                gte8
.rodata.hv_on  0x00004528       0xb4 lcd_wg19232b.o
                0x00004528                hv_on
.rodata.hv_off
                0x000045dc       0xb4 lcd_wg19232b.o
                0x000045dc                hv_off
.rodata.hv_0_9_16x25
                0x00004690      0x1f4 lcd_wg19232b.o
                0x00004690                hv_0_9_16x25
.rodata.zpt_5x25
                0x00004884       0x19 lcd_wg19232b.o
                0x00004884                zpt_5x25
.rodata.kv_x25
                0x0000489d       0x64 lcd_wg19232b.o
                0x0000489d                kv_x25
.rodata.hv_1_12x25.1360
                0x00004901       0x32 lcd_wg19232b.o
.rodata.C.0.1460
                0x00004933        0x6 lcd_wg19232b.o
*(.gnu.linkonce.r.*)

Как Вы думаете. Проблема с размещением массивов, или это всего лишь выявило ошибку?
Что смотреть в первую очередь?
Ниже код, добавления которого сбивает программу с массивами static, переменные volatile uint8_t.

Код
breakdown_time++;                            
  if (breakdown_time >= 100)                                
    {                        
      breakdown_integrator = breakdown_integrator << N_impuls;
      N_impuls =0;                              
      breakdown_time =0;
      breakdown_time_minus++;
    }  
  if (breakdown_integrator > 20)
    {
      FIO2CLR = (1 << 11);        .  
      breakdown_fault =1;      
    }
  if (breakdown_time_minus > 10)
    {
      breakdown_integrator = breakdown_integrator >> 0x01;
      breakdown_time_minus =0;
    }

Код еще бессмысленный, переменные во "вне" еще не изменяются.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Diz
сообщение May 12 2010, 23:14
Сообщение #2


Частый гость
**

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



Те массивы констант, которые легли не на границу слова - char ?
Go to the top of the page
 
+Quote Post



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

 


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


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