| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Как се заключва флаша на AVR oт сорс кода? http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=6557 |
Страница 1 от 3 |
| Автор: | Ники [ Вто Фев 17, 2009 9:00 pm ] | |||||||||
| Заглавие: | Как се заключва флаша на AVR oт сорс кода? | |||||||||
Използвам WinAVR през АVR Studio, JTAGMkII и ATmega168. В юзер гайда на WINAVR е показано примерно така:
но поставяйки горните два реда в сорс файла след компилацията му AVR Studio-то казва че получения файл е по-голям отколкото паметта на записвания процесор? Правилен ли е гореописания начин за заключване на флаша и има ли друг, който да се задава през софтуера за да се укаже в .hex файла за програмиране? |
||||||||||
| Автор: | Топ [ Сря Фев 18, 2009 2:40 pm ] |
| Заглавие: | |
С една дума: Никак. От кода могат само да се четът конфигурационните и заключващи битове, но не и да се пишат. Това става през регистъра SPMCSR, виж описанието му в документацията на контролера. И нормално... представям си как софтуера сменя източника на тактов сигнал примерно... Затова си напиши твой си boot-loader, и с програматора си заключи контролера. После той може сам да се препрограмира през boot-loader-а. |
|
| Автор: | Nikola Kirov [ Сря Фев 18, 2009 3:08 pm ] |
| Заглавие: | |
Да при AVR не може да се пишат от софтуера фусовете. Иначе в някои процесори заключването става чрез запис на нещо в определени клетки на флаша и там може да се заключи процесора от софтуера. Топ. Много процесори могат да си сменят източника на тактови сигнал от софтуера. Това е малко крива особенност на AVR че не го може. Май в новите AVR Xmega вече има такъв вариант. |
|
| Автор: | Топ [ Сря Фев 18, 2009 5:52 pm ] |
| Заглавие: | |
Да-а. Но и това с boot-loader-а работи. В интерес на истината точно заключващите битове пише че могат да се програмират от кода, ето така: ldi R0, 0xFC Ldi R16, (1<<BLBSET)|(1<<SPMEN) sts SPMCSR, R16 spm Сега е въпроса на С как се пише в регистър... Това трябва да се рови в компилатора. Горния код на асемблер според документациятана на контролерите трябва да работи, но аз лично още с програмирането на boot-loader-а веднага (автоматично) програмирам и закючващите битове. А това се конфигурира на програматора. Ники, сънувам ги вече тия Хмеги, откога има цени в Digikey, ама бройки още няма... |
|
| Автор: | Nikola Kirov [ Сря Фев 18, 2009 6:49 pm ] |
| Заглавие: | |
Къде видя че могат да се пишат? Аз пак погледнах един pdf ама пак не виждам нещо такова |
|
| Автор: | Ники [ Сря Фев 18, 2009 10:56 pm ] |
| Заглавие: | |
надявах се на чудо пускайки темата, че съм пропуснал нещо невидяно/непрочетено, и че наистина може да се задават както примерно при PIC-oвете в софтуера. Но уви няма чудеса Друго, което ме разочарова АВР е ужким 'калиброваната' честота на вътрешния осцилатор. От 5 бройки процесори, ако наедин съм уцелил че е точно другите са с такива толеранси че УАРТ изобщо не се разбира с PC-то. А това ми загуби два дни докато го вдяна. И настройките с OSCCAL регистъра въобще не са в синхрон с графиката на вътрешния осцилатор, посочена в деташита...Имам усещането че не ми върви с тези процесори и така ще бъде докато не ги сменя. Ще пробвам и на фрискейл, дано понастоящем не правят 8-битови дървета. |
|
| Автор: | Nikola Kirov [ Чет Фев 19, 2009 2:04 am ] |
| Заглавие: | |
Те и не обещават токова точно калибрована честота. Иначе съм пускал UART на 9600 и си държи стабилна връзка с FTDI чип. И то в целия температурен диапазон 0-75. Това Мега324. Не че няма бъгове и там де но са в други неща. Вече всички нови процесори са си с прилично количество бъгове. |
|
| Автор: | Топ [ Чет Фев 19, 2009 12:20 pm ] |
| Заглавие: | |
1. Къде се намира описанието на софтуерното самозаключване на чипа В ПДФ-а на всеки Атмега контролер има раздел за "самопрограмиране, bootloader, read while write". Аз лично като отворя документа отивам на описанието на регистрите, и търся регистър с име започяащо с SPM.... (Store program memory). Там се вижда, в последната колона от таблицата, на коя страница в ПДФ-а е описан този регистър. Един от битовете е BLBSET (Boot Lock Bit Set). Това е. 2. Калибровка на осцилатора Натъкнах се и аз преди години на този проблем. Но и според ПДФ-а на съответния контролер се вижда че с промяна на температурата за да се поддържа постоянна честота стойността на калибрационниа регистър варира с до 16 единици (4 бита). Това е над 6% грешка. А за УАРТ трябва половин бит точност от 10 бита трансфер (8 данни + старт + стоп), което е 5% точност. Затова се налага при Старт процедурата да се направи калибрация на осцилатора (само последните 4 бита на калибрационния регистър). Та по работния интерфейс, асинхронно се следи за 4 поредни еталонни периода (генерирани от от устройство с точен генератор). Обикновено устройствата без кварцов резонатор са "slave" тип и така се калибрират, всеки според неговата си температура. И по време на работа периодично се изпращат калибрационни (еталонни) периоди, и така "slave"- овете се поддържат калибрирани в случай че на някой от тях по време на работа температурате се променя. По този начин имам перфектно работещи устройсва в мрежа на 500кбит с 32-битови трансфери. |
|
| Автор: | Nikola Kirov [ Чет Фев 19, 2009 1:56 pm ] |
| Заглавие: | |
Този BLBSET го знам. Има 5 думи на кръст като обяснение. И не се разбира от там каква е процедурата. И тъй като няма част в пдф-а която да се отнася за програмиране на фусовете от софтуера стигнах преди до заключението че явно не може. Може би в някой Aplication Note са написали нещо повече по въпроса но не съм се сблъсквал с него. Ако беше нещо належащо щях да изровя нещо де. По вероятно е да не съм прав относно записа на фусовете. |
|
| Автор: | Ники [ Чет Фев 19, 2009 2:03 pm ] |
| Заглавие: | |
Нямам бутлоадер, и не мисля да слагам. Ако има опция да се заключва от софтуера без бутлоадер, сподели редовете код с които го правиш. А честотата ще стане с калибрация , но както и да е, това е друга тема...има си чупя главата с поредните незначителни дреболии на своенравния аВР |
|
| Автор: | Nikola Kirov [ Чет Фев 19, 2009 5:17 pm ] |
| Заглавие: | |
Мерси за инфото. И аз си бях правил 2 бутлоудъра но не бях правил в тях писане по фусовете. Така или иначе първоначално зареждам бутлоудъра с програматор и тогава си пиша фусовете. |
|
| Автор: | Ники [ Чет Фев 19, 2009 8:41 pm ] | |||||||||
| Заглавие: | ||||||||||
Toп благодаря за отговора ти! В някой момент от време ще стигна до бутлоадера и ще се сетя че вече имам готови отговори на проблемите с него. Но няколко пъти си прочитах въпроса в първия пост на темата и отговорите в нея. Все нещо ми убягваше да свържа написаните отговори с това в което имам проблем. Та най-накрая се светнах че не съм задал правилно въпроса си. Сега се коригирам и питам отново Под заключване на флаша исках да знам има ли дефиниция, променлива на компилатор или някакъв начин, с който след записване на програмата да не може да се чете от флаша и епрома на процесора. Не ползвам бутлоадер и не ме касаят битовете за маниппулиране на флаша от бутлоадера. Нещо като Code & Data memory protection. В пдф файла в секцията за запис в програмната памет е описан регистър съдържащ битовете за заключване на бутлоадер секциите от паметта и отделно заключването на целия процесор:
От битовете в този регистър мен ме интересуват конкретно LB1 и LB2. Т.е. има ли начин с който във сорс файла ми да задам комбинацията за забрана записа и четенето от процесора. В АВРстудиото си има панел от който се задават битовете за каквото си поискаш, но аз не искам всеки път за всеки процесор да сетвам конкретни битове, и за по лесно искам да ги задам някак във файловете на програмата и така следващия път програмирам с един файл процесора и не обикалям различните панели в IDE средата за програмиране. С едно щракване на мишката пишеш и забравяш. |
||||||||||
| Автор: | Nikola Kirov [ Чет Фев 19, 2009 9:38 pm ] |
| Заглавие: | |
Нормалните компилатори за AVR нямат такива неща. Но ако толкоз ти е проблем в началото на програмата си четеш фусовете и ако трябва си сетваш който ти трябва и ресетваш чрез кучето. Програматора на студиото си поддържа специален формат файл в който се записват едновременно bin за флаша,bin за EEPROM-а и фусовете. Правиш си такъв и с едно програмиране си записваш в процесора всичко което ти трябва. |
|
| Автор: | ka2009 [ Пет Фев 20, 2009 12:18 pm ] | ||
| Заглавие: | |||
Момчета Писането на код не ми е ежедневие и много от нещата с които вие се занимавате са далеч от моята дейност. Попаднах случайно на този пост и тъй като сме във този форум за да си помагаме кой с каквото може предположих че мога да ви бъда от полза ; конкретно за питането на "НИКИ". Преди години сега вече "покойници" мобилните телефони "Siemens" бяха решили този проблем със защитата на кода от четене запис по този начин . С така наречения Skey.
|
|||
| Страница 1 от 3 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|