|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 1:45 pm
Въпрос за ARM7TDMI (най-вече към Цецо)
| Автор |
Съобщение |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
 Въпрос за ARM7TDMI (най-вече към Цецо)
Тъй като подготвям почвата да почна да се занимавам с тоз процесор, искам да си изясня някои неща.
Доколкото разбирам, ARM7TDMI е стандарт. От което следва, че всички ARM7TDMI ядра на всички производители трябва да са двоично съвместими. Така ли е? И код, генериран от който и да е компилатор за ARM7TDMI ще се изпълнява ли на всяко ядро на всеки производител? Тоест, подхода е като при х86 процесорите?
|
| Нед Фев 26, 2006 1:13 pm |
|
 |
|
Balkana
Ранг: Популярен
Регистриран на: Чет Дек 01, 2005 10:42 pm Мнения: 301
|
 аз да си кажа също
Значи, така е - прав си всичко дето е ARM7TDMI, със или без -S накрая, изпълнява едни и същи инструкции по един и същи начин. Тоест, всеки код, който си компилирал с който и да е компилатор ще се изпълнява еднакво на ядро от който и да е производител, стига да не използва периферия, която е специфична за конкретния чип.
Проблема идва от това "стига да не използва ...", поради следните причини:
1. в чиповете на различните производители, обикновено, паметите които са налични в системата се намират на различни адреси (това си има workaround, ама е важно да се спомене)
2. в някои реализации exception векторите не се изпозлзват (моя любим Микронас)
3. контролера на прекъсванията дето го спрягаме толкоз много в другата тема, влиза в категорията "перферия, специфична за дадения чип". Това означава че си иска своето специфично управление, и без него векторната система от прекъсвания няма да работи, което на практика приключва въпроса с портабилността.
4. всичките периферни устройства, са различни за различните производители - т.е. трябва драйверите да са специфични.
При x86 въпроса не стои точно така, тъй като има набор от стандартизирана периферия, стояща на едни и същи адреси (по отношение на PC съвместимите системи). Това позволява доста по-голямо удобство при пренасяне на код.
Давам пример: работил съм стс I386ЕХ, Am186CC, I80C188EB - всичките са x86, само че 386-цата е направена да бъде колкото се може PC съвместима, докато другите 2 контролера са за чисто специфични приложения - те също си имат наборите от UART, контролер на прекъсвания, който обаче съвсем не е 8259, таймери които не са 8253/8254 .... т.е. случая е съвсем аналогичен - те са същото ядро и инструкции, но на практика заради различните периферии няма начин да пуснеш върху тях вече готов код без преправяне.
|
| Нед Фев 26, 2006 2:21 pm |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10088
|
освен всичко, което каза балкана, 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
|
| Нед Фев 26, 2006 3:01 pm |
|
 |
|
Zdrav
Ранг: Форумен бог
Регистриран на: Сря Яну 26, 2005 2:01 pm Мнения: 1952 Местоположение: Варна
|
То преди да е отговорил Цецо май станахме много хора ама да кажа и аз
VIC който е изполван в LPC2000 се отнася към стандартна PrimeCell периферия на ARM и от PHILIPS съвсем коректно са спазили адресите на всички регистри които са дадени от ARM така че и тук има някаква повторяемост. На сайта на ARM може да се открие документацията на този VIC(Vectored Interrupt Controller).
|
| Нед Фев 26, 2006 3:20 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
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 7:34 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Ами аз просто нямам какво да кажа - отговор на въпроса си вече си получил.
Ама защо към Цецо?
Аз за АРМ преди една седмица знаех толкова колкото и ти. Писах тука за едни развойни платки, ама работата се разсъхна, време нямам та направо реших да се уча в движение върху готов проект. И от една севдмица се боря с това животно.
Та тука (във форумното пространство) има хора които са много по напред от мен в АРМ-а. Аз самия ползвам техните услуги (за което благодаря).
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Нед Фев 26, 2006 8:39 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
Значи пак ще има потене и окултни ритуали.  Добре, а тоз IAR кои точно ядра поддържа?
|
| Пон Фев 27, 2006 1:39 pm |
|
 |
|
Bezmozachen
Ранг: Популярен
Регистриран на: Сря Апр 27, 2005 2:47 pm Мнения: 349 Местоположение: Varna
|
До колкото разбрах, производителя определя дали ще е little или big endian (примерно LPC2148 е little endian, а MAC7111 е big endian) или нещо греша. Въобще защо ги правят big endian, като според мен естествения формат си е little endian (като събираш/вадиш винаги почваш от най-младшите)?
|
| Пон Фев 27, 2006 3:56 pm |
|
 |
|
Balkana
Ранг: Популярен
Регистриран на: Чет Дек 01, 2005 10:42 pm Мнения: 301
|
@Bezmozachen: Досега поне 2 чарка съм срещал, на които можеш да си избираш как искаш да бачкаш - big или little. Все пак, да, въпрос на избор на производителя е какъв ще е default-а, и дали да даде на user-а възможност да си го цъка.
|
| Пон Фев 27, 2006 5:33 pm |
|
 |
|
Bezmozachen
Ранг: Популярен
Регистриран на: Сря Апр 27, 2005 2:47 pm Мнения: 349 Местоположение: Varna
|
Ясно, питах щото пък тея дето съм ги срещал няма опция за избор. @Balkana, можеш ли да ми посочиш МЦУ на което има избор, просто информативно.
|
| Пон Фев 27, 2006 7:39 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Сигурен ли си че филипса е еднопосочен? Честно казано с такива се мъча в момента, ама не мога да си спомня да има ограничение в дейта шита.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Пон Фев 27, 2006 8:36 pm |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10088
|
16-та страница на "User Manual 2104,5,6". ARCHITECTURAL OVERVIEW, в края на първи параграф:
|
| Пон Фев 27, 2006 11:57 pm |
|
 |
|
Balkana
Ранг: Популярен
Регистриран на: Чет Дек 01, 2005 10:42 pm Мнения: 301
|
@Bezmozachen: Micronas CDC32xx дето бачкам с него даже разрешава от една контролна дума, която се изчита при ресет от фиксиран адрес автоматично да се нагласи (като user с дълъг опит на х86, естествено предпочетох little-endian) и цялата си програма компилираш както желаеш.
Самсунг S3C4510 дето разглеждам в момента, си има пин по въпроса.
|
| Вто Фев 28, 2006 12:39 am |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Да прави сте за индианците, на филипса малките са на опашката.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Вто Фев 28, 2006 12:51 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
Добре, а в крайна сметка трябва ли ми компилатор за всеки производител на това ядро, или може да мина с някакъв универсален?
|
| Вто Фев 28, 2006 4:38 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 0 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|