ARM实训总结_arm跑马灯实训总结

2020-02-27 其他工作总结 下载本文

ARM实训总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“arm跑马灯实训总结”。

《嵌入式系统工程训练》实验报告

一、实验目的1、巩固嵌入式系统硬件结构的基本应用

2、巩固嵌入式系统程序编制的基本方法

3、了解嵌入式系统的工程设计要点

4、了解嵌入式系统的开发平台要点

5、学习μC/OS-II在ARM7上的移植

6、学习μC/OS-II嵌入式实时操作的基本原理与应用

7、运用所学内容完成一个基于操作系统的小课题

二、实训内容

1、熟练掌握LPC2210开发板的使用

2、基本了解嵌入式系统的工程设计一般方法

3、学习μC/OS-II在ARM7上的移植

4、学习μC/OS-II嵌入式实时操作基本概念、基本运用

5、结合课程内容与μC/OS-II运用完成一个小课题

三、实训条件(环境)

1、LPC2210开发板

2、PC机

3、ADS1.2集成开发环境

4、μC/OS-II实时操作系统

四、学习内容

1、LPC2210硬件内容

2、μC/OS-II嵌入式实时操作内容

3、嵌入式系统的工程设计内容

五、小课题:μC/OS-II在IIC上的应用

六、实训总结

这两周我们在原本ARM的学习基础上以μC/OS-II嵌入式实时操作系统展开了实训。主要内容是如何将嵌入式实时操作系统μC/OS-II移植到ARM7体系结构上,并将一直代码应用到具体的基于ARM7核的微控制器上。

对于这些天的所学到的内容,我稍稍的写了点心得,都是一些很基本的东西。首先把实验书上系统的例程序先跑了一遍,稍微了解一下板子的功能,熟悉下实验流程。先移例子,按照要求把source文件夹放在了softwareucos-II文件夹下,在这个文件夹下,存放得是系统移植的例子,其中有三个文件夹arm_pc,source,lpc2100是和系统移植相关的。当一个任务一旦建立,系统为这个任务配备了任务控制块且在任务就绪表中进行了就绪登记,这个任务就进入就绪态准备运行。一个任务可以通过调用OSTaskDel()返回到睡眠态,或通过调用该函数让另一个任务进入睡眠态,进入睡眠态的任务它的的任务控制块被剥夺,调用OSStart()可以启动多任务。OSStrart()函数运行进入就绪态的优先级最高的任务。

下载到目标板上的固态存储器指定地址当中,比如flash,EEPROM, ROM等等在程序执行之前,根据某些

描述文件,将需要读写数据的部分读出放入动态存储器比如RAM当中,然后程序从ROM开始执行或者有时为了提高程序的运行速度,也可以将所有的程序(有一些root的部分除外,以后会提及)通过一个描述文件放入指定的RAM当中,然后程序从RAM开始执行,但是这样会耗费大量的动态存储器,所以大部分程序会取折中的方法,将需要快速运行的部分和要读写的部分放入RAM中(一般读固态存储器的过程和动态存储器的过程是一样的,但是写就不同了,所以读写的部分一定要放到RAM中),而只读的部分和对速度要求不是那么高的部分放入固态存储器同时ARM结构的异常向量表规定放在地址为0x00000000开始的地址空间上,而一般的CPU为了提高异常相应速度,会将这个向量段remap到其他的RAM当中,所以在描述文件当中必须精确指定异常向量跳转程序的地址到remap的地方在application程序执行前,还需要由一些文件描述application程序执行的环境比如系统工作时钟,总线频率现在一般嵌入式编程语言为C,C 等 主程序中首先进行了操作系统初始化,然后创建了一个任务,最后启动了多任务运行环境。太简单了。再往下看创建的任务子函数TaskStart(),在这个函数中又创建了。了解到在启动多任务环境前需要至少创建一个任务,我想TaskStart()任务就应该是这个原因放在了 OSStart()之前。

中断级任务调度,和任务级调度。我的理解是当发生中断时,操作系统内核判断此时是否有更高优先级的就绪任务,有的话进行任务调度。任务级调度就是当前任务在执行过程中主动执行任务调度,将权力交给内核。

但是这个中断是怎么产生的呢,我又看到了时钟节拍的概念,时钟节拍(clock tick):P67页中说道时钟节拍是特定的周期性中断。有两种作用:这种周期性的定时中断一来为内核提供一个时间标准,例如某个任务要延时多长时间,可以通过纪录这种中断来完成(中断的时间是已知的,但应当是可更改的),二 为任务切换提供了时间片,任务之间的调度是按时完成的,就是在一个时钟节拍后来进行P68-P69中的图形说明了这一点。以前不明白每个任务是一个死循环,在每个程序中都有一个OSTimeDly(),这个函数是将任务挂起,将控制权交给内核,内核进行任务调度,从就续的任务中找到优先级最高的任务执行,这是一种调度。那么当一个低优先级任务在执行时,如果在等待一个信号,可能要等很长时间,那么内核不能一直在这里等待这个信号的到来,别的高优先级任务可能已经就绪,那么就需要进行任务调度,何时调度呢?这时就应该是时钟节拍所起到的作用,每一个时钟节拍到达后进入中断处理函数,进行任务调度。

所以总的理解应当是内核在每个时钟节拍到来时进行一次任务调度,这是大前提,使每个任务都有相同的权利执行相同的时间。有时个别任务在一个时钟节拍内早已完成,这时需要向内核提前交权,让内核进行任务调度。

《ARM实训总结.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
ARM实训总结
点击下载文档
相关专题 arm跑马灯实训总结 实训 arm arm跑马灯实训总结 实训 arm
[其他工作总结]相关推荐
    [其他工作总结]热门文章
      下载全文