* Add SDK * fork * massaging makefile * Drop git module * Bring in sdk as its broken Far, Far to much crap to fix with regex now * Remove bl706 * rf_para_flash_t is missing defs * Remove crapton of junk * Remove yet more * Poking I2C * Update peripheral_config.h * Update pinmux_config.h * Update preRTOS.cpp * Update main.hpp * Setup template * Verbose boot * I2C ish * Update I2C_Wrapper.cpp * Update main.cpp * Turn off I2C reading for now * Display running * Roughing out scheduling timer0 * Starting ADC setup * Working scheduling of ADC 🎉 * Format adc headers * Update IRQ.cpp * Buttons working * Slow down I2C * Poking IRQ * Larger stack required * Accel on * Trying to chase down why __libc_init_array isnt working yet * Working c++ * Cleanup * Bump stacks * I2C wake part workaround * Cleanup * Working PWM init * qc draft * Hookup PWM * Stable enough ADC * ADC timing faster + timer without HAL * Silence * Remove boot banner * Tuning in ADC * Wake PID after ADC * Remove unused hal * Draft flash settings * Working settings save & restore * Update to prod model * Cleanup * NTC thermistor * Correct adc gain * Rough tip resistance progress * Scratch out resistance awareness of the tip * better adc settings * Tweaking ADC * ADC tweaking * Make adc range scalable * Update Dockerfile * Update configuration.h * Can read same ADC twice in a row * ADC Setup * Update PIDThread.cpp * Lesser adc backoff * Update USBPD.h * Add device ID * Update BSP_Power.h * Update BSP.cpp * DrawHex dynamicLength * Shorter ID padding * Show validation code * tip measurement * Create access for w0w1 * Expose w0 w1 * Enable debug * crc32 * Device validation * wip starting epr * Logic refactor * Safer PWM Init * PD cleanups * Update bl702_pwm.c * Update power.cpp * Update usb-pd * io * EPR decode * Better gui for showing pd specs * Rough handler for capabilities * EPR * Fix > 25V input * Perform pow step after PPS * Update BSP.cpp * Fix timer output * QC3 * Add tip resistance view * Hold PD negotiation until detection is done for tip res * Get Thermal mass * Tip res =0 protection * Update PIDThread.cpp * Update GUIThread.cpp * Rewrite tip resistance measurement * Update GUIThread.cpp * Fix fallback * Far better tip resistance measurement * Fix QC 0.6V D- * Convert the interpolator to int32 * Correct the NTC lookup * Update BSP.cpp * Update Setup.cpp * . Update configuration #defines More backported functions * Update usb-pd * More missed updates * Refactor BSP Magic BSP -> PinecilV2 Pine64 BSP -> Pinecil Update Makefile * Add Pinecilv2 to CI * Pinecil v2 multi-lang Update push.yml * Update HallSensor.md * Update README.md * Fix wrong prestartcheck default * Fix logo mapping * Update Makefile * Remove unused font block * Style * Style * Remove unused timer funcs * More culling TS80P * Revert "More culling TS80P" This reverts commit2078b89be7. * Revert "Remove unused timer funcs" This reverts commit0c693a89cc. * Make VBus check maskable * Remove DMA half transfer * Drop using brightness and invert icons and go back to text Saves flash space * Refactor settings UI drawing descriptions * Shorten setting function names * Store bin file assets * Fix MHP prestart
200 lines
8.0 KiB
C
200 lines
8.0 KiB
C
/*
|
|
* FreeRTOS Kernel V10.3.1
|
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
* this software and associated documentation files (the "Software"), to deal in
|
|
* the Software without restriction, including without limitation the rights to
|
|
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
* subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in all
|
|
* copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*
|
|
* http://www.FreeRTOS.org
|
|
* http://aws.amazon.com/freertos
|
|
*
|
|
* 1 tab == 4 spaces!
|
|
*/
|
|
|
|
/*-----------------------------------------------------------
|
|
* Portable layer API. Each function must be defined for each port.
|
|
*----------------------------------------------------------*/
|
|
|
|
#ifndef PORTABLE_H
|
|
#define PORTABLE_H
|
|
|
|
/* Each FreeRTOS port has a unique portmacro.h header file. Originally a
|
|
pre-processor definition was used to ensure the pre-processor found the correct
|
|
portmacro.h file for the port being used. That scheme was deprecated in favour
|
|
of setting the compiler's include path such that it found the correct
|
|
portmacro.h file - removing the need for the constant and allowing the
|
|
portmacro.h file to be located anywhere in relation to the port being used.
|
|
Purely for reasons of backward compatibility the old method is still valid, but
|
|
to make it clear that new projects should not use it, support for the port
|
|
specific constants has been moved into the deprecated_definitions.h header
|
|
file. */
|
|
|
|
/* If portENTER_CRITICAL is not defined then including deprecated_definitions.h
|
|
did not result in a portmacro.h header file being included - and it should be
|
|
included here. In this case the path to the correct portmacro.h header file
|
|
must be set in the compiler's include path. */
|
|
#ifndef portENTER_CRITICAL
|
|
#include "portmacro.h"
|
|
#endif
|
|
|
|
#if portBYTE_ALIGNMENT == 32
|
|
#define portBYTE_ALIGNMENT_MASK (0x001f)
|
|
#endif
|
|
|
|
#if portBYTE_ALIGNMENT == 16
|
|
#define portBYTE_ALIGNMENT_MASK (0x000f)
|
|
#endif
|
|
|
|
#if portBYTE_ALIGNMENT == 8
|
|
#define portBYTE_ALIGNMENT_MASK (0x0007)
|
|
#endif
|
|
|
|
#if portBYTE_ALIGNMENT == 4
|
|
#define portBYTE_ALIGNMENT_MASK (0x0003)
|
|
#endif
|
|
|
|
#if portBYTE_ALIGNMENT == 2
|
|
#define portBYTE_ALIGNMENT_MASK (0x0001)
|
|
#endif
|
|
|
|
#if portBYTE_ALIGNMENT == 1
|
|
#define portBYTE_ALIGNMENT_MASK (0x0000)
|
|
#endif
|
|
|
|
#ifndef portBYTE_ALIGNMENT_MASK
|
|
#error "Invalid portBYTE_ALIGNMENT definition"
|
|
#endif
|
|
|
|
#ifndef portNUM_CONFIGURABLE_REGIONS
|
|
#define portNUM_CONFIGURABLE_REGIONS 1
|
|
#endif
|
|
|
|
#ifndef portHAS_STACK_OVERFLOW_CHECKING
|
|
#define portHAS_STACK_OVERFLOW_CHECKING 0
|
|
#endif
|
|
|
|
#ifndef portARCH_NAME
|
|
#define portARCH_NAME NULL
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define PRIVILEGED_FUNCTION
|
|
#define PRIVILEGED_DATA
|
|
#define FREERTOS_SYSTEM_CALL
|
|
#define portUSING_MPU_WRAPPERS 0
|
|
// #include "mpu_wrappers.h"
|
|
|
|
/*
|
|
* Setup the stack of a new task so it is ready to be placed under the
|
|
* scheduler control. The registers have to be placed on the stack in
|
|
* the order that the port expects to find them.
|
|
*
|
|
*/
|
|
#if (portUSING_MPU_WRAPPERS == 1)
|
|
#if (portHAS_STACK_OVERFLOW_CHECKING == 1)
|
|
StackType_t *pxPortInitialiseStack(StackType_t *pxTopOfStack, StackType_t *pxEndOfStack, TaskFunction_t pxCode, void *pvParameters, BaseType_t xRunPrivileged) PRIVILEGED_FUNCTION;
|
|
#else
|
|
StackType_t *pxPortInitialiseStack(StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters, BaseType_t xRunPrivileged) PRIVILEGED_FUNCTION;
|
|
#endif
|
|
#else
|
|
#if (portHAS_STACK_OVERFLOW_CHECKING == 1)
|
|
StackType_t *pxPortInitialiseStack(StackType_t *pxTopOfStack, StackType_t *pxEndOfStack, TaskFunction_t pxCode, void *pvParameters) PRIVILEGED_FUNCTION;
|
|
#else
|
|
StackType_t *pxPortInitialiseStack(StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters) PRIVILEGED_FUNCTION;
|
|
#endif
|
|
#endif
|
|
|
|
/* Used by heap_5.c to define the start address and size of each memory region
|
|
that together comprise the total FreeRTOS heap space. */
|
|
typedef struct HeapRegion {
|
|
uint8_t *pucStartAddress;
|
|
size_t xSizeInBytes;
|
|
} HeapRegion_t;
|
|
|
|
/* Used to pass information about the heap out of vPortGetHeapStats(). */
|
|
typedef struct xHeapStats {
|
|
size_t xAvailableHeapSpaceInBytes; /* The total heap size currently available - this is the sum of all the free blocks, not the largest block that can be allocated. */
|
|
size_t xSizeOfLargestFreeBlockInBytes; /* The maximum size, in bytes, of all the free blocks within the heap at the time vPortGetHeapStats() is called. */
|
|
size_t xSizeOfSmallestFreeBlockInBytes; /* The minimum size, in bytes, of all the free blocks within the heap at the time vPortGetHeapStats() is called. */
|
|
size_t xNumberOfFreeBlocks; /* The number of free memory blocks within the heap at the time vPortGetHeapStats() is called. */
|
|
size_t xMinimumEverFreeBytesRemaining; /* The minimum amount of total free memory (sum of all free blocks) there has been in the heap since the system booted. */
|
|
size_t xNumberOfSuccessfulAllocations; /* The number of calls to pvPortMalloc() that have returned a valid memory block. */
|
|
size_t xNumberOfSuccessfulFrees; /* The number of calls to vPortFree() that has successfully freed a block of memory. */
|
|
} HeapStats_t;
|
|
|
|
/*
|
|
* Used to define multiple heap regions for use by heap_5.c. This function
|
|
* must be called before any calls to pvPortMalloc() - not creating a task,
|
|
* queue, semaphore, mutex, software timer, event group, etc. will result in
|
|
* pvPortMalloc being called.
|
|
*
|
|
* pxHeapRegions passes in an array of HeapRegion_t structures - each of which
|
|
* defines a region of memory that can be used as the heap. The array is
|
|
* terminated by a HeapRegions_t structure that has a size of 0. The region
|
|
* with the lowest start address must appear first in the array.
|
|
*/
|
|
void vPortDefineHeapRegions(const HeapRegion_t *const pxHeapRegions) PRIVILEGED_FUNCTION;
|
|
|
|
/*
|
|
* Returns a HeapStats_t structure filled with information about the current
|
|
* heap state.
|
|
*/
|
|
void vPortGetHeapStats(HeapStats_t *pxHeapStats);
|
|
|
|
/*
|
|
* Map to the memory management routines required for the port.
|
|
*/
|
|
void *pvPortMalloc(size_t xSize) PRIVILEGED_FUNCTION;
|
|
void vPortFree(void *pv) PRIVILEGED_FUNCTION;
|
|
void vPortInitialiseBlocks(void) PRIVILEGED_FUNCTION;
|
|
size_t xPortGetFreeHeapSize(void) PRIVILEGED_FUNCTION;
|
|
size_t xPortGetMinimumEverFreeHeapSize(void) PRIVILEGED_FUNCTION;
|
|
|
|
/*
|
|
* Setup the hardware ready for the scheduler to take control. This generally
|
|
* sets up a tick interrupt and sets timers for the correct tick frequency.
|
|
*/
|
|
BaseType_t xPortStartScheduler(void) PRIVILEGED_FUNCTION;
|
|
|
|
/*
|
|
* Undo any hardware/ISR setup that was performed by xPortStartScheduler() so
|
|
* the hardware is left in its original condition after the scheduler stops
|
|
* executing.
|
|
*/
|
|
void vPortEndScheduler(void) PRIVILEGED_FUNCTION;
|
|
|
|
/*
|
|
* The structures and methods of manipulating the MPU are contained within the
|
|
* port layer.
|
|
*
|
|
* Fills the xMPUSettings structure with the memory region information
|
|
* contained in xRegions.
|
|
*/
|
|
#if (portUSING_MPU_WRAPPERS == 1)
|
|
struct xMEMORY_REGION;
|
|
void vPortStoreTaskMPUSettings(xMPU_SETTINGS *xMPUSettings, const struct xMEMORY_REGION *const xRegions, StackType_t *pxBottomOfStack, uint32_t ulStackDepth) PRIVILEGED_FUNCTION;
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* PORTABLE_H */
|