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

 
 
> Распаковка 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
Ответов
ReAl
сообщение Nov 8 2010, 15:39
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



О первом бите — ну так мы его так сгенерировали. Пример:
Вход на упаковку
FA AC 11 00 00 00 00 00 00 00 04 18 21 E7 00 00 00 00 00 00 00 00 00 00 22 00 44 55 00 00 00 00 00 00 00 01

Выход упаковщика
03 FA AC 11 87 04 04 18 21 E7 8A 04 22 00 44 55 87 01 01
Оиночный 00, выдленный курсивом, не было смысла пускать как ноль. До двух нулей смысла нет.

Распаковщик
03 FA AC 11 — копируем три байта со входа на выход
87 — пишем на выход семь нулей
04 04 18 21 E7 — копируем четыре байта со входа на выход
8A — пишем на выход десять нулей
04 22 00 44 55 — копируем четыре байта со входа на выход
87 — пишем на выход семь нулей
01 01 — копируем один байт со входа на выход


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jan 13 2011, 19:01
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Вход на упаковку. Минусами разбито на группы по восемь байт, как это нужно для байтов масок (в байтах масок каждому входному байту упаковщика (выходному байту распаковщика) соответствет один бит.
FA AC 11 00 00 00 00 00 - 00 00 04 18 21 E7 00 00 - 00 00 00 00 00 00 00 00 - 22 00 44 55 00 00 00 00 - 00 00 00 01

Выход упаковщика. Байты масок показаны в двичном коде с префиксом 0b
0b11100000 0xFA 0xAC 0x11 0b00111100 0x04 0x18 0x21 0xE7 0b00000000 0b10110000 0x22 0x44 0x55 0b00010000 0x01
При своей потрясающей простоте метод очень хорошо жмёт прошивки. Кажется, лучше, чем встроенный в квартус пожиматель / встроенный в циклоны разжиматель.

Там выше ужалось в 19 байт, тут в 16.
Перед массивом для разжимателя нужно указывать общую длину, так как алгоритм округляет число байтов вверх до кратного восьми.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 14 2011, 07:55
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(ReAl @ Jan 14 2011, 00:01) *
При своей потрясающей простоте метод очень хорошо жмёт прошивки.
Перед массивом для разжимателя нужно указывать общую длину, так как алгоритм округляет число байтов вверх до кратного восьми.

Спасибо. Да, просто и со вкусом. И, как мне на первый взгляд кажется, отсутствуют "недопустимые" коды, т.е., нет избыточности. Конечно, если потерять хотя бы один байт, весь остаток кода будет испорчен. Но в ПЛИС даже часть правильного кода не нужна.
Надо взять на вооружение. Рояльти платить не требуется? sm.gif
И еще, по-моему, ничего страшного не произойдет, если послать в ПЛИС чуть больше кода. Лишние биты проигнорируются.
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   Цитата(ViKo @ Jan 14 2011, 12:55) Рояльти...   Jan 14 2011, 09:07
- - StanislavF   Использую PackBits. На машине упаковка и распаковк...   Nov 23 2010, 14:24
- - 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 Текстовая версия Сейчас: 19th July 2025 - 14:25
Рейтинг@Mail.ru


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