Наконец-то допинал перенос uOS на платы Uno32 и Max32. Померял время переключения задач и время входа в обработчик прерывания - получилось соответственно 2.13 мксек и 0.90 мксек. Вполне неплохо.
Загвоздка в компиляторе. С версиями cpp-chipKIT-newlibtest-linux32-20111010 и mpide-0023-linux-20120903 работает нормально, но с mips-gcc-4.7.2 виснет. Буду разбираться.
Все оказалось просто: нужно добавить флаг -EL для gcc. У этих версий разные умолчания. Если не указано, mips-elf-gcc использует big endian, а pic32-gcc - little endian. Исправлено, обновите исходники с SVN.
avrdude: Version 5.10, compiled on Jun 29 2010 at 03:44:14 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "/opt/mpide/hardware/tools/avrdude.conf" User configuration file is "/home/benderamp/.avrduderc" User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/ttyUSB0 Using Programmer : stk500v2 Overriding Baud Rate : 115200 avrdude: stk500_2_ReceiveMessage(): timeout
В этот момент нужно нажать кнопку reset на плате - процесс почти сразу продолжится. Второй раз как уже было выше - в конце - программа начинает работать, нужно просто нажать ctrl+c.
no subject
Date: 2012-11-16 16:13 (UTC)TEST = test-leds
сделал make load (avrdude зали test-leds.hex) - LD4 (13й пин на плате) просто горит, хотя должен мигать.
Моя отдельная программа (светодиод на 6м пине):
#include
TEST = test-leds
сделал make load (avrdude зали test-leds.hex) - LD4 (13й пин на плате) просто горит, хотя должен мигать.
Моя отдельная программа (светодиод на 6м пине):
#include <runtime/lib.h>
#include <kernel/uos.h>
char stack [400];
void hello (void *data) {
//PORTDSET = 1 << 2;
for (;;) {
PORTDINV = 1 << 2;
mdelay (100);
}
}
void uos_init (void) {
TRISDCLR = 1 << 2;
task_create(hello, 0, "hello", 1, (array_t*)stack, sizeof (stack));
}
Тоже не работает - диод просто не горит. Но LD4 на плате уже с ума не сходит как раньше.
no subject
Date: 2012-11-16 17:01 (UTC)no subject
Date: 2012-11-16 19:37 (UTC)no subject
Date: 2012-11-16 20:09 (UTC)no subject
Date: 2012-11-18 12:38 (UTC)Перепрошивка сопровождается 2мя таймаутами - первый раз перед началом:
/opt/mpide/hardware/tools/avrdude -C /opt/mpide/hardware/tools/avrdude.conf -P /dev/ttyUSB0 -c stk500v2 -p pic32 -b 115200 -v -U flash:w:test-leds.hex:i
avrdude: Version 5.10, compiled on Jun 29 2010 at 03:44:14
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "/opt/mpide/hardware/tools/avrdude.conf"
User configuration file is "/home/benderamp/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/ttyUSB0
Using Programmer : stk500v2
Overriding Baud Rate : 115200
avrdude: stk500_2_ReceiveMessage(): timeout
В этот момент нужно нажать кнопку reset на плате - процесс почти сразу продолжится. Второй раз как уже было выше - в конце - программа начинает работать, нужно просто нажать ctrl+c.
no subject
Date: 2012-11-20 00:40 (UTC)Достал меня несколько этот avrdude. Пожалуй, имеет смысл добавить в pic32prog поддержку этого протокола. Будет гораздо проще и стабильнее.