树莓派实验六: uC/OS 2

一、实验目的

       uC/OS II 熟悉

 

二、实验内容

    移植uC/OS II到RPi上,实现两个任务的调度。这两个任务能轮流点亮LED,并通过串口发送消息表明自己正在运行

 

三、主要仪器设备

       1. Raspberry Pi

       2. 移动电源

       3. Window7 操作系统PC 一台

 

 

四、操作方法和实验步骤

1. 下载yagartotools 以及 GNU ARM toolchain

       具体的下载地址为:

         http://www.yagarto.de/

         在win7下就是exe文件,按照说明一步一步确认就可以了。

树莓派实验六: uC/OS 2_第1张图片

 

  安装完毕后可以在cmd中输入

  和来检查是否安装成功。

 

 

 

 

2、 使用yagarto来编译usos

      

       先从fm网站上提供的下载链接下载usos,再修改makefile文件中的一行为:

 

    之后cmd进入ucos_raspberryPi目录下,先使用make clean命令,再使用make命令,如下图:

 树莓派实验六: uC/OS 2_第2张图片

树莓派实验六: uC/OS 2_第3张图片


 

由此可知,make成功。

 

3. 修改源代码,重新生成img文件

修改usrapp目录下的userapp.c文件如下

#include "uart.h" 

#include "ucos/includes.h" 

 

extern void PUT32 (unsigned int, unsigned int );

extern unsignedint GET32 ( unsignedint );

#define GPSET0  0x2020001C 

#define GPCLR0  0x20200028 

 

void userApp2(void * args) 

    while(1) 

    { 

             OSTimeDly(40); 

        PUT32(GPSET0,1<<16); 

        uart_string("App2: turn off"); 

        OSTimeDly(40); 

    } 

 

void userApp1(void * args) 

 

    while(1) 

    { 

        uart_string("App1: turn up");   

        PUT32(GPCLR0,1<<16); 

        OSTimeDly(80);

    } 

}

 

 

重新执行make clean和make操作,生成新的img

 

 

4、将img文件放入SD卡中,重新运行树莓派

putty显示如下

      树莓派实验六: uC/OS 2_第4张图片

并且树莓派上act绿灯一闪一闪,实验成功

 

五、讨论总结

       本次实验十分简单,只要走的方向正确,很快就能完成实验。

       实际上我本来是想使用消息队列来控制两个进程切换的,即在app1运行完put32时,将自身挂起40个clock cycle,然后再向app2传递可以执行关灯操作的消息,app2等待接收到消息再执行关灯操作,然后反馈关灯成功操作,app1接收到反馈消息,再将自身挂起40个clock cycle,然后循环又一轮开始(即开灯)。但是遇到问题,就是我在main.c中创立了两个消息变量,并在main()create这两个消息,但是到编译app1app2时却提示没有定义这两个消息变量,其实这个是很白痴的问题,解决方法就是来个extern就行了,用的还是不够熟悉哎。

 

 

你可能感兴趣的:(树莓派(Raspberry))