]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Again, changes to generator macro. GEN_RESOURCE, GEN_ETASK, GEN_BTASK have changed
authormahi <devnull@localhost>
Sun, 7 Mar 2010 10:05:07 +0000 (11:05 +0100)
committermahi <devnull@localhost>
Sun, 7 Mar 2010 10:05:07 +0000 (11:05 +0100)
12 files changed:
examples/simple/config/Os_Cfg.c
examples/tiny/config/Os_Cfg.c
include/Os.h
include/os_config_macros.h
system/kernel/include/alarm_i.h
system/kernel/include/kernel.h
system/kernel/init.c
system/kernel/resource.c
system/kernel/testsystem/config/Os_Cfg.c
tools/t32/config.cmm
tools/t32/load.cmm
tools/t32/start.cmm

index c0ae401cfdb2807461792827a06ec9dc5868d0ef..ea0a9c9d0c4fdca220b198fbb3ca97479a9da9f5 100644 (file)
@@ -29,26 +29,13 @@ OsTickType OsTickFreq = 1000;
 \r
 // atleast 1\r
 #define SERVICE_CNT 1\r
-
-
-#if ( OS_SC3 == STD_ON) || (  OS_SC4==STD_ON)\r
-GEN_TRUSTEDFUNCTIONS_LIST\r
-\r
-//--- APPLICATIONS ----\r
-\r
-GEN_APPLICATION_HEAD {\r
-\r
-       GEN_APPLICATON( 0,\r
-                                       "application_1",\r
-                                       true,\r
-                                       NULL,NULL,NULL , 0,0,0,0,0,0 )\r
-};\r
-#endif
 \r
 // --- RESOURCES ---\r
 \r
 GEN_RESOURCE_HEAD {\r
-       GEN_RESOURCE(RES_SCHEDULER,RESOURCE_TYPE_STANDARD,0,0,0),               // Standard resource..\r
+       GEN_RESOURCE(   RES_SCHEDULER,
+                                       RESOURCE_TYPE_STANDARD, /* standard, linked, internal */
+                                       0)                      /* ceiling priority */
 };\r
 \r
 //--- TASKS ----\r
@@ -60,33 +47,33 @@ DECLARE_STACK(btask_3,PRIO_STACK_SIZE);
 \r
 GEN_TASK_HEAD {\r
        GEN_ETASK(      OsIdle,\r
-                               0,\r
-                               true/*auto*/,\r
-                               NULL/*tm*/,\r
-                               APPLICATION_ID_application_1/*app*/,\r
-                               NULL/*rsrc*/),\r
+                               0,
+                               FULL,   /* scheduling */
+                               true,   /* autostart */
+                               NULL,   /* internal resource */
+                               0       /* rsrc mask */),\r
 \r
        GEN_ETASK(      etask_1,\r
                                1,\r
-                               true/*auto*/,\r
-                               NULL/*tm*/,\r
-                               APPLICATION_ID_application_1/*app*/,\r
-                               NULL/*rsrc*/),\r
+                               FULL,   /* scheduling */
+                               true,   /* autostart */
+                               NULL,   /* internal resource */
+                               0       /* rsrc mask */),
 \r
        GEN_ETASK(      etask_2,\r
                                2,\r
-                               true/*auto*/,\r
-                               NULL/*tm*/,\r
-                               APPLICATION_ID_application_1/*app*/,\r
-                               NULL/*rsrc*/),\r
-\r
+                               FULL,   /* scheduling */
+                               true,   /* autostart */
+                               NULL,   /* internal resource */
+                               0       /* rsrc mask */),
 \r
        GEN_BTASK(      btask_3,\r
                                3,\r
-                               false/*auto*/,\r
-                               NULL/*tm*/,\r
-                               APPLICATION_ID_application_1/*app*/,\r
-                               NULL/*rsrc*/),\r
+                               FULL,   /* scheduling */
+                               false,   /* autostart */
+                               NULL,   /* internal resource */
+                               0,      /* rsrc mask */
+                               1       /* activation limit */),
 };\r
 \r
 GEN_PCB_LIST()\r
index dfce64b502bc030ab842d28a4a467647a9e7f259..b56651955549e5fcc1b04abf3987d6a7e86ec550 100644 (file)
@@ -36,7 +36,7 @@ OsTickType OsTickFreq = 1000;
 // --- RESOURCES ---\r
 \r
 GEN_RESOURCE_HEAD {\r
-       GEN_RESOURCE(RES_SCHEDULER,RESOURCE_TYPE_STANDARD,0,0,0),               // Standard resource..\r
+       GEN_RESOURCE(RES_SCHEDULER,RESOURCE_TYPE_STANDARD,0),           // Standard resource..\r
 };\r
 \r
 //--- TASKS ----\r
@@ -47,34 +47,34 @@ DECLARE_STACK(etask_2,PRIO_STACK_SIZE);
 DECLARE_STACK(btask_3,PRIO_STACK_SIZE);\r
 \r
 GEN_TASK_HEAD {\r
-       GEN_ETASK(      OsIdle,\r
-                               0,\r
-                               true/*auto*/,\r
-                               NULL/*tm*/,\r
-                               APPLICATION_ID_application_1/*app*/,\r
-                               NULL/*rsrc*/),\r
-\r
-       GEN_ETASK(      etask_1,\r
-                               1,\r
-                               true/*auto*/,\r
-                               NULL/*tm*/,\r
-                               APPLICATION_ID_application_1/*app*/,\r
-                               NULL/*rsrc*/),\r
-\r
-       GEN_ETASK(      etask_2,\r
-                               2,\r
-                               true/*auto*/,\r
-                               NULL/*tm*/,\r
-                               APPLICATION_ID_application_1/*app*/,\r
-                               NULL/*rsrc*/),\r
-\r
-\r
-       GEN_BTASK(      btask_3,\r
-                               3,\r
-                               false/*auto*/,\r
-                               NULL/*tm*/,\r
-                               APPLICATION_ID_application_1/*app*/,\r
-                               NULL/*rsrc*/),\r
+       GEN_ETASK(      OsIdle,
+                               0,
+                               FULL,   /* scheduling */
+                               true,   /* autostart */
+                               NULL,   /* internal resource */
+                               0       /* rsrc mask */),
+
+       GEN_ETASK(      etask_1,
+                               1,
+                               FULL,   /* scheduling */
+                               true,   /* autostart */
+                               NULL,   /* internal resource */
+                               0       /* rsrc mask */),
+
+       GEN_ETASK(      etask_2,
+                               2,
+                               FULL,   /* scheduling */
+                               true,   /* autostart */
+                               NULL,   /* internal resource */
+                               0       /* rsrc mask */),
+
+       GEN_BTASK(      btask_3,
+                               3,
+                               FULL,   /* scheduling */
+                               false,   /* autostart */
+                               NULL,   /* internal resource */
+                               0,      /* rsrc mask */
+                               1       /* activation limit */),
 };\r
 \r
 GEN_PCB_LIST()\r
index 4bcadec63d3727df742eae52ab25afe70098ae9f..1c484a5222325a89614b503402b31447a9879cb2 100644 (file)
@@ -215,12 +215,6 @@ static inline void ResumeOSInterrupts( void ) {
                Irq_ResumeOs();
        }
 }
-
-#if 0
-/* Can't find these anymore, removed from Autosar? */\r
-StatusType EnableInterruptSource( ISRType EnableISR );\r
-StatusType DisableInterruptSource( ISRType EnableISR );\r
-#endif
 \r
 /*
  * Class 2,3 and 4 API
index b3e9507da6abc5c28d815b45a22c0494052766fe..7d627ce95c1e6ef167dd2ed0b1cd20c833f7b090 100644 (file)
 
 
 
-#if !(  OS_CFG_API_VERSION)
-\r
-#define GEN_ETASK( _id, _priority,     _autostart, _timing_protection, _application_id, _resource_int_p ) \\r
-{                                                                      \\r
-       .pid = TASK_ID_##_id,           \\r
-       .name = #_id,                                   \\r
-       .entry = _id,                           \\r
-       .prio = _priority,                              \\r
-       .proc_type = PROC_EXTENDED,             \\r
-       .stack.size = sizeof stack_##_id,       \\r
-       .stack.top = stack_##_id,               \\r
-       .autostart = _autostart,                \\r
-       .timing_protection = _timing_protection,\\r
-       .application_id = _application_id,              \\r
-       .resource_int_p = _resource_int_p, \
-       .scheduling = FULL, \
-       .resourceAccess = -1UL \\r
-}\r
-\r
-#define GEN_BTASK( _id, _priority,     _autostart, _timing_protection, _application_id, _resource_int_p ) \\r
-{                                                                      \\r
-       .pid = TASK_ID_##_id,           \\r
-       .name = #_id,                                   \\r
-       .entry = _id,                           \\r
-       .prio = _priority,                              \\r
-       .proc_type = PROC_BASIC,                \\r
-       .stack.size = sizeof stack_##_id,       \\r
-       .stack.top = stack_##_id,               \\r
-       .autostart = _autostart,                \\r
-       .timing_protection = _timing_protection,\\r
-       .application_id = _application_id,              \\r
-       .resource_int_p = _resource_int_p, \
-       .scheduling = FULL, \
-       .resourceAccess = -1UL \\r
-}
-#else
-
-#define GEN_ETASK( _id, _priority, _autostart, _timing_protection, _application_id, \
-                   _resource_int_p, _scheduling, _resource_mask ) \
+/**
+ * _id
+ * _priority           The task priority
+ * _autostart          true/false
+ * _resource_int_p  Pointer to internal resource.
+ *                  NULL - if no internal resource or scheduling==NON
+ *                  Pointer to
+ * _scheduling      FULL or NON
+ * _resource_mask   Mask of the resources used. Applies to STANDARD and LINKED (NOT INTERNAL)
+ *                  For example if this task would use resource with id 2 and 4 the mask would
+ *                  become (1<<2)|(1<<4) = 0x14 (limits resources to 32).
+ *                  Currently used for calculating the ceiling priority.
+ */
+#define GEN_ETASK( _id, _priority, _scheduling, _autostart, _resource_int_p,  _resource_mask ) \
 {                                                                      \
        .pid = TASK_ID_##_id,           \
        .name = #_id,                                   \
        .stack.size = sizeof stack_##_id,       \
        .stack.top = stack_##_id,               \
        .autostart = _autostart,                \
-       .timing_protection = _timing_protection,\
-       .application_id = _application_id,              \
        .resource_int_p = _resource_int_p, \
        .scheduling = _scheduling, \
        .resourceAccess = _resource_mask, \
        .activationLimit = 1, \
 }
 
-#define GEN_BTASK( _id, _priority, _autostart, _timing_protection, _application_id, \
-                    _resource_int_p, _scheduling, _resource_mask, _activation ) \
+#define GEN_BTASK( _id, _priority, _scheduling, _autostart, _resource_int_p,  _resource_mask, _activation_limit ) \
 {                                                                      \
        .pid = TASK_ID_##_id,           \
        .name = #_id,                                   \
        .stack.size = sizeof stack_##_id,       \
        .stack.top = stack_##_id,               \
        .autostart = _autostart,                \
-       .timing_protection = _timing_protection,\
-       .application_id = _application_id,              \
        .resource_int_p = _resource_int_p, \
        .scheduling = _scheduling, \
        .resourceAccess = _resource_mask, \
-       .activationLimit = _activation, \
+       .activationLimit = _activation_limit, \
 }
-#endif
-\r
-\r
-#define GEN_TASK( _id, _name, _entry, _priority, _process_type, _stack_size, _stack_top, \\r
-                               _autostart, _timing_protection, _application_id, _resource_int_p ) \\r
-{                                                                      \\r
-       .pid = _id,                                             \\r
-       .name = _name,                                  \\r
-       .entry = _entry,                                \\r
-       .prio = _priority,                              \\r
-       .proc_type = _process_type,             \\r
-       .stack.size = _stack_size,              \\r
-       .stack.top = _stack_top,                \\r
-       .autostart = _autostart,                \\r
-       .timing_protection = _timing_protection,\\r
-       .application_id = _application_id,              \\r
-       .resource_int_p = _resource_int_p, \\r
-}\r
 \r
-#define GEN_ISR_2( _id, _name, _entry, _priority, _process_type, _vector,  _timing_protection, _application_id ) \\r
+#define GEN_ISR_2( _id, _name, _entry, _priority,  _vector ) \\r
 {                                                                      \\r
        .pid = _id,                                             \\r
        .name = _name,                                  \\r
        .entry = _entry,                                \\r
        .prio = _priority,                              \\r
-       .proc_type = _process_type,             \\r
+       .proc_type = PROC_ISR2,             \\r
        .vector = _vector,              \\r
-       .timing_protection = _timing_protection,\\r
-       .application_id = _application_id,              \\r
 }\r
 \r
 \r
 //#define GEN_PCB_LIST()       uint8_t pcb_list[PCB_T_SIZE*ARRAY_SIZE(rom_pcb_list)];
 #define GEN_PCB_LIST() OsPcbType pcb_list[ARRAY_SIZE(rom_pcb_list)];
 \r
-#define GEN_RESOURCE_HEAD OsResourceType resource_list[] =\r
-#define GEN_RESOURCE( _id, _type, _ceiling_priority, _application_id, _task_mask) \\r
+#define GEN_RESOURCE_HEAD OsResourceType resource_list[] =
+
+
+/**
+ * _id
+ * _type              RESOURCE_TYPE_STANDARD, RESOURCE_TYPE_LINKED or RESOURCE_TYPE_INTERNAL
+ * _ceiling_priority  The calculated ceiling priority
+ */\r
+#define GEN_RESOURCE( _id, _type, _ceiling_priority ) \\r
 {                                                                                              \\r
        .nr= _id,                                                                       \\r
        .type= _type,                                                           \\r
        .ceiling_priority = _ceiling_priority,          \\r
-       .application_owner_id = _application_id,        \\r
-       .task_mask = _task_mask,                                        \\r
        .owner = (-1),                                                          \\r
 }\r
 
  * _type
  * _alarms_time
  * _cycle_time
- * _app_mode
+ * _app_mode       Mask of the application modes.
  */
 #define GEN_ALARM_AUTOSTART(_id, _type, _alarm_time, _cycle_time, _app_mode ) \
                const OsAlarmAutostartType Os_AlarmAutoStart_ ## _id = \
index 19045ee53fe6dc65c8398a5762f68042f4b5e10b..4cab47a1d7d0df3a700e4e63e185cd6a7ebc80e7 100644 (file)
@@ -114,9 +114,8 @@ typedef struct OsAlarm {
        SLIST_ENTRY(OsAlarm) alarm_list;\r
 
 #if (OS_SC1 == STD_ON)
-#warning Alarm callbacks NOT implemented
        /* TODO: OS242, callback in scalability class 1 only..*/
-       /** @req OS242 */
+       /** Missing req OS242 */
 #endif
 \r
 } OsAlarmType;\r
index abbbfccf3ac40e74bc2119b2383a70e4a5bdac3b..dbe71750b9da420b23510726f788ee006de4dd8e 100644 (file)
@@ -58,21 +58,20 @@ typedef void ( * trusted_func_t)( TrustedFunctionIndexType , TrustedFunctionPara
  * OS_RES_SCHEDULER
  * */
 
+/**
+ * STD container: OsResource
+ * OsResourceProperty:                         1    INTERNAL, LINKED, STANDARD
+ * OsResourceAccessingApplication:  0..*
+ * OsResourceLinkedResourceRef:     0..1
+ */
 \r
 typedef enum {\r
        /* External resource */\r
-       RESOURCE_TYPE_STANDARD,\r
+       RESOURCE_TYPE_STANDARD,//!< RESOURCE_TYPE_STANDARD\r
        /* ?? */\r
-       RESOURCE_TYPE_LINKED,\r
+       RESOURCE_TYPE_LINKED,  //!< RESOURCE_TYPE_LINKED\r
        /* Internal resource */
-       RESOURCE_TYPE_INTERNAL\r
-} OsResourceTypeType;\r
-\r
-typedef struct  {
-\r
-       OsResourceTypeType type;\r
-       /* used only if type is RESOURCE_TYPE_LINKED */\r
-       ResourceType    linked_resource;\r
+       RESOURCE_TYPE_INTERNAL //!< RESOURCE_TYPE_INTERNAL\r
 } OsResourcePropertyType;\r
 \r
 /*-----------------------------------------------------------------*/\r
@@ -86,15 +85,17 @@ typedef struct OsResource {
        uint32 old_task_prio;\r
 \r
        // What application may access this resource. A resource may only be\r
-       // accessed by one application\r
-       uint32 application_owner_id;\r
+       // accessed by one application
+#if ( OS_SC3 == STD_ON ) || ( OS_SC4 == STD_ON )\r
+       uint32 application_owner_id;
+#endif\r
        // What tasks may access this resource. A resource may be be shared\r
        // several tasks.\r
-       uint32 task_mask;\r
+//     uint32 task_mask;\r
        // Owner of the resource...\r
        TaskType owner;\r
 \r
-       OsResourceTypeType type;\r
+       OsResourcePropertyType type;\r
        // used only if type is RESOURCE_TYPE_LINKED\r
        ResourceType    linked_resource;\r
 
index 8e070e30ee5c19051b2300567d33f33ee4e07f90..7bf7fc46d39aa9cd4f55cad21e9ca86caf2b2958 100644 (file)
@@ -93,8 +93,18 @@ static void os_resource_init( void ) {
                rsrc_p->ceiling_priority = topPrio;
        }
 
-       /* Assign an internal resource with prio 32 to the tasks
+
+
+       /* From OSEK:
+        * Non preemptable tasks are the most common usage of the concept
+        * of internal resources; they are tasks with a special internal
+        * resource of highest task priority assigned.
+        * --> Interpret this as we can set the priority to 32.
+        *
+        * Assign an internal resource with prio 32 to the tasks
         * with scheduling=NON
+        *
+        *
         */
        for( int i; i < Oil_GetTaskCnt(); i++) {
                pcb_p = os_get_pcb(i);
index 4b23f5275e57e35e44f22ffda31def60b8f901db..379573c76bef1a88690372d02f332917fbeb61aa 100644 (file)
  *
  */
 
-#define valid_standard_id() (rid->nr < Oil_GetResourceCnt()) //&& !(rid->type == RESOURCE_TYPE_INTERNAL) )
-#define valid_internal_id() (rid->nr < Oil_GetResourceCnt()) //&& (rid->type == RESOURCE_TYPE_INTERNAL) )
+#define valid_standard_id() (rPtr->nr < Oil_GetResourceCnt()) //&& !(rPtr->type == RESOURCE_TYPE_INTERNAL) )
+#define valid_internal_id() (rPtr->nr < Oil_GetResourceCnt()) //&& (rPtr->type == RESOURCE_TYPE_INTERNAL) )
 
 
 static StatusType GetResource_( OsResourceType * );
 StatusType ReleaseResource_( OsResourceType * );
 
 StatusType GetResource( ResourceType ResID ) {
-       OsResourceType *rid = Oil_GetResource(ResID);
-       StatusType rv = GetResource_(rid);
+       OsResourceType *rPtr = Oil_GetResource(ResID);
+       StatusType rv = GetResource_(rPtr);
 
        if (rv != E_OK)
            goto err;
@@ -70,16 +70,10 @@ StatusType GetResource( ResourceType ResID ) {
        OS_STD_END_1(OSServiceId_GetResource,ResID);
 }
 
-#if 0
-StatusType GetResourceInternal( ResourceType ResID ) {
-       return GetResource_(ResID,1);
-}
-#endif
-
-static StatusType GetResource_( OsResourceType * rid ) {
+static StatusType GetResource_( OsResourceType * rPtr ) {
        StatusType rv = E_OK;
 
-       if( rid->nr == RES_SCHEDULER ) {
+       if( rPtr->nr == RES_SCHEDULER ) {
                // Lock the scheduler
                os_sys.scheduler_lock = 1;
        }
@@ -89,22 +83,28 @@ static StatusType GetResource_( OsResourceType * rid ) {
                rv = E_OS_ID;
                goto err;
        }
-       // Check that the resource does not belong to another application or task
-       if(     ( (os_task_nr_to_mask(get_curr_pid()) & rid->task_mask ) == 0 )
+
+       /* @req OSEK
+        * Attempt to get a resource which is already occupied by any task
+     * or ISR, or the statically assigned priority of the calling task or
+     * interrupt routine is higher than the calculated ceiling priority,
+     * E_OS_ACCESS
+        */
+       if( (Os_TaskGetCurrent()->prio > rPtr->ceiling_priority )
 #if ( OS_SC3 == STD_ON ) || ( OS_SC4 == STD_ON )
-               || ( get_curr_application_id() !=  rid->application_owner_id)
+               || ( get_curr_application_id() !=  rPtr->application_owner_id)
 #endif
-               || ( rid->owner != (TaskType)(-1)))
+               || ( rPtr->owner != (TaskType)(-1)))
        {
                rv = E_OS_ACCESS;
                goto err;
        }
 
-       rid->owner = get_curr_pid();
-       rid->old_task_prio = os_pcb_set_prio(Os_TaskGetCurrent() ,rid->ceiling_priority);
+       rPtr->owner = get_curr_pid();
+       rPtr->old_task_prio = os_pcb_set_prio(Os_TaskGetCurrent() ,rPtr->ceiling_priority);
 
-       if( rid->type != RESOURCE_TYPE_INTERNAL ) {
-               TAILQ_INSERT_TAIL(&Os_TaskGetCurrent()->resource_head, rid, listEntry);
+       if( rPtr->type != RESOURCE_TYPE_INTERNAL ) {
+               TAILQ_INSERT_TAIL(&Os_TaskGetCurrent()->resource_head, rPtr, listEntry);
        }
 
        goto ok;
@@ -119,8 +119,8 @@ StatusType ReleaseResource( ResourceType ResID) {
        if( ResID == RES_SCHEDULER ) {
                os_sys.scheduler_lock=0;
        } else {
-           OsResourceType *rid = Oil_GetResource(ResID);
-           rv = ReleaseResource_(rid);
+           OsResourceType *rPtr = Oil_GetResource(ResID);
+           rv = ReleaseResource_(rPtr);
        }
 
        if (rv != E_OK)
@@ -129,15 +129,15 @@ StatusType ReleaseResource( ResourceType ResID) {
        OS_STD_END_1(OSServiceId_ReleaseResource,ResID);
 }
 
-StatusType ReleaseResource_( OsResourceType * rid ) {
+StatusType ReleaseResource_( OsResourceType * rPtr ) {
        if (!valid_standard_id()) {
                return E_OS_ID;
        } else {
 
         // Release it...
-        rid->owner = (TaskType) (-1);
-        TAILQ_REMOVE(&Os_TaskGetCurrent()->resource_head, rid, listEntry);
-        os_pcb_set_prio(Os_TaskGetCurrent(), rid->old_task_prio);
+        rPtr->owner = (TaskType) (-1);
+        TAILQ_REMOVE(&Os_TaskGetCurrent()->resource_head, rPtr, listEntry);
+        os_pcb_set_prio(Os_TaskGetCurrent(), rPtr->old_task_prio);
         return E_OK;
        }
 }
index 4d9d3d131b8ca9debe868e9327a7e63e8bc3ca0c..bd47de9cc24e1ea3b5ddbae99dbe57f2dfa7b348 100644 (file)
@@ -129,15 +129,15 @@ uint8 stack_btask_sup_h[STACK_SIZE_btask_sup_h] SECTION_BSS_SUPER;
 //-------------------------------------------------------------------\r
 \r
 GEN_RESOURCE_HEAD {\r
-       GEN_RESOURCE(RES_SCHEDULER,RESOURCE_TYPE_STANDARD,0,0,0),               // Standard resource..\r
+       GEN_RESOURCE(RES_SCHEDULER,RESOURCE_TYPE_STANDARD,0),           // Standard resource..\r
 // Internal resources\r
-       GEN_RESOURCE(1,RESOURCE_TYPE_INTERNAL,8, APPLICATION_ID_application_1,(1<<TASK_ID_etask_sup_l)),\r
+       GEN_RESOURCE(1,RESOURCE_TYPE_INTERNAL,0),\r
 // external resource\r
-       GEN_RESOURCE(2,RESOURCE_TYPE_STANDARD,3,0,0),
+       GEN_RESOURCE(2,RESOURCE_TYPE_STANDARD,0),
 // external resource
-       GEN_RESOURCE(3,RESOURCE_TYPE_STANDARD,4,0,0),
+       GEN_RESOURCE(3,RESOURCE_TYPE_STANDARD,0),
 // external resource
-       GEN_RESOURCE(4,RESOURCE_TYPE_STANDARD,5,0,0),
+       GEN_RESOURCE(4,RESOURCE_TYPE_STANDARD,0),
 \r
 };\r
 \r
@@ -145,21 +145,21 @@ GEN_RESOURCE_HEAD {
 \r
 GEN_TASK_HEAD {\r
 \r
-       GEN_ETASK(OsIdle,0,true/*auto*/, NULL/*tm*/, APPLICATION_ID_application_1/*app*/,NULL/*rsrc*/, FULL, 0 ),\r
+       GEN_ETASK(OsIdle,      0, FULL, true/*auto*/, NULL/*rsrc*/, 0 ),\r
 \r
 /* extended */\r
-       GEN_ETASK(etask_master,1,true/*auto*/, NULL/*tm*/, APPLICATION_ID_application_1/*app*/,NULL/*rsrc*/, NON, 0),\r
+       GEN_ETASK(etask_master,1,FULL,true/*auto*/, NULL/*rsrc*/, 0 ),\r
 \r
-       GEN_ETASK(etask_sup_l,2,false/*auto*/, NULL/*tm*/, APPLICATION_ID_application_1/*app*/,NULL/*rsrc*/, FULL, 0 ),\r
-       GEN_ETASK(etask_sup_m,3,false/*auto*/, NULL/*tm*/, APPLICATION_ID_application_1/*app*/,NULL/*rsrc*/, FULL, 0 ),\r
-       GEN_ETASK(etask_sup_h,4,false/*auto*/, NULL/*tm*/, APPLICATION_ID_application_1/*app*/,NULL/*rsrc*/, FULL, 0 ),\r
+       GEN_ETASK(etask_sup_l,2,FULL,false/*auto*/, NULL/*rsrc*/, 0 ),\r
+       GEN_ETASK(etask_sup_m,3,FULL,false/*auto*/, NULL/*rsrc*/, 0 ),\r
+       GEN_ETASK(etask_sup_h,4,FULL,false/*auto*/, NULL/*rsrc*/, 0 ),\r
 \r
 /* basic */\r
-       GEN_BTASK(btask_sup_l,2,false/*auto*/, NULL/*tm*/, APPLICATION_ID_application_1/*app*/,NULL/*rsrc*/, FULL, 0, 1 ),\r
-       GEN_BTASK(btask_sup_m,3,false/*auto*/, NULL/*tm*/, APPLICATION_ID_application_1/*app*/,NULL/*rsrc*/, FULL, 0, 1 ),\r
-       GEN_BTASK(btask_sup_h,4,false/*auto*/, NULL/*tm*/, APPLICATION_ID_application_1/*app*/,NULL/*rsrc*/, FULL, 0, 1 ),\r
+       GEN_BTASK(btask_sup_l,2,FULL,false/*auto*/, NULL/*rsrc*/, 0, 1 ),\r
+       GEN_BTASK(btask_sup_m,3,FULL,false/*auto*/, NULL/*rsrc*/, 0, 1 ),\r
+       GEN_BTASK(btask_sup_h,4,FULL,false/*auto*/, NULL/*rsrc*/, 0, 1 ),\r
 \r
-       GEN_ISR_2(  TASK_ID_os_tick, "dec", OsTick, /*prio*/ 11, /*type*/ PROC_ISR2,  INTC_VECTOR_EXCEPTION_DEC , NULL, APPLICATION_ID_application_1),\r
+       GEN_ISR_2(  TASK_ID_os_tick, "dec", OsTick, /*prio*/ 11,  INTC_VECTOR_EXCEPTION_DEC ),\r
 #if 0\r
        // Use the intc_vector tables for now\r
        GEN_ISR_2(  TASK_ID_isr_dec, "dec", my_dec, /*prio*/ 11, /*type*/ PROC_ISR2,  INTC_VECTOR_EXCEPTION_DEC , NULL, APPLICATION_ID_application_1),\r
index 1080e61030432ed64c08984b7074da950fab6e59..8182a6b085c5cb3ab86a1d7f9f3232a8dbabebd3 100644 (file)
@@ -1,21 +1,23 @@
 // File to load and save configuration settings to file\r
 //\r
-// Commands: \r
+// Commands:\r
 // load - load config\r
-// save - save present configuration \r
+// save - save present configuration\r
 // debug - print some useful data\r
 \r
 // global configuration macros\r
 GLOBAL &cfg_project_path_g\r
 GLOBAL &cfg_loadfile_g\r
 GLOBAL &cfg_cpu_g\r
+GLOBAL &cfg_cpu_family_g\r
+\r
 \r
 // Global macros\r
 LOCAL &data_file\r
 LOCAL &user &cpu\r
 &user=os.env("username")\r
 //&cpu=CPU()\r
-//&data_file="~~~\cfg_t32_"+"&user"+"_"+"&cfg_cpu_g"+".txt" \r
+//&data_file="~~~\cfg_t32_"+"&user"+"_"+"&cfg_cpu_g"+".txt"\r
 //&global_file="~~~\cfg_t32"\r
 &data_file="~~~\cfg_t32.txt"\r
 //+"&cfg_cpu_g"+".txt"\r
@@ -29,27 +31,29 @@ enddo
 \r
 rm:\r
     rm &data_file\r
-    RETURN \r
-   \r
+    RETURN\r
+\r
 //--------------------------------------------------------------------\r
 \r
 load:\r
 \r
   print "loading config from &data_file"\r
-      \r
-  if OS.FILE(&data_file) \r
+\r
+  if OS.FILE(&data_file)\r
   (\r
     OPEN #1 &data_file /read\r
-    READ #1 &cfg_project_path_g                \r
-    READ #1 &cfg_loadfile_g    \r
-    READ #1 &cfg_cpu_g \r
+    READ #1 &cfg_project_path_g\r
+    READ #1 &cfg_loadfile_g\r
+    READ #1 &cfg_cpu_g\r
+    READ #1 &cfg_cpu_family_g\r
     CLOSE #1\r
-  ) \r
-  ELSE \r
+  )\r
+  ELSE\r
   (\r
     &cfg_project_path_g=""\r
     &cfg_loadfile_g=""\r
     &cfg_cpu_g=""\r
+    &cfg_cpu_family_g=""\r
   )\r
   RETURN\r
 \r
@@ -60,9 +64,10 @@ load:
 save:\r
   print "Saving config to &data_file"\r
   OPEN #1 &data_file /create\r
-  WRITE #1 "&cfg_project_path_g" \r
+  WRITE #1 "&cfg_project_path_g"\r
   WRITE #1 "&cfg_loadfile_g"\r
   WRITE #1 "&cfg_cpu_g"\r
+  WRITE #1 "&cfg_cpu_family_g"\r
   CLOSE #1\r
   RETURN\r
 \r
@@ -73,6 +78,7 @@ debug:
   print "       project_path: &cfg_project_path_g"\r
   print "       load file:    &cfg_loadfile_g"\r
   print "       cpu:          &cfg_cpu_g"\r
+  print "       cpu_fam:      &cfg_cpu_family_g"\r
   RETURN\r
 \r
 \r
@@ -80,7 +86,7 @@ debug:
 \r
 dialog_cpu:\r
   dialog\r
-(&          \r
+(&\r
         HEADER "Select cpu"\r
         POS 0. 0. 14.\r
              BUTTON "mpc5516" "jumpto mpc5516"\r
@@ -119,7 +125,7 @@ dialog_project:
         pos 1. 1. 14.\r
         text "CPU:"\r
         pos 1. 2. 10.\r
-CPU:   PULLDOWN "mpc5516,mpc5554,mpc5633M,CortexM3"\r
+CPU:   PULLDOWN "mpc5516,mpc5554,mpc5633M,CortexM3,HC12DG128A"\r
         (\r
         )\r
         HEADER "Project config"\r
@@ -129,9 +135,9 @@ CPU:   PULLDOWN "mpc5516,mpc5554,mpc5633M,CortexM3"
 P_PATH: EDIT "&cfg_project_path_g" ""\r
         pos 51. 4. 3.\r
         BUTTON "..."\r
-        (  \r
+        (\r
            Dialog.Setdir P_PATH "&cfg_project_path_g/*"\r
-        )         \r
+        )\r
         pos 35. 6. 10.\r
         DEFBUTTON "Set" "jumpto save_close"\r
         pos 45. 6. 10.\r
@@ -147,12 +153,12 @@ save_close:
 win_close:\r
   dialog.end\r
 \r
-// \r
+//\r
 \r
   enddo\r
 \r
 \r
-  \r
+\r
 \r
 \r
 \r
index 29f6e57f83ff2c29ac5306b664498844946c3694..af3a36ef6403338f2ef8227016621550dd82fdd0 100644 (file)
@@ -1,7 +1,17 @@
 \r
 LOCAL &cmd &arg1 &arg2\r
 ENTRY &cmd &arg1 &arg2\r
-gosub &cmd\r
+\r
+if CPU()=="HC12DG128A"\r
+(\r
+  LOCAL &var\r
+  &var="&cmd"+"_"+"&cfg_cpu_g"\r
+  gosub &var\r
+)\r
+ELSE\r
+  gosub &cmd\r
+\r
+\r
 \r
 enddo\r
 \r
@@ -16,28 +26,31 @@ dialog:
   RETURN\r
 \r
 \r
+  enddo\r
+\r
+\r
 //-------------------------------------------------------------\r
 load:\r
   LOCAL &file\r
   dialog.file "&cfg_project_path_g"/*.elf\r
   ENTRY &file\r
-  \r
-  IF OS.FILE(&file) \r
+\r
+  IF OS.FILE(&file)\r
     &cfg_loadfile_g="&file"\r
-    \r
-  do config save   \r
+\r
+  do config save\r
   do flash open\r
-  data.load.elf &cfg_loadfile_g /CYGDRIVE /GNU \r
+  data.load.elf &cfg_loadfile_g /CYGDRIVE /GNU\r
   do flash close\r
   print "&cfg_loadfile_g"\r
 \r
   enddo\r
 \r
-//-------------------------------------------------------------  \r
+//-------------------------------------------------------------\r
 reload:\r
   print "&cfg_loadfile_g"\r
   sys.up\r
-  r.reset  \r
+  r.reset\r
   do flash init\r
   do flash open\r
   data.load.elf &cfg_loadfile_g /GNU /CYGDRIVE\r
@@ -48,6 +61,30 @@ reload:
 \r
   enddo\r
 \r
+//-------------------------------------------------------------\r
+reload_HC12DG128A:\r
+  print "&cfg_loadfile_g"\r
+  sys.up\r
+  r.reset\r
+  do flash init\r
+  do flash open\r
+  y.reset\r
+  map.reset\r
+  mmu.reset\r
+  sys.option MEMEXP ON\r
+  mmu.create 0x388000--0x3883ff a:0x0f0000\r
+;  mmu.trans 0x0f0000--0x0f3fff\r
+  mmu.on\r
+  data.load.elf &cfg_loadfile_g /GNU /CYGDRIVE\r
+//  y.reloc (a:0x388000-0x8000)\r
+// /CYGDRIVE\r
+  do flash close\r
+\r
+  GOSUB postload_&cfg_cpu_g\r
+  enddo\r
+\r
+//-------------------------------------------------------------\r
+\r
 postload_CortexM3:\r
   r.s MSP 0x20005000\r
   RETURN\r
@@ -58,6 +95,9 @@ postload_MPC5554:
 postload_mpc5633M:\r
   RETURN\r
 \r
+postload_HC12DG128A:\r
+  RETURN\r
+\r
 //-------------------------------------------------------------\r
 \r
 path_fast:\r
@@ -80,7 +120,7 @@ path:
 \r
 \r
 \r
-    \r
+\r
 \r
 \r
 \r
index dd6a3a5c223a6577618d46f3ac20d326efed75b2..29c090267d3e31f869eb691a1a822e0bbe21eb41 100644 (file)
@@ -2,28 +2,27 @@ LOCAL &exe_dir &cpu &proj_path
 //ENTRY &cpu\r
 \r
 //do ~~/t32.cmm\r
-winclear \r
+winclear\r
 &proj_path=os.pwd()\r
 do t32.cmm\r
 \r
-print "Current project path:" "&proj_path"  \r
+print "Current project path:" "&proj_path"\r
 \r
 do config load\r
-//do config debug \r
+//do config debug\r
 \r
-\r
-IF "&cfg_cpu_g"==""\r
+IF ("&cfg_cpu_g"=="")||(CPUFAMILY()!="&cfg_cpu_family_g")\r
 (\r
   do config dialog_project\r
 )\r
 \r
 IF "&cfg_project_path_g"==""\r
 (\r
-  &cfg_project_path_g="&proj_path"  \r
+  &cfg_project_path_g="&proj_path"\r
   do config dialog_project\r
 )\r
 \r
-//do config debug \r
+//do config debug\r
 \r
 &cpu="&cfg_cpu_g"\r
 \r
@@ -44,26 +43,26 @@ cd &exe_dir
 \r
 sys.cpu &cpu\r
 \r
-IF SIMULATOR() \r
+IF SIMULATOR()\r
 (\r
   IF CPU()!="CortexM3"\r
   (\r
     do sim_mpc55xx\r
   )\r
 )\r
-ELSE \r
+ELSE\r
 (\r
     sys.bdmclock 10000000.\r
 )\r
 \r
 \r
 // Setup flash\r
-SYStem.Up      \r
+SYStem.Up\r
 do flash init\r
-       \r
 \r
-IF !SIMULATOR() \r
-( \r
+\r
+IF !SIMULATOR()\r
+(\r
   break.select program onchip\r
 )\r
 \r