<bgdev />free

Вход Регистрация

странна ситуация (арм, гцц)
0

0 1

#128103 (ツ) Дон Реба
Последно редактирано на 23.11.2024 от Дон Реба, видяно: 494 пъти.

опитвам се да подкарам ей тоя контролер, чудесно изглежда - 60 стотинки за бройка, 32 битов, 48 мегахерца, 5 милиампера консумация, перфектен за хобизма ми. искам да го подкарам в "чиста среда" това значи - компилатор от команден ред, програматор от команден ред, всичко от команден ред. ама защо ама как , ама имат много хубава среда кейл - няма да го дискутирам това, разбирачите им е ясно, а само те имат значение. та ето какво се случва - подкарах компилатор гцц, програматор edbg (с дописване, оригинално не поддържа тоя контролер), кода се записва и се чете от контролера същия какъвто е. обаче контролера не пали, окей почвам да разследвам елфа (objdump" - S disassemble test.elf > dis.asm) и какво виждат очите ми:


0000028c <Reset_Handler>:
 28c:	480c      	ldr	r0, [pc, #48]	; (2c0 <L_loop3+0x2>)
 28e:	4685      	mov	sp, r0
 290:	480c      	ldr	r0, [pc, #48]	; (2c4 <L_loop3+0x6>)
 292:	490d      	ldr	r1, [pc, #52]	; (2c8 <L_loop3+0xa>)
 294:	4a0d      	ldr	r2, [pc, #52]	; (2cc <L_loop3+0xe>)
 296:	2300      	movs	r3, #0
 298:	e002      	b.n	2a0 <L_loop0_0>

до тук добре, съвпада с кода който се очаква, той върви с СДКто като асм файл startup_apm32f00x.S и просто го включвам в кюпа.

обаче ето какво седи във векторната таблица

My picture

защо мамка му е 28D като трябва да е 28C , някой удрял ли е подобна греда?

Attached files:
FileSizeUploadedDownloadsMD5 hash
image.png2618 bytes23.11.202490407051539aa16f0d21b473dcd1ef1e44
#128104 (ツ) waldorf
Създадено на 23.11.2024 , видяно: 491 пъти.
Дон Реба

опитвам се да подкарам ей тоя контролер, чудесно изглежда - 60 стотинки за бройка, 32 битов, 48 мегахерца, 5 милиампера консумация, перфектен за хобизма ми. искам да го подкарам в "чиста среда" това значи - компилатор от команден ред, програматор от команден ред, всичко от команден ред. ама защо ама как , ама имат много хубава среда кейл - няма да го дискутирам това, разбирачите им е ясно, а само те имат значение. та ето какво се случва - подкарах компилатор гцц, програматор edbg (с дописване, не оригинално поддържа тоя контролер), кода се записва и се чете от контролера същия какъвто е. обаче контролера не пали, окей почвам да разследвам елфа (objdump" S disassemble test.elf > dis.asm) и какво виждат очите ми:


0000028c <Reset_Handler>:
 28c:	480c      	ldr	r0, [pc, #48]	; (2c0 <L_loop3+0x2>)
 28e:	4685      	mov	sp, r0
 290:	480c      	ldr	r0, [pc, #48]	; (2c4 <L_loop3+0x6>)
 292:	490d      	ldr	r1, [pc, #52]	; (2c8 <L_loop3+0xa>)
 294:	4a0d      	ldr	r2, [pc, #52]	; (2cc <L_loop3+0xe>)
 296:	2300      	movs	r3, #0
 298:	e002      	b.n	2a0 <L_loop0_0>

до тук добре, съвпада с кода който се очаква, той върви с СДКто като асм файл startup_apm32f00x.S и просто го включвам в кюпа.

обаче ето какво седи във векторната таблица

My picture

защо мамка му е 28D като трябва да е 28C , някой удрял ли е подобна греда?

Не е греда. В арм32 всички инструкции са 32 битови т.е. Винаги са на кратен на 4 адрес т.е. младшите 2 бита на адреса са винаги нули.

Когато се пръква това недомислие тъмб (thumb) който е 16 битов скин върху 32 битовите инструкции т.е. процесора си е пак същия но 16 битовите инструкции се конвертират до 32 битови според един флаг.

И тук е врътката. Тарикатски са решили този флаг да се контролира от най младшия бит от адреса при преход. Затова тъмб кода е на нечетен адрес. Т.е. всичко си е наред, не се шашкай.

Относно твоя проблем - клати пинове в кода за да проследиш докъде стига или не стига и после гледай с лог.анализатор.

Ако пак запънеш направо ми звънни да дам едно рамо.

#128105 (ツ) Дон Реба
Създадено на 23.11.2024 , видяно: 487 пъти.

хаха, евалата, старото куче си е старо куче!

а тва с клатенето на пинове много бързаш, то ясно че първо това се прави, но тука изобщо не стигаме до там. сега ще пусна осцилатора да излиза навън, и това (ако се задейства) ще го ползвам за трасиране до къде изобщо стига кода - излезе ли значи сме минали през точката

#128106 (ツ) Реконструктор
Създадено на 23.11.2024 , видяно: 484 пъти.
waldorf

Когато се пръква това недомислие тъмб (thumb)

Не съм убеден, че за ембедед е недомислие, още повече, когато е мислен

#128107 (ツ) Дон Реба
Създадено на 23.11.2024 , видяно: 482 пъти.

е да хабиш 32 бита за кодиране на 50-100 инструкции си е тотално и фрапиращо разхищение при килобайтова памет

#128113 (ツ) Реконструктор
Създадено на 23.11.2024 , видяно: 480 пъти.

Точно де. Що не си ползваш оргиналдъ STM32, а се мъчиш с тоя китаец? :-) Разликата в цената е нищожна, но за STM има вече изградена много обширна екосистема, всичко тръгва от раз и не го мислиш.

#128118 (ツ) Дон Реба
Създадено на 23.11.2024 , видяно: 474 пъти.

тоя специално си е чисто техен, не е копие на стм, но и да беше все тая - както казах държа на чиста среда, никакви кейлове мейлове и "удобства".

#128119 (ツ) Rabin
Последно редактирано на 23.11.2024 от Rabin, видяно: 474 пъти.

Има по-евтини, ако гоним цена. Има по-ширпотребни, ако гоним производителност.

Нещо ми бяга идеята сефте да разработваш нова концепция. Да ти дам въдиците, ако толкоз ти е скучно у вас?

In-circuit debugging имаш ли? Емулатор?

#128124 (ツ) waldorf
Създадено на 23.11.2024 , видяно: 452 пъти.
Реконструктор

Не съм убеден, че за ембедед е недомислие, още повече, когато е мислен

Зависи кой какво приоритизира. За мен е по важно да има условно изпълнение на всяка инструкция - нещо което го има във всяка 32 битова инструкция но е изрязано в 16 битовия тъмб и е заменено с if-then-else инструкция която казва с 4 бита кои от следващите 4 инструкции да се изпълнят и кои не. На пръв поглед това е ОК само, че нещата се омотват ако стане прекъсване по време на изпълнение на този цикъл от няколко инструкции. Т.е. върху едната кръпка слагат втора с която запазват състоянието на тези 4 бита за да се знае до къде се е стигнало с условното изпълнението. Да не говорим, че е забранено в този момент да вложиш второ условно изпълнение - нещо което може на 32 битовите инструкции. Съответно всяка кръпка може да се сбърка и господ да ти е на помощ да дебъгваш краш на защитен от дебъгване банков пос терминал който крашва защото при превключване на нишките в кофти място изпълнява и then и else инструкциите защото нещо се е омотало при възстановяване на тези 4 бита. По добре въобще да не я бяха слагали тази if then else инструкция. ОК, скопили са елегантните 32 битови инструкции до 16 бита, ама да не го правят и бъгливо.

А който иска да има сбит код да си ползва 8 битови процесори. Тая простотия са я направили 90-те когато започват да се произвеждат масово умнофони с арм процесор който точно заради елегантния си дизайн е с изключително ниска консумация при повече от прилична производителност т.е. идеален за батерии. Да ама него време паметта беше скъпа и 32 битов флаш вдига с няколко цента цената спрямо 16 битова. 30 години по късно това не е така. Днес флаша е евтин. За чий ти е да скопяваш 32 битов процесор до 8 битов?!

#128125 (ツ) Дон Реба
Последно редактирано на 23.11.2024 от Дон Реба, видяно: 445 пъти.

скопяването е ок, това че е бъгливо не е ок. освен това не е ли опционално, гледам че на компилатора се подава опция - mthumb

#128130 (ツ) Реконструктор
Създадено на 23.11.2024 , видяно: 427 пъти.
waldorf

Зависи кой какво приоритизира. За мен е по важно да има условно изпълнение на всяка инструкция - нещо което го има във всяка 32 битова инструкция но е изрязано в 16 битовия тъмб и е заменено с if-then-else инструкция която казва с 4 бита кои от следващите 4 инструкции да се изпълнят и кои не. На пръв поглед това е ОК само, че нещата се омотват ако стане прекъсване по време на изпълнение на този цикъл от няколко инструкции. Т.е. върху едната кръпка слагат втора с която запазват състоянието на тези 4 бита за да се знае до къде се е стигнало с условното изпълнението. Да не говорим, че е забранено в този момент да вложиш второ условно изпълнение - нещо което може на 32 битовите инструкции. Съответно всяка кръпка може да се сбърка и господ да ти е на помощ да дебъгваш краш на защитен от дебъгване банков пос терминал който крашва защото при превключване на нишките в кофти място изпълнява и then и else инструкциите защото нещо се е омотало при възстановяване на тези 4 бита. По добре въобще да не я бяха слагали тази if then else инструкция. ОК, скопили са елегантните 32 битови инструкции до 16 бита, ама да не го правят и бъгливо.

А който иска да има сбит код да си ползва 8 битови процесори. Тая простотия са я направили 90-те когато започват да се произвеждат масово умнофони с арм процесор който точно заради елегантния си дизайн е с изключително ниска консумация при повече от прилична производителност т.е. идеален за батерии. Да ама него време паметта беше скъпа и 32 битов флаш вдига с няколко цента цената спрямо 16 битова. 30 години по късно това не е така. Днес флаша е евтин. За чий ти е да скопяваш 32 битов процесор до 8 битов?!

Принципно е добра идея за всеки професионалист да вниква в умовете на колегите си и да може да се сеща кое защо е направено. Както бе споменато, 32 бита за няколко десетки инструкции е страшно разхищение. От друга страна, хората, които са го измислили, по никой начин не са се сетили, че от пича въшка за 60 стинки някой ще иска многозадачност. И аз не бих си го помислил. По същия начин, ако измислях ЗДвП не бих могъл да предвидя, че ще има олигофрени, за които 50 км/ч е прекалено висока скорост.

Убий ме, ама посмъртно не мога да се сетя за какво му е многозадачност на един банкомат.

В ембедед света има много голям гап - за едната половина задачи е достатъчен много прост 8/16 битов проц, за другата - сериозен пауър. Почти няма приложения, които да са посредата. Това, че има умствено изостанали, които искат от много простия процесор да изпълнява задачи не от неговия свят, дали поради незнание и неумение, дали от скъперничество, не е проблем на архитектурата на простия процесор.

#128132 (ツ) Дон Реба
Създадено на 23.11.2024 , видяно: 423 пъти.
Реконструктор

От друга страна, хората, които са го измислили, по никой начин не са се сетили, че от пича въшка за 60 стинки някой ще иска многозадачност.

в хардуерните задачи много често се ползват прекъсвания, което е "многозадачност". ако нямаш гаранция че връщането от прекъсване е бетон все едно нямаш изобщо прекъсвания, трябва да караш на полинг което веднага прави една камара задачи трудни или невъзможни. аз не знам какъв точно е казуса за който говори палавров, може да е бъг на точно определен процесор или да се случва в някакви много специални условия.

#128145 (ツ) Rabin
Създадено на 23.11.2024 , видяно: 402 пъти.

Банкоматите съм ги виждал на Изчадие ХР.

#128146 (ツ) Реконструктор
Последно редактирано на 23.11.2024 от Реконструктор, видяно: 394 пъти.
Дон Реба

в хардуерните задачи много често се ползват прекъсвания, което е "многозадачност". ако нямаш гаранция че връщането от прекъсване е бетон все едно нямаш изобщо прекъсвания, трябва да караш на полинг което веднага прави една камара задачи трудни или невъзможни. аз не знам какъв точно е казуса за който говори палавров, може да е бъг на точно определен процесор или да се случва в някакви много специални условия.

Ако няма гаранция за 100% връщане, наистина е за боклука тоя проц. Силно ме съмнява, че има такива на пазара. Ама да видим какво се има предвид под "прекъсване".

#128147 (ツ) Rabin
Последно редактирано на 23.11.2024 от Rabin, видяно: 391 пъти.
Реконструктор

Ама да видим какво се има предвид под "прекъсване".

Като напълниш таймер, или вдигнеш пин - спира програмата мигновено и изпълнява кратка функция, закачена на прекъсването. Обикновено е накована хардуерно, int зарежда прог каунтър на неговия адрес. Само не тряя забраяш reti.

#128154 (ツ) waldorf
Създадено на 23.11.2024 , видяно: 351 пъти.

Като гледам капацитета на коментиращите, мисля, че няма смисъл от повече коментари … що ти била многозадачност без да си наясно що е то ПОС терминал - питай Миро в другия форум да ти обясни - аз нямам нерви и мерак …

#128155 (ツ) Rabin
Създадено на 23.11.2024 , видяно: 347 пъти.

И най-мизерните контролери, се пишат многозадачно, коментираните прекъсвания.

Имам една книга - цяла ос за древен 8 битов 8051.

#128158 (ツ) synergie
Създадено на 23.11.2024 , видяно: 333 пъти.
waldorf

Като гледам капацитета на коментиращите, мисля, че няма смисъл от повече коментари … що ти била многозадачност без да си наясно що е то ПОС терминал - питай Миро в другия форум да ти обясни - аз нямам нерви и мерак …

Нивото на коментиращия е ужасно ниско по принцип не само тук

#128159 (ツ) Rabin
Създадено на 23.11.2024 , видяно: 323 пъти.

В БгБуля броят 3 пъти по 3, всички дупки по телесата, против уроки.

#128165 (ツ) Реконструктор
Създадено на 23.11.2024 , видяно: 314 пъти.
waldorf

Като гледам капацитета на коментиращите, мисля, че няма смисъл от повече коментари … що ти била многозадачност без да си наясно що е то ПОС терминал - питай Миро в другия форум да ти обясни - аз нямам нерви и мерак …

Това, къде си цъкаш картата в магазина, на прав път ли съм?

0 1

странна ситуация (арм, гцц)
0

AsmBB v3.0 (check-in: 7544654b24928b93); SQLite v3.47.0 (check-in: 03a9703e27c44437);
©2016..2024 John Found; Licensed under EUPL. Powered by Assembly language Created with Fresh IDE