| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| openssl за armv5 - проблем http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=11605 |
Страница 1 от 1 |
| Автор: | ДедоБоре [ Вто Юли 30, 2013 8:14 pm ] | ||||||||||||||||||
| Заглавие: | openssl за armv5 - проблем | ||||||||||||||||||
опитвам се да вкарам квадратен чеп в кръгла дупка - демек да (1) компилирам openssl; (2) да подкарам хардуерния ускорител да работи с него. за сега удрям дървото в следния код:
защо ходиме да пробваме неон е въпрос, на който още нямам отговор, но е факт че стигаме до там, въпреки че съм му казал, че искам само v5. като стигнем до там гърмим. излкючил съм кор-дъмпа, защото не знам какво да го правя, пък и е ясно защо гърмим. две неща ме озадачават в тия 2 реда. първото е какво правим, когато нямаме такава инструкция (Vop) второто е, че не правим нормален ретърн от функцията. доколкото схванах:
или правим? малко ми се губи при концепцията на "bx lr" как се гарантира дали бит[0] е в някакво конкретно състояние. по-големия въпрос е как да заобиколя/прехвана фолта, че да продължи детектването на процесора. |
|||||||||||||||||||
| Автор: | palavrov [ Вто Юли 30, 2013 8:36 pm ] |
| Заглавие: | Re: openssl за armv5 - проблем |
Нещо неми става много ясно, този дисасм от опенссл ли е или от кернела? Има си прекъсване за невалидна инструкция, от там вариантите са според ОС: - емулация, разбирай бавно ама работи - мълчаливо игнориране и преминаване на следващия ред - и това съм го виждал, особенно гадно е като не е невалидна инструкция ами невалиден адрес - син екран и ребоот bx lr - това всъщност е връщане от функция за арм - адреса за връщане хардуерно се записва в този регистър, пък функцията може да си го пусне в стека, може и да не го ако не вика други функции бит 0 не се гарантира. При 32 битов класически АРМ инструкциите са винаги на адрес кратен на 4 - т.е. младшите 2 бита са 0 - и като са решили да правят 16 битови инструкции за да не вкарват нови инструкции за преход използват този факт за да познаят в какъв режим са. Хитро като концепция, записването в стека си идва на готово, не се налага да се грижиш за още един регистър с флагове на процесора. Минимализъм, ама до колко има смисъл е спорно, това използване на неизползвани битове според контекста излишно усложнява нещата. |
|
| Автор: | ДедоБоре [ Вто Юли 30, 2013 8:56 pm ] |
| Заглавие: | Re: openssl за armv5 - проблем |
това парче е част от сорса armv4cpuid.S на openss в случая не знам кой ексепшин се задейства - невалидна инструкция или HardFault (заради бит[0]), и явно openssl не го прехваща, че да си го анализира. не съм дълбал още и колко пъти се вика самата функция _armv7_neon_probe, дали на всеки фрейм или само в началото. би било гениално за всеки фрейм да бичи ексепшъни. |
|
| Автор: | palavrov [ Вто Юли 30, 2013 10:31 pm ] |
| Заглавие: | Re: openssl за armv5 - проблем |
ексепшън заради бит 0 е много трудно да го постигнеш без да искаш - единствения начин е някой да омаже яко стека - т.е. да запише адрес за връщане в който бита за 16 бита thumb е сетнат по скоро е невалидна инструкция абе нещо налудничаво ми се струва някой да проверява за дадена архитектура с невалидна инструкция - това си е достоен повод да се затвори програмата едва ли се вика повече от веднъж де - после резултата се кешира ако това го правиш за ембедед устройство където всичко ти е ясно направо си сетни архитектурата както си трябва и не му давай да си губи времето да се прави на умен и да проверява |
|
| Автор: | ДедоБоре [ Вто Юли 30, 2013 11:27 pm ] |
| Заглавие: | Re: openssl за armv5 - проблем |
ей го на файла, и аз не вярвах на ушите си. кода се вика от тук, като се прихващат всички ексепшъни. при мен явно е нещо друго, ще го ровичкам утре на прясна глава сега, според теб, бит[0] винаги е 0, или поне нормално би трябвало да е 0 ама според АРМ (втория цитат), bx инструкцията генерира HardFault именно, когато този бит е 0. кода определено е за 32-битов режим, но ме озадачава ".align 5"
|
|
| Автор: | palavrov [ Вто Юли 30, 2013 11:58 pm ] | |||||||||
| Заглавие: | Re: openssl за armv5 - проблем | |||||||||
Ами ей го де, във втория файл:
конфигурираш си го през обкръжението и не му даваш да се пробва с тоя безумен асемблер. За разлика от х86 на АРМ асемблер почти не съм писал и ми е трудно да го чета, може би Миро ще е по в час ако те вълнува какъв точно му е яда. Моя съвет е да не си губиш повече времето ами да си сетнеш тоя OPENSSL_armcap с каквото трябва. |
||||||||||
| Автор: | miro_atc [ Сря Юли 31, 2013 1:14 am ] |
| Заглавие: | Re: openssl за armv5 - проблем |
Дедо сега го виждам и утре на свежа глава ще ти го проверя, ама като цяло е ясно че: 1. Като я няма инструкцията ще гърми 2. Ти си в ARM режим или поне би трябвало да си съдейки по 32 битовите кодове на инструкции. Линк регистъра ти попълнен от викащия, демек от Ц-компилатора така че не бери грижа.По-скоро ако гръмне ще е щото Ц-то ти компилира за тъмб (трябва да ми кажеш флаговете ако е гцц) а вика АРМ асемблер. Между другото малцина са тия като мен дето ползват тъмб режим. За подобен род библиотеки е почти изключено. Align 5 означава да подравни на 5 адресни бита, демек на 32 байта. Та да може фетчването да пасне на кеш лайна. Само дето ми изглежда като презастраховане. Обикновено се подравнява на 16 байта. Както и да е, това касае само скорост, не може да гърми от това. |
|
| Автор: | ДедоБоре [ Сря Юли 31, 2013 9:29 am ] | |||||||||
| Заглавие: | Re: openssl за armv5 - проблем | |||||||||
установих със сигурност, че гърми заради инструкцията
викам го като библиотека, може би затова има запек с четенето на обкръжението. обаче защо не прихваща и сигналите... аз лесно ще го хардкодна, ама че се губят сигнали е опасно. ще го търся. а алайна мислех че е на байтове/думи, не очаквах да е на битове. затова ме озадачи. изясни се ситуацията, сега остава да намерим буболечката къде се вихри |
||||||||||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|