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

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

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

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

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

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


 
Опции темы

Перенос кода на Си с ПК на МК ,трудности

Непрочитано 28.02.2013, 00:58  
Zemlyanov
Гражданин KAZUS.RUN
 
Регистрация: 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,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Перенос кода на Си с ПК на МК ,трудности

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

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

нет, не проходит , я уже это пробовал. компилятор выдает тоже сообщение об ошибке.
Вот засада
Zemlyanov вне форума  
Непрочитано 28.02.2013, 01:22  
Zemlyanov
Гражданин KAZUS.RUN
 
Регистрация: 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,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Перенос кода на Си с ПК на МК ,трудности

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

Мда, под Linux и Windows компиляция и работа программы проходит нормально, а тут как-то не пошло.
Zemlyanov вне форума  
Непрочитано 28.02.2013, 01:30  
Zemlyanov
Гражданин KAZUS.RUN
 
Регистрация: 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.RUN
 
Регистрация: 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.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Перенос кода на Си с ПК на МК ,трудности

Сообщение от Zemlyanov Посмотреть сообщение
Мда, под Linux и Windows компиляция и работа программы проходит нормально, а тут как-то не пошло.
Хороший повод отказаться от использования CV. AVRGCC и IAR наверняка примут такую конструкцию.
_Артём_ вне форума  
Непрочитано 28.02.2013, 01:43  
Zemlyanov
Гражданин KAZUS.RUN
 
Регистрация: 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:43.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.