首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于μC/OS的嵌入式系统应用开发研究 02

基于μC/OS的嵌入式系统应用开发研究 02

 OSCtxSw()  任务级的上下文切换,它是当任务因为被阻塞而主动请求cpu调度时被执行,由于此时的任务切换都是在非异常模式下进行的,它的工作是先将当前任务的cpu现场保存到该任务堆栈中,然后获得最高优先级任务的堆栈指针,从该堆栈中恢复此任务的cpu现场,使之继续执行。
  OSIntCtxSw()  中断级的任务切换,它是在时钟中断ISR(中断服务例程)中发现有高优先级任务等待的时钟信号到来,则在中断退出后直接调度就绪的高优先级任务执行。
  OSTickISR() 时钟中断处理函数,它的主要任务是负责处理时钟中断,调用系统实现的OSTimeTick函数,如果有等待时钟信号的高优先级任务,则需要在中断级别上调度其执行。其他相关的两个函数是OSIntEnter()和OSIntExit(),都需要在ISR中执行。
  移植完以上程序后,用户就可以结合自己的项目要求来编写自己的应用程序了,用户可以添加如打印、空等待等任务,以下给出了一个例程,通过调用OSTaskCreate ( )函数注册了三个任务,由系统根据最优调度原理进行调度。
  void main (void)
{
   Initialize();                      /* Processor specific initialization */   
   OSInit();
   bufferSemaphore = OSSemCreate(BUFFER_LENGTH - 1);
   terminalSemaphore = OSSemCreate(1);
         OSTaskCreate(Task1, (void*)string1, (void*)&stacks[0][TASK_STK_SIZE - 1], 0);                                                     
   OSTaskCreate(Task2, (void*)string2, (void*)&stacks[1][TASK_STK_SIZE - 1], 1);
   OSTaskCreate(Task3, (void*)string3, (void*)&stacks[2][TASK_STK_SIZE - 1], 2);

   OSStart();                         /*     Start.....              */
}
  四、驱动程序的添加
  由于UC/OS提供的仅仅是一个任务调度的内核,通过以上移植,要想得到一个相对完整、实时的嵌入式多任务操作系统,还必须进行相当多的扩展工作。主要有:建立文件系统、通过开发如LCD液晶显示、USB通信、键盘、串口等驱动程序从而提供应用程序调用的API函数,还有创建图形用户接口(GUI)函数等,下面主要介绍一下串口驱动程序的开发。
void Uart_Init(int mclk,int baud)     {  }
  该函数主要是初始化串口,设置波特率,其中mclk是系统主时钟频率,band参数传递串口通信波特率。  
void Uart_Select(int ch)   {      }
   该函数进行串口选择,ch 传递串口号。   
char Uart_Getch(void)     {        }
该函数从串口读取字符,存放在一数组内。
void Uart_GetString(char *string)   {    }
该函数读取要发送的字符串,并一个一个字符地从串口发送。
void Uart_SendByte(int data)     {      }      
该函数通过串口发送数据,data是需要发送的字符。
void Uart_SendString(char *pt)    {     }
该函数通过串口发送字符串,pt是字符串首地址的指针。
通过以上接口函数,系统向用户提供了屏蔽底层硬件的API函数,用户可以通过调用以上函数,方便地对串口进行操作。
  五、结束语
  目前市场上基于μc/os嵌入式操作系统的产品比较多,应用领域包括工业控制、信息家电、网络设备等方面,而且基于μc/os的应用正潮起云涌,蓬勃发展。随着后PC时代的来临,嵌入式系统理论与应用研究日新月异,μc/os正是我们手中开发嵌入式系统的利器,较好的掌握这门技术可以将理论与实际应用相结合,更好地服务于我们的日常生活和生产中。
返回列表