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

ucos在s3c2410上运行过程整体剖析-从main函数到UCOS初始化完毕

ucos在s3c2410上运行过程整体剖析-从main函数到UCOS初始化完毕

下面要讲解的内容基本上都是c语言编写的了,还有一部分代码是用汇编写的。以下我就以这个系统移植的实验源码为例做详细讲解。讲解的方式是根据程序执行的顺序进行,如果感觉有什么难理解的地方,会做一个宏观讲解和分析。
好了废话不多说,进入main()函数之后做的事情有:
对硬件平台做进一步的初始化操作
对ucos操作系统做初始化操作

对硬件的初始化主要包括:
初始化时钟总线
初始化串口
初始化中断结构体的相关内容
初始化定时器

关于以上的时钟的,串口的,还有定时器的等硬件的具体初始化和使用我不想一一详细阐述,这些你都可以通过查看datasheet自己弄明白的。毕竟我想详细讲解的是UCOS这个操作系统,只不过有些硬件知识是不得不讲的。我这里只是做一个你查资料的一个索引。
关于时钟频率初始化的相关知识:一,你可以查看datasheet的第七章CLOCK & POWER MANAGEMENT的内容,也可以参考S3C-2410--2440完全开发流程的第十二个实验的相关知识和内容。
关于串口的你查看datasheet的第十一章uart的相关内容。
关于定时器的你查看datasheet的第十章PWM Timer。

关于中断结构体,这是ucos响应中断的统一接口。就是定义了一个结构体,里面包含了中断服务函数的指针,屏蔽和开启相应中断请求的函数指针等。整个中断的详细机制,我想在ARM平台的中断机制和ucos如何挂接的时候详细讲解。
现把main()函数的代码贴出来:
int main(void)
{

       ARMTargetInit();        // do target (uHAL based ARM system) initialisation //
//初始化硬件平台
       OSInit();               // needed by uC/OS-II //
//对ucos进行初始化
       OSTaskCreate(Task1,  (void *)0,  (OS_STK *)&task1_Stack[STACKSIZE-1],  Task1_Prio);
       OSTaskCreate(Task2,  (void *)0,  (OS_STK *)&task2_Stack[STACKSIZE-1],  Task2_Prio);
       OSAddTask_Init(0);
       OSStart();              // start the OS //
       // never reached //
       return 0;
}//main


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Task1(void *Id)
{


       for(;;){
              printf("run task1\n");
              OSTimeDly(1000);
       }
}
void Task2(void *Id)
{


       for(;;){
              printf("run task2\n");
              OSTimeDly(3000);
       }
}
继承事业,薪火相传
返回列表