Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1340 → Rev 1436

/demos/trunk/pci6025e/test_bms.c
37,9 → 37,10
*/
 
#include <kernel/kern.h>
#include <drivers/keyb.h>
#include <drivers/glib.h>
 
#include <drivers/shark_keyb26.h>
#include <drivers/shark_fb26.h>
 
#include <drivers/pci6025e/timer.h>
#include <drivers/pci6025e/dio_ppi.h>
 
73,34 → 74,30
int main(int argc, char **argv)
{
KEY_EVT k;
int modenum;
SOFT_TASK_MODEL show_val_mod;
HARD_TASK_MODEL gate_action_model;
 
sys_atrunlevel(closeEvent, NULL, RUNLEVEL_BEFORE_EXIT);
 
k.flag = CNTL_BIT;
k.scan = KEY_X;
k.ascii = 'x';
keyb_hook(k, endFun);
k.status = KEY_PRESSED;
keyb_hook(k, endFun, FALSE);
 
k.flag = CNTR_BIT;
keyb_hook(k, endFun);
k.status = KEY_PRESSED;
keyb_hook(k, endFun, FALSE);
 
k.flag = 0;
k.scan = KEY_G;
k.ascii = 'g';
keyb_hook(k, gateEvent);
k.status = KEY_PRESSED;
keyb_hook(k, gateEvent, FALSE);
 
k.scan = KEY_S;
k.ascii = 's';
keyb_hook(k, showEvent);
k.status = KEY_PRESSED;
keyb_hook(k, showEvent, FALSE);
 
if(pci_init()==-1){
sys = 10;
sys_end();
}
 
if(!reMap()){
sys = 11;
sys_end();
108,7 → 105,7
 
soft_task_default_model(show_val_mod);
soft_task_def_aperiodic(show_val_mod);
soft_task_def_level(show_val_mod, 1);
soft_task_def_level(show_val_mod, 2);
soft_task_def_met(show_val_mod, SHOW_MET);
soft_task_def_wcet(show_val_mod, SHOW_WCET);
soft_task_def_period(show_val_mod, SHOW_PERIOD);
127,21 → 124,6
sys_end();
}
 
if(grx_init()==-1){
sys = 30;
sys_end();
}
 
if( (modenum = grx_getmode(800, 600, 16)) == -1){
sys = 31;
sys_end();
}
 
if(grx_setmode(modenum) == -1){
sys = 32;
sys_end();
}
 
drawInterface();
 
DIO_init();
171,6 → 153,8
 
void endFun(KEY_EVT *k)
{
closeEvent(NULL);
 
sys_end();
}
 
263,17 → 247,16
 
void closeEvent(void *arg)
{
grx_close();
TIM_disarm(2);
switch(sys){
case 0: cprintf("Ok\n"); break;
case 10: cprintf("No PCI\n"); break;
case 11: cprintf("No National Board\n"); break;
case 20: cprintf("task <show val> down\n"); break;
case 22: cprintf("task <gate action> down\n"); break;
case 30: cprintf("Cannot initialize grx\n"); break;
case 31: cprintf("Resolution 800x600x16 not supported\n"); break;
case 32: cprintf("Cannot sets up graphic envirorment\n"); break;
default: cprintf("????????????\n"); break;
case 0: sys_shutdown_message("Ok\n"); break;
case 10: sys_shutdown_message("No PCI\n"); break;
case 11: sys_shutdown_message("No National Board\n"); break;
case 20: sys_shutdown_message("task <show val> down\n"); break;
case 22: sys_shutdown_message("task <gate action> down\n"); break;
case 30: sys_shutdown_message("Cannot initialize grx\n"); break;
case 31: sys_shutdown_message("Resolution 800x600x16 not supported\n"); break;
case 32: sys_shutdown_message("Cannot sets up graphic envirorment\n"); break;
default: sys_shutdown_message("????????????\n"); break;
}
}
/demos/trunk/pci6025e/wave.c
29,10 → 29,11
*
*/
 
#include <kernel/kern.h>
 
#include <drivers/shark_fb26.h>
#include <drivers/shark_keyb26.h>
 
#include <drivers/glib.h>
#include <drivers/keyb.h>
#include <modules/sem.h>
 
#include <drivers/pci6025e/dac.h>
72,18 → 73,17
HARD_TASK_MODEL wave0, wave1;
HARD_TASK_MODEL video;
PID wave0_pid, wave1_pid, video_pid;
int modenum;
 
k.flag = CNTR_BIT;
k.scan = KEY_X;
k.ascii = 'x';
keyb_hook(k, endfun);
k.status = KEY_PRESSED;
keyb_hook(k, endfun, FALSE);
 
k.flag = CNTL_BIT;
keyb_hook(k, endfun);
k.status = KEY_PRESSED;
keyb_hook(k, endfun, FALSE);
 
sys_atrunlevel(close_event, NULL, RUNLEVEL_BEFORE_EXIT);
 
hard_task_default_model(wave0);
hard_task_def_wcet(wave0, WAVE_WCET);
hard_task_def_mit(wave0, WAVE_PERIOD);
114,28 → 114,11
sys_end();
}
 
if(pci_init() == -1){
sys = 20;
sys_end();
}
 
if(!reMap()){
sys = 21;
sys_end();
}
 
if(grx_init() == -1){
sys = 30;
sys_end();
}
 
if( (modenum = grx_getmode(800, 600, 16)) == -1 ){
sys = 31;
sys_end();
}
 
grx_setmode(modenum);
 
createWaves();
drawInterface();
//Analog output section set up
168,23 → 151,24
 
void endfun(KEY_EVT *k)
{
close_event(NULL);
 
sys_end();
}
 
void close_event(void *arg)
{
grx_close();
switch(sys){
case 0: cprintf("Regular End!\n"); break;
case 10: cprintf("Cannot create <wave 0> task!\n"); break;
case 11: cprintf("Cannot create <wave 1> task!\n"); break;
case 12: cprintf("Cannot create <video> task!\n"); break;
case 20: cprintf("No PCI bus found!\n"); break;
case 21: cprintf("No NATIONAL PCI E-Series board found on PCI bus!\n");
case 0: sys_shutdown_message("Regular End!\n"); break;
case 10: sys_shutdown_message("Cannot create <wave 0> task!\n"); break;
case 11: sys_shutdown_message("Cannot create <wave 1> task!\n"); break;
case 12: sys_shutdown_message("Cannot create <video> task!\n"); break;
case 20: sys_shutdown_message("No PCI bus found!\n"); break;
case 21: sys_shutdown_message("No NATIONAL PCI E-Series board found on PCI bus!\n");
break;
case 30: cprintf("Cannot start graphic envirorment!\n"); break;
case 31: cprintf("800x600x16 video mode not supported!\n");
default: cprintf("Unknown exit event!\n"); break;
case 30: sys_shutdown_message("Cannot start graphic envirorment!\n"); break;
case 31: sys_shutdown_message("800x600x16 video mode not supported!\n");
default: sys_shutdown_message("Unknown exit event!\n"); break;
}
}
 
194,7 → 178,7
void createWaves(void)
{
int i;
WORD value0, value1;
int value0, value1;
BYTE direction;
 
/* Wave0
307,7 → 291,7
TASK video_body(int dummy)
{
int i = 0;
int n_tmp, o_tmp;
int n_tmp = 0, o_tmp;
//char buf[10];
 
while(1){
/demos/trunk/pci6025e/initfile.c
1,14 → 1,22
/*
* Filename: Initfile.c
* Author: Marco Ziglioli (Doctor Stein)
* Date: (I don't remeber... I'm sorry)
* Description: this file is the same for every examples in this section
*/
 
/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
* Project: S.Ha.R.K.
*
* Copyright (C) 2001 Marco Ziglioli
* Coordinators:
* Giorgio Buttazzo <giorgio@sssup.it>
* Paolo Gai <pj@gandalf.sssup.it>
*
* Authors :
* Giacomo Guidi <giacomo@gandalf.sssup.it>
* (see the web pages for full authors list)
*
* ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
*
* http://www.sssup.it
* http://retis.sssup.it
* http://shark.sssup.it
*/
 
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
25,39 → 33,166
*
*/
 
#include <kernel/kern.h>
#include <modules/edf.h>
#include <modules/cbs.h>
#include <modules/rr.h>
#include <modules/hartport.h>
#include <modules/dummy.h>
#include <modules/sem.h>
#include "kernel/kern.h"
#include "modules/intdrive.h"
#include "modules/edf.h"
#include "modules/hardcbs.h"
#include "modules/rr.h"
#include "modules/dummy.h"
 
#include <drivers/keyb.h>
#include "modules/sem.h"
#include "modules/hartport.h"
#include "modules/cabs.h"
 
#define TICK 1000
#define RRTICK 5000
#include <drivers/shark_linuxc26.h>
#include <drivers/shark_pci26.h>
#include <drivers/shark_input26.h>
#include <drivers/shark_keyb26.h>
#include <drivers/shark_fb26.h>
 
#define FRAME_BUFFER_DEVICE 0
 
/*+ sysyem tick in us +*/
#define TICK 0
 
/*+ RR tick in us +*/
#define RRTICK 2000
 
/*+ Interrupt Server +*/
#define INTDRIVE_Q 1000
#define INTDRIVE_T 10000
#define INTDRIVE_FLAG 0
 
void call_shutdown_task(void *arg);
int device_drivers_init();
int device_drivers_close();
void set_shutdown_task();
TASK shutdown_task_body(void *arg);
 
PID shutdown_task_PID = -1;
 
TIME __kernel_register_levels__(void *arg)
{
struct multiboot_info *mb = (struct multiboot_info *)arg;
struct multiboot_info *mb = (struct multiboot_info *)arg;
 
EDF_register_level(EDF_ENABLE_ALL);
CBS_register_level(CBS_ENABLE_ALL, 0);
RR_register_level(RRTICK, RR_MAIN_YES, mb);
dummy_register_level();
INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG);
EDF_register_level(EDF_ENABLE_ALL);
HCBS_register_level(HCBS_ENABLE_ALL, 1);
RR_register_level(RRTICK, RR_MAIN_YES, mb);
dummy_register_level();
 
return TICK;
SEM_register_module();
CABS_register_module();
 
return TICK;
}
 
TASK __init__(void *arg)
{
struct multiboot_info *mb = (struct multiboot_info *)arg;
struct multiboot_info *mb = (struct multiboot_info *)arg;
 
HARTPORT_init();
KEYB_init(NULL);
HARTPORT_init();
 
__call_main__(mb);
/* Create the shutdown task. It will be activated at RUNLEVEL
SHUTDOWN */
set_shutdown_task();
 
return (void *)0;
/* Init the drivers */
device_drivers_init();
 
/* Set the shutdown task activation */
sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
 
__call_main__(mb);
 
return (void *)0;
}
 
void set_shutdown_task() {
 
/* WARNING: the shutdown task is a background thread. It cannot execute
if the system is overloaded */
NRT_TASK_MODEL nrt;
 
nrt_task_default_model(nrt);
nrt_task_def_system(nrt);
 
shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
if (shutdown_task_PID == NIL) {
sys_shutdown_message("Error: Cannot create shutdown task\n");
sys_end();
}
 
}
 
int device_drivers_init() {
 
int res;
KEYB_PARMS kparms = BASE_KEYB;
LINUXC26_register_module();
 
PCI26_init();
 
INPUT26_init();
 
keyb_def_ctrlC(kparms, NULL);
 
KEYB26_init(&kparms);
 
FB26_init();
res = FB26_open(FRAME_BUFFER_DEVICE);
if (res) {
cprintf("Error: Cannot open graphical mode\n");
KEYB26_close();
INPUT26_close();
sys_end();
}
FB26_use_grx(FRAME_BUFFER_DEVICE);
FB26_setmode(FRAME_BUFFER_DEVICE,"800x600-16");
return 0;
 
}
 
int device_drivers_close() {
FB26_close(FRAME_BUFFER_DEVICE);
KEYB26_close();
INPUT26_close();
return 0;
}
 
#define SHUTDOWN_TIMEOUT_SEC 3
 
void call_shutdown_task(void *arg)
{
struct timespec t;
 
sys_gettime(&t);
t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
 
/* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
 
task_activate(shutdown_task_PID);
}
 
TASK shutdown_task_body(void *arg) {
 
device_drivers_close();
 
sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
 
sys_abort_shutdown(0);
 
return NULL;
 
}
/demos/trunk/pci6025e/test_mes.c
40,9 → 40,10
 
 
#include <kernel/kern.h>
#include <drivers/keyb.h>
#include <drivers/glib.h>
 
#include <drivers/shark_keyb26.h>
#include <drivers/shark_fb26.h>
 
#include <drivers/pci6025e/timer.h>
#include <drivers/pci6025e/dio_ppi.h>
 
68,38 → 69,35
int main(int argc, char **argv)
{
KEY_EVT k;
int modenum;
SOFT_TASK_MODEL show_model;
HARD_TASK_MODEL gating;
 
sys_atrunlevel(closeEvent, NULL, RUNLEVEL_BEFORE_EXIT);
 
k.flag = CNTL_BIT;
k.scan = KEY_X;
k.ascii = 'x';
keyb_hook(k, endFun);
k.status = KEY_PRESSED;
keyb_hook(k, endFun, FALSE);
 
k.flag = CNTR_BIT;
keyb_hook(k, endFun);
k.status = KEY_PRESSED;
keyb_hook(k, endFun, FALSE);
 
k.flag = 0;
k.scan = KEY_G;
k.ascii = 'g';
keyb_hook(k, gateEvent);
k.status = KEY_PRESSED;
keyb_hook(k, gateEvent, FALSE);
 
k.scan = KEY_H;
k.ascii = 'h';
keyb_hook(k, gateEvent);
k.status = KEY_PRESSED;
keyb_hook(k, gateEvent, FALSE);
 
k.scan = KEY_S;
k.ascii = 's';
keyb_hook(k, gateEvent);
k.status = KEY_PRESSED;
keyb_hook(k, gateEvent, FALSE);
 
if(pci_init()==-1){
sys = 10;
sys_end();
}
 
if(!reMap()){
sys = 11;
sys_end();
106,7 → 104,7
}
 
soft_task_default_model(show_model);
soft_task_def_level(show_model, 1);
soft_task_def_level(show_model, 2);
soft_task_def_met(show_model, TASK_MET);
soft_task_def_wcet(show_model, TASK_WCET);
soft_task_def_aperiodic(show_model);
132,17 → 130,6
sys_end();
}
 
if(grx_init()==-1){
sys = 30;
sys_end();
}
 
if( (modenum = grx_getmode(800, 600, 16)) == 0 ){
sys = 31;
sys_end();
}
 
grx_setmode(modenum);
drawInterface();
//Enable DIO to manage gates
DIO_init();
261,6 → 248,8
 
void endFun(KEY_EVT *k)
{
closeEvent(NULL);
sys_end();
}
 
274,17 → 263,16
void closeEvent(void *arg)
{
TIM_disarm(2);
grx_close();
 
switch(sys){
case 0: cprintf("OK\n"); break;
case 10: cprintf("No PCI bus found\n"); break;
case 11: cprintf("No NATIONAL board found\n"); break;
case 20: cprintf("task <show value> down!!\n"); break;
case 21: cprintf("task <C0 gate manage> down!!!\n"); break;
case 22: cprintf("task <C1 gate manage> down!!!\n"); break;
case 30: cprintf("Cannot init graphic envirorment\n"); break;
case 31: cprintf("graphic mode 800x600x16 not supported\n"); break;
default: cprintf("???????????????\n"); break;
case 0: sys_shutdown_message("OK\n"); break;
case 10: sys_shutdown_message("No PCI bus found\n"); break;
case 11: sys_shutdown_message("No NATIONAL board found\n"); break;
case 20: sys_shutdown_message("task <show value> down!!\n"); break;
case 21: sys_shutdown_message("task <C0 gate manage> down!!!\n"); break;
case 22: sys_shutdown_message("task <C1 gate manage> down!!!\n"); break;
case 30: sys_shutdown_message("Cannot init graphic envirorment\n"); break;
case 31: sys_shutdown_message("graphic mode 800x600x16 not supported\n"); break;
default: sys_shutdown_message("???????????????\n"); break;
}
}
/demos/trunk/pci6025e/test_dac.c
34,8 → 34,11
*
*/
 
#include <drivers/glib.h>
#include <drivers/keyb.h>
#include <kernel/kern.h>
 
#include <drivers/shark_fb26.h>
#include <drivers/shark_keyb26.h>
 
#include <drivers/pci6025e/dac.h>
 
#define TASK_VOLT_PERIOD 150E3
68,36 → 71,37
 
int main(int argc, char **argv)
{
int modenum;
KEY_EVT k;
HARD_TASK_MODEL m, d;
PID pid_m, pid_d;
 
sys_atrunlevel(close_event, NULL, RUNLEVEL_BEFORE_EXIT);
 
keyb_set_map(itaMap);
k.flag = CNTR_BIT;
k.scan = KEY_X;
k.ascii = 'x';
keyb_hook(k, endfun);
k.status = KEY_PRESSED;
keyb_hook(k, endfun, FALSE);
 
k.flag = CNTL_BIT;
keyb_hook(k, endfun);
k.status = KEY_PRESSED;
keyb_hook(k, endfun, FALSE);
 
k.flag = 0;
k.scan = 78;
k.ascii = 43;
keyb_hook(k, inc);
k.status = KEY_PRESSED;
keyb_hook(k, inc, FALSE);
 
k.flag = 0;
k.scan = 74;
k.ascii = 45;
keyb_hook(k, dec);
k.status = KEY_PRESSED;
keyb_hook(k, dec, FALSE);
 
k.flag = 0;
k.scan = KEY_V;
k.ascii = 'v';
keyb_hook(k, change_dac);
k.status = KEY_PRESSED;
keyb_hook(k, change_dac, FALSE);
 
hard_task_default_model(m);
hard_task_def_wcet(m, TASK_VOLT_WCET);
119,29 → 123,12
sys_end();
}
 
//Check if PCI bus is present
if(pci_init()==-1){
sys = 10;
sys_end();
}
//Check if a NI board is on PCI bus
//Check if a NI board is on PCI bus
if(!reMap()){
sys = 11;
sys_end();
}
 
if(grx_init()==-1){
sys = 20;
sys_end();
}
 
modenum = grx_getmode(800, 600, 16);
if(modenum == -1){
sys = 21;
sys_end();
}
grx_setmode(modenum);
 
drawInterface();
 
//Analog output section set up
296,24 → 283,25
 
void close_event(void *arg)
{
grx_close();
switch(sys){
case 0 : cprintf("Regular End\n"); break;
case 1 : cprintf("End fun invoked\n"); break;
case 10: cprintf("Pci bus not found\n"); break;
case 11: cprintf("No National board found\n"); break;
case 20: cprintf("Cannot initialize graphic envirorment\n"); break;
case 21: cprintf("Cannot start envirorment in 800x600x16\n"); break;
case 30: cprintf("Cannot create task <voltage>\n"); break;
case 31: cprintf("Canot create task <DAC Check>\n"); break;
case 40: cprintf("Break on clock end event\n"); break;
default: cprintf("Unkwon exit event\n"); break;
case 0 : sys_shutdown_message("Regular End\n"); break;
case 1 : sys_shutdown_message("End fun invoked\n"); break;
case 10: sys_shutdown_message("Pci bus not found\n"); break;
case 11: sys_shutdown_message("No National board found\n"); break;
case 20: sys_shutdown_message("Cannot initialize graphic envirorment\n"); break;
case 21: sys_shutdown_message("Cannot start envirorment in 800x600x16\n"); break;
case 30: sys_shutdown_message("Cannot create task <voltage>\n"); break;
case 31: sys_shutdown_message("Canot create task <DAC Check>\n"); break;
case 40: sys_shutdown_message("Break on clock end event\n"); break;
default: sys_shutdown_message("Unkwon exit event\n"); break;
}
}
 
void endfun(KEY_EVT *k)
{
sys = 1;
close_event(NULL);
 
sys_end();
}
 
/demos/trunk/pci6025e/test_ec.c
43,9 → 43,10
*/
 
#include <kernel/kern.h>
#include <drivers/keyb.h>
#include <drivers/glib.h>
 
#include <drivers/shark_keyb26.h>
#include <drivers/shark_fb26.h>
 
#include <drivers/pci6025e/timer.h>
#include <drivers/pci6025e/dio_ppi.h>
 
78,7 → 79,7
KEY_EVT k;
SOFT_TASK_MODEL show_per_mod, show_aper_mod;
PID show_per_pid;
int result, modenum;
int result;
DWORD init_val_c0, init_val_c1;
 
if(argc >= 3){
97,19 → 98,19
init_val_c1 = 0x00000000;
}
 
sys_atrunlevel(close_event, NULL, RUNLEVEL_BEFORE_EXIT);
 
k.flag = CNTL_BIT;
k.scan = KEY_X;
k.ascii = 'x';
keyb_hook(k, endfun);
k.status = KEY_PRESSED;
keyb_hook(k, endfun, FALSE);
 
k.flag = CNTR_BIT;
keyb_hook(k, endfun);
k.status = KEY_PRESSED;
keyb_hook(k, endfun, FALSE);
 
soft_task_default_model(show_aper_mod);
soft_task_def_aperiodic(show_aper_mod);
soft_task_def_level(show_aper_mod, 1);
soft_task_def_level(show_aper_mod, 2);
soft_task_def_period(show_aper_mod, 250000);
soft_task_def_met(show_aper_mod, 30000);
soft_task_def_wcet(show_aper_mod, 60000);
121,19 → 122,22
k.flag = 0;
k.scan = KEY_S;
k.ascii = 's';
keyb_hook(k, show_evt);
k.status = KEY_PRESSED;
keyb_hook(k, show_evt, FALSE);
 
k.flag = 0;
k.scan = KEY_G;
k.ascii = 'g';
keyb_hook(k, gate_change);
k.status = KEY_PRESSED;
keyb_hook(k, gate_change, FALSE);
 
k.scan = KEY_H;
k.ascii = 'h';
keyb_hook(k, gate_change);
k.status = KEY_PRESSED;
keyb_hook(k, gate_change, FALSE);
 
soft_task_default_model(show_per_mod);
soft_task_def_level(show_per_mod, 1);
soft_task_def_level(show_per_mod, 2);
soft_task_def_met(show_per_mod, 1000);
soft_task_def_period(show_per_mod, 10000);
if( (show_per_pid = task_create("Show periodic task", show_per, &show_per_mod, NULL)) == NIL){
141,28 → 145,11
sys_end();
}
 
if(pci_init()==-1){
sys = 20;
sys_end();
}
 
if(!reMap()){
sys = 21;
sys_end();
}
 
if(grx_init()==-1){
sys = 30;
sys_end();
}
 
if( (modenum = grx_getmode(800, 600, 16)) == -1){
sys = 31;
sys_end();
}
 
grx_setmode(modenum);
 
drawInterface();
//Init DIO lines used to manage counters gates
314,6 → 301,8
 
void endfun(KEY_EVT *k)
{
close_event(NULL);
 
sys_end();
}
 
348,19 → 337,17
void close_event(void *arg)
{
TIM_disarm(2); //Disable both two counters
grx_close();
handler_remove(INT_NO);
 
 
switch(sys){
case 0: cprintf("OK\n"); break;
case 10: cprintf("Task <show aperiodic> down\n"); break;
case 11: cprintf("Task <show periodic> down\n"); break;
case 20: cprintf("No PCI bus\n"); break;
case 21: cprintf("No National board on PCI bus\n"); break;
case 30: cprintf("No graphic can be initialized\n"); break;
case 31: cprintf("This graphic mode cannot be supported\n"); break;
default: cprintf("???????????\n"); break;
case 0: sys_shutdown_message("OK\n"); break;
case 10: sys_shutdown_message("Task <show aperiodic> down\n"); break;
case 11: sys_shutdown_message("Task <show periodic> down\n"); break;
case 20: sys_shutdown_message("No PCI bus\n"); break;
case 21: sys_shutdown_message("No National board on PCI bus\n"); break;
case 30: sys_shutdown_message("No graphic can be initialized\n"); break;
case 31: sys_shutdown_message("This graphic mode cannot be supported\n"); break;
default: sys_shutdown_message("???????????\n"); break;
}
}
 
/demos/trunk/pci6025e/test_ppi.c
37,8 → 37,9
 
 
 
#include <drivers/keyb.h>
#include <drivers/glib.h>
#include <drivers/shark_keyb26.h>
#include <drivers/shark_fb26.h>
 
#include <drivers/pci6025e/dio_ppi.h>
 
void exit_fun(KEY_EVT *);
53,19 → 54,17
HARD_TASK_MODEL m;
KEY_EVT k;
PID pid_m;
int modenum;
 
sys_atrunlevel(close_event, NULL, RUNLEVEL_BEFORE_EXIT);
 
keyb_set_map(itaMap);
k.flag = CNTL_BIT;
k.scan = KEY_C;
k.ascii = 'c';
keyb_hook(k, exit_fun);
k.status = KEY_PRESSED;
keyb_hook(k, exit_fun, FALSE);
k.flag = CNTR_BIT;
k.scan = KEY_C;
k.ascii = 'c';
keyb_hook(k, exit_fun);
k.status = KEY_PRESSED;
keyb_hook(k, exit_fun, FALSE);
 
hard_task_default_model(m);
hard_task_def_wcet(m, 90000);
76,29 → 75,15
sys_end();
}
 
//Check if PCI bus is present
if(pci_init() == -1){
system = 20;
sys_end();
}
//Look for a National board on PCI bus
//Look for a National board on PCI bus
if(!reMap()){
system = 21;
sys_end();
}
 
//Start configuring DIO module
//Start configuring DIO module
PPI_init();
 
grx_init();
modenum = grx_getmode(640, 480, 16);
if(modenum == -1){
system = 30;
sys_end();
}
grx_setmode(modenum);
 
draw_screen();
 
task_activate(pid_m);
170,14 → 155,13
 
void close_event(void *arg)
{
grx_close();
switch(system){
case 0: kern_printf("Regular end\n"); break;
case 10:kern_printf("Cannot create task 'TEST PPI'\n"); break;
case 20:kern_printf("Pci bus don't find\n"); break;
case 21:kern_printf("No National board on PC\n"); break;
case 30:kern_printf("Cannot start graphic envirorment\n"); break;
default: kern_printf("Unknown exit\n"); break;
case 0: sys_shutdown_message("Regular end\n"); break;
case 10:sys_shutdown_message("Cannot create task 'TEST PPI'\n"); break;
case 20:sys_shutdown_message("Pci bus don't find\n"); break;
case 21:sys_shutdown_message("No National board on PC\n"); break;
case 30:sys_shutdown_message("Cannot start graphic envirorment\n"); break;
default: sys_shutdown_message("Unknown exit\n"); break;
}
}
 
184,6 → 168,9
void exit_fun(KEY_EVT *k)
{
system = 0;
close_event(NULL);
 
sys_end();
}
 
/demos/trunk/pci6025e/test_bec.c
41,9 → 41,10
*/
 
#include <kernel/kern.h>
#include <drivers/keyb.h>
#include <drivers/glib.h>
 
#include <drivers/shark_keyb26.h>
#include <drivers/shark_fb26.h>
 
#include <drivers/pci6025e/timer.h>
#include <drivers/pci6025e/dio_ppi.h>
 
70,7 → 71,7
KEY_EVT k;
SOFT_TASK_MODEL show_per_mod, show_aper_mod;
PID show_per_pid;
int result, modenum;
int result;
DWORD init_val_c0, init_val_c1;
 
if(argc >= 3){
89,19 → 90,19
init_val_c1 = 0x00000000;
}
 
sys_atrunlevel(close_event, NULL, RUNLEVEL_BEFORE_EXIT);
 
k.flag = CNTL_BIT;
k.scan = KEY_X;
k.ascii = 'x';
keyb_hook(k, endfun);
k.status = KEY_PRESSED;
keyb_hook(k, endfun, FALSE);
 
k.flag = CNTR_BIT;
keyb_hook(k, endfun);
k.status = KEY_PRESSED;
keyb_hook(k, endfun, FALSE);
 
soft_task_default_model(show_aper_mod);
soft_task_def_aperiodic(show_aper_mod);
soft_task_def_level(show_aper_mod, 1);
soft_task_def_level(show_aper_mod, 2);
soft_task_def_period(show_aper_mod, 250000);
soft_task_def_met(show_aper_mod, 30000);
soft_task_def_wcet(show_aper_mod, 60000);
113,19 → 114,22
k.flag = 0;
k.scan = KEY_S;
k.ascii = 's';
keyb_hook(k, show_evt);
k.status = KEY_PRESSED;
keyb_hook(k, show_evt, FALSE);
 
k.flag = 0;
k.scan = KEY_G;
k.ascii = 'g';
keyb_hook(k, gate_change);
k.status = KEY_PRESSED;
keyb_hook(k, gate_change, FALSE);
 
k.scan = KEY_H;
k.ascii = 'h';
keyb_hook(k, gate_change);
k.status = KEY_PRESSED;
keyb_hook(k, gate_change, FALSE);
 
soft_task_default_model(show_per_mod);
soft_task_def_level(show_per_mod, 1);
soft_task_def_level(show_per_mod, 2);
soft_task_def_met(show_per_mod, 1000);
soft_task_def_period(show_per_mod, 10000);
if( (show_per_pid = task_create("Show periodic task", show_per, &show_per_mod, NULL)) == NIL){
133,28 → 137,11
sys_end();
}
 
if(pci_init()==-1){
sys = 20;
sys_end();
}
 
if(!reMap()){
sys = 21;
sys_end();
}
 
if(grx_init()==-1){
sys = 30;
sys_end();
}
 
if( (modenum = grx_getmode(800, 600, 16)) == -1){
sys = 31;
sys_end();
}
 
grx_setmode(modenum);
 
drawInterface();
 
DIO_init();
286,6 → 273,8
 
void endfun(KEY_EVT *k)
{
close_event(NULL);
 
sys_end();
}
 
320,17 → 309,16
void close_event(void *arg)
{
TIM_disarm(2); //Disable both two counters
grx_close();
 
switch(sys){
case 0: cprintf("OK\n"); break;
case 10: cprintf("Task <show aperiodic> down\n"); break;
case 11: cprintf("Task <show periodic> down\n"); break;
case 20: cprintf("No PCI bus\n"); break;
case 21: cprintf("No National board on PCI bus\n"); break;
case 30: cprintf("No graphic can be initialized\n"); break;
case 31: cprintf("This graphic mode cannot be supported\n"); break;
default: cprintf("???????????\n"); break;
case 0: sys_shutdown_message("OK\n"); break;
case 10: sys_shutdown_message("Task <show aperiodic> down\n"); break;
case 11: sys_shutdown_message("Task <show periodic> down\n"); break;
case 20: sys_shutdown_message("No PCI bus\n"); break;
case 21: sys_shutdown_message("No National board on PCI bus\n"); break;
case 30: sys_shutdown_message("No graphic can be initialized\n"); break;
case 31: sys_shutdown_message("This graphic mode cannot be supported\n"); break;
default: sys_shutdown_message("???????????\n"); break;
}
}
/* End of file: Test_bec.c */
/demos/trunk/pci6025e/test_dio.c
36,8 → 36,11
*
*/
 
#include <drivers/glib.h>
#include <drivers/keyb.h>
#include <kernel/kern.h>
 
#include <drivers/shark_fb26.h>
#include <drivers/shark_keyb26.h>
 
#include <drivers/pci6025e/dio_ppi.h>
 
BYTE system = 0;
47,25 → 50,22
void exit_fun(KEY_EVT *);
void draw_screen(void);
 
 
int main(int argc, char **argv)
{
HARD_TASK_MODEL m;
KEY_EVT k;
PID pid_m;
int modenum;
 
sys_atrunlevel(close_event, NULL, RUNLEVEL_BEFORE_EXIT);
 
keyb_set_map(itaMap);
k.flag = CNTL_BIT;
k.scan = KEY_C;
k.ascii = 'c';
keyb_hook(k, exit_fun);
k.status = KEY_PRESSED;
keyb_hook(k, exit_fun, FALSE);
k.flag = CNTR_BIT;
k.scan = KEY_C;
k.ascii = 'c';
keyb_hook(k, exit_fun);
k.status = KEY_PRESSED;
keyb_hook(k, exit_fun, FALSE);
 
hard_task_default_model(m);
hard_task_def_wcet(m, 90000);
76,29 → 76,15
sys_end();
}
 
//Check if PCI bus is present
if(pci_init() == -1){
system = 20;
sys_end();
}
 
//Look for a National board on PCI bus
//Look for a National board on PCI bus
if(!reMap()){
system = 21;
sys_end();
}
 
//Start configuring DIO module
//Start configuring DIO module
DIO_init();
 
grx_init();
modenum = grx_getmode(640, 480, 16);
if(modenum == -1){
system = 30;
sys_end();
}
grx_setmode(modenum);
 
draw_screen();
 
task_activate(pid_m);
165,14 → 151,12
 
void close_event(void *arg)
{
grx_close();
switch(system){
case 0: kern_printf("Regular end\n"); break;
case 10:kern_printf("Cannot create task TEST DIO\n"); break;
case 20:kern_printf("Pci bus don't find\n"); break;
case 21:kern_printf("No National board on PC\n"); break;
case 30:kern_printf("Cannot start graphic envirorment\n"); break;
default: kern_printf("Unknown exit\n"); break;
case 0: sys_shutdown_message("Regular end\n"); break;
case 10:sys_shutdown_message("Cannot create task TEST DIO\n"); break;
case 21:sys_shutdown_message("No National board on PC\n"); break;
case 30:sys_shutdown_message("Cannot start graphic envirorment\n"); break;
default: sys_shutdown_message("Unknown exit\n"); break;
}
}
 
179,6 → 163,9
void exit_fun(KEY_EVT *k)
{
system = 0;
close_event(NULL);
 
sys_end();
}
 
/demos/trunk/pci6025e/makefile
14,19 → 14,19
include $(BASE)/config/example.mk
 
test_dac:
make -f $(SUBMAKE) APP=test_dac OTHEROBJS=initfile.o SHARKOPT="__6025E__ __OLDCHAR__ __GRX__"
make -f $(SUBMAKE) APP=test_dac OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
wave:
make -f $(SUBMAKE) APP=wave OTHEROBJS=initfile.o SHARKOPT="__6025E__ __OLDCHAR__ __GRX__"
make -f $(SUBMAKE) APP=wave OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
test_dio:
make -f $(SUBMAKE) APP=test_dio OTHEROBJS=initfile.o SHARKOPT="__6025E__ __OLDCHAR__ __GRX__"
make -f $(SUBMAKE) APP=test_dio OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
test_ppi:
make -f $(SUBMAKE) APP=test_ppi OTHEROBJS=initfile.o SHARKOPT="__6025E__ __OLDCHAR__ __GRX__"
make -f $(SUBMAKE) APP=test_ppi OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
test_ec:
make -f $(SUBMAKE) APP=test_ec OTHEROBJS=initfile.o SHARKOPT="__6025E__ __OLDCHAR__ __GRX__"
make -f $(SUBMAKE) APP=test_ec OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
test_bec:
make -f $(SUBMAKE) APP=test_bec OTHEROBJS=initfile.o SHARKOPT="__6025E__ __OLDCHAR__ __GRX__"
make -f $(SUBMAKE) APP=test_bec OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
test_mes:
make -f $(SUBMAKE) APP=test_mes OTHEROBJS=initfile.o SHARKOPT="__6025E__ __OLDCHAR__ __GRX__"
make -f $(SUBMAKE) APP=test_mes OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
test_bms:
make -f $(SUBMAKE) APP=test_bms OTHEROBJS=initfile.o SHARKOPT="__6025E__ __OLDCHAR__ __GRX__"
make -f $(SUBMAKE) APP=test_bms OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"