树莓派μC/OSII移植

made by Rk

本文由浙江大学《嵌入式系统》课程提供强力支持。

感谢翁恺老师 @翁恺BA5AG

/*************************************************************/

实验要求:

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

下载源码

在下面网址下载助教给的源代码
http://pan.baidu.com/share/link?shareid=454963&uk=1409658586

修正错误

a)makefile文件

由于操作系统等原因,源代码中有许多错误。

将此处第一行改为本地交叉编译环境的gcc编译器所在目录;
将第二行修改为./h,表示本目录h文件夹。

b)注释问题

startup.s中,注释符号错误:
将其中类似注释均修改为汇编文件中的@


还有OS_Cpu_a.s中的注释。

c)大小写问题

在includes.h中include了ucos/os_cfg文件,但是实际文件为大写,修改文件名为includes.h中一致。
树莓派μC/OSII移植_第1张图片

d)makefile文件名

make过程提示没有文件,其实是makefile中最后文件名多了一个点
树莓派μC/OSII移植_第2张图片
e)编写LCD灯闪烁代码:
其中板载灯的GPIO编号为16,所以需要1<<16操作。
#include "uart.h"
#include "ucos/includes.h"

#define GPSET0 0x2020001C
#define GPCLR0 0x20200028

extern void PUT32 (unsigned int , unsigned int);
extern unsigned int GET32(unsigned int);

void userApp2(void * args)
{
	while(1)
	{
		PUT32(GPCLR0, 1<<16);
		OSTimeDly(100);
		uart_string("in userApp2");
		OSTimeDly(100);
	}
}

void userApp1(void * args)
{
	while(1)
	{
		uart_string("in userApp1");
		OSTimeDly(100);
		PUT32(GPSET0, 1<<16);
		OSTimeDly(100);
	}
}

实验成功,ACT灯闪烁状态稳定。

你可能感兴趣的:(Raspberry,Pi,Linux)