一向想写个相似uCOS的OS,近段时刻考研温习之余忙里偷闲,总算有点效果了。言归正传,我觉得OS最难的部分首要就是上下文切换的问题,他和MCU的架构有关,所以关于不同的MCU,这部分需求移植。一旦这个问题解决了,整个OS算是成功了一半了,当然,是关于简略的OS。
好了,要写一个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的使命调度,最终参加信号量,邮箱等功能。