当前位置:文档之家› 利用RTLinux开发嵌入式应用程序

利用RTLinux开发嵌入式应用程序

利用RTLinux开发嵌入式应用程序
利用RTLinux开发嵌入式应用程序

利用RTLinux开发嵌入式应用程序

对于中国工程师来说,利用实时Linux开发嵌入式应用程序是他们面临的困难之一,本文以RTLinux为例,并结合最为业界关注的是RTAI进行讨论,尽管这两种实现方式在句法细节上存在差异,但工作方式基本一样,因此所讲述的内容对两者都适用。

在实时任务与用户进程相互通信的过程中,有些实时应用程序无需任何用户界面即可在后台平静地运行,然而,越来越多的实时应用程序确实需要一个用户界面及其它系统功能,如文件操作或联网等,所有这些功能都必须在用户空间内运行。问题是,用户空间操作是非确定性的,而且与实时操作不兼容。

幸运的是实时Linux具有一种可在时间上减弱实时与非实时操作的机制,这种机制表现为一种称为实时FIFO的驱动程序。当insmod将rtl_fifo.o驱动程序插入Linux内核时,该驱动程序将自己注册为RTLinux的一部分,并成为Linux驱动程序。一旦插入Linux内核,用户空间进程和实时任务都可使用实时Linux FIFO。

在深入探讨实时FIFO的细节之前,还要回顾一下实时应用程序结构的某些部分(图1)。有效的嵌入式应用程序设计方法是将实时部分与固有的非实时功能分离开来(表1)。如果应用程序的任一部分,如用户界面、图形、数据库或网络仅需软实时性能,最好是将该部分写入用户空间。然后,仅将必须满足时序要求的那部分写成实时任务。

注意,RTLinux(PSC,便携式信号编码)和RTAI(LXRT,Linux实时扩展)的最新版本已采用了一种可在用户空间执行软和硬实时任务的方法。

任何硬实时任务都是在RTLinux的控制下运行的,该任务一般可执行周期性任务、处理中断并与I/O设备驱动程序通信,以采集或输出模拟和数字信息。当实时任务需要告诉用户进程有一个事件将发生时,它便将这一消息送给实时FIFO。每一个FIFO都是在一个方向上传送数据:从实时任务到用户空间,或反之。因此,双向通信需要使用两个FIFO。任何读出或写入实时任务一侧的操作都是非模块操作,因此rtf_put()和rtf_get()都立即返回,而不管FIFO状态是什么。

从应用程序一侧来看,FIFO就像一个常规文件。缺省情况下,RTLinux安装程序将在/dev 目录下创建6?个实时FIFO节点;如果需要,还必须自己创建新的节点。例如,要创建/dev/rtf80,需采用如下命令:

=========================

mknod c 150 80;

chmod 0666 /dev/rtf80

=========================

其中,150是实时FIFO主数,而80是rtf80的次数。

从用户进程的角度看,实时FIFO可执行标准文件操作。从实时任务来看,FIFO有两种通信方式:直接调用RTLinux FIFO功能,或将FIFO作为一个RTLinux设备驱动程序,并使用open()、close()、read()和write()操作。要想将FIFO作为一个设备驱动程序,就必须将rtl_conf.h中的配置变量CONFIG_RTL_POSIX_IO设定为1。

rtf_create_handler()可设置处理程序功能。每次Linux进程读或写FIFO时,rtl_fifo 驱动程序都要调用该处理程序。应注意的是,该处理程序驻留在Linux内核,因此当Linux 需要调用时,从该处理程序进行任何内核调用都是安全的。从该处理程序到实时任务间的最好通信方法是使用旗语或线程同步功能。最后,FIFO驱动程序还必须对内核存储器进行配置。因此,实时线程内的rtf_create()不应调用。相反,可调用init_module()中的rtf_create ()功能及cleanup_module()中的rtf_destroy()功能。

例如,列表1给出了一个采用两个FIFO的简单数据采集应用程序的实时部分。两个FIFO 都是在init_module()创建,并赋予minor numbers 为1和2。在调用rtf_create(minor,size)之前,该程序在已创建该FIFO的情况下调用rtf_destroy(minor)。这种情况就是另一个模块在开发过程中未被调用。然后,调用rtf_create_handler(ID, &pd_do_aout)以注册带该实时FIFO的数据采集模拟输出功能pd_do_aout()。注意,创建实时线程pp_thread_ep()是因为它是周期性的,其间隔为1/100秒。

每次周期性线程得到系统控制权后,它就调用rtf_put(ID,dataptr,size)以便将数据插入minor number为2的FIFO。Linux进程打开/dev/rtf2,从实时FIFO中读取并显示所采集的数据。该进程还打开/dev/rtf1,将数据写入其它实时FIFO。当用户移动屏幕滑动器以改变模拟输出电压时,进程就向该FIFO写入一个新的值。RTLinux便调用pd_do_aout()处理程序,随后pd_do_aout()利用rtf_get()从FIFO获得值,并调用实际的硬件驱动程序以设置模拟输出的电压。可以看到,实时任务和用户进程是异步使用FIFO的。

任务间的存储器共享

FIFO为用户进程和实时任务的连接提供了一种方便的机制,但将它们作为消息队列更合适。比如,一个实时线程可利用FIFO记录测试结果,然后用户进程就可读取该结果,并将之存入数据库文件。

许多数据采集应用程序涉及到内核及用户空间之间的大量数据。Linux内核v. 2.2.x并没有为这些空间的数据共享提供任何机制,但v. 2.4.0版本预计会包括kiobuf结构。为解决现有稳定内核的这个缺点,RTLinux包括mbuff驱动程序。该驱动程序可利用vmalloc()分配虚拟内核存储器的已命名存储器区域,它采用的存储器分配和页面锁定技巧跟大多数Linux中bttv帧抓取器(frame-grabber)驱动程序所用的一样。

更具体地说,mbuff一页一页地将虚拟内存锁定到实际的物理内存页面。任何实时或内核任务,或用户进程在任何时间都可访问该存储器。通过将虚拟内存页面锁定到物理内存页面,mbuff可确保所分配的页面永久驻留在物理内存,而且不会发生页面错误。换言之,当实时或内核进程访问所分配的存储器时,它可确保VMM不被调用。注意:由于实时任务执行期间实时Linux冻结标准内核的执行,任何对VMM的调用都会引起系统暂停。如果它要访问并不位于物理RAM内的虚拟存储页面,那么即使正常的Linux内核驱动程序也会引起系统故障。

由于mbuff是一种Linux驱动程序,其功能可通过设备节点/dev/mbuff实现。该节点可显示几个录入点,其中包括可将内核空间地址映射到用户空间的mmap()。它还可以利用录入点ioctl()来控制。然而,并不需要复杂的结构及直接调用ioctl。相反,mbuff可为ioctl ()调用提供一个包裹,而且仅仅调用两个简单的功能即可配置和释放共享的存储缓冲器。

当然,不能从实时任务调用mbuff驱动程序,因为该驱动程序所调用的虚拟存储器分配功能本身是不确定性操作。分配共享存储器所需的时间依赖于主系统的存储器容量以及CPU 速度、磁盘驱动器性能和存储器分配的现有状态。因此,只能从模块的Linux内核一侧来分配共享存储器,比如从init_module()或一个ioctl()请求开始。

那么,一个共享缓冲器到底能分配多少存储器呢?如果不是任务繁重的服务器或图形应用,建议至少为Linux保留8MB存储空间。为了获得优化的配置,可在限制存储器大小的同时测量实时应用程序的性能,以确定需要多少存储空间。

列表2给出了如何从实时任务和用户进程方面访问共享的存储器。内核模块和用户任务采用同样的功能集。当然,要想使用insmod mbuff.o,还必须将之置于Linux内核中。例如,mbuff_alloc(“buf_name”, size)可将符号名buf_name分配给一个缓冲器,而mbuff_free(“buf_name”, mbuf)可将之释放。

当第一次调用带有符号缓冲器名的mbuff_alloc()时,mbuff执行实际的存储器分配。而当从内核模块或用户进程再次调用该功能时,它只是简单地增加使用数(usage count)及将指针返回现有的缓冲器。每次调用mbuff_free()都会减少使用数,直至为零,这时mbuff 就去分配带符号名的缓冲器。这种方法从多个内核模块和用户进程获得一个指向同一共享缓冲器的指针,从而解决了问题。它还可确保共享缓冲器一直有效,直到最后的应用程序释放它。请注意,是实时内核还是用户进程执行实际的buf1配置依赖于谁先获得控制权。

还有一个“笨”方法可在实时应用程序、内核模块和用户应用程序间共享存储器。对于嵌入式应用,该方法还是可以接受的。例如,如果PC带有128MB RAM,可将线搜索路径=“mem=120m”添加进lilo.conf文件(列表3)。当启动带有Linux内核和RTLinux 2.3的系统时,Linux仅使用120MB内存。OS也不用剩下的8MB内存(物理地址为0x7F00000到0x7FFFFFF),而是留给在OS下运行的各种任务共享。要想从用户进程获取存储器地址并访问预留的存储器,必须用O_RDWR访问模式来打开/dev/mem驱动程序,然后利用mmap()保留存储器(列表4)。而从实时模块或内核驱动程序一侧进行,则必须使用ioremap(0x7F00000, 0x100000)才能获取这8MB (0x100000字节)预留内存。

这种方法有利有弊。既不能通过预留内存的所有权,也不能通过读或写来获取控制权。正确地配置和释放大量内存的机制尚未问世。另外,无论实时进程是否需要,该内存都不能为Linux所用。

也许存储器共享笨方法的唯一适用场合是专为特定应用而定制的小型嵌入式系统,因为此时可为小型化而放弃使用mbuff驱动程序。

对于中国工程师来说,利用实时Linux开发嵌入式应用程序是他们面临的困难之一,本文以RTLinux为例,并结合最为业界关注的是RTAI进行讨论,尽管这两种实现方式在句法细节上存在差异,但工作方式基本一样,因此所讲述的内容对两者都适用。

在实时任务与用户进程相互通信的过程中,有些实时应用程序无需任何用户界面即可在后台平静地运行,然而,越来越多的实时应用程序确实需要一个用户界面及其它系统功能,如文件操作或联网等,所有这些功能都必须在用户空间内运行。问题是,用户空间操作是非确定性的,而且与实时操作不兼容。

幸运的是实时Linux具有一种可在时间上减弱实时与非实时操作的机制,这种机制表现为一种称为实时FIFO的驱动程序。当insmod将rtl_fifo.o驱动程序插入Linux内核时,该驱动程序将自己注册为RTLinux的一部分,并成为Linux驱动程序。一旦插入Linux内核,用户空间进程和实时任务都可使用实时Linux FIFO。

在深入探讨实时FIFO的细节之前,还要回顾一下实时应用程序结构的某些部分(图1)。有效的嵌入式应用程序设计方法是将实时部分与固有的非实时功能分离开来(表1)。如果应用程序的任一部分,如用户界面、图形、数据库或网络仅需软实时性能,最好是将该部分写入用户空间。然后,仅将必须满足时序要求的那部分写成实时任务。

注意,RTLinux(PSC,便携式信号编码)和RTAI(LXRT,Linux实时扩展)的最新版本已采用了一种可在用户空间执行软和硬实时任务的方法。

任何硬实时任务都是在RTLinux的控制下运行的,该任务一般可执行周期性任务、处理中断并与I/O设备驱动程序通信,以采集或输出模拟和数字信息。当实时任务需要告诉用户进程有一个事件将发生时,它便将这一消息送给实时FIFO。每一个FIFO都是在一个方向上传送数据:从实时任务到用户空间,或反之。因此,双向通信需要使用两个FIFO。任何读出或写入实时任务一侧的操作都是非模块操作,因此rtf_put()和rtf_get()都立即返回,而不管FIFO状态是什么。

从应用程序一侧来看,FIFO就像一个常规文件。缺省情况下,RTLinux安装程序将在/dev

目录下创建6?个实时FIFO节点;如果需要,还必须自己创建新的节点。例如,要创建/dev/rtf80,需采用如下命令:

=========================

mknod c 150 80;

chmod 0666 /dev/rtf80

=========================

其中,150是实时FIFO主数,而80是rtf80的次数。

从用户进程的角度看,实时FIFO可执行标准文件操作。从实时任务来看,FIFO有两种通信方式:直接调用RTLinux FIFO功能,或将FIFO作为一个RTLinux设备驱动程序,并使用open()、close()、read()和write()操作。要想将FIFO作为一个设备驱动程序,就必须将rtl_conf.h中的配置变量CONFIG_RTL_POSIX_IO设定为1。

rtf_create_handler()可设置处理程序功能。每次Linux进程读或写FIFO时,rtl_fifo 驱动程序都要调用该处理程序。应注意的是,该处理程序驻留在Linux内核,因此当Linux 需要调用时,从该处理程序进行任何内核调用都是安全的。从该处理程序到实时任务间的最好通信方法是使用旗语或线程同步功能。最后,FIFO驱动程序还必须对内核存储器进行配置。因此,实时线程内的rtf_create()不应调用。相反,可调用init_module()中的rtf_create ()功能及cleanup_module()中的rtf_destroy()功能。

例如,列表1给出了一个采用两个FIFO的简单数据采集应用程序的实时部分。两个FIFO 都是在init_module()创建,并赋予minor numbers 为1和2。在调用rtf_create(minor,size)之前,该程序在已创建该FIFO的情况下调用rtf_destroy(minor)。这种情况就是另一个模块在开发过程中未被调用。然后,调用rtf_create_handler(ID, &pd_do_aout)以注册带该实时FIFO的数据采集模拟输出功能pd_do_aout()。注意,创建实时线程pp_thread_ep()是因为它是周期性的,其间隔为1/100秒。

每次周期性线程得到系统控制权后,它就调用rtf_put(ID,dataptr,size)以便将数据插入minor number为2的FIFO。Linux进程打开/dev/rtf2,从实时FIFO中读取并显示所采集的数据。该进程还打开/dev/rtf1,将数据写入其它实时FIFO。当用户移动屏幕滑动器以改变模拟输出电压时,进程就向该FIFO写入一个新的值。RTLinux便调用pd_do_aout()处理程序,随后pd_do_aout()利用rtf_get()从FIFO获得值,并调用实际的硬件驱动程序以设置模拟输出的电压。可以看到,实时任务和用户进程是异步使用FIFO的。

任务间的存储器共享

FIFO为用户进程和实时任务的连接提供了一种方便的机制,但将它们作为消息队列更合适。比如,一个实时线程可利用FIFO记录测试结果,然后用户进程就可读取该结果,并将之存入数据库文件。

许多数据采集应用程序涉及到内核及用户空间之间的大量数据。Linux内核v. 2.2.x并没有为这些空间的数据共享提供任何机制,但v. 2.4.0版本预计会包括kiobuf结构。为解决现有稳定内核的这个缺点,RTLinux包括mbuff驱动程序。该驱动程序可利用vmalloc()分配虚拟内核存储器的已命名存储器区域,它采用的存储器分配和页面锁定技巧跟大多数Linux中bttv帧抓取器(frame-grabber)驱动程序所用的一样。

更具体地说,mbuff一页一页地将虚拟内存锁定到实际的物理内存页面。任何实时或内核任务,或用户进程在任何时间都可访问该存储器。通过将虚拟内存页面锁定到物理内存页面,mbuff可确保所分配的页面永久驻留在物理内存,而且不会发生页面错误。换言之,当实时或内核进程访问所分配的存储器时,它可确保VMM不被调用。注意:由于实时任务执行期间实时Linux冻结标准内核的执行,任何对VMM的调用都会引起系统暂停。如果它要访问

并不位于物理RAM内的虚拟存储页面,那么即使正常的Linux内核驱动程序也会引起系统故障。

由于mbuff是一种Linux驱动程序,其功能可通过设备节点/dev/mbuff实现。该节点可显示几个录入点,其中包括可将内核空间地址映射到用户空间的mmap()。它还可以利用录入点ioctl()来控制。然而,并不需要复杂的结构及直接调用ioctl。相反,mbuff可为ioctl ()调用提供一个包裹,而且仅仅调用两个简单的功能即可配置和释放共享的存储缓冲器。

当然,不能从实时任务调用mbuff驱动程序,因为该驱动程序所调用的虚拟存储器分配功能本身是不确定性操作。分配共享存储器所需的时间依赖于主系统的存储器容量以及CPU 速度、磁盘驱动器性能和存储器分配的现有状态。因此,只能从模块的Linux内核一侧来分配共享存储器,比如从init_module()或一个ioctl()请求开始。

那么,一个共享缓冲器到底能分配多少存储器呢?如果不是任务繁重的服务器或图形应用,建议至少为Linux保留8MB存储空间。为了获得优化的配置,可在限制存储器大小的同时测量实时应用程序的性能,以确定需要多少存储空间。

列表2给出了如何从实时任务和用户进程方面访问共享的存储器。内核模块和用户任务采用同样的功能集。当然,要想使用insmod mbuff.o,还必须将之置于Linux内核中。例如,mbuff_alloc(“buf_name”, size)可将符号名buf_name分配给一个缓冲器,而mbuff_free(“buf_name”, mbuf)可将之释放。

当第一次调用带有符号缓冲器名的mbuff_alloc()时,mbuff执行实际的存储器分配。而当从内核模块或用户进程再次调用该功能时,它只是简单地增加使用数(usage count)及将指针返回现有的缓冲器。每次调用mbuff_free()都会减少使用数,直至为零,这时mbuff 就去分配带符号名的缓冲器。这种方法从多个内核模块和用户进程获得一个指向同一共享缓冲器的指针,从而解决了问题。它还可确保共享缓冲器一直有效,直到最后的应用程序释放它。请注意,是实时内核还是用户进程执行实际的buf1配置依赖于谁先获得控制权。

还有一个“笨”方法可在实时应用程序、内核模块和用户应用程序间共享存储器。对于嵌入式应用,该方法还是可以接受的。例如,如果PC带有128MB RAM,可将线搜索路径=“mem=120m”添加进lilo.conf文件(列表3)。当启动带有Linux内核和RTLinux 2.3的系统时,Linux仅使用120MB内存。OS也不用剩下的8MB内存(物理地址为0x7F00000到0x7FFFFFF),而是留给在OS下运行的各种任务共享。要想从用户进程获取存储器地址并访问预留的存储器,必须用O_RDWR访问模式来打开/dev/mem驱动程序,然后利用mmap()保留存储器(列表4)。而从实时模块或内核驱动程序一侧进行,则必须使用ioremap(0x7F00000, 0x100000)才能获取这8MB (0x100000字节)预留内存。

这种方法有利有弊。既不能通过预留内存的所有权,也不能通过读或写来获取控制权。正确地配置和释放大量内存的机制尚未问世。另外,无论实时进程是否需要,该内存都不能为Linux所用。

也许存储器共享笨方法的唯一适用场合是专为特定应用而定制的小型嵌入式系统,因为此时可为小型化而放弃使用mbuff驱动程序。

中断

RTLinux有两种中断:硬中断和软中断。软中断就是常规Linux内核中断,它的优点在于可无限制地使用Linux内核调用。这类中断作为硬中断处理的第二部分还是相当有用的(由

手机震动,来一条微信消息,他说:“我开好房间了,等你!他们都说你技术好,我想试试真假。真的,我平时对你也不错吧,你可不能让我干等着呀。”

她回:“那好吧,你先等我,我在家里,先洗个澡,换身衣服吧。”

半个小时后,她问:“你在哪里开房?”

“欢乐斗地主,电信一区,12号房间,不见不散哦。”

“给老娘滚!”

当然,以上是个笑话。不过,近日成都一家燃气公司也发生了一件类似的事情,董事长在微信里发了一个六十块钱的红包,三名员工一时手痒,按耐不住诱惑,结果伸手一抢纷纷中招:工作时间玩手机,罚款五百!

在面对记者采访时,董事长表示:“我为了了解大家的思想动态,所以加入了员工的微信群里。”

贵董事长显然忘记了,微信是一款私人社交APP,主要用于朋友间的情感交流,如果谈工作,我们有OA或IMO等专门的办公协作软件。

如果公司实在不成气候,一时没有使用这样的专业应用程序,也应当提前与员工约定,公司把QQ或者微信当做办公交流的专用软件。

没有事先的约定,董事长从微信里冒出来,就是以“朋友”的身份,而非“老板”的身份。朋友发红包,抢还是不抢呢?朋友上班抢红包,罚还是不罚呢?

显然,天真的员工把董事长当做了朋友,所以抢了红包,而老谋深算的董事长没有把员工当做朋友,所以罚了员工。

试探是一把双刃剑,你在试探别人的时候,往往先暴露了自己

然而,朋友圈里的试探之风经久不衰。

最常见的试探:“清清吧,不用回。试试吧,复制我发的消息,找到微信里的设置,通用,群发助手,全选,粘贴复制的信息发送就行,谁的发送失败了,就是把你拉黑了,你再扔掉那些尸体就OK啦!”

发出这种试探信息的人,骨子里肯定极端自卑,而且平时很可能不大受待见,要不怎么老怀疑自己被朋友删了呢?像马云,我猜他一定不会纠结于自己是不是被微信好友给删了。

我一般收到这样的消息,会当下把对方拉黑。既然你连这点做人的底气都没有,咱俩之间的友谊连这点信任的基础都没有,我还有必要把你保留在我的朋友圈里吗?

试探朋友关系的升级版,是在朋友圈求助。“临时急用,不多,就两千,哪位朋友方便的话请来电告诉我,事情万分紧急,不挨着问了,谢谢!”

看到这样的信息,是朋友的自然要赶紧打个电话,电话接通那边却是云淡风轻,“没事儿,我就试试。”你丫小学没毕业吧,狼来了的故事听过没?下次你再说有急事,我可保不准是真是假,到时候看我帮不帮你。还有,刚才急着打电话,晾了个好几亿的大单,你赔不赔?你当我像你这么闲呢!!

还有一种另类的试探,是从网上狂下美女图片,把自己的朋友圈打扮的花枝招展,然后换个昵称,换张头像,给自己的老公来一句:“帅哥,约吗?”

如果老公回一个心花怒放的表情,得咧,回去跪搓衣板吧。小公主碎了一地的玻璃心,一时半会儿是哄不好了。要是老公如柳下惠般一本正经,事情就这样完美收工了吗?不,她会继续下载更妖艳更动人的图片,直到有一天老公随口地问一句:“请问多少钱一晚?”

男人记住,女人试探的时候,往往心里已经有了预设的结果,预设的结果没有出现,那就是自己试探的还不够。带着一种不见黄河不死心,不见棺材不落泪的执着,女人生生把幸福推向远方。

女人,试想一下,假如你是一个男人,遇见一个才貌双全不求名利,一心只想倒贴给你的凡间仙子,难道你不会动心?

试探人性的弱点,只会暴露自己的无知。

而这样的试探,有百害而无一利,却有很多无知的朋友乐此不疲。

所以说,如果你缺乏安全感,不知道你的朋友是否把你当朋友,也不知道你的爱人是否把你当爱人,那你不妨多学习,多打扮,充实内心,提升自己。记住,你若盛开,蝴蝶自来,无味的试探,只会使你化身荆棘,刺痛别人,刺伤自己!

生活有压力,经济有压力,学业有压力,晋升有压力,人际关系有压力,情感世界有压力,婚姻也有压力……人们的交谈中,无不涉及林林总总的压力。压力像汽油桶被打翻,弥散到现代生活的各个领域,散发着浓烈的气味,我们躲不胜躲,防不胜防,它不定在哪个瞬间就燃起火焰。

其实,适当的压力是保持活性的重要条件。

如果空气没有了压力,我们的呼吸就会衰竭;

如果血液没有了压力,我们的四肢就会瘫痪;

如果水管子没有了压力,那结果是让任何一个住在高层楼房的人都噤若寒蝉的,你将失去可饮可用的清洁水。

20世纪的石油英雄“王铁人”也说过,“井无压力不出油,人无压力不进步”.

只是这压力须适度。比如冬日里柔柔的阳光照在身上,这是一种轻松的压力,让我们温暖和振奋。设想这压力增加十倍,在吐鲁番酷热的夏季,大伙儿只有躲到地窖里才能过活。假如这压力继续增加,到了百倍千倍,结果就是人们成了一堆焦炭了。

现代人常常陷于压力构建的如焚困境之中。也许是某一方面的压力过强,也许是多方面的压力综合在一起。如是后者,单独某一方面的压力尚可容忍,但积少成多、日积月累,细微的压力堆积起来就成了如山的重负。金属都有疲劳的时候,遑论血肉之躯?如不减压,真怕有一天成了齑粉。

如果你因压力忙到无力自拔,忙到昏天黑地,忘记了自己的生日和家人的聚会,忘掉了自己如此辛辛苦苦究竟是为了什么,如果你想改变,就试着了解压力吧。寻找压力的种种成因,为扑朔迷离、捉摸不定的压力画像,澄清了我们对压力的迷惘之处,让折磨我们的压力毒蛇从林莽之中现形,让我们对压力的全貌和运转的轨迹有较为详尽的了解。中国的兵法上有句古话,叫“知己知彼,百战不殆”,当你认识到了你所承受的压力的强度和种类,在某种程度上你就已经钉住了压力毒蛇的“七寸”.

明白了压力的起承转合,找到了适合自己的减压方式之后,你的呼吸就会轻松一点,胸中的块垒也会松动出些许的空隙。坚持下去,持之以恒,你就会一寸寸地脱离沉重的压力,把自己成功地拔出来。

嵌入式Linux应用程序设计试题

嵌入式Linux应用程序设计(试题) 1、嵌入式linux操作系统的特点(多选) ABCDE A、低廉性 B、广泛性 C、可移植性好 D、良好的网络支持 E、实时性好 2、Linux的基本思想有两点:A、一切都是文件;B、每个软件都有确定的用途。 3、嵌入式Linux系统构成:嵌入式微处理器,外围硬件设备,嵌入式操作系统,用户应用程序。 4、硬盘分区一般分为:主分区,扩展分区,逻辑分区,交换分区 5、主分区和扩展分区的最大的区别:C A、大小不一样 B、挂载点不一样 C、主分区的作用就是用来进行启动操作系统的,因此引导程序都应该存放在主分区上。 D、主分区在硬盘物理位置的最前面 6、Linux分区类型默认的是:C A. vfat B. ext2/ext3 C. swap D. dos 7、如何从当前系统中卸载一个已装载的文件系统 A A. umount [挂载点目录] B. dismount C. mount –u [挂载点目录] D. 从 /etc/fstab 中删除这个文件系统项 8、用户切换指令是: A A、su B、sudo C、useradd D、userdel 9、查看当前系统中的进程指令 A A、ps B、kill C、cat D、man 10、下面杀死一个ID号为9号的进程的操作正确的是 C A、ps -ef B、kill 9 C、kill -9 9 D、rm 9 11、使用重定向来把ls输出保存到文件test.txt中:A A、ls > test.txt B、ls < test.txt C、ls | test.txt D、ls | grep test.txt 12、使用重定向来把test.txt文件中内容输出:B A、more > test.txt B、more < test.txt C、more | test.txt D、more | grep test.txt 13、解压文件tar.tar.gz:C A、tar -zxvf tar.tar.gz B、tar -jxvf tar.tar.gz C、tar -cxvf tar.tar.gz D、tar -jvf tar.tar.gz 14、把目录/aaa内文件及目录的压缩到文件tar.tar.gz:D A、tar -zxvf tar.tar.gz /aaa B、tar -jxvf tar.tar.gz /aaa C、tar -cxvf tar.tar.gz /aaa D、tar -cvf tar.tar.gz /aaa 15、vi 有几种模式:三种模式 16、vi中的操作指令: :w 保存 :q 退出 :q! 强行退出 :wq 保存退出 :w [filename] 保存到filename文件中 :set nu 显示行号,设定之后,会在每一行的前面显示对应行号

(完整word版)嵌入式系统设计与应用

嵌入式系统设计与应用 本文由kenneth67贡献 ppt文档可能在W AP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 课程名称:课程名称:嵌入式系统设计与应用 总学时:其中讲课36学时,上机实践环节12 36学时12学时总学时:其中讲课36学时,上机实践环节12学时教材:嵌入式系统设计教程》教材:《嵌入式系统设计教程》电子工业出版社马洪连参考书:参考书:1、《嵌入式系统开发与应用》北航出版社、田泽编著. 嵌入式系统开发与应用》北航出版社、田泽编著. 2、《ARM体系结构与编程》清华大学出版社杜春雷编著ARM体系结构与编程体系结构与编程》嵌入式系统设计与实例开发—ARM ARM与C/OS3、《嵌入式系统设计与实例开发ARM与μC/OS-Ⅱ》清华大学出版社王田苗、魏洪兴编著清华大学出版社王田苗、ARM嵌入式微处理器体系结构嵌入式微处理器体系结构》4、《ARM嵌入式微处理器体系结构》北航出版社、马忠梅等著. 北航出版社、马忠梅等著. 张石.ARM嵌入式系统教程嵌入式系统教程》5、张石.《ARM嵌入式系统教程》.机械工业出版2008年社.2008年9月 1 课程内容 绪论:绪论: 1)学习嵌入式系统的意义2)高校人才嵌入式培养情况嵌入式系统设计(实验课)3)嵌入式系统设计(实验课)内容安排 第1章嵌入式系统概况 1.1 嵌入式系统的定义1.2 嵌入式系统的应用领域及发展趋势1.3 嵌入式系统组成简介 第2章嵌入式系统的基本知识 2.1 2.2 2.3 嵌入式系统的硬件基础嵌入式系统的软件基础ARM微处理器的指令系统和程序设计ARM微处理器的指令系统和程序设计 2 第3章 3.1 3.2 3.3 基于ARM架构的嵌入式微处理器基于ARM架构的嵌入式微处理器ARM 概述嵌入式微处理器的组成常用的三种ARM ARM微处理器介绍常用的三种ARM 微处理器介绍 第4章 4.1 4.2 4.3 4.4 4.5 4.6 嵌入式系统设计 概述嵌入式系统的硬件设计嵌入式系统接口设计嵌入式系统人机交互设备接口嵌入式系统的总线接口和网络接口设计嵌入式系统中常用的无线通信技术 3 第5章嵌入式系统开发环境与相关开发技术 5.1 5.2 5.3 5.4 5.5 6.1 6.2 6.3 6.4 概述嵌入式系统的开发工具嵌入式系统调试技术嵌入式系统开发经验嵌入式系统的Bootloader Bootloader技术嵌入式系统的Bootloader技术μC/OS-II操作系统概述C/OS-II操作系统概述ADS开发环境ARM ADS开发环境C/OS-II操作系统在ARM系统中的移植操作系统在ARM μC/OS-II操作系统在ARM系统

ARM嵌入式系统开发与应用课后题答案与习题

课后题答案:第一章 1.写出下列英文缩写的英文原文及中文含义。 RAM随机存储器 DRAM动态随机存储器 ROM只读存储器 PROM可编程只读存储器 EPROM可插除可编程只读存储器 CANCAN总线 RTOS实时操作系统 SOPC片上可编程系统 ICE硬件调试器 FI快速终端请求 EEPROM电可插除可编程只读存储器 API应用程序接 DMA直接内存存取 RISC精简指令集计算机 SPI串行万维指令 MMU存储管理单元 UART异步接受发送装置 ARM先进RISC存储器 SWI软件终端指令 2、什么是嵌入式系统? P3 嵌入式系统是用于检测、控制、辅助、操作机械设备的装置。以应用为中心,一计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗等严格要求的专用计算机系统。 3、是比较嵌入式系统与通用PC的区别。P3 (1)嵌入式系统是专用的计算机系统,而PC是通用的计算机系统。 (2)技术要求不同,通用PC追求高速、海量的数据运算;嵌入式要求对象体系的智能化控制。(3)发展方向不同,PC追求总线速度的不断提升,存储容量不断扩大;嵌入式追求特定对象系统的智能性,嵌入式,专用性。 4、嵌入式体统有哪些部分组成?简单说明各部分的功能与作用 (1)硬件层是整个核心控制模块(由嵌入式微处理器、存储系统、通信模块、人机接口、其他I/O 接口以及电源组成),嵌入式系统的硬件层以嵌入式微处理器为核心,在嵌入式微处理器基础上增加电源电路、时钟电路、和存储器电路(RAM和ROM等),这就构成了一个嵌入式核心控制模块,操作系统和应用程序都可以固化在ROM中。 (2)中间层把系统软件与底层硬件部分隔离,使得系统的底层设备驱动程序与硬件无关。一般包括硬件抽象层(Hardware Abstract Layer,HAL)和板级支持包(Board Support Package,BSP)。(3)软件层由实时操作系统(Real Time Operating System,RTOS)、文件系统、图形用户接口(Graphical User Interfaces,GUI)、网络组件组成。 (4)功能层是面向被控对象和用户的,当需要用户操作是往往需要提供一个友好的人机界面。 5、什么是可编程片上系统?在技术上它有哪些特点? 用可编程逻辑技术把整个系统放到一块硅片上,称作可编程片上系统SOPC,特点如下:实现复杂系统功能的VLSI;采用超深亚微米工艺技术;使用一个以上的嵌入式处理器/DSP;外部可对芯片进行编程;主要采用第三方IP进行设计;足够的片上可编程逻辑资源;具有处理器调试接口和FPGA编程接口;可能包含部分可编程模拟电路;单芯片,低功耗,微封装;微处理器/dsp以ip核的形式方便的嵌入在FPGA中。 6、什么是嵌入式外围设备?简要说明嵌入式外围设备是如何分类的。 嵌入式外围设备,是指在一个嵌入式系统硬件构成中,除了核心控制部件-----嵌入式微处理器/DSP 以外的各种存储器,输入/输出接口、人机接口的显示器/键盘、串行通信接口等。根据外围设备的功能可分为以下五类:存储器类型;通信接口;输入/输出设备;设备扩展接口;电源及辅助设备。 7、.简述嵌入式系统软件的组成和功能? 组成:应用层,OS层,BSP层 11、什么是软硬件协同设计?他最大的特点是什么?嵌入式系统开发为什么可以采用这种方法进行。嵌入式是系统设计时使用一组物理硬件和软件来完成所需功能的过程。系统是指任何由硬件,软件或者两者的结合来构成的功能设备。由于嵌入式系统是一个专用系统,所以在嵌入式产品的设计过程中,软件设计和硬件设计是紧密结合的、相互协调的;特点是:在设计时从系统功能的是先考虑,把实现时的软硬件同时考虑进去,硬件设计包括芯片级“功能定制”设计。这样既可最大限度的利用有效资源,缩短开发周期,又能取得更好的设计效果。 第二章 1、CISC与RISC分别指什么?说明他们各自有什么特点,应用领域和发展趋势如何? 复杂指令集CPU内部为将较复杂的指令译码,也就是指令较长,分成几个微指令去执行,正是如此开发程序比较容易(指令多的缘故),但是由于指令复杂,执行工作效率较差,处理数据速度较慢,PC 中 Pentium的结构都为CISC CPU。 RISC是精简指令集CPU,指令位数较短,内部还有快速处理指令的电路,使得指令的译码与数据的处理较快,所以执行效率比CISC高,不过,必须经过编译程序的处理,才能发挥它的效率,我所知道的IBM的 Power PC为RISC CPU的结构,CISCO 的CPU也是RISC的结构。 RISC与CISC的主要特征对比 比较内容 CISC RISC 指令系统复杂,庞大简单,精简 指令数目一般大于200 一般小于100 指令格式一般大于4 一般小于4 寻址方式一般大于4 一般小于4 指令字长不固定等长 可访存指令不加限制只有LOAD/STORE指令 各种指令使用频率相差很大相差不大

嵌入式系统发展与应用

嵌入式系统发展与应用 引言 不论是日常生活中经常使用的家庭自动化产品、家用电器、手提电话、自动柜员机(ATM),还是各行各业的办公设备、现代化医疗设备、航空电子、计算机网络设备、用于工业自动化和监测的可编程逻辑控制器(PLC),甚至是娱乐设备的固定游戏机和便携式游戏机等都属于嵌入式系统。嵌入式系统始于微型机时代的嵌入式应用,通过将微型机嵌入到一个对象体系中,实现对象系统的智能化控制。随着科技的不断发展,在单片机时代,嵌入式系统以器件形态迅速进入到传统电子技术领域中,以电子技术应用工程师为主体,实现传统电子系统的智能化。而后,随着后PC时代的到来,网络、通信技术得以发展;同时,嵌入式系统软、硬件技术有了很大的提升,形成了基于嵌入式系统软、硬件平台,以网络、通信为主的非嵌入式底层应用的计算机应用模式。 1嵌入式系统的概念与发展 1.1 嵌入式系统的概念 嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等4个部分组成,它是集软硬件于一体的可独立工作的“器件”。它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。 1.2 嵌入式系统发展 纵观嵌入式系统的发展历程,大致经历了以下四个阶段: (1)无操作系统阶段 嵌入式系统最初的应用是基于单片机的,大多以可编程控制器的形式出现,具有监测、伺服、设备指示等功能通常应用于各类工业控制和飞机、导弹等武器装备中,一般没有操作系统的支持,只能通过汇编语言对系统进行直接控制,运行结束后再清除内存。这些装置虽然已经初步具备了嵌入式的应用特点,但仅仅只是使用8位的CPU芯片来执行一些单线程的程序,因此严格地说还谈不上系统的概念。这一阶段嵌入式系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简便、价格低廉,因而曾经在工业控制领域中得到了非常广泛的应用,但却无法满足现今对执行效率、存储容量都有较高要求的信息家电等场合的需要。 (2)简单操作系统阶段 20世纪80年代,随着微电子工艺水平的提高,Ic制造商开始把嵌入式应用中所需要的微处理器、I/O接口、串行接口以及RAM、ROM等部件统统集成到一片VLSI中,制造出面向I /0设计的微控制器,并一举成为嵌入式系统领域中异军突起的新秀。与此同时,嵌入式系统的程序员也开始基于一些简单的操作系统开发嵌入式应用软件,大大缩短了开发周期、提高了开发效率。 (3)实时操作系统阶段 20世纪9O年代,在分布控制、柔性制造、数字化通信和信息家电等巨大需求的牵引下,嵌入式系统进一步飞速发展,而面向实时信号处理算法的DSP产品则向着高速度、高精度、低功耗的方向发展。随着硬件实时性要求的提高,嵌入式系统的软件规模也不断扩大,逐渐形成了实时多任务操作系统(RTOS),并开始成为嵌入式系统的主流。 这一阶段嵌入式系统的主要特点是:操作系统的实时性得到了很大改善,已经能够运行在各种不同类型的微处理器上,具有高度的模块化和扩展性。此时的嵌入式操作系统已经具备了

嵌入式软件开发流程图

嵌入式软件开发流程 一、嵌入式软件开发流程 1.1 嵌入式系统开发概述 由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图1.1所示。 图1.1 嵌入式系统开发流程图 在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择。往往通过硬件实现会增加产品的成本,但能大大提高产品的性能和可靠性。 再次,开发环境的选择对于嵌入式系统的开发也有很大的影响。这里的开发环境包括嵌入式操作系统的选择以及开发工具的选择等。比如,对开发成本和进度限制较大的产品可以选择嵌入式Linux,对实时性要求非常高的产品可以选择Vxworks等。

1.2 嵌入式软件开发概述 嵌入式软件开发总体流程为图4.15中“软件设计实现”部分所示,它同通用计算机软件开发一样,分为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。其中嵌入式软件需求分析与硬件的需求分析合二为一,故没有分开画出。 由于在嵌入式软件开发的工具非常多,为了更好地帮助读者选择开发工具,下面首先对嵌入式软件开发过程中所使用的工具做一简单归纳。 嵌入式软件的开发工具根据不同的开发过程而划分,比如在需求分析阶段,可以选择IBM的Rational Rose等软件,而在程序开发阶段可以采用CodeWarrior(下面要介绍的ADS 的一个工具)等,在调试阶段所用的Multi-ICE等。同时,不同的嵌入式操作系统往往会有配套的开发工具,比如Vxworks有集成开发环境Tornado,WindowsCE的集成开发环境WindowsCE Platform等。此外,不同的处理器可能还有对应的开发工具,比如ARM的常用集成开发工具ADS、IAR和RealView等。在这里,大多数软件都有比较高的使用费用,但也可以大大加快产品的开发进度,用户可以根据需求自行选择。图4.16是嵌入式开发的不同阶段的常用软件。 图1.2 嵌入式开发不同阶段的常用软件 嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分,其中又可以分为编译和调试两部分,下面分别对这两部分进行讲解。 1.交叉编译 嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在第3章中已经提到,编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。嵌入式系统交叉编译环境如图4.17所示。

嵌入式系统开发与应用教程 期末考试

一、选择题 1、ADD R0,R1,#3属于(A)寻址方式。 A. 立即寻址 B. 多寄存器寻址 C. 寄存器直接寻址 D. 相对寻址 2、GET伪指令的含义是( A) A. 包含一个外部文件 B. 定义程序的入口 C. 定义一个宏 D. 声明一个变量 3、存储一个32位数0x876165到2000H~2003H四个字节单元中,若以小端模式存储,则2000H存储单元的内容为( C)。 A、0x00 B、0x87 C、0x65 D、0x61 4、μCOS-II操作系统不属于( C)。 A、RTOS B、占先式实时操作系统 C、非占先式实时操作系统 D、嵌入式实时操作系统 5、若R1=2000H,(2000H)=0x86,(2008H)=0x39,则执行指令LDR R0,[R1,#8]!后R0的值为(D )。 A. 0x2000 B. 0x86 C. 0x2008 D. 0x39 6、寄存器R13除了可以做通用寄存器外,还可以做(C )。 A、程序计数器 B、链接寄存器 C、栈指针寄存器 D、基址寄存器 7、FIQ中断的入口地址是( A)。 A、0x0000001C B、0x00000008 C、0x00000018 D、0x00000014 8、ARM指令集和Thumb指令集分别是(D )位的。 A. 8位,16位 B. 16位,32位 C. 16位,16位 D. 32位,16位 9、ARM寄存器组有(D )个寄存器。 A、7 B、32 C、6 D、37 10、若R1=2000H,(2000H)=0x28,(2008H)=0x87,则执行指令LDR R0,[R1,#8]!后R0的值为(D )。 A. 0x2000 B. 0x28 C. 0x2008 1.和PC机系统相比,下列哪个不是嵌入式系统独具的特点( C ) A、系统内核小 B、专用性强 C、可执行多任务 D、系统精简 2.UCOS-II操作系统属于( B ) A、顺序执行系统 B、占先式实时操作系统 C、非占先式实时操作系统 D、分时操作系统 3.ARM公司是专门从事( A ) A、基于RISC技术芯片设计开发 B、ARM芯片生产 C、软件设计 D、ARM芯片销售 4.ARM9系列微处理器是( C ) A、三级流水线结构 B、四级流水线结构 C、五级流水线结构 D、六级流水线结构 5.在所有工作模式下,( A )都指向同一个物理寄存器,即各模式共享 A、R0-R7 B、R0-R12 C、R8-R12 D、R13,R14 6.当异常发生时,寄存器( A )用于保存CPSR的当前值,从异常退出时则可由它来恢复CPSR. A、SPSR B、R13 C、R14 D、R15 7.能实现把立即数0X3FF5000保存在R0中的指令是( A ) A、LDR R0, = 0X3FF5000 B、LDR R0, 0X3FF5000 C、MOV R0, 0X3FF5000 D、MOV R0, =0X3FF5000

嵌入式系统原理与应用习题解析

嵌入式系统原理与应用 习题解析 文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]

1.8 练习题P14 1.选择题 (1)A 说明:嵌入式系统的发展趋势表现在以下几方面: 1.产品种类不断丰富,应用范围不断普及 2.产品性能不断提高 3.产品功耗不断降低,体积不断缩小 4.网络化、智能化程度不断提高 5.软件成为影响价格的主要因素 (2)D 说明:常见的嵌入式操作系统: VxWorks,Windows CE、uC/OS-II和嵌入式Linux。 (3)A 说明:VxWorks是美国WindRiver公司于1983年开发的一种32位嵌入式实时操作系统。 2.填空题 (1)嵌入式计算机 (2)微处理器外围电路外部设备 (3)板级支持包实时操作系统应用编程接口应用程序 (4)嵌入式处理器微控制器数字信号处理器 3.简答题 (1)简述嵌入式系统的定义和特点

答:定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。 特点:专用性强、实时性好、可裁剪性好、可靠性高和功耗低等。(2)简述计算机系统的发展历程 第一阶段大致在20世纪70年代前后,可以看成是嵌入式系统的萌芽阶段; 第二阶段是以嵌入式微处理器为基础,以简单操作系统为核心的嵌入式系统; 第三阶段是以嵌入式操作系统为标志的嵌入式系统,也是嵌入式应用开始普及的阶段; 第四阶段是以基于Internet为标志的嵌入式系统,这是一个正在迅速发展的阶段。 (3)简述MCU和DSP的区别 MCU是微控制器,DSP是数字信号处理器。 MCU相当于小型的电脑,内部集成的CPU、ROM、RAM、I/O总线,所以集成度高是它的特点。 DSP是专用的信息处理器,内部的程序是对不同的机器和环境进行特别优化,所以处理速度是最快的。 2.4 练习题 1. 填空题 (1) ARM7 ARM9 ARM9E ARM10E ARM11

嵌入式行业的就业前景和发展方向

嵌入式行业的就业前景和发展方向 嵌入式行业正以其应用领域广、人才需求大、就业薪资高、行业前景好等众多优势,获得越来越多IT开发人员的关注,大批研发工程师开始向其靠拢。以嵌入式领域的3G为例,目前我国的3G核心人才不足万人,基本上都受雇在几个运营商和设备厂商。市场急需的嵌入式开发人才以及3G时代所需的增值业务开发人才非常抢手。 权威部门统计,我国嵌入式人才缺口每年50万人左右,其中嵌入式15万,移动增值可能35万。随着车载电子应用、手持娱乐终端在国内的普及,今年以来国内外企业纷纷加大了对嵌入式业务的投入,相关人才需求也逐渐加大。 今年3月,据英才网指数统计显示,计算机/信息服务共提供82069个空缺职位,占当月所有空缺职位总数的30.37%,排名第一。 根据前程无忧网发布的调查报告,嵌入式软件开发是未来几年最热门和最受欢迎的职业之一,具有10年工作经验的高级嵌入式工程师年薪在30万元左右。即使是初级的嵌入式软件开发人员,平均月薪也达到了4000—6500元,中高级的嵌入式工程师月薪平均超过10000元。 嵌入式软件开发就业前景: 一:嵌入式软件开发可谓是软件项目开发的掌舵者,一名优秀的嵌入式软件开发应当具有较强的逻辑思维能力,对于技术的发展有敏锐的嗅觉。 二:嵌入式软件开发虽然要求技术全面,但无须偏执于门门技术都精通,任何嵌入式软件开发都有自己的技术特长和偏向,对于自己手中的技术,嵌入式软件开发可有精通-掌握-熟悉-了解之分,根据工作需要和职业发展的具体情况来划分。 三:据统计,嵌入式软件开发的人才需求一直保持全年行业需求的最高,月月居十大热门行业榜首,嵌入式软件开发招聘始终维持在15%-20%左右的市场份额。从行业人才需求看,嵌入式软件开发技术人才水涨船高,软件人才需求最为火爆。

嵌入式系统设计教程(第2版)简答题答案.pdf

第一章嵌入式系统概论 1.嵌入式系统的定义是什么? 答:以应用为中心,以计算机技术为基础,硬件、软件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 2.简述嵌入式系统的主要特点。 答:(1)功耗低、体积小、具有专用性 (2)实时性强、系统内核小 (3)创新性和高可靠性 (4)高效率的设计 (5)需要开发环境和调试工具 3. 嵌入式系统一般可以应用到那些领域? 答:嵌入式系统可以应用在工业控制、交通管理、信息家电、家庭智能管理系统、网络及电子商务、环境监测和机器人等方面。 4. 简述嵌入式系统的发展趋势 答:(1)嵌入式应用的开发需要强大的开发工具和操作系统的支持 (2)连网成为必然趋势 (3)精简系统内核、算法,设备实现小尺寸、微功耗和低成本 (4)提供精巧的多媒体人机界面 (5)嵌入式软件开发走向标准化 5.嵌入式系统基本架构主要包括那几部分? 答:嵌入式系统的组织架构是由嵌入式处理器、存储器等硬件、嵌入式系统软件和嵌入式应用软件组成。嵌入式系统一般由硬件系统和软件系统两大部分组成,其中,硬件系统包括嵌入式处理器、存储器、I/O系统和配置必要的外围接口部件;软件系统包括操作系统和应用软件。 6.嵌入式操作系统按实时性分为几种类型,各自特点是什么? 答:(1)具有强实时特点的嵌入式操作系统。 (2)具有弱实时特点的嵌入式操作系统。 (3)没有实时特点的嵌入式操作系统。 第二章嵌入式系统的基础知识 1.嵌入式系统体系结构有哪两种基本形式?各自特点是什么? 答:冯诺依曼体系和哈佛体系。冯诺依曼体系结构的特点之一是系统内部的数据与指令都存储在同一存储器中,其二是典型指令的执行周期包含取指令TF,指令译码TD,执行指令TE,存储TS四部分,目前应用的低端嵌入式处理器。 哈佛体系结构的特点是程序存储器与数据存储器分开,提供了较大的数据存储器带宽,适用于数据信号处理及高速数据处理的计算机。

利用RTLinux开发嵌入式应用程序

利用RTLinux开发嵌入式应用程序 对于中国工程师来说,利用实时Linux开发嵌入式应用程序是他们面临的困难之一,本文以RTLinux为例,并结合最为业界关注的是RTAI进行讨论,尽管这两种实现方式在句法细节上存在差异,但工作方式基本一样,因此所讲述的内容对两者都适用。 在实时任务与用户进程相互通信的过程中,有些实时应用程序无需任何用户界面即可在后台平静地运行,然而,越来越多的实时应用程序确实需要一个用户界面及其它系统功能,如文件操作或联网等,所有这些功能都必须在用户空间内运行。问题是,用户空间操作是非确定性的,而且与实时操作不兼容。 幸运的是实时Linux具有一种可在时间上减弱实时与非实时操作的机制,这种机制表现为一种称为实时FIFO的驱动程序。当insmod将rtl_fifo.o驱动程序插入Linux内核时,该驱动程序将自己注册为RTLinux的一部分,并成为Linux驱动程序。一旦插入Linux内核,用户空间进程和实时任务都可使用实时Linux FIFO。 在深入探讨实时FIFO的细节之前,还要回顾一下实时应用程序结构的某些部分(图1)。有效的嵌入式应用程序设计方法是将实时部分与固有的非实时功能分离开来(表1)。如果应用程序的任一部分,如用户界面、图形、数据库或网络仅需软实时性能,最好是将该部分写入用户空间。然后,仅将必须满足时序要求的那部分写成实时任务。 注意,RTLinux(PSC,便携式信号编码)和RTAI(LXRT,Linux实时扩展)的最新版本已采用了一种可在用户空间执行软和硬实时任务的方法。 任何硬实时任务都是在RTLinux的控制下运行的,该任务一般可执行周期性任务、处理中断并与I/O设备驱动程序通信,以采集或输出模拟和数字信息。当实时任务需要告诉用户进程有一个事件将发生时,它便将这一消息送给实时FIFO。每一个FIFO都是在一个方向上传送数据:从实时任务到用户空间,或反之。因此,双向通信需要使用两个FIFO。任何读出或写入实时任务一侧的操作都是非模块操作,因此rtf_put()和rtf_get()都立即返回,而不管FIFO状态是什么。 从应用程序一侧来看,FIFO就像一个常规文件。缺省情况下,RTLinux安装程序将在/dev 目录下创建6?个实时FIFO节点;如果需要,还必须自己创建新的节点。例如,要创建/dev/rtf80,需采用如下命令: ========================= mknod c 150 80; chmod 0666 /dev/rtf80 ========================= 其中,150是实时FIFO主数,而80是rtf80的次数。 从用户进程的角度看,实时FIFO可执行标准文件操作。从实时任务来看,FIFO有两种通信方式:直接调用RTLinux FIFO功能,或将FIFO作为一个RTLinux设备驱动程序,并使用open()、close()、read()和write()操作。要想将FIFO作为一个设备驱动程序,就必须将rtl_conf.h中的配置变量CONFIG_RTL_POSIX_IO设定为1。 rtf_create_handler()可设置处理程序功能。每次Linux进程读或写FIFO时,rtl_fifo 驱动程序都要调用该处理程序。应注意的是,该处理程序驻留在Linux内核,因此当Linux 需要调用时,从该处理程序进行任何内核调用都是安全的。从该处理程序到实时任务间的最好通信方法是使用旗语或线程同步功能。最后,FIFO驱动程序还必须对内核存储器进行配置。因此,实时线程内的rtf_create()不应调用。相反,可调用init_module()中的rtf_create ()功能及cleanup_module()中的rtf_destroy()功能。

关于嵌入式系统软件的全过程质量保证精

关于嵌入式系统软件的全过程质量保证 质量是产品的生命 当今随着软、硬件技术的发展,嵌入式系统广泛应用于航空航天、国防军事、电子通信等行业,其中软件也越来越复杂。而这些领域应用特点,决定了嵌入式系统往往是高安全、任务关键的系统,软件的微小瑕疵就可能严重威胁到生命和国家的安全、天文数字的巨额财产损失。这就使得保证嵌入式软件的质量和可靠性,变得至关重要。而在这些领域,对产品质量从来就保持着高度的重视,有将“质量视为产品的生命”的传统。这样,相关行业的高层管理人员和开发人员对于软件的质量也逐渐提高了重视程度。近年来,在组织上,建立了完善的软件测试体系;在开发和测试方法上,建立了中国的软件过程成熟度的评价体系GJB5OO0在自动化工具方面,投入了大量的经费和人员在测试设备的开发、购置和建设方面。应该说,软件作为嵌入式产品主要的组成部分之一,对其质量的重视是目前相关行业的一个共识。 IBM Rational多年来在软件工程和质量保证方面积累了丰富的方法和经验。本文依据部分嵌入式开发机构对软件质量保证工作的一些理解,分析相应开发机构工作中可能的问题,并提出以RUP为核心的全过程质量管理的思想和具体的实现方式,提出不同单位的过程改进方法,以一种渐进的方式,从简单的工作开始,逐渐深入地改进组织的软件质量管理水平。 定义质量 对于任何一个组织,定义共同的对质量的理解是重要的第一步。软件开发组织经常按照一种不精确的、概括的质量观念来运转。 在IBM Rational统一过程中,质量定义如下: 满足或超出认定的一组需求; 使用经过认可的评测方法和标准来评估; 使用认定的流程来生产。 在这个定义中,我们首先看需求,IBM Rati onal的软件质量在用户需求方面的定义分为五个方面:易用性、可靠性、性能、可支持和功能。 质量保证,归根结底就是为客户提供更高品质的产品,更好地满足客户的需求。另一方面,这个质量定义中明确指出,质量更体现在软件开发的整个过程和一个标准的评价方式上。 软件开发过程质量就是指为了生成工件而对可接受流程的实施和遵守程度,体现在三个层次: 产品本身和用来生产、组装软件产品的零部件质量; 在软件开发过程的标准化、流程化、自动化程度和团队基本协作平台的效率,各个过程对质量的承诺; 软件产品验收的评测手段应该是被业界广泛认可和接受的方法,所构筑的质量评价标准。 一个软件生产企业的过程质量一般可以用它的软件过程成熟度等级来评估。 RUP全过程质量保证 Rational Unified Process (RUP是一个可以通过Web来使用的软件工程过程。作为软件工业事实上的标准,它回答了我们以下问题:在整个软件开发的各个过程中,谁(角色)应该在什么时候(详细工作流程)做什么(任务)和产生什

基于ARM的嵌入式教学平台的设计与应用

基于ARM的嵌入式教学平台的设计与应用 【摘要】为提高计算机类、电子类及电气控制类技师的技能水平,在技师学院全面开设嵌入式系统的课程以替代传统的8位单片机教学已是大势所趋。对于这种实践性与理论性同等重要的课程,除了讲授课程内容以外,还应该搭建完善的教学实验平台,供学生上机操作,以掌握ARM嵌入式系统的开发和设计技能。 【关键词】嵌入式系统ARM 微处理器S3C44B0X uClinux 内核 引言 嵌入式教学平台从结构上来看主要分为三个部分:底层的硬件平台,包含Boot Loader的操作系统层,以及最上面的应用层――应用程序的设计开发环境。根据嵌入式系统的现状与教学平台的实际需要,提出了既经济又实用的以ARM 加装uClinux基本的系统设计方案。 1 ARM的嵌入式系统研究背景及应用现状 嵌入式系统是以应用为中心、以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可行性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统至今已经有30多年的历史了,嵌入式技术也经历了几个发展阶段。进入20

世纪90年代后,以计算机和软件为核心的数字化技术取得了迅猛的发展,不仅广泛渗透到社会经济、军事、交通、通信等相关行业,而且深入到家电、娱乐等各个领域,兴起了一场数字化技术革命。多媒体技术与internet应用的迅速普及,消费电子、计算机、通信技术一体化趋势明显,嵌入式技术再度成为研究的热点。 2 开设本课程的意义 基于ARM的嵌入式系统应用是如此的广泛,但“嵌入式”却鲜为人知,很多人在使用着嵌入式设备,享受着嵌入式给他们带来的便利和强大的功能时,并不知道嵌入式系统的存在。到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域:工业控制、无线通讯、网络应用、消费类电子产品、成像和安全产品,除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用。因此,研究具有普遍的意义。目前,学校正在开设的传统的8位单片机技术的教学已不能适应学生就业市场的需求。鉴于以上原因,在嵌入式人才极其缺乏的今天,在职业技术学院办好嵌入式系统教学平台,为学生提供良好的学习环境,使其熟练掌握嵌入式系统的研究与开发技术,在提高技师学院学生的就业率并为其自身日后的发展打下良好基础的同时,对提高办学效益也具有重大的意义。因此,在职业技术学院开设基于ARM的嵌入式系统的课程已是大势

嵌入式系统开发及应用

第一讲 对ARM-Cortex系列处理器来说,错误的说法是 D.Cortex-A为汽车电子系列 嵌入式系统分为微控制器与应用处理器两大类,这样表述是否正确?对 微处理器MCU的英文全称为Microcontroller Unit,多媒体应用处理器MAP的英文全称为Multimedia Application Processor,这样说法是否正确?对 简要阐述嵌入式系统的基本含义正确答案:1.嵌入式系统是一种计算机硬件和软件的组合,也许还有机械装置,用于实现一个特定功能。在某些特定情况下,嵌入式系统是一个大系统或产品的一部分。2.从计算机本身角度可将嵌入式系统概括表述为:嵌入式系统,即嵌入式计算机系统,它是不以计算机面目出现的“计算机”,这个计算机系统隐含在各类具体的产品之中,这些产品中,计算机程序起到了重要作用。 5简要阐述嵌入式系统的由来、特点及分类正确答案:由来:嵌入式计算机系统是测控系统对计算机需要而逐步产生的。 特点:嵌入式系统是不单独以通用计算机的面目出现的计算机系统,它的开发需要专用工具和特殊方法,使用MCU设计嵌入式系统,数据与程序空间采用不同存储介质,开发嵌入式系统涉及软件、硬件及应用领域的知识等。 分类:按应用范围简单地把嵌入式系统分为电子系统智能化(微控制器类)和计算机应用延伸(应用处理器)两大类 6简要阐述MCU的基本含义,以及MCU出现前后测控系统设计方法发生的重要变化 正确答案:1:含义:在一块芯片内集成了CPU、存储器、定时器/计数器及多种输入输出(I/O)接口的比较完整的数字处理系统。 2:变化:MCU出现之前,人们必须用模拟电路、数字电路实现测控系统中的大部分计算与控制功能,这样使得控制系统体积庞大,易出故障。 MCU出现以后,测控系统设计方法逐步产生变化,系统中的大部分计算与控制功能由MCU 的软件实现。 第二讲 下面哪一模块可以将数字信号专为模拟信号?B. A/D GPIO即是通用输入输出引脚,MCU可读取该引脚的值,也可以向该引脚写值。对 说说什么是RTOS,你所了解的RTOS有哪些?有什么特点? 正确答案:要点1:实时操作系统要点2:RT-Linux VxWorks MQX 要点3:实时性多任务并发处理 第三讲 下面选项中,哪一项说法是正确的? C语言函数的返回值类型由函数的声明来确定,和return语句中的返回表达式的类型无关。 分析下面程序实现的功能int func(int data) { int count=0; while(data != 0) { data &= data -1;

嵌入式软件开发流程

嵌入式软件的开发流程 嵌入式系统是指用于执行独立功能的专用计算机系统。它由包括微处理器、定时器、微控制器、存储器、传感器等一系列微电子芯片与器件,和嵌入在存储器中的微型操作系统、控制应用软件组成,共同实现诸如实时控制、监视、管理、移动计算、数据处理等各种自动化处理任务。嵌入式系统以应用为中心,以微电子技术、控制技术、计算机技术和通讯技术为基础,强调硬件软件的协同性与整合性,软件与硬件可剪裁,以此满足系统对功能、成本、体积和功耗等要求。最简单的嵌入式系统仅有执行单一功能的控制能力,比如说单片机的应用,在唯一的ROM 中仅有实现单一功能控制程序,无微型操作系统。复杂的嵌入式系统,例如个人数字助理(PDA)、手持电脑(HPC)等,具有与PC几乎一样的功能。实质上与PC的区别仅仅是将微型操作系统与应用软件嵌入在ROM、RAM 和/或FLASH存储器中,而不是存贮于磁盘等载体中。很多复杂的嵌入式系统又是由若干个小型嵌入式系统组成的。 近些年来,随着以计算机技术,通讯技术为主的信息技术的快速发展和Internet 的广泛应用,传统的控制学科正在发生变革,出现了许多新的生长点。伴随而来的一个现象是控制专业的相当多的学生在毕业后进入了计算机,通讯行业,以致有人说学控制没有用,自动化专业可以取消了。这些情况的出现使我们控制教育工作者反复思考,传统的控制应如何拓宽它的领域?控制专业应该教什么才使学生感到有用?流行的嵌入式操作系统可以分为两类:一类是从运行在个人电脑上的操作系统向下移植到嵌入式系统中,形成的嵌入式操作系统,如微软公司的Windows CE及其新版本,SUN公司的Java操作系统,朗讯科技公司的Inferno,嵌入式Linux等。这类系统经过个人电脑或高性能计算机等产品的长期运行考验,技术日趋成熟,其相关的标准和软件开发方式已被用户普遍接受,同时积累了丰富的开发工具和应用软件资源。 另一类是实时操作系统,如WindRiver 公司的VxWorks,ISI 的pSOS,QNX系统软件公司的QNX,ATI 的Nucleus,中国科学院凯思集团的Hopen嵌入式操作系统等,这类产品在操作系统的结构和实现上都针对所面向的应用领域,对实时性高可靠性等进行了精巧的设计,而且提供了独立而完备的系统开发和测试工具,较多地应用在军用产品和工业控制等领域中。Linux 是90年代以来逐渐成熟的一个开放源代码的操作系统。PC机上的Linux 版本在全球数以百万计爱好者的合力开发下,得到了非常迅速的发展。90 年代末uClinux,RTLinux 等相继推出,在嵌入式领域得到了广泛的关注,它拥有大批的程序员和现成的应用程序,是研究开发工作的宝贵资源。 一、嵌入式软件开发流程 1.1 嵌入式系统开发概述 由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图1.1所示。

嵌入式系统软件开发和设计流程复习课程

* 本文由hquwgz贡献 ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 嵌入式系统及应用 第九章嵌入式系统软件的开发 主要内容 嵌入式软件开发工具嵌入式系统开发模式实时软件分析设计方法 第一节嵌入式软件开发工具 嵌入式软件开发工具的分类嵌入式软件的交叉开发环境嵌入式软件实现阶段的开发过程嵌入式软件开发工具的发展趋势 / 嵌入式软件开发工具 “工欲善其事,必先利其器”嵌入式软件开发工具的集成度和可用性将直接关系到嵌入式系统的开发效率。 嵌入式软件开发工具的分类 嵌入式软件开发阶段 嵌入式软件开发工具的分类 根据不同的阶段,嵌入式软件开发工具可以分为: 需求分析工具(Requirement Analysis Tools)软件设计工具(Software Design Tools) 编码、调试工具(Coding Tools) 测试工具(Testing Tools) 配置管理工具、维护工具等 Rational Rose RealTime ObjectGeode Rhapsody TAU Tornado LambdaTOOL pRISM+ Spectra Win CE Platform Builder CodeWarrior Xray Debugger Logiscope CodeTEST … Phases Requirement Analysis Software Design Coding Test Release 主要嵌入式软件开发工具产品 嵌入式软件开发工具的分类 嵌入式软件的开发可以分为以下几种: 编写简单的板级测试软件,主要是辅助硬件的调试开发基本的驱动程序开发特定嵌入式操作系统的驱动程序(板级支持包)开发嵌入式系统软件,如:嵌入式操作系统等开发应用软件 嵌入式软件开发工具的分类 从以上嵌入式软件开发分类来看,嵌入式软件开发工具可以分为: 与嵌入式OS相关的开发工具,用于开发: ` 基于嵌入式OS的应用部分驱动程序等 与嵌入式OS无关的开发工具,用于开发: 基本的驱动程序辅助硬件调试程序系统软件等 嵌入式软件的交叉开发环境 交叉开发环境是指用于嵌入式软件开发的所有工具软件的集合,一般包括: 文本编辑器交叉编译器交叉调试器仿真器下载器等 交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。 运行平台Target ]

嵌入式系统与应用课程教学大纲

《嵌入式系统与应用》课程教学大纲 课程名称:嵌入式系统与应用课程代码:ELEA2028 英文名称:The Principle & Applications of Embedded System 课程性质:专业选修课程学分/学时:2学分/36学时(18+18) 开课学期:第7学期 适用专业:电气工程及其自动化 先修课程:计算机信息技术、C语言程序设计、计算机原理及应用、单片机原理与应用 后续课程:无 开课单位:机电工程学院课程负责人:王富东 大纲执笔人:王家善大纲审核人:余雷 一、课程性质和教学目标(在人才培养中的地位与性质及主要内容,指明学生需掌握知识与能力及其应达到的水平) 课程性质:《嵌入式系统与应用》是电气工程及其自动化专业的一门专业选修课程。本课程针对电气工程及其自动化专业的特点,结合单片机原理、电子技术和电力电子技术,以实际应用为导向,培养学生运用数字控制技术解决电气领域实际工程问题的能力。 教学目标:嵌入式系统是运用单片机技术,实现对各种模拟信号和数字信号的处理,并且结合具体的电路实现对于外部设备的控制。本课程的主要内容包括:介绍嵌入式系统的基本概念,分类与定义、嵌入式系统的应用领域。在此基础上,讲述应用单片机进行若干应用系统的硬件与软件设计的方法和技巧。进一步了解和掌握嵌入式系统的设计方法与具体实现。通过相关功能模块的理论讲授和实验训练,使学生掌握具体功能程序的编写和调试的能力,并通过参数设置与频率测量系统等综合设计实验,使学生了解综合软硬件功能进行系统设计,解决实际工程问题的路径及方法。通过相关应用专题的功能讲解、技术剖析和代码演示,拓展学生的知识,了解和熟悉嵌入式系统技术在专业领域的应用情况,引导学生应用嵌入式系统技术解决与电气专业相关的具体工程问题,培养学生的工程应用能力。 本课程的具体教学目标如下: 1.理解和掌握嵌入式系统实验箱的各个组成部分、功能以及详细的电路设计,为嵌入式系统软件开发做好准备; 2.熟练掌握KEIL uvision2(或者KEIL uvision3等更高的版本)集成开发环境的使用方法,理解各种集成开发环境的参数含义和设置方法。学习和掌握使用C51语言进行应用系统开发的过程与技巧。培养学生综合设计程序框架和整体逻辑结构、解决工程实际应用中具体问题的能力; 3.熟悉单片机测量与控制技术在电气工程领域实际应用的相关知识,通过

相关主题
文本预览
相关文档 最新文档