git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@216 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
5e64a9fec2
commit
8c39bfc93d
|
@ -86,6 +86,7 @@ SRC = ../../ports/AVR/chcore.c ../../ports/AVR/avr_serial.c \
|
|||
../../src/chevents.c ../../src/chmsg.c ../../src/chsleep.c ../../src/chqueues.c \
|
||||
../../src/chserial.c \
|
||||
../../src/lib/evtimer.c \
|
||||
../../test/test.c \
|
||||
board.c main.c
|
||||
|
||||
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
*/
|
||||
|
||||
#include <ch.h>
|
||||
#include <evtimer.h>
|
||||
#include <avr_serial.h>
|
||||
|
||||
#include <avr/io.h>
|
||||
|
||||
|
@ -35,7 +37,19 @@ static msg_t Thread1(void *arg) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void TimerHandler(eventid_t id) {
|
||||
msg_t TestThread(void *p);
|
||||
|
||||
if (!(PORTA & PORTA_BUTTON1))
|
||||
TestThread(&SER2);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
static EvTimer evt;
|
||||
static evhandler_t handlers[1] = {
|
||||
TimerHandler
|
||||
};
|
||||
static EventListener el0;
|
||||
|
||||
hwinit();
|
||||
|
||||
|
@ -45,13 +59,20 @@ int main(int argc, char **argv) {
|
|||
*/
|
||||
chSysInit();
|
||||
|
||||
/*
|
||||
* Event Timer initialization.
|
||||
*/
|
||||
evtInit(&evt, 500); /* Initializes an event timer object. */
|
||||
evtStart(&evt); /* Starts the event timer. */
|
||||
chEvtRegister(&evt.et_es, &el0, 0); /* Registers on the timer event source. */
|
||||
|
||||
/*
|
||||
* Starts the LED blinker thread.
|
||||
*/
|
||||
chThdCreate(NORMALPRIO, 0, waThread1, sizeof(waThread1), Thread1, NULL);
|
||||
|
||||
while(TRUE)
|
||||
chThdSleep(1000);
|
||||
chEvtWait(ALL_EVENTS, handlers);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -75,9 +75,12 @@ AVR-AT90CANx-GCC - Port on AVR AT90CAN128, not complete yet, scheduled
|
|||
it, the change was required because the type names were the main concern of
|
||||
some users.
|
||||
- Implemented a serial driver in the AVR port.
|
||||
- Modified the test suite to be compatible with 8 bit micros.
|
||||
- MSVC demo dropped, it is still possible to use the MinGW demo as simulator
|
||||
in Win32.
|
||||
- Fixed a minor error in sam7x_serial.h and lpc214x_serial.h.
|
||||
- The kernel is *unchanged* compared to version 0.5.3 except for the type
|
||||
names but the change is important enough to make this a recommended update.
|
||||
|
||||
*** 0.5.5 ***
|
||||
- Added an AVRmega128 port. The previous AT90CANx port is still present but
|
||||
|
|
44
test/test.c
44
test/test.c
|
@ -51,7 +51,7 @@ static void wait(void) {
|
|||
chThdWait(t5);
|
||||
}
|
||||
|
||||
static void printn(unsigned int n) {
|
||||
static void printn(uint32_t n) {
|
||||
char buf[16], *p;
|
||||
|
||||
if (!n)
|
||||
|
@ -137,13 +137,13 @@ msg_t Thread4(void *p) {
|
|||
msg_t Thread6(void *p) {
|
||||
|
||||
while (!chThdShouldTerminate())
|
||||
chMsgRelease(chMsgWait() + 1);
|
||||
chMsgRelease(chMsgWait());
|
||||
return 0;
|
||||
}
|
||||
|
||||
msg_t Thread7(void *p) {
|
||||
|
||||
return (unsigned int)p + 1;
|
||||
return (msg_t)NULL;
|
||||
}
|
||||
|
||||
void testrdy1(void) {
|
||||
|
@ -380,12 +380,13 @@ void testmsg1(void) {
|
|||
|
||||
__attribute__((noinline))
|
||||
unsigned int msg_loop_test(Thread *tp) {
|
||||
unsigned int i;
|
||||
uint32_t i;
|
||||
|
||||
systime_t time = wait_tick() + 1000;
|
||||
i = 0;
|
||||
while (chSysGetTime() < time) {
|
||||
i = chMsgSend(tp, i);
|
||||
(void)chMsgSend(tp, 0);
|
||||
i++;
|
||||
#if defined(WIN32)
|
||||
ChkIntSources();
|
||||
#endif
|
||||
|
@ -395,7 +396,7 @@ unsigned int msg_loop_test(Thread *tp) {
|
|||
|
||||
__attribute__((noinline))
|
||||
void precache(void) {
|
||||
unsigned int i;
|
||||
uint32_t i;
|
||||
|
||||
println("\r\nPreparing for benchmarks\r\n");
|
||||
t1 = chThdCreate(chThdGetPriority()-1, 0, wsT1, sizeof(wsT1), Thread6, 0);
|
||||
|
@ -406,7 +407,7 @@ void precache(void) {
|
|||
|
||||
__attribute__((noinline))
|
||||
void bench1(void) {
|
||||
unsigned int i;
|
||||
uint32_t i;
|
||||
|
||||
println("*** Kernel Benchmark, context switch test #1 (optimal):");
|
||||
t1 = chThdCreate(chThdGetPriority()-1, 0, wsT1, sizeof(wsT1), Thread6, 0);
|
||||
|
@ -422,7 +423,7 @@ void bench1(void) {
|
|||
|
||||
__attribute__((noinline))
|
||||
void bench2(void) {
|
||||
unsigned int i;
|
||||
uint32_t i;
|
||||
|
||||
println("*** Kernel Benchmark, context switch test #2 (no threads in ready list):");
|
||||
t1 = chThdCreate(chThdGetPriority()+1, 0, wsT1, sizeof(wsT1), Thread6, 0);
|
||||
|
@ -439,7 +440,7 @@ chMsgSend(t1, 0);
|
|||
|
||||
__attribute__((noinline))
|
||||
void bench3(void) {
|
||||
unsigned int i;
|
||||
uint32_t i;
|
||||
|
||||
println("*** Kernel Benchmark, context switch test #3 (04 threads in ready list):");
|
||||
t1 = chThdCreate(chThdGetPriority()+1, 0, wsT1, sizeof(wsT1), Thread6, "A");
|
||||
|
@ -460,15 +461,16 @@ chMsgSend(t1, 0);
|
|||
|
||||
__attribute__((noinline))
|
||||
void bench4(void) {
|
||||
unsigned int i;
|
||||
uint32_t i;
|
||||
systime_t time;
|
||||
|
||||
println("*** Kernel Benchmark, threads creation/termination:");
|
||||
time = wait_tick() + 1000;
|
||||
i = 0;
|
||||
while (chSysGetTime() < time) {
|
||||
t1 = chThdCreate(chThdGetPriority()-1, 0, wsT1, sizeof(wsT1), Thread7, (void *)i);
|
||||
i = chThdWait(t1);
|
||||
t1 = chThdCreate(chThdGetPriority()-1, 0, wsT1, sizeof(wsT1), Thread7, NULL);
|
||||
chThdWait(t1);
|
||||
i++;
|
||||
#if defined(WIN32)
|
||||
ChkIntSources();
|
||||
#endif
|
||||
|
@ -482,7 +484,7 @@ __attribute__((noinline))
|
|||
void bench5(void) {
|
||||
static uint8_t ib[16];
|
||||
static Queue iq;
|
||||
unsigned int i;
|
||||
uint32_t i;
|
||||
systime_t time;
|
||||
|
||||
println("*** Kernel Benchmark, I/O Queues throughput:");
|
||||
|
@ -490,14 +492,14 @@ void bench5(void) {
|
|||
time = wait_tick() + 1000;
|
||||
i = 0;
|
||||
while (chSysGetTime() < time) {
|
||||
chIQPutI(&iq, i >> 24);
|
||||
chIQPutI(&iq, i >> 16);
|
||||
chIQPutI(&iq, i >> 8);
|
||||
chIQPutI(&iq, i);
|
||||
i = chIQGet(&iq) << 24;
|
||||
i |= chIQGet(&iq) << 16;
|
||||
i |= chIQGet(&iq) << 8;
|
||||
i |= chIQGet(&iq);
|
||||
chIQPutI(&iq, 0);
|
||||
chIQPutI(&iq, 1);
|
||||
chIQPutI(&iq, 2);
|
||||
chIQPutI(&iq, 3);
|
||||
(void)chIQGet(&iq);
|
||||
(void)chIQGet(&iq);
|
||||
(void)chIQGet(&iq);
|
||||
(void)chIQGet(&iq);
|
||||
i++;
|
||||
#if defined(WIN32)
|
||||
ChkIntSources();
|
||||
|
|
Loading…
Reference in New Issue