Отговори на тема  [ 42 мнения ]  Отиди на страница Предишна  1, 2, 3
PIC 24F....наблюдения 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
setoy написа:

Компилатор Keil, LPC2129, 40 Mhz,Thumb mode, без оптимизации. Според симулатора цикъла се изпълнява за по малко от 2 us. 8O
Коректен ли е подобен тест?


Кажи какво тестваш за да ти кажа (ако мога) дали е коректен ;-)

Първо Thumb - да съгласен съм, твоя код може да е thumb, но делението е библиотечна функция която може да е всякаква. Не познавам Keil и нямам представа какво е линкнало.

Второ какво прави кода? Имаш цикъл с точно една итерация. Читав компилатор ще ти разкара цикъла.
Сега да си призная не съм в час с double и %f но мога да се обзаложа с теб, че printf-а ти е изяден и дума не може да става че се изпълнява за 80 клока ;-)

Не мога да гадая какво "симулира" за 80 клока твоя Keil, но едно деление при това целочислено отнема между 20 и 200 клока (предния пост цитирах точни стойности). Да речем че ти си подбрал такива стойности че минава за 20 клока и да речем че делението е inline (в нормална програма никога няма да е) ти остават някакви си 60 клока за printf.
Не знам доколко си запознат с природата на printf, но това е доста тромава функция. При IAR и GCC само влизането и излизането в тая функция е от порядъка на 100 клока.

Забрави за printf!
Само сканирането - в случая за да сканираш форматния стринг трябва да извлечеш 8 символа. Осем четения сложени в цикъл от сорта:

thumb.
1: LDR r1, [r0, #0]
add r0, r0, #1
cmp r1, #0
bne 1b

е тва цикълче извикано с форматния ти стринг ти е точно 62 клока (7*8 +6) и то при условие че нямаш waitstates...

Наясно си предполагам че след като едно просто сканиране ти е 62 клока, няма как да направиш prinf за 60 ;-)

Чисто хипотетично, без да познавам нито компилатора нито библиотеките на Keil бих предположил че кода ти се изпълнява за около две МИЛИсекунди, а не МИКРО както си написал ;-)


Чет Юли 12, 2007 2:40 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
И аз не съм наясно :) С АРМ се заигравам от 3 дни насам всичко на всичко. Искам да съм наясно с плюсовете и минусите им още отначало - това че няма инструкция за делене доста ме смути. Точно деленето в цикъла ме интересува, въобще не printf-a. Бреакпойнт-а е преди printf. Ще си поиграя още...


Пет Юли 13, 2007 10:49 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
липсата на инструкция за деление е кофти нещо, не знам що така са го решили. Може би щото в другите операции наистина го бива и са преценили, че могат да спестят някой друг транзистор...
За да придобиеш представа как е с другите операции, ето стандартния код за деление на 10:

Код:
div10
; takes argument in a1
; returns quotient in a1, remainder in a2
; cycles could be saved if only divide or remainder is required
SUB a2, a1, #10 ; keep (x-10) for later
SUB a1, a1, a1, lsr #2
ADD a1, a1, a1, lsr #4
ADD a1, a1, a1, lsr #8
ADD a1, a1, a1, lsr #16
MOV a1, a1, lsr #3
ADD a3, a1, a1, asl #2
SUBS a2, a2, a3, asl #1 ; calc (x-10) - (x/10)*10
ADDPL a1, a1, #1 ; fix-up quotient
ADDMI a2, a2, #10 ; fix-up remainder


Всяка от горните инструкции се изпълнява за 1 клок и на практика горния код съдържа 6 прости умножения, две изваждания и две събирания - всичко това само за 10 клока, долу-горе колкото скоростта на един хардуерен делител ;-)

Повечето стандартни алгоритми като фуриета, мп3-ки и т.н. ги има преработени така че да не страдат от липсата на деление. Единствено трябва да се внимава когато сам си пишеш алгоритъмчета за да не настъпиш някой "минус"...

Като цяло хардуера на АРМ въпреки тия проблеми, както и някои други (да не ги споменавам) е доста читав и дава доста добра производителност. С други думи минусите в хардуера се преживяват, виж от към среди за разработка, прилични документации и т.н. има много капани, в които обикновено влизат всички начинаещи...


Пет Юли 13, 2007 12:14 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
Мерси за подробните отговори, Миро :)


Пет Юли 13, 2007 4:48 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Яну 30, 2006 2:48 am
Мнения: 1248
Местоположение: София
Мнение 
Не се чуди.
PIC24 е чудесен процесор от универсален тип (без специализации)
Матрицата на изходите при 28 и 44 краковите, просто ме изкефи.
Чудесно удобство е, да си назначиш сам, на кой крак коя периф. функция да се появи.
Мечтата на хардуериста =D>
Памет много, 16 битова аритметика, периферни функции - богато, харчи малко, разкарали са DSP ядрото, да не пречи, изобщо - чуден 16 битов процесор общо назначение 8)


Съб Юли 14, 2007 12:21 am
Профил WWW
Online
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Мдаааа след калкулации и обмисления арм-а отпада, и всите на ренесас, май 24-ка ще е, е на що микрочип има пазарен дял, просто предлагат неща които не всички предлагат, подхдящи за продукти дето се гони цена.


Нед Юли 22, 2007 6:23 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Само информативно за атмелския АT91SAM7S32 на каква цена намери доставка?


Нед Юли 22, 2007 6:56 pm
Профил
Online
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Ами над 500 бр. 3.78 това е цената в mouser, в digikey е малко по висока, от arrow още нямам оферта. Не мисля че BG достачицит ще смъкнат кой зна еколко цената от техните, това е с около долар над 24-та серия, говоря за малката 24-ка в 28 SOIC.


Нед Юли 22, 2007 9:23 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Апр 05, 2005 9:34 am
Мнения: 88
Мнение 
Забелязах, че тиа 24-ки имат някакъв JTAG порт. Някой знае ли това чудо от Microchip как се ползва. ICD-то си работи на други пинове.


Пет Авг 31, 2007 3:29 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
ICD то си работи. JTAG - работи ама друг път.

Всъщност май работи с новия им InCircuitDebuger, ама 500$ не ми се дават като ICD то си е ОК. Доста по бърз бил новия, и имал повече възможности...ама.

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


Пет Авг 31, 2007 3:32 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Вече в други постове го обсъждахме. Поредното лайно на Мокрочип. През Jtaga-a им не може да се дебъгва.


Пет Авг 31, 2007 3:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Да Кольо е прав. JTAG-a не се поддържа въобще за момента. Новия дебъгер работи през стандартните пинове.

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


Пет Авг 31, 2007 6:56 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 42 мнения ]  Отиди на страница Предишна  1, 2, 3

Кой е на линия

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


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

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