Skip to content

Commit

Permalink
v3.00.02 Release
Browse files Browse the repository at this point in the history
  • Loading branch information
tron-forum committed Oct 21, 2020
1 parent c9bd8b2 commit 781b083
Show file tree
Hide file tree
Showing 78 changed files with 4,726 additions and 270 deletions.
29 changes: 12 additions & 17 deletions app_sample/usermain.c → app_sample/app_main.c
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
/*
*----------------------------------------------------------------------
* micro T-Kernel 3.00.00
* micro T-Kernel 3.00.02
*
* Copyright (C) 2006-2019 by Ken Sakamura.
* This software is distributed under the T-License 2.1.
* Copyright (C) 2006-2020 by Ken Sakamura.
* This software is distributed under the T-License 2.2.
*----------------------------------------------------------------------
*
* Released by TRON Forum(http://www.tron.org) at 2019/12/11.
* Released by TRON Forum(http://www.tron.org) at 2020/10/21.
*
*----------------------------------------------------------------------
*/
Expand Down Expand Up @@ -38,48 +38,43 @@
*/
void tsk1(INT stacd, void *exinf)
{
tm_putstring("Start Task-1\n");
tm_putstring((UB*)"Start Task-1\n");

tk_exd_tsk(); /* Exit task */
}

const T_CTSK ctsk1 = {
0, (TA_HLNG | TA_RNG1), &tsk1, 10, 1024, 0
};

/* ---------------------------------------------------------
*
* User Task-2 Definition
*
*/
void tsk2(INT stacd, void *exinf)
{
tm_putstring("Start Task-2\n");
tm_putstring((UB*)"Start Task-2\n");

tk_exd_tsk(); /* Exit Task */
}

const T_CTSK ctsk2 = {
0, (TA_HLNG | TA_RNG1), &tsk2, 11, 1024, 0
};

const T_CTSK ctsk1 = {0, (TA_HLNG | TA_RNG1), &tsk1, 10, 1024, 0};
const T_CTSK ctsk2 = {0, (TA_HLNG | TA_RNG1), &tsk2, 11, 1024, 0};

/* ----------------------------------------------------------
*
* User-Main Definition (Run on initial task)
*
*/

EXPORT INT usermain( void )
{
T_RVER rver;
ID id1, id2;

tm_putstring("Start User-main program.\n");
tm_putstring((UB*)"Start User-main program.\n");

tk_ref_ver(&rver); /* Get the OS Version. */

tm_printf("Make Code: %04x Product ID: %04x\n", rver.maker, rver.prid);
tm_printf("Product Ver. %04x\nProduct Num. %04x %04x %04x %04x\n",
tm_printf((UB*)"Make Code: %04x Product ID: %04x\n", rver.maker, rver.prid);
tm_printf((UB*)"Product Ver. %04x\nProduct Num. %04x %04x %04x %04x\n",
rver.prver, rver.prno[0],rver.prno[1],rver.prno[2],rver.prno[3]);

id1 = tk_cre_tsk(&ctsk1);
Expand Down
16 changes: 11 additions & 5 deletions config/config.h
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
/*
*----------------------------------------------------------------------
* micro T-Kernel 3.00.01
* micro T-Kernel 3.00.02
*
* Copyright (C) 2006-2020 by Ken Sakamura.
* This software is distributed under the T-License 2.2.
*----------------------------------------------------------------------
*
* Released by TRON Forum(http://www.tron.org) at 2020/05/29.
* Released by TRON Forum(http://www.tron.org) at 2020/10/21.
*
*----------------------------------------------------------------------
*/
Expand Down Expand Up @@ -60,7 +60,7 @@
/* Version Number */
#define CNF_VER_MAKER 0
#define CNF_VER_PRID 0
#define CNF_VER_PRVER 1
#define CNF_VER_PRVER 2
#define CNF_VER_PRNO1 0
#define CNF_VER_PRNO2 0
#define CNF_VER_PRNO3 0
Expand All @@ -72,7 +72,7 @@
* micro T-Kernel2.0 API support (Rendezvous)
*/
#define USE_LEGACY_API (1) /* 1: Valid 0: Invalid */
#define CNF_MAX_PORID 4 /* Maximum number of Rendezvous */
#define CNF_MAX_PORID (4) /* Maximum number of Rendezvous */


/*---------------------------------------------------------------------- */
Expand Down Expand Up @@ -121,7 +121,7 @@
* 1: Valid 0: Invalid
*/
#define USE_DBGSPT (1) /* Use mT-Kernel/DS */
#define USE_OBJECT_NAME (1) /* Use DS object name */
#define USE_OBJECT_NAME (0) /* Use DS object name */

#define OBJECT_NAME_LENGTH (8) /* DS Object name length */

Expand All @@ -141,6 +141,12 @@
#define USE_FPU (0) /* Use FPU */
#define USE_DSP (0) /* Use DSP */

/*---------------------------------------------------------------------- */
/* Use Physical timer.
 * 1: Valid 0: Invalid
*/
#define USE_PTMR (1) /* Use Physical timer */

/*
* Use function Definition
*/
Expand Down
259 changes: 259 additions & 0 deletions device/adc/adc.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,259 @@
/*
*----------------------------------------------------------------------
* Device Driver for micro T-Kernel for μT-Kernel 3.0
*
* Copyright (C) 2020 by Ken Sakamura.
* This software is distributed under the T-License 2.2.
*----------------------------------------------------------------------
*
* Released by TRON Forum(http://www.tron.org) at 2020/10/21.
*
*----------------------------------------------------------------------
*/

#include <sys/machine.h>
#include "../config/devconf.h"
#if DEVCNF_DEV_ADC
/*
* adc.c
* A/D converter device driver
*/

#include <tk/tkernel.h>
#include <tstdlib.h>

#include "adc.h"

/*----------------------------------------------------------------------*/
/* Device driver Control block
*/
#if TK_SUPPORT_MEMLIB

LOCAL T_ADC_DCB *dev_adc_cb[DEV_ADC_UNITNM];
#define get_dcb_ptr(unit) (dev_adc_cb[unit])
#define get_dcb_mem(unit,a) (dev_adc_cb[unit]->a)

#else

LOCAL T_ADC_DCB dev_adc_cb[DEV_ADC_UNITNM];
#define get_dcb_ptr(unit) (&dev_adc_cb[unit])
#define get_dcb_mem(unit,a) (dev_adc_cb[unit].a)

#endif /* TK_SUPPORT_MEMLIB */

/*----------------------------------------------------------------------*/
/* Attribute data control
*/
LOCAL ER read_atr(T_ADC_DCB *p_dcb, T_DEVREQ *req)
{
ER err = E_OK;

switch(req->start) {
case TDN_EVENT: /* MBF ID for event notification */
if(req->size >= sizeof(ID)) {
*(ID*)req->buf = p_dcb->evtmbfid;
} else if(req->size != 0) {
err = E_PAR;
break;
}
req->asize = sizeof(ID);
break;
default:
err = E_PAR;
break;
}

return err;
}


LOCAL ER write_atr(T_ADC_DCB *p_dcb, T_DEVREQ *req)
{
ER err = E_OK;

switch(req->start) {
case TDN_EVENT: /* MBF ID for event notification */
if(req->size >= sizeof(ID)) {
p_dcb->evtmbfid = *(ID*)req->buf;
} else if(req->size != 0) {
err = E_PAR;
break;
}
req->asize = sizeof(ID);
break;
default:
err = E_PAR;
break;
}

return err;
}

/*----------------------------------------------------------------------*/
/* Device-specific data control
*/
LOCAL ER read_data(T_ADC_DCB *p_dcb, T_DEVREQ *req)
{
W rtn;
ER err = E_OK;

if(req->size) {
rtn = dev_adc_llctl( p_dcb->unit, LLD_ADC_READ, req->start, req->size, req->buf);
if(rtn > 0) {
req->asize = rtn;
} else {
err = (ER)rtn;
}
} else {
req->asize = dev_adc_llctl( p_dcb->unit, LLD_ADC_RSIZE, req->start, 0, 0);
}

return err;
}


/*----------------------------------------------------------------------
* mSDI I/F function
*/
/*----------------------------------------------------------------------
* Open device
*/
ER dev_adc_openfn( ID devid, UINT omode, T_MSDI *msdi)
{
T_ADC_DCB *p_dcb;
ER err;

p_dcb = (T_ADC_DCB*)(msdi->dmsdi.exinf);

/* Device Open operation */
p_dcb->omode = omode;
err = (ER)dev_adc_llctl( p_dcb->unit, LLD_ADC_OPEN, 0, 0, 0);

return err;
}

/*----------------------------------------------------------------------
* Close Device
*/
ER dev_adc_closefn( ID devid, UINT option, T_MSDI *msdi)
{
T_ADC_DCB *p_dcb;
ER err;

p_dcb = (T_ADC_DCB*)(msdi->dmsdi.exinf);

/* Device Close operation */
err =(ER)dev_adc_llctl( p_dcb->unit, LLD_ADC_CLOSE, 0, 0, 0);

return err;
}

/*----------------------------------------------------------------------
* Read Device
*/
ER dev_adc_readfn( T_DEVREQ *req, T_MSDI *p_msdi)
{
T_ADC_DCB *p_dcb;
ER err;

p_dcb = (T_ADC_DCB*)(p_msdi->dmsdi.exinf);

if(req->start >= 0) { // Device specific data
if( p_dcb->omode & TD_READ ) {
err = read_data( p_dcb, req);
} else {
err = E_OACV;
}
} else { // Device attribute data
err = read_atr( p_dcb, req);
}

return err;
}

/*----------------------------------------------------------------------
* Write Device
*/
ER dev_adc_writefn( T_DEVREQ *req, T_MSDI *p_msdi)
{
T_ADC_DCB *p_dcb;
ER err;

p_dcb = (T_ADC_DCB*)(p_msdi->dmsdi.exinf);

if(req->start >= 0) { // Device specific data
err = E_PAR;
} else { // Device attribute data
err = write_atr( p_dcb, req);
}

return err;
}

/*----------------------------------------------------------------------
* Event Device
*/
ER dev_adc_eventfn( INT evttyp, void *evtinf, T_MSDI *msdi)
{
return E_NOSPT;
}

/*----------------------------------------------------------------------
* Serial communication Device initialization and registration
*/
EXPORT ER dev_init_adc( UW unit )
{
T_ADC_DCB *p_dcb;
T_IDEV idev;
T_MSDI *p_msdi;
T_DMSDI dmsdi;
ER err;
INT i;

if( unit >= DEV_ADC_UNITNM) return E_PAR;

#if TK_SUPPORT_MEMLIB
p_dcb = (T_ADC_DCB*)Kmalloc(sizeof(T_ADC_DCB));
if( p_dcb == NULL) return E_NOMEM;
dev_adc_cb[unit] = p_dcb;
#else
p_dcb = &dev_adc_cb[unit];
#endif /* TK_SUPPORT_MEMLIB */

/* Device registration information */
dmsdi.exinf = p_dcb;
dmsdi.drvatr = 0; /* Driver attributes */
dmsdi.devatr = TDK_UNDEF; /* Device attributes */
dmsdi.nsub = 0; /* Number of subunits */
dmsdi.blksz = 1; /* Unique data block size (-1 = unknown) */
dmsdi.openfn = dev_adc_openfn;
dmsdi.closefn = dev_adc_closefn;
dmsdi.readfn = dev_adc_readfn;
dmsdi.writefn = dev_adc_writefn;
dmsdi.eventfn = dev_adc_eventfn;

knl_strcpy( (char*)dmsdi.devnm, DEVCNF_ADC_DEVNAME);
i = knl_strlen(DEVCNF_ADC_DEVNAME);
dmsdi.devnm[i] = (UB)('a' + unit);
dmsdi.devnm[i+1] = 0;

err = msdi_def_dev( &dmsdi, &idev, &p_msdi);
if(err != E_OK) goto err_2;

p_dcb->unit = unit;
p_dcb->evtmbfid = idev.evtmbfid;

/* Low-level device initialization */
err = (ER)dev_adc_llinit( get_dcb_ptr(unit));
if(err != E_OK) goto err_1;

return E_OK;

err_1:
msdi_del_dev(p_msdi);
err_2:
Kfree(p_dcb);
return err;
}

#endif /* DEVCNF_DEV_ADC */
Loading

0 comments on commit 781b083

Please sign in to comment.