Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 28.02.2013, 00:58  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Перенос кода на Си с ПК на МК ,трудности

Переношу код программы написанной на Си с ПК на МК, На ПК данный код компилируется и нормально работает, а вот в компиляторе CV возникла проблема с следующим куском кода

Код:
void des(unsigned char key[], byte mode, unsigned char data[])
{    
  byte i; 
  byte left[8];
  byte right[8];
  byte *p = left;  //‹‹‹‹ Ругается на эту строку
пишет non-address/-constsnt initializer

Как это исправить?
Реклама:
Zemlyanov вне форума  
Непрочитано 28.02.2013, 01:16  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Перенос кода на Си с ПК на МК ,трудности

Тогда вот так:
Код:
byte *p;
 p = &left[0];

Последний раз редактировалось Yurkin2007; 28.02.2013 в 01:22.
Yurkin2007 вне форума  
Непрочитано 28.02.2013, 01:19  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Re: Перенос кода на Си с ПК на МК ,трудности

нет, не проходит , я уже это пробовал. компилятор выдает тоже сообщение об ошибке.
Вот засада
Zemlyanov вне форума  
Непрочитано 28.02.2013, 01:22  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Re: Перенос кода на Си с ПК на МК ,трудности

Вот ещё код
Код:
static void rightRot(byte key[])
{         
  byte *p  = key;‹‹
Таже ошибка , только тут указатель на массив который передается в функцию.
Zemlyanov вне форума  
Непрочитано 28.02.2013, 01:25  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Перенос кода на Си с ПК на МК ,трудности

byte *p - это байт, а не указатель
p - это указатель
Yurkin2007 вне форума  
Непрочитано 28.02.2013, 01:26  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Re: Перенос кода на Си с ПК на МК ,трудности

Мда, под Linux и Windows компиляция и работа программы проходит нормально, а тут как-то не пошло.
Zemlyanov вне форума  
Непрочитано 28.02.2013, 01:30  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Re: Перенос кода на Си с ПК на МК ,трудности

Вот пример всей функции, может по нем будет понятно как переделать код чтобы компилятор его проглотил.
Код:
static void rightRot(byte key[])
{         
  byte *p     = key;
  byte  i     = 3;
  byte  carry = 0;

  carry = 0;

  if(*p & 1) carry = 0x08;

  do {
    *p = (*p ›› 1) | ((p[1] & 1) ? 0x80 : 0);
    p++;
  } while(--i);

  *p = (*p ›› 1) | carry;
}
Zemlyanov вне форума  
Непрочитано 28.02.2013, 01:33  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Re: Перенос кода на Си с ПК на МК ,трудности

Вот другая функция

Код:
void MD5_des(unsigned char key[], byte mode, unsigned char data[])
{    
  byte i; 
  byte left[8];
  byte right[8];
  byte *p = left;

 unsigned  short DESShift ;
 if (mode & 4) DESShift= 0x8103; else DESShift= 0xc081;

  for(i=3; i›0; i--)
  {
    *p = (key[i-1] ‹‹ 4) | (key[i] ›› 4);
    p++;
  }
  left[3] =  key[0] ›› 4;
  right[0] = key[6];
  right[1] = key[5];
  right[2] = key[4];
  right[3] = key[3] & 0x0f;

  if(mode & DES_IP) doIp(data);

  do {
    if(!(mode & DES_RIGHT))
    {
      leftRotKeys(left, right);
      if(!(DESShift & 0x8000)) leftRotKeys(left, right);
    }
    desRound(left, right, data, mode, key[7]);

    if(mode & DES_RIGHT)
    {
      rightRotKeys(left, right);
      if(!(DESShift & 0x8000)) rightRotKeys(left, right);
    }
    DESShift ‹‹= 1;
  } while(DESShift);

  swap(data, data+4);
  if(mode & DES_IP_1) doIp_1(data);

}
Zemlyanov вне форума  
Непрочитано 28.02.2013, 01:38  
_Артём_
Гражданин KAZUS.RU
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Перенос кода на Си с ПК на МК ,трудности

Сообщение от Zemlyanov Посмотреть сообщение
Мда, под Linux и Windows компиляция и работа программы проходит нормально, а тут как-то не пошло.
Хороший повод отказаться от использования CV. AVRGCC и IAR наверняка примут такую конструкцию.
_Артём_ вне форума  
Непрочитано 28.02.2013, 01:43  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Re: Перенос кода на Си с ПК на МК ,трудности

Сообщение от _Артём_ Посмотреть сообщение
Хороший повод отказаться от использования CV. AVRGCC и IAR наверняка примут такую конструкцию.
Уже поздно , поезд ушел.
Чувствую меня ещё ждут проблемы при переносе этого кода под STM32 в CoIDE
Zemlyanov вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос из PortX в PinX или два дня как изучаю AVR Assembler artem-izh Микроконтроллеры, АЦП, память и т.д 20 20.08.2011 01:39
Перенос рисунка на плату viom83 Электроника - это просто 4 23.12.2010 09:08
Перенос внешнего рисунка на слой KiCAD при RF дизайне al_dan KiCAD 8 12.07.2010 11:27
Защита кода Gn0me Микроконтроллеры, АЦП, память и т.д 7 25.06.2009 14:07
Трудности в понимании архитектуры микроконтроллера 8051 74ALS Микроконтроллеры, АЦП, память и т.д 1 12.02.2006 22:27


Часовой пояс GMT +4, время: 11:34.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot