|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 10:46 pm
|
Страница 1 от 1
|
[ 8 мнения ] |
|
openssl за armv5 - проблем
| Автор |
Съобщение |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10088
|
 openssl за armv5 - проблем
опитвам се да вкарам квадратен чеп в кръгла дупка - демек да (1) компилирам openssl; (2) да подкарам хардуерния ускорител да работи с него. за сега удрям дървото в следния код: защо ходиме да пробваме неон е въпрос, на който още нямам отговор, но е факт че стигаме до там, въпреки че съм му казал, че искам само v5. като стигнем до там гърмим. излкючил съм кор-дъмпа, защото не знам какво да го правя, пък и е ясно защо гърмим. две неща ме озадачават в тия 2 реда. първото е какво правим, когато нямаме такава инструкция (Vop) второто е, че не правим нормален ретърн от функцията. доколкото схванах: или правим? малко ми се губи при концепцията на "bx lr" как се гарантира дали бит[0] е в някакво конкретно състояние. по-големия въпрос е как да заобиколя/прехвана фолта, че да продължи детектването на процесора.
|
| Вто Юли 30, 2013 8:14 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: openssl за armv5 - проблем
Нещо неми става много ясно, този дисасм от опенссл ли е или от кернела? Има си прекъсване за невалидна инструкция, от там вариантите са според ОС: - емулация, разбирай бавно ама работи - мълчаливо игнориране и преминаване на следващия ред - и това съм го виждал, особенно гадно е като не е невалидна инструкция ами невалиден адрес - син екран и ребоот
bx lr - това всъщност е връщане от функция за арм - адреса за връщане хардуерно се записва в този регистър, пък функцията може да си го пусне в стека, може и да не го ако не вика други функции
бит 0 не се гарантира. При 32 битов класически АРМ инструкциите са винаги на адрес кратен на 4 - т.е. младшите 2 бита са 0 - и като са решили да правят 16 битови инструкции за да не вкарват нови инструкции за преход използват този факт за да познаят в какъв режим са. Хитро като концепция, записването в стека си идва на готово, не се налага да се грижиш за още един регистър с флагове на процесора. Минимализъм, ама до колко има смисъл е спорно, това използване на неизползвани битове според контекста излишно усложнява нещата.
_________________ Мразя да мразя ...
|
| Вто Юли 30, 2013 8:36 pm |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10088
|
 Re: openssl за armv5 - проблем
това парче е част от сорса armv4cpuid.S на openss в случая не знам кой ексепшин се задейства - невалидна инструкция или HardFault (заради бит[0]), и явно openssl не го прехваща, че да си го анализира. не съм дълбал още и колко пъти се вика самата функция _armv7_neon_probe, дали на всеки фрейм или само в началото. би било гениално за всеки фрейм да бичи ексепшъни.
|
| Вто Юли 30, 2013 8:56 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: openssl за armv5 - проблем
ексепшън заради бит 0 е много трудно да го постигнеш без да искаш - единствения начин е някой да омаже яко стека - т.е. да запише адрес за връщане в който бита за 16 бита thumb е сетнат по скоро е невалидна инструкция абе нещо налудничаво ми се струва някой да проверява за дадена архитектура с невалидна инструкция - това си е достоен повод да се затвори програмата едва ли се вика повече от веднъж де - после резултата се кешира ако това го правиш за ембедед устройство където всичко ти е ясно направо си сетни архитектурата както си трябва и не му давай да си губи времето да се прави на умен и да проверява
_________________ Мразя да мразя ...
|
| Вто Юли 30, 2013 10:31 pm |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10088
|
 Re: openssl за armv5 - проблем
ей го на файла, и аз не вярвах на ушите си. кода се вика от тук, като се прихващат всички ексепшъни. при мен явно е нещо друго, ще го ровичкам утре на прясна глава сега, според теб, бит[0] винаги е 0, или поне нормално би трябвало да е 0 ама според АРМ (втория цитат), bx инструкцията генерира HardFault именно, когато този бит е 0. кода определено е за 32-битов режим, но ме озадачава ".align 5" 
|
| Вто Юли 30, 2013 11:27 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: openssl за armv5 - проблем
Ами ей го де, във втория файл: конфигурираш си го през обкръжението и не му даваш да се пробва с тоя безумен асемблер. За разлика от х86 на АРМ асемблер почти не съм писал и ми е трудно да го чета, може би Миро ще е по в час ако те вълнува какъв точно му е яда. Моя съвет е да не си губиш повече времето ами да си сетнеш тоя OPENSSL_armcap с каквото трябва.
_________________ Мразя да мразя ...
|
| Вто Юли 30, 2013 11:58 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
 Re: openssl за armv5 - проблем
Дедо сега го виждам и утре на свежа глава ще ти го проверя, ама като цяло е ясно че: 1. Като я няма инструкцията ще гърми 2. Ти си в ARM режим или поне би трябвало да си съдейки по 32 битовите кодове на инструкции. Линк регистъра ти попълнен от викащия, демек от Ц-компилатора така че не бери грижа.По-скоро ако гръмне ще е щото Ц-то ти компилира за тъмб (трябва да ми кажеш флаговете ако е гцц) а вика АРМ асемблер. Между другото малцина са тия като мен дето ползват тъмб режим. За подобен род библиотеки е почти изключено. Align 5 означава да подравни на 5 адресни бита, демек на 32 байта. Та да може фетчването да пасне на кеш лайна. Само дето ми изглежда като презастраховане. Обикновено се подравнява на 16 байта. Както и да е, това касае само скорост, не може да гърми от това.
|
| Сря Юли 31, 2013 1:14 am |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10088
|
 Re: openssl за armv5 - проблем
установих със сигурност, че гърми заради инструкцията викам го като библиотека, може би затова има запек с четенето на обкръжението. обаче защо не прихваща и сигналите... аз лесно ще го хардкодна, ама че се губят сигнали е опасно. ще го търся. а алайна мислех че е на байтове/думи, не очаквах да е на битове. затова ме озадачи. изясни се ситуацията, сега остава да намерим буболечката къде се вихри
|
| Сря Юли 31, 2013 9:29 am |
|
|
|
Страница 1 от 1
|
[ 8 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|