Hi !
1. In the timer code, I rewrote IntEnable() without the SWI. It has only 1
statement (B IRQEnable), which seems enough for now. The blinkyy timer
worked !
2. In the FreeRTOS code:
a. I glued vPortYieldProcessor to SWI_Handler.
b. Now the taskYIELD() function worked ! (I saw the switch between the x & y
tasks for each increment).
c. But the UART0 interrupt occurred when y was 0xB & x was 0xA. Following
the UART0 ISR, a Prefetch Abort occurred.
d. I had to:
i. disable the UART interrupt.
ii. remove the install_irq() call which glued the UART ISR.
Then the x & y tasks switched and x & y were incremented continuously
without abort.
3. Next, as you suggested, I will:
a. bring the timer code into FreeRTOS.
b. remove the taskYIELD() calls.
c. see if tasks are switched (by the scheduler ?) at timer tick interrupts.