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

 
 
> Распаковка zip на стороне ATmega, Программирование больших ПЛИС - распаковка прошивок zip
StanislavF
сообщение Nov 3 2010, 14:23
Сообщение #1





Группа: Участник
Сообщений: 9
Регистрация: 15-01-10
Пользователь №: 54 837



Здравствуйте,

Прошиваю два Spartan3 с помощью AVR Atmega2561, последовательно, один за другим. Использую WinAVR 2010****. Прошивки для обеих ПЛИС компоную с прошивкой для ATmega. НО прошивки для ПЛИС со временем стали довольно большими и не влезают в 256 Кб для ATmega. Битовое сжатие не помогает.

Придёться сжимать и распаковывать их потом с помощью самого ATmega при программировании ПЛИС. Существуюит ли алгоритмы распаковки zip для ATmega или какие-то другие решения этой проблемы? То, что я находил в сети работет с файлами, а в ATmega файлов по сути никаких и нет.

Буду благодарен за любую предоставленную помощь.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
StanislavF
сообщение Nov 23 2010, 14:24
Сообщение #2





Группа: Участник
Сообщений: 9
Регистрация: 15-01-10
Пользователь №: 54 837



Использую PackBits. На машине упаковка и распаковка работают нормально. При программировании AVR, тестовый у ПЛИС светодиод не мигает, т.е. ПЛИС программируется неправильно.

В чём может быть дело?

Процедура программирования ПЛИС несжатой прошивкой.
Код
void FPGA_sendfile(uint_farptr_t buf, uint32_t buf_len)
{
  unsigned char i;
  uint32_t l;
  uint8_t c;

  for (l = 0; l < buf_len; l ++) // buf_len-1
   {
    c = pgm_read_byte_far(buf + l);
    for (i = 0;i < 8;i ++)
     {
        if ((c & 0x80)>0) SET_XSP_DIN;
        else CLEAR_XSP_DIN;
        CLEAR_XSP_CLK;
        c<<=1;
        SET_XSP_CLK;
     }
    }  
  SET_XSP_DIN;
}


Процедура программирования ПЛИС сжатой прошивкой.
Код
void FPGA_sendpackedfile(uint_farptr_t buf, uint32_t buf_len)
{
  unsigned char i;
  uint32_t L;
//  uint8_t c;

  int32_t countChar;                      /* run/copy count */
  uint8_t c;                       /* current character */

  L =  - 1;
  while(L <= buf_len - 1) // - 2?
    {
      L += 1;
      countChar = (int32_t) pgm_read_byte_far(buf + L);

      if (countChar < 0)
    {
      /* we have a run write out  2 - countChar copies */
      countChar = (MIN_RUN - 1) - countChar;

      L += 1;

      while (countChar > 0)
        {
          c = pgm_read_byte_far(buf + L);
          for (i = 0;i < 8;i ++)
        {
          if ((c & 0x80)>0) SET_XSP_DIN;
          else CLEAR_XSP_DIN;
          CLEAR_XSP_CLK;
          c <<= 1;
          SET_XSP_CLK;
        }
          countChar--;
        }
    }
      else
    {
      /* we have a block of countChar + 1 symbols to copy */
      for (countChar++; countChar > 0; countChar--)
        {
          L += 1;
          c = pgm_read_byte_far(buf + L);

          for (i = 0; i < 8; i ++)
        {
          if ((c & 0x80)>0) SET_XSP_DIN;
          else CLEAR_XSP_DIN;
          CLEAR_XSP_CLK;
          c <<= 1;
          SET_XSP_CLK;
        }
        }
    }
    }
  SET_XSP_DIN;
}


Не пойму, где тут мог намудрить. Я прикрепил проект для тестирования упаковки/распаковки на инструментальной системе и проект для программирования целевой. Буду благодарен за советы и помощь.


Прикрепленные файлы
Прикрепленный файл  packbits.zip ( 21.91 килобайт ) Кол-во скачиваний: 34
Прикрепленный файл  sp_control.zip ( 210.22 килобайт ) Кол-во скачиваний: 23
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- StanislavF   Распаковка zip на стороне ATmega   Nov 3 2010, 14:23
- - MrYuran   Ещё 10 лет назад статьи видел, про сжатие прошивок...   Nov 3 2010, 14:30
- - ReAl   Да, 10+ лет назад это интенивно обсуждалось в PVT....   Nov 3 2010, 15:16
- - rezident   У нас в похожей ситуации используется сжатие RLE, ...   Nov 3 2010, 21:23
- - StanislavF   Спасибо за ответы. Цитата(MrYuran @ Nov 3 20...   Nov 8 2010, 14:22
- - ReAl   О первом бите — ну так мы его так сгенериров...   Nov 8 2010, 15:39
|- - ReAl   Вход на упаковку. Минусами разбито на группы по во...   Jan 13 2011, 19:01
|- - ViKo   Цитата(ReAl @ Jan 14 2011, 00:01) При сво...   Jan 14 2011, 07:55
|- - ReAl   Цитата(ViKo @ Jan 14 2011, 12:55) Рояльти...   Jan 14 2011, 09:07
- - SasaVitebsk   Можно делать и прямую распаковку. Там тоже ничего ...   Nov 23 2010, 19:09
- - XVR   Код int32_t countChar;Зачем 32 бита? У вас максим...   Nov 24 2010, 12:37
- - ViKo   Я делал сжатие несколько иначе - последовательност...   Nov 24 2010, 19:56
- - StanislavF   Цитата(XVR @ Nov 24 2010, 18:37) Код int...   Jan 12 2011, 06:26
- - XVR   ЦитатаКак тогда быть? Что использовать вместо pgm_...   Jan 12 2011, 11:45
|- - demiurg_spb   Цитата(XVR @ Jan 12 2011, 17:45) Приведен...   Jan 12 2011, 12:30
|- - ReAl   Цитата(XVR @ Jan 12 2011, 16:45) Пардон, ...   Jan 12 2011, 17:36
|- - ViKo   Цитата(ReAl @ Jan 12 2011, 22:36) Я на AC...   Jan 12 2011, 18:01
- - SysRq   Цитата(StanislavF @ Nov 23 2010, 20:24) К...   Jan 16 2011, 08:30
- - Leka   Битстрим (альтеровский *.rpd) по медленному радиок...   Oct 20 2015, 22:16


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

 


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


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