Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Въпрос за ARM7TDMI (най-вече към Цецо)
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=1894
Страница 1 от 2

Автор:  Реконструктор [ Нед Фев 26, 2006 1:13 pm ]
Заглавие:  Въпрос за ARM7TDMI (най-вече към Цецо)

Тъй като подготвям почвата да почна да се занимавам с тоз процесор, искам да си изясня някои неща.
Доколкото разбирам, ARM7TDMI е стандарт. От което следва, че всички ARM7TDMI ядра на всички производители трябва да са двоично съвместими. Така ли е? И код, генериран от който и да е компилатор за ARM7TDMI ще се изпълнява ли на всяко ядро на всеки производител? Тоест, подхода е като при х86 процесорите?

Автор:  Balkana [ Нед Фев 26, 2006 2:21 pm ]
Заглавие: 

:) аз да си кажа също :)

Значи, така е - прав си всичко дето е ARM7TDMI, със или без -S накрая, изпълнява едни и същи инструкции по един и същи начин. Тоест, всеки код, който си компилирал с който и да е компилатор ще се изпълнява еднакво на ядро от който и да е производител, стига да не използва периферия, която е специфична за конкретния чип.

Проблема идва от това "стига да не използва ...", поради следните причини:

1. в чиповете на различните производители, обикновено, паметите които са налични в системата се намират на различни адреси (това си има workaround, ама е важно да се спомене)
2. в някои реализации exception векторите не се изпозлзват (моя любим Микронас)
3. контролера на прекъсванията дето го спрягаме толкоз много в другата тема, влиза в категорията "перферия, специфична за дадения чип". Това означава че си иска своето специфично управление, и без него векторната система от прекъсвания няма да работи, което на практика приключва въпроса с портабилността.
4. всичките периферни устройства, са различни за различните производители - т.е. трябва драйверите да са специфични.

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

Давам пример: работил съм стс I386ЕХ, Am186CC, I80C188EB - всичките са x86, само че 386-цата е направена да бъде колкото се може PC съвместима, докато другите 2 контролера са за чисто специфични приложения - те също си имат наборите от UART, контролер на прекъсвания, който обаче съвсем не е 8259, таймери които не са 8253/8254 .... т.е. случая е съвсем аналогичен - те са същото ядро и инструкции, но на практика заради различните периферии няма начин да пуснеш върху тях вече готов код без преправяне.

Автор:  ДедоБоре [ Нед Фев 26, 2006 3:01 pm ]
Заглавие: 

освен всичко, което каза балкана, 7TDMI е "bi-endian", което значи, че може да изпълнява и little- и big-endian код. това обаче не важи за данните (константи в инструкциите, например). въпеки, че традиционно 7TDMI работи в little-endian режим, програма, компилирана с big-endian опция няма да върви коректно. но ще върви :)

мисля, че глава 2 на документа на "ARM7TDMI r4p1 Technical Reference Manual" ще ти е от полза да схванеш разликите.
http://arm.com/pdfs/DDI0210C_7tdmi_r4p1_trm.pdf

Автор:  Zdrav [ Нед Фев 26, 2006 3:20 pm ]
Заглавие: 

То преди да е отговорил Цецо май станахме много хора ама да кажа и аз :lol:
VIC който е изполван в LPC2000 се отнася към стандартна PrimeCell периферия на ARM и от PHILIPS съвсем коректно са спазили адресите на всички регистри които са дадени от ARM така че и тук има някаква повторяемост. На сайта на ARM може да се открие документацията на този VIC(Vectored Interrupt Controller).

Автор:  miro_atc [ Нед Фев 26, 2006 7:34 pm ]
Заглавие: 

Instruction set-а се определя от ядрото. ARM имат 5 версии - от 1 до 5 (като изключим новите с които не съм запознат).
От версия едно май няма чипове, версия 2 изчезна заедно с динозаврите, така че на пазара в момента са 4-та и 5-та версия.
За последните две има T-варианти (поддържащи Тhumb)...

АРМ7 е фамилия процесори изградени на базата на ядро версии 3 и 4Т. ARM7TDMI като член на тази фамилия използва ядро версия 4Т. Но всъщност ARM7TDMI е просто търговска марка, а не стандарт, така че не бих се учудил ако някой си я плати за да пробутва нещо друго...

Така че всико написано за ARM core architecture version 4 или 4Т трябва да върви, освен ако не върви щото думичките UNDEFINED и UNPREDICTABLE са най-често използваните думи в описанието на ARM ядрото ;-)

Автор:  Цецо [ Нед Фев 26, 2006 8:39 pm ]
Заглавие: 

Ами аз просто нямам какво да кажа - отговор на въпроса си вече си получил.

Ама защо към Цецо?

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

Та тука (във форумното пространство) има хора които са много по напред от мен в АРМ-а. Аз самия ползвам техните услуги (за което благодаря).

Автор:  Реконструктор [ Пон Фев 27, 2006 1:39 pm ]
Заглавие: 

Значи пак ще има потене и окултни ритуали. :D Добре, а тоз IAR кои точно ядра поддържа?

Автор:  Bezmozachen [ Пон Фев 27, 2006 3:56 pm ]
Заглавие: 

Цитат:
освен всичко, което каза балкана, 7TDMI е "bi-endian", което значи, че може да изпълнява и little- и big-endian код. това обаче не важи за данните (константи в инструкциите, например). въпеки, че традиционно 7TDMI работи в little-endian режим, програма, компилирана с big-endian опция няма да върви коректно. но ще върви Smile

До колкото разбрах, производителя определя дали ще е little или big endian (примерно LPC2148 е little endian, а MAC7111 е big endian) или нещо греша. Въобще защо ги правят big endian, като според мен естествения формат си е little endian (като събираш/вадиш винаги почваш от най-младшите)?

Автор:  Balkana [ Пон Фев 27, 2006 5:33 pm ]
Заглавие: 

@Bezmozachen: Досега поне 2 чарка съм срещал, на които можеш да си избираш как искаш да бачкаш - big или little. Все пак, да, въпрос на избор на производителя е какъв ще е default-а, и дали да даде на user-а възможност да си го цъка.

Автор:  Bezmozachen [ Пон Фев 27, 2006 7:39 pm ]
Заглавие: 

Ясно, питах щото пък тея дето съм ги срещал няма опция за избор. @Balkana, можеш ли да ми посочиш МЦУ на което има избор, просто информативно.

Автор:  Цецо [ Пон Фев 27, 2006 8:36 pm ]
Заглавие: 

Сигурен ли си че филипса е еднопосочен? Честно казано с такива се мъча в момента, ама не мога да си спомня да има ограничение в дейта шита.

Автор:  ДедоБоре [ Пон Фев 27, 2006 11:57 pm ]
Заглавие: 

16-та страница на "User Manual 2104,5,6". ARCHITECTURAL OVERVIEW, в края на първи параграф:
Цитат:
The LPC2106/2105/2104 configures the ARM7TDMI-S processor in little-endian byte order.

Автор:  Balkana [ Вто Фев 28, 2006 12:39 am ]
Заглавие: 

@Bezmozachen: Micronas CDC32xx дето бачкам с него даже разрешава от една контролна дума, която се изчита при ресет от фиксиран адрес автоматично да се нагласи (като user с дълъг опит на х86, естествено предпочетох little-endian) и цялата си програма компилираш както желаеш.

Самсунг S3C4510 дето разглеждам в момента, си има пин по въпроса.

Автор:  Цецо [ Вто Фев 28, 2006 12:51 pm ]
Заглавие: 

Да прави сте за индианците, на филипса малките са на опашката.

Автор:  Реконструктор [ Вто Фев 28, 2006 4:38 pm ]
Заглавие: 

Добре, а в крайна сметка трябва ли ми компилатор за всеки производител на това ядро, или може да мина с някакъв универсален?

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/