Отговори на тема  [ 26 мнения ]  Отиди на страница 1, 2  Следваща
Въпрос за ARM7TDMI (най-вече към Цецо) 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение Въпрос за ARM7TDMI (най-вече към Цецо)
Тъй като подготвям почвата да почна да се занимавам с тоз процесор, искам да си изясня някои неща.
Доколкото разбирам, ARM7TDMI е стандарт. От което следва, че всички ARM7TDMI ядра на всички производители трябва да са двоично съвместими. Така ли е? И код, генериран от който и да е компилатор за ARM7TDMI ще се изпълнява ли на всяко ядро на всеки производител? Тоест, подхода е като при х86 процесорите?


Нед Фев 26, 2006 1:13 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Чет Дек 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
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 2:01 pm
Мнения: 1952
Местоположение: Варна
Мнение 
То преди да е отговорил Цецо май станахме много хора ама да кажа и аз :lol:
VIC който е изполван в LPC2000 се отнася към стандартна PrimeCell периферия на ARM и от PHILIPS съвсем коректно са спазили адресите на всички регистри които са дадени от ARM така че и тук има някаква повторяемост. На сайта на ARM може да се открие документацията на този VIC(Vectored Interrupt Controller).


Нед Фев 26, 2006 3:20 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 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
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Значи пак ще има потене и окултни ритуали. :D Добре, а тоз IAR кои точно ядра поддържа?


Пон Фев 27, 2006 1:39 pm
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Апр 27, 2005 2:47 pm
Мнения: 349
Местоположение: Varna
Мнение 
Цитат:
освен всичко, което каза балкана, 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 (като събираш/вадиш винаги почваш от най-младшите)?


Пон Фев 27, 2006 3:56 pm
Профил
Ранг: Популярен
Ранг: Популярен

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


Пон Фев 27, 2006 5:33 pm
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Апр 27, 2005 2:47 pm
Мнения: 349
Местоположение: Varna
Мнение 
Ясно, питах щото пък тея дето съм ги срещал няма опция за избор. @Balkana, можеш ли да ми посочиш МЦУ на което има избор, просто информативно.


Пон Фев 27, 2006 7:39 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Сигурен ли си че филипса е еднопосочен? Честно казано с такива се мъча в момента, ама не мога да си спомня да има ограничение в дейта шита.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Фев 27, 2006 8:36 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
16-та страница на "User Manual 2104,5,6". ARCHITECTURAL OVERVIEW, в края на първи параграф:
Цитат:
The LPC2106/2105/2104 configures the ARM7TDMI-S processor in little-endian byte order.


Пон Фев 27, 2006 11:57 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Чет Дек 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
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Добре, а в крайна сметка трябва ли ми компилатор за всеки производител на това ядро, или може да мина с някакъв универсален?


Вто Фев 28, 2006 4:38 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 26 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 14 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни