Skip to content

Commit

Permalink
release v4.6.4
Browse files Browse the repository at this point in the history
  • Loading branch information
GorgonMeducer committed Aug 25, 2024
1 parent af90ca8 commit 3b06da8
Show file tree
Hide file tree
Showing 20 changed files with 435 additions and 59 deletions.
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,9 @@ dkms.conf
example/project/mdk/Objects
example/project/mdk/RTE/Compiler/.*
example/project/mdk/RTE/Device/ARMCM3/.*
example/project/mdk/plooc_example.uvguix.*
example/project/mdk/plooc_example.uvguix.*
CI/PLOOC_template_gcc/MDK-ARM/DebugConfig/PLOOC_template_gcc_STM32F103RC_1.0.0.dbgconf
*@*
*.uvguix.*
RTE_Components.h

4 changes: 2 additions & 2 deletions CI/PLOOC_template_gcc/MDK-ARM/PLOOC_template_gcc.uvprojx
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@
<TargetName>PLOOC_template_gcc</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pArmCC>6160000::V6.16::ARMCLANG</pArmCC>
<pCCUsed>6160000::V6.16::ARMCLANG</pCCUsed>
<pCCUsed>6210000::V6.21::.\ArmCompilerforEmbedded6.21</pCCUsed>
<uAC6>1</uAC6>
<TargetOption>
<TargetCommonOption>
Expand Down Expand Up @@ -187,6 +186,7 @@
<RvdsVP>0</RvdsVP>
<RvdsMve>0</RvdsMve>
<RvdsCdeCp>0</RvdsCdeCp>
<nBranchProt>0</nBranchProt>
<hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>8</StupSel>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08000000 0x00040000 { ; load region size_region
ER_IROM1 0x08000000 0x00040000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
}
RW_IRAM1 0x20000000 0x0000C000 { ; RW data
.ANY (+RW +ZI)
}
}

17 changes: 11 additions & 6 deletions GorgonMeducer.PLOOC.pdsc
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,12 @@
<repository type="git">https://github.com/GorgonMeducer/PLOOC.git</repository>

<releases>
<release date="2022-11-02" version="4.6.3" url="https://raw.githubusercontent.com/GorgonMeducer/PLOOC/master/cmsis-pack/GorgonMeducer.PLOOC.4.6.3.pack">
<release date="2024-08-25" version="4.6.4" url="https://github.com/GorgonMeducer/PLOOC/releases/download/v4.6.3/GorgonMeducer.PLOOC.4.6.4.pack">
- Add private_method, protected_method and public_method
- Add plooc_malloc_align and plooc_free
- Other minor changes.
</release>
<release date="2022-11-02" version="4.6.3" url="https://github.com/GorgonMeducer/PLOOC/releases/download/v4.6.3/GorgonMeducer.PLOOC.4.6.3.pack">
- Improve compatibility with the latest C++
- Fix template
</release>
Expand Down Expand Up @@ -88,15 +93,15 @@
-->

<components>
<component Cclass="Language Extension" Cgroup="PLOOC" Cversion="4.6.2">
<component Cclass="Language Extension" Cgroup="PLOOC" Cversion="4.6.4">
<description>A low-overhead OOPC template.</description>
<files>
<file category="header" name="plooc.h"/>
<file category="header" name="plooc_class.h"/>
<file category="header" name="template/class/class_name.h" attr="template" select="Base Class Template"/>
<file category="source" name="template/class/class_name.c" attr="template" select="Base Class Template"/>
<file category="header" name="template/derived_class/class_name.h" attr="template" select="Derived Class Template"/>
<file category="source" name="template/derived_class/class_name.c" attr="template" select="Derived Class Template"/>
<file category="header" name="template/class/class_name.h" attr="template" select="Base Class Template" version="1.1.0"/>
<file category="source" name="template/class/class_name.c" attr="template" select="Base Class Template" version="1.1.0"/>
<file category="header" name="template/derived_class/class_name.h" attr="template" select="Derived Class Template" version="1.1.0"/>
<file category="source" name="template/derived_class/class_name.c" attr="template" select="Derived Class Template" version="1.1.0"/>
</files>
</component>
</components>
Expand Down
19 changes: 15 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# PLOOC (Protected Low-overhead Object-Oriented Programming with ANSI-C) v4.6.3
# PLOOC (Protected Low-overhead Object-Oriented Programming with ANSI-C) v4.6.4

## Introduction

Expand Down Expand Up @@ -81,12 +81,23 @@ If you have any questions or suggestions, please feel free to let us know.

## Update Log
---
- \[11/02/2022\] Fix class template, version 4.6.3
- \[08/25/2024\] Fix class template, version 4.6.4
- Updated Readme

- \[12/05/2022\] Improve compatibility with the latest C++ language, version 4.6.2
- Add `__plooc_malloc_align()` and `__plooc_free`

- Add `private_method()`, `protected_method()` and `public_method()`

- Remove the dependency on the GNU extensions

- Other minor changes.

- \[11/02/2022\] Fix class template, version 4.6.3

- \[12/05/2022\] Improve compatibility with the latest C++ language, version 4.6.2

- \[02/01/2022\] Add helper macros for heap, version 4.6.1
- Add ***\_\_new_class()*** and ***\_\_free_class()*** for using malloc and free together with constructors and destructors, i.e. ***xxxx_init()*** and ***xxxx_depose()***.
- Add `__new_class()` and `__free_class()` for using malloc and free together with constructors and destructors, i.e. ***xxxx_init()*** and ***xxxx_depose()***.
- Update example project
- Add CI to github.

Expand Down
Binary file removed cmsis-pack/GorgonMeducer.PLOOC.4.6.3.pack
Binary file not shown.
Binary file added cmsis-pack/GorgonMeducer.PLOOC.4.6.4.pack
Binary file not shown.
17 changes: 11 additions & 6 deletions cmsis-pack/GorgonMeducer.PLOOC.pdsc
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,12 @@
<repository type="git">https://github.com/GorgonMeducer/PLOOC.git</repository>

<releases>
<release date="2022-11-02" version="4.6.3" url="https://raw.githubusercontent.com/GorgonMeducer/PLOOC/master/cmsis-pack/GorgonMeducer.PLOOC.4.6.3.pack">
<release date="2024-08-25" version="4.6.4" url="https://github.com/GorgonMeducer/PLOOC/releases/download/v4.6.3/GorgonMeducer.PLOOC.4.6.4.pack">
- Add private_method, protected_method and public_method
- Add plooc_malloc_align and plooc_free
- Other minor changes.
</release>
<release date="2022-11-02" version="4.6.3" url="https://github.com/GorgonMeducer/PLOOC/releases/download/v4.6.3/GorgonMeducer.PLOOC.4.6.3.pack">
- Improve compatibility with the latest C++
- Fix template
</release>
Expand Down Expand Up @@ -88,15 +93,15 @@
-->

<components>
<component Cclass="Language Extension" Cgroup="PLOOC" Cversion="4.6.2">
<component Cclass="Language Extension" Cgroup="PLOOC" Cversion="4.6.4">
<description>A low-overhead OOPC template.</description>
<files>
<file category="header" name="plooc.h"/>
<file category="header" name="plooc_class.h"/>
<file category="header" name="template/class/class_name.h" attr="template" select="Base Class Template"/>
<file category="source" name="template/class/class_name.c" attr="template" select="Base Class Template"/>
<file category="header" name="template/derived_class/class_name.h" attr="template" select="Derived Class Template"/>
<file category="source" name="template/derived_class/class_name.c" attr="template" select="Derived Class Template"/>
<file category="header" name="template/class/class_name.h" attr="template" select="Base Class Template" version="1.1.0"/>
<file category="source" name="template/class/class_name.c" attr="template" select="Base Class Template" version="1.1.0"/>
<file category="header" name="template/derived_class/class_name.h" attr="template" select="Derived Class Template" version="1.1.0"/>
<file category="source" name="template/derived_class/class_name.c" attr="template" select="Derived Class Template" version="1.1.0"/>
</files>
</component>
</components>
Expand Down
7 changes: 4 additions & 3 deletions example/byte_queue/byte_queue.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,10 @@ void *byte_queue_target_get(byte_queue_t *ptObj);
extern
void byte_queue_target_set(byte_queue_t *ptObj, void *pTarget);

#if defined(__BYTE_QUEUE_CLASS_IMPLEMENT) || defined(__BYTE_QUEUE_CLASS_INHERIT__)
extern mem_t byte_queue_buffer_get(byte_queue_t *ptObj);
#endif
/* protected methods that only derived class can see */
protected_method(
extern mem_t byte_queue_buffer_get(byte_queue_t *ptObj);
)

/*! \note it is very important to undef those macros */
#undef __BYTE_QUEUE_CLASS_INHERIT
Expand Down
80 changes: 80 additions & 0 deletions example/project/mdk/RTE/Device/ARMCM3/ARMCM3_ac6.sct
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m3 -xc
; command above MUST be in first line (no comment above!)

/*
;-------- <<< Use Configuration Wizard in Context Menu >>> -------------------
*/

/*--------------------- Flash Configuration ----------------------------------
; <h> Flash Configuration
; <o0> Flash Base Address <0x0-0xFFFFFFFF:8>
; <o1> Flash Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
*----------------------------------------------------------------------------*/
#define __ROM_BASE 0x00000000
#define __ROM_SIZE 0x00080000

/*--------------------- Embedded RAM Configuration ---------------------------
; <h> RAM Configuration
; <o0> RAM Base Address <0x0-0xFFFFFFFF:8>
; <o1> RAM Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
*----------------------------------------------------------------------------*/
#define __RAM_BASE 0x20000000
#define __RAM_SIZE 0x00040000

/*--------------------- Stack / Heap Configuration ---------------------------
; <h> Stack / Heap Configuration
; <o0> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; <o1> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
*----------------------------------------------------------------------------*/
#define __STACK_SIZE 0x00000200
#define __HEAP_SIZE 0x00000C00

/*
;------------- <<< end of configuration section >>> ---------------------------
*/


/*----------------------------------------------------------------------------
User Stack & Heap boundary definition
*----------------------------------------------------------------------------*/
#define __STACK_TOP (__RAM_BASE + __RAM_SIZE) /* starts at end of RAM */
#define __HEAP_BASE (AlignExpr(+0, 8)) /* starts after RW_RAM section, 8 byte aligned */


/*----------------------------------------------------------------------------
Scatter File Definitions definition
*----------------------------------------------------------------------------*/
#define __RO_BASE __ROM_BASE
#define __RO_SIZE __ROM_SIZE

#define __RW_BASE __RAM_BASE
#define __RW_SIZE (__RAM_SIZE - __STACK_SIZE - __HEAP_SIZE)


LR_ROM __RO_BASE __RO_SIZE { ; load region size_region
ER_ROM __RO_BASE __RO_SIZE { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
}

RW_NOINIT __RW_BASE UNINIT __RW_SIZE {
*(.bss.noinit)
}

RW_RAM AlignExpr(+0, 8) (__RW_SIZE - AlignExpr(ImageLength(RW_NOINIT), 8)) {
*(+RW +ZI)
}

#if __HEAP_SIZE > 0
ARM_LIB_HEAP __HEAP_BASE EMPTY __HEAP_SIZE { ; Reserve empty region for heap
}
#endif

ARM_LIB_STACK __STACK_TOP EMPTY -__STACK_SIZE { ; Reserve empty region for stack
}
}
150 changes: 150 additions & 0 deletions example/project/mdk/RTE/Device/ARMCM3/startup_ARMCM3.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
/******************************************************************************
* @file startup_ARMCM3.c
* @brief CMSIS-Core(M) Device Startup File for a Cortex-M3 Device
* @version V2.0.3
* @date 31. March 2020
******************************************************************************/
/*
* Copyright (c) 2009-2020 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#if defined (ARMCM3)
#include "ARMCM3.h"
#else
#error device not specified!
#endif

/*----------------------------------------------------------------------------
External References
*----------------------------------------------------------------------------*/
extern uint32_t __INITIAL_SP;

extern __NO_RETURN void __PROGRAM_START(void);

/*----------------------------------------------------------------------------
Internal References
*----------------------------------------------------------------------------*/
__NO_RETURN void Reset_Handler (void);
void Default_Handler(void);

/*----------------------------------------------------------------------------
Exception / Interrupt Handler
*----------------------------------------------------------------------------*/
/* Exceptions */
void NMI_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void HardFault_Handler (void) __attribute__ ((weak));
void MemManage_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void BusFault_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void UsageFault_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void SVC_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void DebugMon_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void PendSV_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void SysTick_Handler (void) __attribute__ ((weak, alias("Default_Handler")));

void Interrupt0_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void Interrupt1_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void Interrupt2_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void Interrupt3_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void Interrupt4_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void Interrupt5_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void Interrupt6_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void Interrupt7_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void Interrupt8_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void Interrupt9_Handler (void) __attribute__ ((weak, alias("Default_Handler")));


/*----------------------------------------------------------------------------
Exception / Interrupt Vector table
*----------------------------------------------------------------------------*/

#if defined ( __GNUC__ )
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
#endif

extern const VECTOR_TABLE_Type __VECTOR_TABLE[240];
const VECTOR_TABLE_Type __VECTOR_TABLE[240] __VECTOR_TABLE_ATTRIBUTE = {
(VECTOR_TABLE_Type)(&__INITIAL_SP), /* Initial Stack Pointer */
Reset_Handler, /* Reset Handler */
NMI_Handler, /* -14 NMI Handler */
HardFault_Handler, /* -13 Hard Fault Handler */
MemManage_Handler, /* -12 MPU Fault Handler */
BusFault_Handler, /* -11 Bus Fault Handler */
UsageFault_Handler, /* -10 Usage Fault Handler */
0, /* Reserved */
0, /* Reserved */
0, /* Reserved */
0, /* Reserved */
SVC_Handler, /* -5 SVC Handler */
DebugMon_Handler, /* -4 Debug Monitor Handler */
0, /* Reserved */
PendSV_Handler, /* -2 PendSV Handler */
SysTick_Handler, /* -1 SysTick Handler */

/* Interrupts */
Interrupt0_Handler, /* 0 Interrupt 0 */
Interrupt1_Handler, /* 1 Interrupt 1 */
Interrupt2_Handler, /* 2 Interrupt 2 */
Interrupt3_Handler, /* 3 Interrupt 3 */
Interrupt4_Handler, /* 4 Interrupt 4 */
Interrupt5_Handler, /* 5 Interrupt 5 */
Interrupt6_Handler, /* 6 Interrupt 6 */
Interrupt7_Handler, /* 7 Interrupt 7 */
Interrupt8_Handler, /* 8 Interrupt 8 */
Interrupt9_Handler /* 9 Interrupt 9 */
/* Interrupts 10 .. 223 are left out */
};

#if defined ( __GNUC__ )
#pragma GCC diagnostic pop
#endif

/*----------------------------------------------------------------------------
Reset Handler called on controller reset
*----------------------------------------------------------------------------*/
__NO_RETURN void Reset_Handler(void)
{
SystemInit(); /* CMSIS System Initialization */
__PROGRAM_START(); /* Enter PreMain (C library entry point) */
}


#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wmissing-noreturn"
#endif

/*----------------------------------------------------------------------------
Hard Fault Handler
*----------------------------------------------------------------------------*/
void HardFault_Handler(void)
{
while(1);
}

/*----------------------------------------------------------------------------
Default Handler for Exceptions / Interrupts
*----------------------------------------------------------------------------*/
void Default_Handler(void)
{
while(1);
}

#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
#pragma clang diagnostic pop
#endif

Loading

0 comments on commit 3b06da8

Please sign in to comment.