linux定时器_linux定时器精度
- 时间:
- 浏览:96
- 来源:奥一装修网
对微处理器芯片进行编程和驱动非常困难,但是在嵌入式系统的开发中,实时操作系统可以为您解决许多此类难题。本文的字数:长期阅读:min作者:译者:从通用计算的角度来看,计算机操作系统是提供一组软件的基本功能。操作系统确保计算机硬件可以检测并响应外围设备(例如键盘,屏幕,移动设备,打印机等),并管理内存空间和外部存储空间。尽管一个内核一次只能运行一个线程,但是现代操作系统可以使多个程序看起来同时运行。每个任务执行的时间都很短,而且一系列任务的切换速度如此之快,以至于似乎有多个任务并行进行。所有这些都由称为调度程序的子进程控制。操作系统通常是为计算机准备的,安装在硬盘上,并管理计算机需要执行的任务。为什么实时操作系统对嵌入式系统必不可少?2010年,我还是一名学生,当时正在学习微处理器编程,因此我曾经与嵌入式软件保持联系。因为我的专业是计算机科学,所以我其他课程中的所有程序都可以在上面执行。对微处理器芯片进行编程是完全不同的体验。我一生中第一次看到程序在裸板上运行。即使是现在,当我看到人生中第一个旋转照明程序的成功运行时,仍然记得激动和激动。但是兴奋转瞬即逝。随着为裸板编写的程序越来越多,我遇到了越来越多的问题。这种挫败感并非我独有。直接为芯片编写程序很困难,这也是运行操作系统的重要原因。不幸的是,微处理器芯片(或嵌入式系统)通常没有操作系统。它们只能以“硬编码”方式编程。没有操作系统可以帮助您管理代码的运行。当以“硬编码”方式为处理芯片编写代码时,可能会遇到以下问题:并发虚拟机管理程序在裸板上没有运行现成的守护程序。在嵌入式系统软件中,不可避免的是将所有逻辑功能置于一个巨大的循环中。每个功能可以包含一个或多个延迟功能。运行延迟功能时,它会顺序执行,
因此,正在运行的事务的重置操作只能等待。最终结果是在空循环上浪费了大量处理时间,这对任务并发性非常不利。模块化从软件工程的角度来看,在软件开发过程中经常强调高质量和优雅,但是嵌入式软件的不同模块通常紧密耦合,许多功能集中在一个巨大的模块中,很难将模块划分为多个模块。的周期。设计低耦合软件仅在编程中很麻烦,但是很难为嵌入式系统中的低耦合编写相对大型的软件。同时,如果使用了看门狗定时器,则程序员在调用延迟功能时必须小心。如果延迟时间过长,并且主程序没有及时“喂狗”的机会,则在程序运行期间将触发看门狗。在嵌入式系统软件开发过程中有太多事情要考虑。即使是简单的延迟功能也不能掉以轻心。软件越复杂,就越需要谨慎。想象一下,如何将具有良好时间关系的这一系列交互功能拆分为模块。软件生态学:许多高级软件组件取决于它们所基于的底层操作系统的实现。作为我自己的一个例子,我曾经开发过一个基于此项目的开源项目,并且最初计划将其移植到各种平台上,包括裸板。但是,与适应不同操作系统的便利相比,某些功能过于复杂,无法在所有裸机板上实现。更糟糕的是,由于缺乏一致性,许多硬件平台只能从头开始。到目前为止,我的堆栈仍不支持在裸板上运行。许多主要制造商都喜欢并提供只能在操作系统上运行的软件开发工具,并且它们不公开固件源代码,因此这些工具不能在裸板上使用。实时某些应用领域对实时性能有要求。例如,在某些情况下,必须在特定时间触发特定软件操作。在工业控制场景中,在对机器进行物理控制的过程中,机械组件必须在特定时间和特定顺序下执行操作。如果不能保证控制系统的实时性,则整个机器可能会发生故障,甚至危及工人的生命。在裸板平台上,所有功能都陷入一个巨大的循环中,并且无法保证实时性能。可重用性:可重用性取决于模块化。没有人愿意一遍又一遍地做同样的事情,特别是对于程序员。
更糟糕的是,这使代码的维护极为复杂。特别地,由于功能的实现取决于底层硬件,因此取决于使用不同芯片的不同硬件平台,因此必须将相同功能适配于不同硬件平台。在这种情况下,重新设计车轮是不可避免的。实时操作系统的优势。幸运的是,有用于各种微处理器芯片的操作系统。它们被称为实时操作系统。像大多数操作系统一样,它们具有调度程序,以确保代码以可预测的顺序运行。 。我第一次在裸板上使用实时操作系统。那时,一系列微处理器因其强大的性能和丰富的功能而广受欢迎,许多人在其上运行操作系统。我使用的是操作系统,并且有许多基于它的现成组件。它使用许可证。与其他操作系统相比,我觉得这很舒服。我多年来一直以此平台为基础从事开发工作。使用实时操作系统对裸板进行编程。操作系统解决了我们需要处理的大多数问题。模块化在操作系统的支持下,整个软件可以分为多个任务(即线程)。每个线程都有其自己独立的运行空间。线程彼此独立,这促进了软件的模块化。并发性如果线程具有延迟功能,它将自动将资源分配给需要它的线程,这可以提高系统的整体利用率,并可以提高系统的并发性能。实时实时操作系统被设计为实时的。为每个线程分配了特定的优先级,将更重要的线程设置为较高的优先级,而不重要的线程则具有较低的优先级。以此方式,保证了软件整体的实时性。开发效率:操作系统提供统一的抽象接口,从而可以积累可重用的组件并提高开发效率。操作系统是软件极客的集体智慧的结晶。许多常见的软件功能(例如信号量,事件提醒,邮箱,环形缓冲区,单链接列表,双链接列表等)都经过抽象和打包,可以随时调用。 ,以及其他操作系统为各种硬件实现一致的硬件接口,通常将其称为设备驱动程序框架。因此,软件工程师可以专注于软件开发,而无需关心基础硬件,也不必重新发明轮子。
操作系统带来的模块化和可重用性使程序员能够封装可重用的组件,这些组件对于嵌入式系统的开发和使用非常方便。这些组件可以在其他项目中重用,或与其他嵌入式应用程序开发人员共享,以最大程度地提高软件的价值。例如,它是一个开源的单色显示图形库,您可能已经在工业控制面板上简单漂亮的设置界面上看到了它。它提供了绘图功能,例如绘图点,绘图线,绘图矩形和显示文本,按钮组件和进度条。使用既可扩展又健壮的功能库,程序员可以根据同行的现有工作成果充分展示自己的才能。如果没有统一的基础(例如实时操作系统),所有这些都是不可能的。试用作为一个开放源极客,我已经开源了一些嵌入式软件。在发布开源软件之前,我很少与其他人谈论我以前的项目,因为不同的人使用不同的微处理器芯片和硬件平台,并且我的代码可能无法在其他人的板上运行。这样的实时操作系统极大地提高了软件的可重用性,因此世界各地不同领域的专家可以讨论同一项目。这鼓励越来越多的人共享和交换他们的项目。如果您正在进行裸板软件开发,则可以下次尝试。作者:主题:译者:校对:本文由原始编译器介绍,荣誉编号