好了,要写一个OS,首先须要一个开拓板和仿真器。我的开拓板是STM32F4DISCOVERY,自带ST-LINK V2仿真器,板载MCU为STM32F407VGT6,支持FPU,32位ARM Cortex-M4F核,1024KB FLASH,192 KB RAM,总之很强大。对STM32其他系列,本OS险些不需修正修正就可利用。开拓环境为IAR for ARM 6.5,如果是MDK的话,也是大同小异,汇编部分须要修正。
研究了一下UCOS-II的Cortex-M4的Port部分,以为很好,就直接拿来用了,修正的很少。首先我们来看一下这一部分几个比较主要的函数,打开os_cpu_a.asm文件,定位到下面的地方,注释我改成中文了。当OS初始化完毕后,实行OSStart,OSStart末了调用OSStartHighRdy函数,把稳在此之前的线程模式和非常模式的堆栈都是MSP,在此之后线程模式的堆栈是PSP,非常模式的堆栈仍是MSP。
之后我们在此根本上构建自己的OS,首先完成两个任务相互调用,然后是加入SysTick的任务调度,末了加入旗子暗记量,邮箱等功能。
