Программирую проц под иаром, вроде все ок, но решил проверить, насколько быстр данный проц, и вот тут меня постигло недоумение...
Задал я простой тестик, счетчик, который прибавляется на 1 пока идет 1 сек, без оптимизации и т.п. Итого, на А5, на который идет тактировка 500!!! МГц, счетчик насчитал около 2000000. В отладке посмотрел, на прибавление 1 и выполнения while с условием, выполняется 10 асмовских команд. Итого получаем черепашью скорость, если так мягко выразиться
Для примера запустил тоже самое на стм32f407 на 160МГц результат был в 6 раз больше...
Может у кого есть светлые мысли, или там еще каких-нить делителей понапичкали...
1) надеюсь измеряете количество циклов не "дрыганием" GPIO пина
2) попробуйте повторить тест из под linux и сравнить результат
Вариантов можно выдумать тучу: не включен кеш, если работает из внутренней памяти - понижена частота ее работы ...
1) Тест очень простой - задаю выдержку таймера (LPT для А5 и Systick для М4) на 1 сек, а во время ожидания просто прибавляю 32х битную переменную. Сколь насчитает сравниваю с аналогичным результатом в stm32f707, и ... чувствую разницу!
По логике вещей, при частотах 500 и 167МГц, кол-во итераций М4 должно быть примерно таким-же, как у стм, а А5 раза в 3-4 больше. Логично?
В связи с этим вопрос
1) Я пользуюсь JLinkом, он может как-то влиять на проц? В смысле, при "нормальном" запуске сначала пускается бутром, он что-то инициализирует, а jlink пускает прогу сразу, без бутрома.
2) во флехе находится убут с линуксом, отключить загрузку из флеша я не могу, может это как-либо повлиять?
3) С платой шла бумажка с логином и паролем к фтп. Залогинится не получается, из того архива меня интересует mfgtools с настройками для чипа, чтоб залить свою прогу во флеш.
4) Может кто-нить "выдрать" из убутовых файлов процедуры инита клоков и кэша. Перечитывал даташит, но ничего про кэш не нашел, кроме пары фьюзов. Неужели нет регистров конфигурации кеша?
И еще, может есть тут кто разобрался с L2 кэшем? У меня в плате чип, в котором прошит фъюз, что данный кэш используется, но как его включить или выключить - непонятно. Включение кеша у М4 увеличило его скорость в 4 раза, с одной стороны хорошо, с другой- неужели там такая медленная статика, что так падает быстродействие?
Ну и сейчас М4 работает в 2 раза быстрее А5го! Согласитесь, так быть не должно...
Я позавчера успешно скачал с ftp нужные файлы с использованием бумажки с логином и паролем.
После старта U-Boot пишет:
CPU: Freescale Vybrid VF610 at 396 MHz
Еще не разбирался что там в действительности, но процессор A5 должен быть на 500 МГц.
Похоже, что есть Errata по этому поводу (у меня на чипе 2N02G):
Description:
There may be clock instability at the Phase Frequency Divider (PFD) output when the
fractional divisor at ANADIG_PLLx_PFD[PFDn_FRAC] for that PFD output is 19. A PFD value
of 19 is typically used to create a 500MHz system clock when PLL1 or PLL2 has a frequency
of 528MHz.
Workaround:
If a 500 MHz system clock is desired, modify the PLL configuration to generate the 500MHz
clock directly and bypass the PFD. The following values will generate a 500MHz PLL clock:
MFI=20 (ANADIG_PLLx_CTRL[DIV_SELECT]=0)
MFD=100 (ANADIG_PLLx_DENUM)
MFN=83 (ANADIG_PLLx_NUM)
Для загрузки из виртуальной машины и прошивки rootfs в NAND я создал в u-boot переменную и сохранил её:
setenv rootfs_update "tftpboot 0x82000000 rootfs.ubi; nand erase 0x800000 0xf800000; nand write 0x82000000 0x800000 0xf800000"
saveenv
После этого возможно пользоваться командой run rootfs_update