当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]前言uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多

前言

uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。为了提供最好的移植性能,uC/OS II最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)。 uC/OS II可以简单的视为一个多任务调度器,在这个任务调度器之上完善并添加了和多任务操作系统相关的系统服务,如信号量、邮箱等。其主要特点有公开源代码,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,可固化。内核属于抢占式,最多可以管理60个任务。从1992年开始,由于高度可靠性、移植性和安全性,uC/OS II已经广泛使用在从照相机到航空电子产品的各种应用中。

想学习操作系统的同学的可以好好分析这个系统的代码

ucos下载编译

 

$sudo apt-get install git git-core

$git clone https://github.com/Pillar1989/ucos-ii-for-pcDuino

$cd arduino

$make

$cd ..

$make

ucos-ii测试

编写测试程序:

1 /*

2 *************************************************************************************************** ******

3 * sample.c

4 *

5 * Description: This sample program uses the ucos linux port to start 5 simple tasks.

6 *

7 * Author: Philip Mitchell

8 *

9 *************************************************************************************************** ******

10 */

11

12 #include

13 #include

14 #include “ucos_ii.h”

15 #include

16 #include

17

18 int led_pin = 1;

19 int btn_pin = 5;

20

21 void hardware_init()

22 {

23 pinMode(led_pin, OUTPUT);

24 }

25 /* Function common to all tasks */

26

27 void MyTask( void *p_arg )

28 {

29

30 char* sTaskName = (char*)p_arg;

31 static flag1 = 1;

32 #if OS_CRITICAL_METHOD == 3

33 OS_CPU_SR cpu_sr = 0;

34 #endif

35

36 while(1)

37 {

38 /* printf uses mutex to get terminal access, therefore must enter critical section */

39 OS_ENTER_CRITICAL();

40 printf( “Name: %sn”, sTaskName );

41 if(!strcmp(sTaskName,”Task 1″))

42 {

43 if(flag1 == 1)

44 {

45 flag1 = 0;

46 printf(“HIGHn”);

47 digitalWrite(led_pin, HIGH);

48 }

49 else

50 {

51 flag1 = 1;

52 printf(“LOWn”);

53 digitalWrite(led_pin, LOW);

54 }

55 }

56 OS_EXIT_CRITICAL();

57

58 /* Delay so other tasks may execute. */

59 OSTimeDly(50);

60 }/* while */

61

62 }

63

64

65 int main (void)

66 {

67 /* pthreads allocates its own memory for task stacks. This UCOS linux port needs a minimum stack size

68 in order to pass the function information within the port. */

69 hardware_init();

70 INT8U Stk1[ OSMinStkSize() ];

71 INT8U Stk2[ OSMinStkSize() ];

72 INT8U Stk3[ OSMinStkSize() ];

73 INT8U Stk4[ OSMinStkSize() ];

74 INT8U Stk5[ OSMinStkSize() ];

75

76 char sTask1[] = “Task 1″;

77 char sTask2[] = “Task 2″;

78 char sTask3[] = “Task 3″;

79 char sTask4[] = “Task 4″;

80 // char sTask5[] = “Task 5″;

81

82 OSInit();

83

84 OSTaskCreate( MyTask, sTask1, (void*)Stk1, 4 );

85 // OSTaskCreate( MyTask, sTask2, (void*)Stk2, 5 );

86 // OSTaskCreate( MyTask, sTask3, (void*)Stk3, 6 );

87 // OSTaskCreate( MyTask, sTask4, (void*)Stk4, 7 );

88 // OSTaskCreate( MyTask, sTask5, (void*)Stk5, 8 );

89

90 OSStart();

91

92 return 0;

93 }

94

连接一个led灯到1脚,执行刚刚编译出来的程序

ubuntu@ubuntu:~/ucos-ii-for-pcDuino$ ./ucos_sample

1Name: Task 1

HIGH

Name: Task 1

LOW

Name: Task 1

HIGH

Name: Task 1

LOW

Name: Task 1

板子上接到1 pin的led会不断的闪烁

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

  本文主要搭建一个多生理参数测量系统的数据处理平台,在FPGA中嵌入一个32位Nios II软核处理器,用于控制数据的传输、存储及显示。主要完成了此数据处理平台硬件系统的定制及编写相应程序,以控制数

关键字: NIOS ii 生理

据9月9日消息,索尼Xperia 5 Ⅱ将于9月17日正式发布。 该机现已通过FCC认证,FCC文件显示索尼Xperia 5 Ⅱ配备的充电器型号为Sony UCH32,支持18W快充。

关键字: xperia 5 1 ii

7 月 14 日消息 苹果 Apple IIe 电脑在 37 年前的 1983 年问世,但不要以为它不能胜任现代的任务。有 Twitter 用户近日展示了如何让 Apple IIe 实现现代化的的任

关键字: apple ii

华硕在2019年经历了一年的复苏,其坚实的Zenfone 6和强大的ROG Phone II游戏引擎将于今年问世。 尽管Zenfone在11月收购了Android 10,但该公司现在正为ROG Phone II推出稳定的...

关键字: 10 Android ii phone rog 华硕

Linux内核对其驱动程序进行了修改,来支持Macintosh II系统上的Apple Desktop Bus。

关键字: ii Linux macintosh 驱动

在这篇文章中,小编将为大家带来华硕全新ROG Zenith II Extreme的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: extreme ii rog zenith 华硕 tda21490

不考虑这两年来处理器从4核达大幅提升到8核甚至16核的情况,单从CPU性能来看,大家普遍认为过去几年CPU都是在挤牙膏升级,原因都懂得。那问题来了,如果是跨度十年的话,那如今的CPU到底比09年的CP

关键字: 810 ii x86 处理器 挤牙膏 酷睿 phenom

主板产品一直是人们的关注焦点之一,因此在这篇文章中,小编将为大家带来华硕ROG ZENITH II EXTREME。如果你想了解它的详细内容,请继续阅读。

关键字: extreme ii rog zenith 主板 华硕

AMD刚刚发布的第三代线程撕裂者用上了7nm Zen 2,不过接口改为新的sTRX4,必须搭配新的TRX40芯片组主板。 华硕率先发布了三款全新的TRX40主板,分别是玩家国度系列的ROG ZENIT

关键字: extreme ii rog zenith 主板 图赏 三代撕裂者 坐骑

到目前为止,我们已经看过太多关于 iPhone 11 的相机对比评测了,例如此前的 Pixel 4 夜景对比、Mate 30 Pro 相机对比。而最近,国外摄影 UP 主则进行了一项不太一样的相机对比

关键字: 11 ii iPhone mark pro 佳能 实拍 1dx
关闭