ccs
TRANSCRIPT
![Page 1: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/1.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 1
11028 CCSA Comprehension of CCS C
Compiler Advanced Techniques
![Page 2: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/2.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 2
Class Objectives
When you finish this class you will:− Learn about the newest features added to
the CCS C Compiler− Be able to use compiler output to
diagnose problems− Know how to force ROM/RAM placement.− Get an overview of some of CCS’s power
features
![Page 3: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/3.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 3
Agenda
New FeaturesOutput Files and MessagesMemory Control− RAM− ROM− Bootloader ExampleaddressmodRTOS
![Page 4: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/4.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 4
New Features
![Page 5: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/5.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 5
SPI
Configurable SPI library#use spi(parameters)− HW or SW pins− Multiple streams− Clock rate and clock mode
configurablein = spi_xfer(STREAM_SPI, out)
![Page 6: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/6.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 6
Bit Arrays
Array of bits:− int1 flags[30]={FALSE};− flags[i] = TRUE;− if (flags[10]) { /* some code */ }Bits are packedPointers not supported!
![Page 7: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/7.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 7
Fixed Point Decimal
Represent decimal numbers with integers, instead of floats− Faster, Smaller− 100% precisionExample Declaration:[type] _fixed(y) [declarator]int16 _fixed(2) money;
Supported by printf()
![Page 8: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/8.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 8
Fixed Point Decimal Examples
int16 _fixed(2) cash;− Range: 0.00 to 655.35cash = 20.50;cash += 5; //adds 5.00cash += value;printf(“%w”, cash);
![Page 9: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/9.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 9
String ParametersString can be function parameterLCDPuts(“Hello”);Example (RAM):
#device PASS_STRINGS=IN_RAMvoid LCDPuts(char *str);
Example (Const RAM):#device PASS_STRINGS=IN_RAM#device CONST=ROMvoid LCDPuts(const char *str);
Example (ROM):void LCDPuts(rom char *str);
![Page 10: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/10.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 10
#import()Import various files into project.#import(File=name, Type)Type = Relocatable (.o, .cof)− ‘only’ and ‘except’ specifies what C
symbolsType = HEX (.hex)− ‘range’ parameter specifies rangeType = RAW− ‘location’ gets or sets location− ‘size’ parameter gets size
![Page 11: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/11.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 11
Examples / Libraries
Variable number of parameters (…)Borrowed from C++:− Default parameters− Function OverloadingNew examples / libraries:− FAT− XTEA Cipher− Modbus
![Page 12: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/12.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 12
Output Messages and Output Files
![Page 13: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/13.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 13
Output Files
HEX – Compiled ApplicationCOF – Debug ApplicationERR – Compile output messagesLST – C to Assembly comparisonSYM – Memory MapSTA – StatisticsTRE – Call Tree
![Page 14: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/14.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 14
SYM – Memory Map
First section is RAM memory map005-014 main.bufferna main.index‘na’ indicates no RAMFollowing sections include:− Other Input files− ROM memory map− PIC® MCU / Compiler Settings
![Page 15: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/15.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 15
STA Statistics
Review ROM/RAM/Stack usedStatistics for each function:
Page ROM % RAM Functions:---- --- --- --- ----------0 26 0 1 @delay_ms10 284 1 3 ee_reset
![Page 16: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/16.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 16
STA Statistics
Statistics for each segment:Segment Used Free--------- ----- ----00000-00006 4 4 00008-000B2 172 0 000B4-03FFE 15826 378
![Page 17: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/17.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 17
TRE Statistics
Review call tree− Function Name - Segment/ROM – RAM
projectmain 0/84 Ram=0init 0/194 Ram=1
RELAY_INIT 0/16 Ram=0RELAY1_OFF (Inline) Ram=0@delay_ms1 0/26 Ram=1
Segment will be ? if it won’t fit
![Page 18: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/18.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 18
Out of ROMFull output:Out of ROM, A segment or the program is too large: XXXXXXSeg w-x, y left, need zSeg 0-3ff, 12C left, need 12F
Tips:− Be aware of processor segment size
Seg 0-3FF, 3FF left, need 412− Optimize code− Split large functions− Reduce stack space
![Page 19: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/19.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 19
How Can I Reduce Code Space?
Use int1 or bit fields for flagsUse fixed point decimal, not floatDivide large functionsAvoid ->, move structure to localUse access bank mode− #device *=8− read_bank(b,o), write_bank(b,o,v)
![Page 20: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/20.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 20
Out of RAM
Full error message:Not enough RAM for all variablesReview SYM fileTips:− Be aware of PIC® MCU bank size− Use bit flags− Remove unused variables
![Page 21: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/21.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 21
Memory Management
![Page 22: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/22.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 22
#locateForce location of variable#locate ident=X− Assigns the C variable ident to location X− X can be a literal, or variable identifier− If not specified, ident is treated as a byte− Compiler allocates X− Can be any structure or type (not const)
![Page 23: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/23.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 23
#locate examples
Overlaying variable onto SFR:#locate STATUS=5
Repeat, but using get_env():#locate STATUS=get_env(“SFR:STATUS”)
Overlaying two variables:char buffer[512];
struct { /*protocol */} header;#locate header=buffer+2
![Page 24: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/24.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 24
#byte and #bit
#byte ident=X− Same as #locate, but no allocation#bit ident=X.b− Declares boolean at address X, bit b− Examples:
#bit CARRY=STATUS.0#bit CARRY=get_env(“BIT:C”)
![Page 25: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/25.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 25
#rom
Place raw data into program memory#rom address={data….data}Application Ideas:− Place strings into ROM− Initialize the internal data EEPROM− Manually set configuration bits− Manually set ID location
![Page 26: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/26.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 26
#inline and #separate#inline− Makes following function inline#separate− Makes following function separate (called)− Disables stack overflow checkGenerally you should let the optimizer determine if a function should be separate or inline
![Page 27: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/27.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 27
#org
Create segment, force code into segment#org start, end− Place following function/constant in
this segment#org start− Continue previous segment
![Page 28: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/28.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 28
#org ExampleForce following code into 0x100-0x1FF
#org 0x100, 0x1FFvoid func1(void) {/*code*/}
#org 0x100const cstring[]=“Hello”;
#org 0x100void func2(void) {/*code*/}
//Valid Protoype#seperate void func1(void);
![Page 29: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/29.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 29
#org
#org start, end DEFAULT− Forces all following
function/constants into this segment.#org DEFAULT− Terminate previous DEFAULT#org start, end { }− Reserve ROM
![Page 30: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/30.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 30
#org Example 2Force following code into 0x100-0x1FF
#org 0x100, 0x1FF defaultvoid func1(void) {/*code*/}
const cstring[]=“Hello”;
void func2(void) {/*code*/}
#org default
![Page 31: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/31.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 31
#org
View .STA to view current segment usage:
Segment Used Free0000-0003: 4 00004-00FF: 250 20100-01FF: 190 660200-07FF: 1337 199
![Page 32: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/32.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 32
#buildCan change reset and interrupt segment#build(segment=start:end)Valid segments:− reset – the location of the reset vector− interrupt – the location of the interrupt vector− memory – external memory for CPU mode
Examples:− #build(reset=0x800, interrupt=0x808)− #build(memory=0x10000:0x1FFFF)
![Page 33: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/33.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 33
Memory Management
Bootloader Example
![Page 34: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/34.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 34
Bootloader Overview
Two programs:− Loader− ApplicationEach program #org’dto their own space− Loader in low memory
(0-7FF)− Application high
memory (800-end)
![Page 35: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/35.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 35
Bootloader/Application Common Code
#define BOOT_END (0x7FF)
#define APP_START (BOOT_END+1)
#define APP_ISR (APP_START+8)
#define PROGRAM_END
getenv(“PROGRAM_MEMORY”)
![Page 36: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/36.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 36
Bootloader ExampleLoader Code
//prevent bootloader from using application#org APP_START , PROGRAM_END { }
#int_globalvoid isr(void) {
//goto interrupt in applicationjump_to_isr(APP_ISR);
}
void main(void) {if (IsBootloadEvent())
Bootload();#asmgoto APP_START#endasm
}
![Page 37: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/37.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 37
Bootloader ExampleApplication Code
#import(file=loader.hex, range=0:BOOT_END)
#build(reset=APP_START,interrupt=APP_ISR)
#org 0,BOOT_END { }
#int_timer0void timer(void) { /* do timer0 isr */ }
Void main(void) {/* code */
}
![Page 38: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/38.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 38
Memory Managemt
addressmod
![Page 39: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/39.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 39
addressmod
Application defined storage− ISO/IEC TR 18037 (Embedded C)typemod, on steroids!nv char productId[PID_LEN];
Can be used on any data type− Pointers, structs, unions and arrays− const not allowed
![Page 40: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/40.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 40
addressmod Syntaxaddressmod(identifier,[read,write,]start,end)− identifier is the new qualifier − read(int32 addr, int8 *ptr, int8 len)− write(int32 addr, int8 *ptr, int8 len)
The IO method to access this memoryOptional
− start/end are the memory range
![Page 41: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/41.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 41
addressmod Declarationaddressmod(nv, read_nv, write_nv,
0, NV_SIZE);
void read_nv(int32 addr, int8 *ram, int8 n)
{ /* read n from addr */ }
void write_nv(int32 addr, int8 *ram, int8 n)
{ /* write n from ram */ }
![Page 42: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/42.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 42
addressmod Usage
nv NVBuffer[8192];nv NVID;nv *NVPtr;
#locate NVID=0
NVBuffer[i]=55;*NVPtr++ = 0;
![Page 43: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/43.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 43
addressmod Block
#type default=qualifier− Following declarations will use this
qualifier− If qualifier blank, goes back to default
#type default=nv
char buffer[8192];#include <memoryhog.h>
#type default=
![Page 44: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/44.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 44
addressmod Ideas
External RAM / FlashCharacter/Grahic LCD access thru a multi-dimensional arrayDebug/trap critical variables
![Page 45: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/45.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 45
RTOS
![Page 46: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/46.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 46
RTOS Basics
Multitasking thru time-sharing− Tasks appear to run at same time‘Real Time’Task is in one of three states:− Running− Ready− Blocked
![Page 47: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/47.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 47
The CCS RTOS
Cooperative Multitasking Tightly integrated with compilerSupports ALL PIC® MCUs with a TimerAvailable to IDE customers
![Page 48: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/48.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 48
RTOS Setup
#use rtos(timer=X, [minor_cycle=cycle_time])− Timer can be any timer available− Minor_Cycle is rate of fastest task− Example:#use rtos(timer=1, minor_cycle=50ms)
![Page 49: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/49.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 49
RTOS Tasks
#task(rate=xxxx, [max=yyyy], [queue=z])− Following function is RTOS task− Will be called at specified rate− Max is slowest execution time, used
for budgeting.− Queue defines RX message size
![Page 50: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/50.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 50
RTOS Start and Stop
rtos_run()− Starts the RTOS− Will not return until rtos_terminate()rtos_terminate()− Stops the RTOS
![Page 51: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/51.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 51
#use rtos(timer=1)
#task(rate=100ms, max=5ms)void TaskInput(void){ /* get user input */ }
#task(rate=25ms)void TaskSystem(void){ /* do some stuff */ }
void main(void) {while(TRUE) {
rtos_run();sleep();
}}
![Page 52: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/52.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 52
RTOS Task Control
rtos_enable(task)rtos_disable(task)− Dynamic task control− Enable/Disable the specified task− Task is the function name− All tasks are enabled at start
![Page 53: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/53.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 53
RTOS Messaging
rtos_msg_send(task, char)− Sends char to taskavail=rtos_msg_poll()− TRUE if a char is waiting for this taskbyte=rtos_msg_read()− Read next char destined for this task
![Page 54: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/54.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 54
RTOS Yielding
rtos_yield()− Stops processing current task− Returns to this point on next cyclertos_await(expression)− rtos_yield() if expression not TRUE
![Page 55: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/55.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 55
#task(rate=100ms, max=5ms)void TaskInput(void) {if (KeyReady())
rtos_msg_send(TaskSystem, KeyGet());}
#task(rate=25ms, queue=1)void TaskSystem(void) {SystemPrepare();rtos_await(rtos_msg_poll());SystemDo(rtos_msg_read());rtos_yield();SystemVerify();
}
![Page 56: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/56.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 56
RTOS SemaphoresSemaphore− Determine shared resource availability − A user defined global variable− Set to non-zero if used− Set to zero if freertos_wait(semaphore)− rtos_yield() until semaphore free− Once free, sets semaphore as usedrtos_signal(semaphore)− Release semaphore
![Page 57: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/57.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 57
RTOS Timing Statisticsoverrun=rtos_overrun(task)− TRUE if task took longer than maxrtos_stats(task, rtos_stats)− Get timing statistics for specified task
typedef struct {int32 total; // total ticks used by taskint16 min; // minimum tick time usedint16 max; // maximum tick time usedint16 hns; // us = (ticks*hns)/10
} rtos_stats;
![Page 58: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/58.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 58
RTOS Application Ideas
User I/OCommunication Protocols
![Page 59: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/59.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 59
Class Summary
New FeaturesOutput Files and MessagesMemory Control− RAM− ROM− Bootloader ExampleaddressmodRTOS
![Page 60: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/60.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 60
Q & A
![Page 61: Ccs](https://reader031.vdocuments.site/reader031/viewer/2022020206/544bee87b1af9f24568b477a/html5/thumbnails/61.jpg)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 11028 CCS Slide 61
TrademarksThe Microchip name and logo, the Microchip logo, Accuron, dsPIC, KeeLoq, KeeLoq logo, microID, MPLAB, PIC, PICmicro, PICSTART, PRO MATE, rfPICand SmartShunt are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries.AmpLab, FilterLab, Linear Active Thermistor, Migratable Memory, MXDEV, MXLAB, SEEVAL, SmartSensor and The Embedded Control Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A.Analog-for-the-Digital Age, Application Maestro, CodeGuard, dsPICDEM, dsPICDEM.net, dsPICworks, ECAN, ECONOMONITOR, FanSense, FlexROM, fuzzyLAB, In-Circuit Serial Programming, ICSP, ICEPIC, Mindi, MiWi, MPASM, MPLAB Certified logo, MPLIB, MPLINK, PICkit, PICDEM, PICDEM.net, PICLAB, PICtail, PowerCal, PowerInfo, PowerMate, PowerTool, REAL ICE, rfLAB, Select Mode, Smart Serial, SmartTel, Total Endurance, UNI/O, WiperLock and ZENA are trademarks of Microchip Technology Incorporated in the U.S.A. and other countries.SQTP is a service mark of Microchip Technology Incorporated in the U.S.A.All other trademarks mentioned herein are property of their respective companies.