开发板下来,首先就可以把官方例程简单的跑一遍了。一般呢,我首先用的是:
01_GPIO_Running_LED 这个例程,用来查看开发板的好坏、开发环境是否正常。进一步的,我就用到04_USART_Printf 这个例程,GD官方提供的板子呢,自带一个USB串口,咱们接上就能直接使用这个例程。可真是相当配套!对于串口,我情有独钟,因为不论是在学习、或是软件的调试,一方面我们使用调试器进行调试、另一方面,我们还能用串口工具来打印消息,这样能让我们很直观的知道,自己的程序工作逻辑、状态。可谓是如虎添翼!
一般,基本了解了上述的例程后,咱们就可以深入了,我本想移植个ucosII 的工程,可是上官网上看,发现还有个uCOSIII,心血来潮,要不就来移植uCOSIII吧。
目标:移植uCOSIII操作系统,并验证功能是否正常。
基于GD32E503V的开发板,GD32E503是个M33内核,其实呢,理解为M3的升级版即可。
移植uCOSIII当然要上Micrium 上面下些源码啦。(uCOSIII是付费的,但我们学习是免费的)PS:Micrium官网上其实就有很多移植的例程,比方ST的,热爱造轮子的朋友们可以自己去下个例程,对比来移植。
小弟坐标福建,动手前还是有点冻手的哈哈。如下图是官方提供的文件:
小弟框下所需要的文件,至于为啥我知道呢,,大家可以去下示例代码,看看示例代码里面有什么、没有什么不就能清楚啦,再一个,其实Micrium提供的文档还是相当详细的,热爱肯英文的小伙伴可以看看。(移植这个uCOSIII我也花了好几个小时看资料,目测用了一两天吧,简简单单的blog可能说不清,大家自己看书哈。看官方资料)我只能贡献下自己移植好的工程。
自己创建个uCOSIII的文件夹,将上述文件copy进来。如图:
另外呢,创建APP/BSP两个文件夹。
APP呢,就是Application,或者说,放main.c的地方。当然,官方提供的工程已经有main.c文件了,咱也可直接使用,没什么问题。
BSP呢,就是board support packet ,也就是放一些芯片外设初始化啥的。
接下去呢,就是编译了,按道理,能通过就有鬼了,出现了一些报错,比方缺少某某头文件,如果是uCOSIII的,就要去添加下,很简单,就缺啥补啥。我编译过程还算顺利,添加了头文件路径、头文件、基本就没啥啦。这里添加路径!
然后很快编译过啦。
接下去就是创建线程
参照示例代码,依样画葫芦即可:
按道理,我已经创建两个线程,即可debug,进行测试啦。
编译OK,debug OK ,然而,全速运行时,卡在某个位置,不走了,百思不得其解~,其实呢,操作系统,是需要有个心跳的,没错,就是SysTickHandler这个中断,mcu自己的启动代码文件,定义了SysTickHandler入口,uCOSIII同样也有个OS_CPU_SysTickHandler 入口,因此,我们需要替换下,记得全工程搜索下,进行替换。
进一步的,再次deBug,即可发现,有两个线程,友好的、手牵手的,一起行走了。
附上工程,
在这里要提个醒,此工程修改了hd.s的文件,因此,使用其他工程时,需要注意哦,所有例程共用一个.s文件。
本帖最后由 eew_YeKTCB 于 2021-1-19 09:39 编辑不错uscos起源早,应用也多,mark一下