| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| FIFO http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=11659 |
Страница 1 от 1 |
| Автор: | Vesko [ Чет Авг 22, 2013 8:11 pm ] |
| Заглавие: | FIFO |
Търся си сорс на реализация на ФИФО върху сериен флаш. Размер на един запис 512 байта (256 може би също). Някой да е срещал готов сорс за това? Или поне теория |
|
| Автор: | stefan63 [ Пет Авг 23, 2013 7:00 am ] |
| Заглавие: | Re: FIFO |
Каква теория? Разгледай описанието на един ФИФО чип , помисли си какво ще правиш с данните и почвай. Като начало ти трябват няколко указателя/поинтера. Трябва ти "ресет пин" - тоест функция, която нулира тези два указателя. Трябва ти "пин за запълване" - тоест флаг, че разликата между указателя за запис и този за четене е равна на обема на флаша - тоест нов запис ще презапише непрочетени данни. Тогава или трябва да спреш записването на нови данни , или да активираш "ресет пина". Този флаг трябва да се проверява/манипулира при всяка операция на четене или запис. Трябват ти функции за писане в серийния флаш, които зависят от конкретния чип. Изтриването на флаша по сектори сигурно ще иска време, това пък може да доведе до буфер в РАМа, това пък усложнява всичко допълнително. Ако приемем ,че ти трябва точно флаш фифо - пътят е някакъв такъв. |
|
| Автор: | Vesko [ Пет Авг 23, 2013 8:18 am ] |
| Заглавие: | Re: FIFO |
FIFO горе долу знамкак работи. Въпросът е къде да съхранявам поинтерите, така че при powerloss да не се загубят. |
|
| Автор: | Н'бабане Гт'муан'га [ Пет Авг 23, 2013 8:48 am ] | |||||||||
| Заглавие: | Re: FIFO | |||||||||
за такова малко FIFO, ползвай не флаш а EEPROM или още по-добре FRAM. ще си пазиш пойнтерите вътре |
||||||||||
| Автор: | БатеВаньо [ Пет Авг 23, 2013 8:55 am ] |
| Заглавие: | Re: FIFO |
Най-добре е да не използваш явно записани пойнтери във флаша между две включвания на захранването, а те да се преизчисляват по време на power-up. Причината е, че тези пойнтери биха се презаписвали много по-начесто от данните и ресурсът на запис на тези клетки ще се изчерпи много бързо. Разбира се, има вариации на темата - напр. редуване на различни клетки за записа им, но има и начини да се мине и без тях при изключване на захранването. Вариантите за организация на записите могат да бъдат най-различни. Един възможен е към всеки запис да има поле за индикация на валиден запис (CRC) и индекс, който нараства при всеки следващ. При включване се претърсва паметта, за да се намерят валидните записи и да се определи от тях къде е "главата" и къде "опашката" на буфера и да се генерират указатели към тях в RAM-а. След това се работи само с указателите до изключване на захранването. При изваждане на запис от FIFO-то трябва и да го изтриеш от паметта, за да се инвалидира. |
|
| Автор: | Vesko [ Пет Авг 23, 2013 9:17 am ] |
| Заглавие: | Re: FIFO |
Това със сканирането на флашасъм си го мислил, но така и още не съм проверил колко време ще ми трябва да сканирам целият флаш. А еепром или Ффрам къммомента е неприложимо. платките са ми готови |
|
| Автор: | Cekins [ Пет Авг 23, 2013 10:07 am ] |
| Заглавие: | Re: FIFO |
Аз бих ти предложил и друго решение, ама казваш че вече имаш хардуер, та не знам. Аз много често слагам DS1307 по платките си и с него получавам "екстра" 48 байта рам захранена от батерийката. Когато ползвам клетките за нещо, при power-up проверявам дали имам валидни данни в клетките (дали евентуално не е сменяна батерията примерно) и ако имам си ги ползвам, ако не си ги генерирам. В твоя случай пак си го правиш сканирането ама само когато се смени батерията. Което при консумацията на DS-a от една CR2032 би се наложили чак след 15-20 години... |
|
| Автор: | tgi [ Пет Авг 23, 2013 10:22 am ] |
| Заглавие: | Re: FIFO |
Просто двата pointer-а в RAM, а при отпадане на захранването се пишат във флаша. Това е начинът за такива работи, хардуерът трябва да го може (т.е. да има сигнализация - най-вероятно някакво прекъсване - като отпадне захранването и кондензатор за 100-ина милисекунди работа след това). |
|
| Автор: | Vesko [ Пет Авг 23, 2013 11:24 am ] |
| Заглавие: | Re: FIFO |
Май не съм предвидил в хардуер-а прекъсване при отпадане на напрежението |
|
| Автор: | tgi [ Пет Авг 23, 2013 11:29 am ] |
| Заглавие: | Re: FIFO |
О ако имаш подпрян RAM хич не му се чуди ами ги слагай в него. То и цялото ФИФО ако се събере там ще е къде по-добре. Някаква чексума за цялата салата та като излезе от reset процесора да види помни ли валидни данни не помни ли и това е. |
|
| Автор: | Vesko [ Пет Авг 23, 2013 3:00 pm ] |
| Заглавие: | Re: FIFO |
Към 3МБ ще ми е фифото. |
|
| Автор: | stefan63 [ Пет Авг 23, 2013 3:24 pm ] |
| Заглавие: | Re: FIFO |
а флаша ти ако е атмелски ДатаФлаш- маса тревоги ще ти отпаднат; |
|
| Автор: | ike [ Пет Авг 23, 2013 5:39 pm ] |
| Заглавие: | Re: FIFO |
Vesko не ти знам проекта, ама с тези 3МБ отиваш към R pi с 3000mAh батерия. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|