|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 9:56 pm
| Автор |
Съобщение |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
Кажи какво тестваш за да ти кажа (ако мога) дали е коректен
Първо 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 |
|
 |
|
setoy
Ранг: Почетен член
Регистриран на: Пет Фев 17, 2006 9:17 am Мнения: 765 Местоположение: Стара Загора
|
И аз не съм наясно  С АРМ се заигравам от 3 дни насам всичко на всичко. Искам да съм наясно с плюсовете и минусите им още отначало - това че няма инструкция за делене доста ме смути. Точно деленето в цикъла ме интересува, въобще не printf-a. Бреакпойнт-а е преди printf. Ще си поиграя още...
|
| Пет Юли 13, 2007 10:49 am |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 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 |
|
 |
|
setoy
Ранг: Почетен член
Регистриран на: Пет Фев 17, 2006 9:17 am Мнения: 765 Местоположение: Стара Загора
|
Мерси за подробните отговори, Миро 
|
| Пет Юли 13, 2007 4:48 pm |
|
 |
|
Syrius-B
Ранг: Форумен бог
Регистриран на: Пон Яну 30, 2006 2:48 am Мнения: 1248 Местоположение: София
|
Не се чуди.
PIC24 е чудесен процесор от универсален тип (без специализации)
Матрицата на изходите при 28 и 44 краковите, просто ме изкефи.
Чудесно удобство е, да си назначиш сам, на кой крак коя периф. функция да се появи.
Мечтата на хардуериста
Памет много, 16 битова аритметика, периферни функции - богато, харчи малко, разкарали са DSP ядрото, да не пречи, изобщо - чуден 16 битов процесор общо назначение 
|
| Съб Юли 14, 2007 12:21 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Мдаааа след калкулации и обмисления арм-а отпада, и всите на ренесас, май 24-ка ще е, е на що микрочип има пазарен дял, просто предлагат неща които не всички предлагат, подхдящи за продукти дето се гони цена.
|
| Нед Юли 22, 2007 6:23 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Само информативно за атмелския АT91SAM7S32 на каква цена намери доставка?
|
| Нед Юли 22, 2007 6:56 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Ами над 500 бр. 3.78 това е цената в mouser, в digikey е малко по висока, от arrow още нямам оферта. Не мисля че BG достачицит ще смъкнат кой зна еколко цената от техните, това е с около долар над 24-та серия, говоря за малката 24-ка в 28 SOIC.
|
| Нед Юли 22, 2007 9:23 pm |
|
 |
|
SurchO
Ранг: Минаващ
Регистриран на: Вто Апр 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 |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 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 |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 9 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|