基于S3C44BOX用中断方式在μC/OS-Ⅱ上实现多任务通信
发布时间:2008/5/29 0:00:00 访问次数:599
摘要:本文简要介绍了samsung公司的嵌入式芯片s3c44box、源代码公开的嵌入式实时操作系统μc/os_ⅱ及其在s3c44box上移植的有关问题,详细讲述了基于s3c44box用中断方式实现多任务通信的软硬件设计。选用的开发平台是armsdt215。
关键词微处理器芯片;μc/os-ⅱ;中断方式;多任务
引言
当今,各种嵌入式的电子产品已经深入到我们生活的方方面面,嵌入式操作系统也已成为最热门的话题之一,其中免费型的实时操作系统μc/os-ⅱ因其可移植、可固化、可裁剪、可确定性等特点,已经成功的应用在很多商业产品上。在嵌入式操作系统中,对中断的处理分为两个部分:面向应用的编程接口部分和面向底层的处理部分,因为涉及这两部分的文件众多,关联复杂,对软硬件的熟悉程度要求较高,较之查询方式编写程序过程相应也要复杂一些,所以以往大多数应用都使用查询方式来进行数据通信。但使用中断方式可以提高处理器的工作效率以及提高对实时数据的处理实效,文章将着重讨论如何用中断方式在嵌入式操作系统μc/os-ⅱ上实现多任务通信。
s3c44box简介及armsdt215仿真环境简介
s3c44box是samsung公司推出的一款微处理器芯片,采用了arm7tdm i内核,0.25μm工艺的cmos标准宏单元和存储编译器[2]。它的低功耗精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。s3c44box采用了一种新的总线结构sambaii(samsungarmcpu嵌入式控制器总线结构)。s3c44box最突出的特点是它的cpu核采用了arm公司的16/32位arm7tdmirisc结构(主频66mhz)。s3c44box通过提供全面的、通用的片上外设,大大减少了系统电路中除处理器以外的元器件配置,从而最小化系统的成本。armsdt(the armsoft ware development toolkit)是arm公司推出的集成开发工具,由一整套应用程序、支持文档和例子构成,其目的是方便用户在arm芯片上进行应用软件的开发。可以用来编写和调试arm系列risc处理器的应用程序,可以对c、c++或armassembly语言程序进行编译和调试。
实时操作系统μc/os_ⅱ及其在s3c44box上的移植
μc/os_ⅱ是一个占先式实时多任务内核,该内核属于抢占式,可以管理64个任务,但有8个任务保留以备将来使用,因此用户的应用程序最多可有56个任务。μc/os_ⅱ是完全可剥夺型的实时内核,即它总是运行就绪条件下优先级最高的任务。μc/os_ⅱ在s3c44box上的移植实质是指使μcos_ⅱ这个实时操作系统能够在s3c44box这个微处理器平台上运行。μc/os_ⅱ的绝大部分源码是用移植性很强的ansic写的,只有与微处理器硬件相关的部分是用汇编语言写的,所以整个移植工作可以分为两部分:一部分是设置与处理器和编译器相关的代码,另一部分是编写与操作系统相关的函数。μc/os_ⅱ的全部源代码量大约是5500行,源码清晰易读、结构协调,所以在将μc/os_ⅱ移植到s3c44box处理器上时,只需要修改以下几处:
在oscpu.h文件中:与编译器相关的数据类型、堆栈的增长方向、定义s3c44box上实现开关中断的两个函数osentercritical()和osexitcritical()和其他相关宏定义等;
在oscpuc.c文件中:根据s3c44box的特定结构改写任务堆栈初始化函数ostaskstkinit()、编写5个hook函数ostaskcreatehook()、ostaskdelhook()、ostaskswhook()、ostaskstathook()、ostimetickhook():
在oscpua.asm文件中:用汇编语言改写4个与处理器相关的函数osstarthighrdy()、ostasksw()、osintctxsw()、ostickisr()。
用中断方式在μc/os_ⅱ上进行多任务通信系统的实现
以基于s3c44box实现串口和网络接口的透明数据传输接口板设计为例,介绍用中断方式实现多任务通信的实现。
硬件设计部分
硬件部分是由s3c44box、2mbyte的flashhy29lv160、8mbyte的同步sdramk4s641632、max232接口芯片、rtl8019网络芯片组成。通过串口可以与近距离设备进行通信,网口则是对基于网络的远程控制器件提供接口,然后由嵌入式系统来实现对该设备的远程监控。系统结构如图1。
图1硬件结构图
硬件设计中,hy29lv160、rtl8019、k4s641632f的片选脚分别和s3c44box的引脚gcs0、gcs3、gcs6相连,因此这几个外围芯片的起始地址分别为0x00000000、0x06000000、0x0c000000。
软件设计部分
软件部分的主程序主要有三个任务,任务1是调用时间延时函数,它的优先级设置为最低,其作用是在没有串/网口任务时使lc/os2进行一次任务调度,从而去执行下一个优先级最高的就绪态任务。任务2是对已在串口中断处理程序中判断了类型的接收数据进行相对应的处理。任务3则是对网口接收数据进行处理。此设计用中断方式来实现多任务通信的思想就是在中断处理程序中将数据接收下来,回到任务中再进行处理,这样可以避免查询方式中占用单个任务太多时间的缺点,从而让多任务通信进行得更
关键词微处理器芯片;μc/os-ⅱ;中断方式;多任务
引言
当今,各种嵌入式的电子产品已经深入到我们生活的方方面面,嵌入式操作系统也已成为最热门的话题之一,其中免费型的实时操作系统μc/os-ⅱ因其可移植、可固化、可裁剪、可确定性等特点,已经成功的应用在很多商业产品上。在嵌入式操作系统中,对中断的处理分为两个部分:面向应用的编程接口部分和面向底层的处理部分,因为涉及这两部分的文件众多,关联复杂,对软硬件的熟悉程度要求较高,较之查询方式编写程序过程相应也要复杂一些,所以以往大多数应用都使用查询方式来进行数据通信。但使用中断方式可以提高处理器的工作效率以及提高对实时数据的处理实效,文章将着重讨论如何用中断方式在嵌入式操作系统μc/os-ⅱ上实现多任务通信。
s3c44box简介及armsdt215仿真环境简介
s3c44box是samsung公司推出的一款微处理器芯片,采用了arm7tdm i内核,0.25μm工艺的cmos标准宏单元和存储编译器[2]。它的低功耗精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。s3c44box采用了一种新的总线结构sambaii(samsungarmcpu嵌入式控制器总线结构)。s3c44box最突出的特点是它的cpu核采用了arm公司的16/32位arm7tdmirisc结构(主频66mhz)。s3c44box通过提供全面的、通用的片上外设,大大减少了系统电路中除处理器以外的元器件配置,从而最小化系统的成本。armsdt(the armsoft ware development toolkit)是arm公司推出的集成开发工具,由一整套应用程序、支持文档和例子构成,其目的是方便用户在arm芯片上进行应用软件的开发。可以用来编写和调试arm系列risc处理器的应用程序,可以对c、c++或armassembly语言程序进行编译和调试。
实时操作系统μc/os_ⅱ及其在s3c44box上的移植
μc/os_ⅱ是一个占先式实时多任务内核,该内核属于抢占式,可以管理64个任务,但有8个任务保留以备将来使用,因此用户的应用程序最多可有56个任务。μc/os_ⅱ是完全可剥夺型的实时内核,即它总是运行就绪条件下优先级最高的任务。μc/os_ⅱ在s3c44box上的移植实质是指使μcos_ⅱ这个实时操作系统能够在s3c44box这个微处理器平台上运行。μc/os_ⅱ的绝大部分源码是用移植性很强的ansic写的,只有与微处理器硬件相关的部分是用汇编语言写的,所以整个移植工作可以分为两部分:一部分是设置与处理器和编译器相关的代码,另一部分是编写与操作系统相关的函数。μc/os_ⅱ的全部源代码量大约是5500行,源码清晰易读、结构协调,所以在将μc/os_ⅱ移植到s3c44box处理器上时,只需要修改以下几处:
在oscpu.h文件中:与编译器相关的数据类型、堆栈的增长方向、定义s3c44box上实现开关中断的两个函数osentercritical()和osexitcritical()和其他相关宏定义等;
在oscpuc.c文件中:根据s3c44box的特定结构改写任务堆栈初始化函数ostaskstkinit()、编写5个hook函数ostaskcreatehook()、ostaskdelhook()、ostaskswhook()、ostaskstathook()、ostimetickhook():
在oscpua.asm文件中:用汇编语言改写4个与处理器相关的函数osstarthighrdy()、ostasksw()、osintctxsw()、ostickisr()。
用中断方式在μc/os_ⅱ上进行多任务通信系统的实现
以基于s3c44box实现串口和网络接口的透明数据传输接口板设计为例,介绍用中断方式实现多任务通信的实现。
硬件设计部分
硬件部分是由s3c44box、2mbyte的flashhy29lv160、8mbyte的同步sdramk4s641632、max232接口芯片、rtl8019网络芯片组成。通过串口可以与近距离设备进行通信,网口则是对基于网络的远程控制器件提供接口,然后由嵌入式系统来实现对该设备的远程监控。系统结构如图1。
图1硬件结构图
硬件设计中,hy29lv160、rtl8019、k4s641632f的片选脚分别和s3c44box的引脚gcs0、gcs3、gcs6相连,因此这几个外围芯片的起始地址分别为0x00000000、0x06000000、0x0c000000。
软件设计部分
软件部分的主程序主要有三个任务,任务1是调用时间延时函数,它的优先级设置为最低,其作用是在没有串/网口任务时使lc/os2进行一次任务调度,从而去执行下一个优先级最高的就绪态任务。任务2是对已在串口中断处理程序中判断了类型的接收数据进行相对应的处理。任务3则是对网口接收数据进行处理。此设计用中断方式来实现多任务通信的思想就是在中断处理程序中将数据接收下来,回到任务中再进行处理,这样可以避免查询方式中占用单个任务太多时间的缺点,从而让多任务通信进行得更
摘要:本文简要介绍了samsung公司的嵌入式芯片s3c44box、源代码公开的嵌入式实时操作系统μc/os_ⅱ及其在s3c44box上移植的有关问题,详细讲述了基于s3c44box用中断方式实现多任务通信的软硬件设计。选用的开发平台是armsdt215。
关键词微处理器芯片;μc/os-ⅱ;中断方式;多任务
引言
当今,各种嵌入式的电子产品已经深入到我们生活的方方面面,嵌入式操作系统也已成为最热门的话题之一,其中免费型的实时操作系统μc/os-ⅱ因其可移植、可固化、可裁剪、可确定性等特点,已经成功的应用在很多商业产品上。在嵌入式操作系统中,对中断的处理分为两个部分:面向应用的编程接口部分和面向底层的处理部分,因为涉及这两部分的文件众多,关联复杂,对软硬件的熟悉程度要求较高,较之查询方式编写程序过程相应也要复杂一些,所以以往大多数应用都使用查询方式来进行数据通信。但使用中断方式可以提高处理器的工作效率以及提高对实时数据的处理实效,文章将着重讨论如何用中断方式在嵌入式操作系统μc/os-ⅱ上实现多任务通信。
s3c44box简介及armsdt215仿真环境简介
s3c44box是samsung公司推出的一款微处理器芯片,采用了arm7tdm i内核,0.25μm工艺的cmos标准宏单元和存储编译器[2]。它的低功耗精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。s3c44box采用了一种新的总线结构sambaii(samsungarmcpu嵌入式控制器总线结构)。s3c44box最突出的特点是它的cpu核采用了arm公司的16/32位arm7tdmirisc结构(主频66mhz)。s3c44box通过提供全面的、通用的片上外设,大大减少了系统电路中除处理器以外的元器件配置,从而最小化系统的成本。armsdt(the armsoft ware development toolkit)是arm公司推出的集成开发工具,由一整套应用程序、支持文档和例子构成,其目的是方便用户在arm芯片上进行应用软件的开发。可以用来编写和调试arm系列risc处理器的应用程序,可以对c、c++或armassembly语言程序进行编译和调试。
实时操作系统μc/os_ⅱ及其在s3c44box上的移植
μc/os_ⅱ是一个占先式实时多任务内核,该内核属于抢占式,可以管理64个任务,但有8个任务保留以备将来使用,因此用户的应用程序最多可有56个任务。μc/os_ⅱ是完全可剥夺型的实时内核,即它总是运行就绪条件下优先级最高的任务。μc/os_ⅱ在s3c44box上的移植实质是指使μcos_ⅱ这个实时操作系统能够在s3c44box这个微处理器平台上运行。μc/os_ⅱ的绝大部分源码是用移植性很强的ansic写的,只有与微处理器硬件相关的部分是用汇编语言写的,所以整个移植工作可以分为两部分:一部分是设置与处理器和编译器相关的代码,另一部分是编写与操作系统相关的函数。μc/os_ⅱ的全部源代码量大约是5500行,源码清晰易读、结构协调,所以在将μc/os_ⅱ移植到s3c44box处理器上时,只需要修改以下几处:
在oscpu.h文件中:与编译器相关的数据类型、堆栈的增长方向、定义s3c44box上实现开关中断的两个函数osentercritical()和osexitcritical()和其他相关宏定义等;
在oscpuc.c文件中:根据s3c44box的特定结构改写任务堆栈初始化函数ostaskstkinit()、编写5个hook函数ostaskcreatehook()、ostaskdelhook()、ostaskswhook()、ostaskstathook()、ostimetickhook():
在oscpua.asm文件中:用汇编语言改写4个与处理器相关的函数osstarthighrdy()、ostasksw()、osintctxsw()、ostickisr()。
用中断方式在μc/os_ⅱ上进行多任务通信系统的实现
以基于s3c44box实现串口和网络接口的透明数据传输接口板设计为例,介绍用中断方式实现多任务通信的实现。
硬件设计部分
硬件部分是由s3c44box、2mbyte的flashhy29lv160、8mbyte的同步sdramk4s641632、max232接口芯片、rtl8019网络芯片组成。通过串口可以与近距离设备进行通信,网口则是对基于网络的远程控制器件提供接口,然后由嵌入式系统来实现对该设备的远程监控。系统结构如图1。
图1硬件结构图
硬件设计中,hy29lv160、rtl8019、k4s641632f的片选脚分别和s3c44box的引脚gcs0、gcs3、gcs6相连,因此这几个外围芯片的起始地址分别为0x00000000、0x06000000、0x0c000000。
软件设计部分
软件部分的主程序主要有三个任务,任务1是调用时间延时函数,它的优先级设置为最低,其作用是在没有串/网口任务时使lc/os2进行一次任务调度,从而去执行下一个优先级最高的就绪态任务。任务2是对已在串口中断处理程序中判断了类型的接收数据进行相对应的处理。任务3则是对网口接收数据进行处理。此设计用中断方式来实现多任务通信的思想就是在中断处理程序中将数据接收下来,回到任务中再进行处理,这样可以避免查询方式中占用单个任务太多时间的缺点,从而让多任务通信进行得更
关键词微处理器芯片;μc/os-ⅱ;中断方式;多任务
引言
当今,各种嵌入式的电子产品已经深入到我们生活的方方面面,嵌入式操作系统也已成为最热门的话题之一,其中免费型的实时操作系统μc/os-ⅱ因其可移植、可固化、可裁剪、可确定性等特点,已经成功的应用在很多商业产品上。在嵌入式操作系统中,对中断的处理分为两个部分:面向应用的编程接口部分和面向底层的处理部分,因为涉及这两部分的文件众多,关联复杂,对软硬件的熟悉程度要求较高,较之查询方式编写程序过程相应也要复杂一些,所以以往大多数应用都使用查询方式来进行数据通信。但使用中断方式可以提高处理器的工作效率以及提高对实时数据的处理实效,文章将着重讨论如何用中断方式在嵌入式操作系统μc/os-ⅱ上实现多任务通信。
s3c44box简介及armsdt215仿真环境简介
s3c44box是samsung公司推出的一款微处理器芯片,采用了arm7tdm i内核,0.25μm工艺的cmos标准宏单元和存储编译器[2]。它的低功耗精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。s3c44box采用了一种新的总线结构sambaii(samsungarmcpu嵌入式控制器总线结构)。s3c44box最突出的特点是它的cpu核采用了arm公司的16/32位arm7tdmirisc结构(主频66mhz)。s3c44box通过提供全面的、通用的片上外设,大大减少了系统电路中除处理器以外的元器件配置,从而最小化系统的成本。armsdt(the armsoft ware development toolkit)是arm公司推出的集成开发工具,由一整套应用程序、支持文档和例子构成,其目的是方便用户在arm芯片上进行应用软件的开发。可以用来编写和调试arm系列risc处理器的应用程序,可以对c、c++或armassembly语言程序进行编译和调试。
实时操作系统μc/os_ⅱ及其在s3c44box上的移植
μc/os_ⅱ是一个占先式实时多任务内核,该内核属于抢占式,可以管理64个任务,但有8个任务保留以备将来使用,因此用户的应用程序最多可有56个任务。μc/os_ⅱ是完全可剥夺型的实时内核,即它总是运行就绪条件下优先级最高的任务。μc/os_ⅱ在s3c44box上的移植实质是指使μcos_ⅱ这个实时操作系统能够在s3c44box这个微处理器平台上运行。μc/os_ⅱ的绝大部分源码是用移植性很强的ansic写的,只有与微处理器硬件相关的部分是用汇编语言写的,所以整个移植工作可以分为两部分:一部分是设置与处理器和编译器相关的代码,另一部分是编写与操作系统相关的函数。μc/os_ⅱ的全部源代码量大约是5500行,源码清晰易读、结构协调,所以在将μc/os_ⅱ移植到s3c44box处理器上时,只需要修改以下几处:
在oscpu.h文件中:与编译器相关的数据类型、堆栈的增长方向、定义s3c44box上实现开关中断的两个函数osentercritical()和osexitcritical()和其他相关宏定义等;
在oscpuc.c文件中:根据s3c44box的特定结构改写任务堆栈初始化函数ostaskstkinit()、编写5个hook函数ostaskcreatehook()、ostaskdelhook()、ostaskswhook()、ostaskstathook()、ostimetickhook():
在oscpua.asm文件中:用汇编语言改写4个与处理器相关的函数osstarthighrdy()、ostasksw()、osintctxsw()、ostickisr()。
用中断方式在μc/os_ⅱ上进行多任务通信系统的实现
以基于s3c44box实现串口和网络接口的透明数据传输接口板设计为例,介绍用中断方式实现多任务通信的实现。
硬件设计部分
硬件部分是由s3c44box、2mbyte的flashhy29lv160、8mbyte的同步sdramk4s641632、max232接口芯片、rtl8019网络芯片组成。通过串口可以与近距离设备进行通信,网口则是对基于网络的远程控制器件提供接口,然后由嵌入式系统来实现对该设备的远程监控。系统结构如图1。
图1硬件结构图
硬件设计中,hy29lv160、rtl8019、k4s641632f的片选脚分别和s3c44box的引脚gcs0、gcs3、gcs6相连,因此这几个外围芯片的起始地址分别为0x00000000、0x06000000、0x0c000000。
软件设计部分
软件部分的主程序主要有三个任务,任务1是调用时间延时函数,它的优先级设置为最低,其作用是在没有串/网口任务时使lc/os2进行一次任务调度,从而去执行下一个优先级最高的就绪态任务。任务2是对已在串口中断处理程序中判断了类型的接收数据进行相对应的处理。任务3则是对网口接收数据进行处理。此设计用中断方式来实现多任务通信的思想就是在中断处理程序中将数据接收下来,回到任务中再进行处理,这样可以避免查询方式中占用单个任务太多时间的缺点,从而让多任务通信进行得更