I just have a quick question about using the SPLIM in the PIC24 series. I havn’t thoroughly looked over the FreeRTOS code, but it seems like the code can be set up to check for stack overflow. I was just wondering if there was any reason in particular that the SPLIM register wansn’t used in the PIC24 port? Thanks
While I think it may be possible, one difficulty is that each task has its own stack, and thus the value of splim might need to be added to the TCB (you may be able to compute a value from the currently stored values), and you also need to be careful how you switch from on task to another. You will likely need to change the order of operations depend on if the new tasks stack is in higher or lower memory than the old tasks stack to make sure the SPLIM is always greater than the SP.
My initial thoughts were adding a field in the TCB for the SPLIM which is computed by the OS when the task is created. As far as the order of operations for dealing with the SPLIM, I’m going to try attacking the problem by putting a very safe address into the SPLIM before putting the new value for the SPLIM for the task that will run next.