| Микроконтролери и електроника 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 ] |
| Заглавие: | |
То преди да е отговорил Цецо май станахме много хора ама да кажа и аз 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 ] |
| Заглавие: | |
Значи пак ще има потене и окултни ритуали. |
|
| Автор: | Bezmozachen [ Пон Фев 27, 2006 3:56 pm ] | |||||||||
| Заглавие: | ||||||||||
До колкото разбрах, производителя определя дали ще е 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, в края на първи параграф:
|
||||||||||
| Автор: | 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/ |
|