| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Заменям финансова срещу програмна помощ (ARM Cortex CM3) http://mcu-bg.com/mcu_site/viewtopic.php?f=5&t=8712 |
Страница 1 от 2 |
| Автор: | kiiid [ Пет Мар 18, 2011 6:34 am ] | |||||||||
| Заглавие: | Заменям финансова срещу програмна помощ (ARM Cortex CM3) | |||||||||
Значи ако има някой дето е много навътре с CM3 и има желанието да ми помогне. Имам следния код:
Тоя код е за Rowley и конкретното дърво е LPC1768. Целта ми е се изразява просто като желание да имам SysTick който да може да се извиква в прекъсване дори и ако в момента е било извикано (reentrant interrupt). В момента ми бичи HardFault на POP {PC}. Аз не съм специалист на армовете нито пък възнамерявам да ставам някога обаче имам един клиент дето много държи ТОЧНО на CM3 без дори да знае точно защо (да му .... и интернета... А, още нещо дребно - моля ви спестете си коментари от сорта "ми що не го направиш без реентрант интеръпт?" или "аз сега да те светна по въпроса" и т.н. Ако някой може и има желание да ми помогне нека се обади, другите - просто игнорирайте това. Проблемът ми изисква спешна намеса. Мерси! |
||||||||||
| Автор: | miro_atc [ Пет Мар 18, 2011 10:37 am ] | |||||||||
| Заглавие: | Re: Заменям финансова срещу програмна помощ (ARM Cortex CM3) | |||||||||
Не е толкова просто... В смисъл буквално е невъзможно. Това което в АРМ форума те посъветваха е да го "излъжеш", че е реентрант... То няма друг вариант, тъй като има хардуерен стек за прекъсванията и там няма как да пъхнеш два пъти едно и също (или по-ниско по приоритет) прекъсване. Та заобикалянето е като маскираш прекъсването като отработено, а същинската обработка я оставиш за "после" в нормален режим (не в хендлър mode).. Доколкото ви следях дискусията вие задълбахте в смяната на стековете, а аз си замълчах.... Замълчах си щото не мога да ти дам решение, без да имам яснота как изглежда останалата част от кода ти. Това което се опитваш да направиш е равносилен на малък кърнел - пускаш де-факто динамични нишки в стековете... Ако много държиш през почивните дни ще ти направя код за това, днес няма да мога да ти обърна никакво внимание. Но дебело ти подчертавам, че си тръгнал по един не особено добър начин да си решаваш проблемите... Не знам какви са ти проблемите, но повярвай ми това не е добър подход... |
||||||||||
| Автор: | kiiid [ Пет Мар 18, 2011 11:48 am ] |
| Заглавие: | |
Ех Миро, Миро... Не можа да се стърпиш... Много е дълго да ти обяснявам конкретните причини защо имам нужда от това. Най-общо казано е продукт за който преди няколко години бях писал софта и бачкаше на арм7 (сега да не вземеш да си мислиш че съм страшен почитател на арм7) и бачка прекрасно, сега трябва да го прехвърля на новия "много модерен" (хахаха) куртекс. Та ако ти се намира време и желание заповядай пък аз ще се разплатя за усилието както мога. Колкото до армския форум - потвърди ми се още едно подозрение - какъвто им продукта, такъв им и съпорта... Но едно знам със сигурност - мога да се хвана на бас че куртекса няма да оцелее и 5 години. Твърде е болна горката платформа колкото и да се опитват да я хвалят армаджиите. Нещо като 286-цата на 21 век |
|
| Автор: | Цецо [ Пет Мар 18, 2011 11:52 am ] | |||||||||
| Заглавие: | ||||||||||
Каса бира, немска (че е неутрално географски) То всъщност и 286 оцеля. Тоест се прероди в 386, 486 и т.н. Така че като се замисля прав си. М3 може и да не оцелее, ама то няма контролер в днешно време дето да седи 5 години на върха без еволюция. Т.е. няма да оцелее, а ще еволюира. То М4 вече тръгна официално. |
||||||||||
| Автор: | kiiid [ Пет Мар 18, 2011 12:19 pm ] |
| Заглавие: | |
Каса немска, имаш я като си дойда до бг, че 2016 (да сме живи и здрави дотогава) няма да има не само м3 ами м-каквото и да е. Сега пиша от пада и не мога да пиша много ама ако седна да му изреждам куцините дето аз съвсем отгоре ги видях бая писане ще ми е... А от 286до 386... Ако с толкова се подобри арм ще се доближи плътно до 8051 (следващата най-куца) платформа |
|
| Автор: | fan [ Пет Мар 18, 2011 12:43 pm ] |
| Заглавие: | |
Стихиите, които сполетяха Австралия са ти размътили разсъдъка май! |
|
| Автор: | kiiid [ Пет Мар 18, 2011 12:58 pm ] |
| Заглавие: | |
Не знам за какви стихии ми говориш аз тука нищо не съм видял. Май журналистите в България масово изкарват премии. А cypress нищо чудно да се самозатрие с тая грешна стратегия напоследък |
|
| Автор: | Цецо [ Пет Мар 18, 2011 1:05 pm ] | |||||||||
| Заглавие: | ||||||||||
Ами куца платформа е относително понятие, като имаш предвид че е най-разпространения като база контролер къде 10тина години вече. Включително и днес продължават да излизат платформи базирани на 8051. Ако М -ките на кортекс стигнат това постижение, ще е безспорен успех, а те имат всички изгледи да го направят. На практика няма пройзводител (изключвам Микрочип) който да не залага Кортекс платформа. Включително и твойте фаворити от Cypress. Всъщност аз не мога да те разбера - ти си отявлен фен на песовете, а не харесваш Куртекс и 8051, които са двете ядра заложени в тези чипове Да разбирам ли, че ги ползваш.... с отвращение, както беше казал един виден наш политик |
||||||||||
| Автор: | kiiid [ Пет Мар 18, 2011 1:17 pm ] |
| Заглавие: | |
Аз ползвам M8 от техните. кортекс не ми влиза дори и в най-далечните планове за продукти освен ако не се налага без алтернатива в което се съмнявам. Наречи го личен каприз ако искаш, за мен е все едно. Ама пак се случи това от което се страхувах - цялата тема стана една чесачка на езици Май майкрочип ще се окажат моите хора в крайна сметка... |
|
| Автор: | miro_atc [ Пет Мар 18, 2011 1:54 pm ] | |||||||||
| Заглавие: | ||||||||||
Не ме интересува какъв е продукта ти, а как е организиран... Очевадно нямаш RTOS - за това мога да се досетя, но иначе имаш main loop предполагам и набор от прекъсвания, като едно от тях по някаква причина искаш да е реентрант? Самата причини също не ме интересува, макар че според мен какъвто и да ти е проблемът, едва ли най-доброто му решение е чрез реентрване... Казвам ти го щото 1) съм убеден че има и друго решение и 2) реентването най-вероятно ще ти създаде още проблеми и после ще се наложи да правим кръпки върху кръпката... Но ако все пак си решил да е така, трябва да си сигурен, че това прекъсване няма да идва много по-често, отколкото можеш да го обработваш. Иначе стека ти ще почне да се топи като краве масло във фурна... Освен това искам да знам има ли някаква вид комуникация между обработката на това прекъсване и останалата част от кода ти. Премести темата, да не е тук в пазара щото не й е тук мястото и утре ако друг не ме изпревари ще ти драсна код да тестваш... |
||||||||||
| Автор: | kiiid [ Пет Мар 18, 2011 2:58 pm ] |
| Заглавие: | |
Миро, спести ми моля те напътствията. Знам много добре какво правя, просто ми е нужна помощ в техническите детайли за конкретния случай. Комуникацията с другата част на кода аз ще си я направя както ми трябва, единственото от което се нуждая е хендлъра на SysTick да е реентрант. Това е. Ако драснеш код с удоволствие ще го пробвам в понеделник. |
|
| Автор: | Dimitar [ Пет Мар 18, 2011 3:49 pm ] |
| Заглавие: | |
kiiid, сори за офтопика, ама няма защо да се оплакваш на къде тръгнала темата, защото ти самия я тласкаш в тая посока, като ръсиш някакви квалификации коя платформа какво била и т.н. Като искаш да няма спам питаш кратко и ясно, без да се правиш на интересен да раздаваш квалификации, още повече след като и сам не можеш да се справиш, т.е. ясно е, че нещата не са ти съвсем ясни |
|
| Автор: | miro_atc [ Пет Мар 18, 2011 5:24 pm ] |
| Заглавие: | |
Dimitar, аз съм виновен, ама просто ми е трудно да се сдържа kiiid: дай повече инфо за приоритетите... В смисъл единия вариант е Systick да е възможно най-ниския приоритет в системата. Тогава просто излиза от хендлър моде и директно в обслужващата нишка... Ако обаче не е най-нисък обслужването може да става по два начина: 1) с приотитета на този, който сме прекъснали 2) с най-нисък приоритет Има и трети вариант - ако ползваш pending service, който да е с едно ниво под Systick. Тогава като дойде твоето прекъсване, задейства пендинга. Може и да инкрементира един броя с exclusive операции (за да не се изтърват тикове). И след това излиза, но ще влезе в пендинг веднага без ти нищо да правиш. Всъщност ако не правиш нищо няма да е баш реентрант.... Както и да е. значи в третия вариант ми трябва Pending-а за да имам ясен приоритет на обслужването. А вече дали обслужването да е реентрант ти ще кажеш (може да се направи, макар че по принцип никой не го прави така)... |
|
| Автор: | kiiid [ Съб Мар 19, 2011 1:34 am ] |
| Заглавие: | |
Димитре, къде видя дори зачатък на офтопик в началния ми пост? Аз дори изрично помолих да се въздържаме от излишни спорове. Ама някои не се въздържаха Миро, ако SysTick е с най-нисък приоритет ме устройва напълно въпреки че и другите варианти биха били ок. По принцип и в моя стар код реентрант частта беше с най-нисък приоритет. |
|
| Автор: | miro_atc [ Съб Мар 19, 2011 11:43 am ] | |||||||||
| Заглавие: | ||||||||||
Ако гарантираш тик-а да е с най-нисък приоритет твоя код си е ОК май... Имаш една дребна подробност - там, където зареждаш адресите, трябва да добавяш 1-ца. т.е.:
|
||||||||||
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|