Linux和嵌入式Linux有什么区别

Linux和嵌入式Linux有什么区别,第1张

【Linux】

Linux是一种自由和开放源码的类Unix *** 作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。

Linux也可以安装在各种计算机硬件设备中,如收集、平板电脑、路由器、台式计算机、超级计算机等等,人们也已经习惯了用Linux来形容整个基于Linux内核,且使用GNU工程各种工具和数据库的 *** 作系统。

Linux *** 作系统软件包不仅包括完整的Linux *** 作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用Windows

NT一样,允许我们使用窗口、图标和菜单对系统进行 *** 作。

【嵌入式Linux】

嵌入式Linux说白了就是利用Linux其自身的许多特点,把它应用到嵌入式系统里。

现今已出现了一些嵌入式 *** 作系统,比较著名的有Vxwork、pSOS、Neculeus和Windows

CE,但这些 *** 作系统往往是商业化产品,其价格也比较高昂。

Linux做嵌入式的优势,首先,Linux是开放源代码的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持其次,Linux的内核小、效率高,内核的更新速度很快第三,Linux是免费的OS,在价格上极具竞争力。

Linux as an Embedded Operating System Linux有用作嵌入式 *** 作系统的潜力吗?本文讨论了Linux的特点 健壮 性 局限以及最重要的一点 它的实时特性 近年来 PC硬件使用的增加是高端嵌入式系统最重要的发展之一 这种 趋势造成高端系统硬件造价的大大跌落 从而使那些以前由于使用非P C结构的嵌入式硬件价格过高而不能做的项目成为可行的 但是嵌入式 PC平台上可选择的软件并不像硬件那样有诱惑力 你可以选择DOS 有 众所周知的局限性 微软Windows 缺乏实时性能 或者某种高端实时 *** 作系统 昂贵 专用 大多是不可移植的 Linux *** 作系统提供了另 外的有吸引力的选择 并且没有上面那些缺陷 Linux先前只是狂热的 Unix迷们闲时专门在台式电脑上使用 后来发展成为必须认真对待的高 级的 稳定的 *** 作系统 最近的发展之一是引入了实时性能 从而使L inux完成了重要的转变 即从爱好者的玩具成为适合嵌入式系统设计者 的有价值的工具 当然 其实时性能还没有那些高端RTOS那么高级 并 且Linux永远不会适合需要最小化RAM和ROM的系统 但是 对很多应用 来说 Linux的优势胜过了不足 现在 大家都知道在嵌入式系统中使用PC硬件的好处 与很多专为嵌入 式市场设计的硬件比较 PC硬件是大规模生产的 容易获得并且便宜 为VME总线设计的接口板价格是PC总线的两倍多 比如模拟和数字I/O板 网络接口 图像采集与处理板等 随着高性能PCI总线应用的增加 吞吐量不再是影响使用PC平台的问题 但是 *** 作系统功能上已经发生革命性的变化 在要求硬件价格降低的同 时 高端嵌入式系统要求更多高级的功能 如图形用户界面和网络支持 很多高端RTOS供应商已经提供了这些功能 一般是作为花更高价钱才 能得到的可选件 微软Windows也有这些功能 却不具备大多数嵌入式 系统要求的实时性能 也许有人想以DOS为基础用单独的第三方工具拼 凑一个系统 但这种努力将是白费并且不存在对这种系统的技术支持 现在需要的是一个便宜 成熟并且提供高端嵌入式系统所必须特性的 *** 作系统 因此 Linux *** 作系统近来开始吸引大家的注意 许多台式PC用户被它 的特点和健壮性所吸引 并且获得它只需支付通过FTP下载的网络费用 Linux带有Unix用户熟悉的完善的开发工具 几乎所有的Unix系统和 应用软件都已移植到了Linux上 Linux还提供了TCP/IP网络协议以及I nternet客户和服务器软件 还有可选择多种窗口管理器的X Windows C C++ Java和其他语言的编译器也可得到 用户会发现这些比Windo ws提供的更成熟 更完善 更易于使用 许多公司至少会有一位Linux 的热衷者 当出现用Windows解决不了的问题时(比如设置一台PC为拨 号服务器)会说 瞧 我们要是用Linux 现在 讨论Bill Gates是否有所担心是有些杂志的一个话题 重要的是 不属于任何一家公司的Linux开始被台式电脑用户接受 其中许多人并 不能被认为是电脑迷 这一方面是因为Linux的成熟 另一方面也因为 这几年Internet的盛行 Linux用户遇到问题时可以通过Internet新闻 组和邮件列表向网上成千上万的在线用户请教 你遇到的问题别人以前 肯定碰到过 一般他们都乐于帮忙 根据我的经验 通常使用网络资源 能比依赖RTOS技术支持部门更快地解决问题 你可能需要从十几条新闻 组其他成员回答的相关信息中搜寻 但至少有一个回答应该是有用的 相比较而言 你从技术支持部门仅得到一个回答 如果是错的 你不得 不重新开始整个过程 另外 致力于提供Linux支持的公司也已经出现 给那些觉得传统的技术支持手段更舒服的用户一个选择 并且所有L inux是提供源代码的 这使最困难的问题也有办法解决 某些嵌入式系统设计者会发现Linux本来的样子就很有用 对于没有实 时要求的应用 或者有实时要求但可以用一定的硬件或协处理器满足的 应用 Linux提供了Windows和DOS之外的选择 但是那样的应用几乎没 有 因此 用Linux实现一个实时 *** 作系统才是真正需要的 并且为了 用它实现高端嵌入式应用已经做了充分的工作 总的来说 有两条途径 来实现实时Linux 在此称之为POSIX路线和低层路线 POSIX和Linux POSIX是标准化类Unix *** 作系统必须具有的特征和接口的运动 POSIX的 思想是为了促进为Unix编写的软件的可移植性 使Unix程序员的工作更 容易 有些实时性的扩展 象POSIX b或IEEE b已经加入到标准 中 这些扩展中包括一些工具 比如信号灯 内存锁定 时钟和计数器 消息队列以及优先级抢先调度 以POSIX为基础来标准化实时 *** 作系统已经受到指责 这个标准又大又 笨 包含了许多适合台式Unix工作站但无助于嵌入式系统的特征 因而 显得很臃肿 标准制定群体被工作站制造商控制 他们不愿对RTOS供应 商和用户让步 还有 POSIX系统调用反映了Unix系统调用的复杂和笨 重 在VxWorks或pSOS+中仅需一两个调用即可完成的 *** 作可能需要十几 个POSIX调用 Unix程序员已经习惯了这种麻烦事 但是嵌入式系统程 序员却觉得很难受 许多Linux开发者正在为了在Linux中实现POSIX b的特征工作 这个活 动已经初见成效并且仍在继续 POSIX内存锁定工具和决定调度算法的 函数已经实现 另外 计数器函数和POSIX b信号仍未完成 也许最糟 糕的是 对任何真正的RTOS都至关重要的信号灯和消息队列也未实现 定义于POSIX c(或IEEE C)中的POSIX线程保证会为POSIX路线 的Linux开发实现 一个进程内可以有多个线程 共享相同的地址空间 这很符合我们熟悉的嵌入式系统中任务的概念 Linux已经部分实现 了POSIX线程 虽然POSIX路线对实现一个实时Linux做了保证 当前和可预见的将来只 有 软 实时的应用能用POSIX b函数来实现 移植POSIX b函数到L inux上时要面对的根本问题是Linux的内核是不可抢先的 因此 要想 不对内核大动干戈而实现 硬 实时特性恐怕是不可能的 通向实时Linux的低层路线 Low level Approach to Real time Linux 比POSIX路线更有意思的是实现硬实时Linux的努力 其中最有前途的要 数新墨西哥技术学院的实时Linux(RT Linux)项目 注意到Linux是一 个为台式电脑用户设计的 *** 作系统 研究者们断定 要想把实时功能移 植到为分时设计的OS上是不会有好结果的 取而代之的是 他们在 *** 作 系统的下面实现了一个简单的实时内核 而Linux本身也仅作为那个内 核上的一个任务来运行 Linux运行的优先级最低 随时可以被更高优 先级的任务抢先 RT Linux的设计理念是 对Linux作最小的改动 仅提供为了实现实时 应用必不可少的东西 这样就使RT Linux比较容易移植到新版本的Lin ux上 同时 RT Linux依赖于Linux来提供所需的几乎所有服务 而RT Linux仅提供低层任务创建 安装中断服务例程 并为低层任务 ISR 和Linux进程之间的通信排队 这种设计的结果之一是 一个RT Linux应用可以看作有两个域 实时和 非实时 放在实时域的函数能满足其实时要求 但是它们必须比较简单 因为可用资源很受限制 另一方面 非实时功能可以利用整个Linux 资源 但不能有任何实时要求 两个域之间的通信工具已提供 但是使 用RT Linux之前 嵌入式系统设计者必须确保所有需要实现的功能适合 两个域之一 使用RT Linux并不能变戏法似的使已经存在的Linux功能 具有实时性 例如 假设设计者有一个串口的Linux驱动程序 当串口 接收一个字节序列之后 在一个固定时间内 由实时任务打开并口输出 一行 这个驱动程序不能用 因为在非实时域内你不知道什么时候串口 驱动程序会唤醒实时任务驱动并口完成工作 因此 串口和并口驱动都 必须在实时域内 这就要求重新设计串口驱动程序 RT Linux的任务处理工具是基本的 rt_task_init()用来创建并开始一 个任务 能指定堆栈的大小和优先级 Linux本身以一个最低优先级的 实时任务运行 rt_task_make_periodic()以一定间隔周期性地设置任 务运行 rt_task_wait()阻塞任务 使用简单的抢先调度运行任务 实时任务与Linux进程之间通信的主要方法是FIFO rtf_create()创建 一个一定大小的FIFO 用rtf_put()将数据送入FIFO 如果FIFO满则返 回一个错误 类似地 rtf_get()从FIFO中取出数据 如果FIFO空则返 回一个错误 FIFO最显著的应用是数据流 例如 在一个数据采集应用中 可以用r t_task_init()和rt_task_make_periodic()设置实时任务使其以固定的 间隔从I/O板采样 这个任务用rtf_put()将数据发送到Linux进程 该 Linux进程应该是一个循环 不断从FIFO读出数据 也许还要写数据到 磁盘 或者通过网络发送 或者显示在一个X窗口中 FIFO象一个缓冲 因此Linux进程不必非有实时性不可 实现数据流系统看起来成为RT Linux设计者的主要动机 但是FIFO机制 提供了一个实现信号灯的很好方法 两态信号灯可以通过创建一个大小 为 的FIFO来实现 V *** 作即为rtf_put() 数据内容无所谓 同时忽略 返回的错误 P *** 作为rtf_get() 计数信号灯可以通过创建大小足够容 纳所期望V *** 作个数的FIFO简单地实现 由此可见 FIFO机制提供了实 时应用中任务同步所需的大部分功能 当前的实现在RTOS用户习惯的某 些功能上仍有欠缺 比如优先级禁止(防止优先级反转)和任务安全删 除 但是仔细设计几乎总能避免这些问题 此外 虽然FIFO *** 作可以在 没有数据(读FIFO)或没有空间(写FIFO)时阻塞 语法却相当复杂 阻塞能力看来不是设计的重点 然而 至少有一个提供FIFO阻塞 *** 作简 单语法的努力正在进行 同时还实现了阻塞超时 这是许多嵌入式应用 的重要特征 RT Linux简单 开放的设计允许用户相当容易地实现类似 的附加功能 RT Linux的一个有趣的方面是设计者使Linux内核 lishixinzhi/Article/program/Oracle/201311/17916

1、我想学习arm+linux为平台的嵌入式,所以电脑得装linux系统,请问选哪个linux最好?包括红旗、红帽、ubuntu……不知道我说的对不对?最好详细说一下。

申明一点,没有最好的发行版,每个发行版都有他自己的特色,区别在于软件的组织,对系统性能与漏洞的改进上,以及社区的活跃程度。内核的来源都一样。

根据你学习的有嵌入式学习的要求,所以不推荐你过分依赖图形界面。

UBUNTU和FC都有完整的桌面解决方案,能让WINDOWS惯用者觉得并不陌生。但是这并不适合嵌入式学习,而且我觉得在某种程度上会阻碍你的学习进程。

我使用的发行版是DEBIAN,但是我并不推荐你使用它,不是因为它难用,而是因为我觉得你用什么发行版都能满足你学习的需要,关键是要有意识避开图形界面,多接触控制台 *** 作,因为在ARM平台上运行LINUX的,就要不可避免的接触内核编译,交叉编译,工具链等 *** 作,这些 *** 作都离不开命令行。

2、我的是thinkpad x40,没有光驱,应该怎么装上面的系统?

对于DEBIAN来说,可以将安装镜像做到USB上;也可以通过硬盘安装。如果你打算使用DEBIAN的话,可以查安装文档,或者M我。

不过最方便的方法我觉得还是用外置光驱。

3、嵌入式最终是要把编好的代码烧入arm处理器的rom中,这和pc端必须装linux系统有什么关系?

没有必然的联系。因为WIN下也有ARM的开发平台,完全可以通过在WIN的开发平台下写好再烧录。

不过时候需要在ARM上运行LINUX *** 作系统,这需要交叉编译,LINUX上有成熟免费的平台可以完成这个任务。

4、嵌入式是不是把linux的内核代码修改好了烧入arm处理器中,再把编写好的应用程序的代码烧入arm处理器中?还是系统和应用程序一起做好,一起写入到arm处理器中?

看系统情况而定,如果你的ARM系统IO可以访问独立的存储设备(上边有文件系统),而不是只有容量有限的ROM的话,编译链接可以在ARM上完成。

5、电脑上的linux系统是由英特尔cpu为核心的电脑主板来运行,这和arm处理器执行linux代码有什么区别吗?

有的时候没有太大区别,C代码把机器代码抽象出来了。

举例来说,DEBIAN支持多种处理器架构如:x86,ia64,spac,powerpc,arm,mips,mipsel等,

我只需要写一个HELLOWORLD程序,在编译链接的时候指定处理器类型,就可以生成需要的机器码。

话说高级语言的作用不就是在这里吗?

6、我看到一本书是《linux内核0.11 V1.9.5》,请问这个0.11和V1.9.5是什么意思,哪个是版本?

v1.9.5应该是书的版本吧,目前常用的linux内核是2.6.27,我在使用的是2.6.26

7、负责将pc端上的代码写入到arm处理器的烧写软件一般都是什么?

烧写的对象是片内ROM(电可擦)或其他非易失性记忆体。这和普通的烧写没什么区别。所以烧写软件也大同小异。

鉴于要使用嵌入式的 *** 作系统,可能的做法是把bootloder之类(类似pc上的bios)的程序烧入rom,由bootloder负责加载内核。这样,如果系统有独立的存储设备的话,内核就不需要烧写,完全像PC一样进行引导。

8、我想把linux系统自己修改一段代码,比如在开机时出现自己的logo,请问拿什么软件修改再重新打包?是不是到网上下载一个linux系统,然后用A软件打开,编辑,重新打包好,刻到光盘上,再装系统,装好后就实现自己的理想了?

修改linux系统的关键词:LFS,CLFS。

根据现实LOGO的阶段不同,实现方法也不同,感觉你说的是在LINUX系统内核没加载之前。那需要修改bootloader,给bootloader加入显示图片的功能。因为有些bootloader并不提供图形显示的功能,所以想用修改BIOS的方法修改bootloader几乎不行。

9、linux从最初的1万行代码发展到现在的1000万行代码,到底是添加了什么功能使他膨胀了1000倍?

我也没有完整大答案。大致是不断的完善,内核对CPU的调度上越来越合理,内存管理越来越有效,可以维持越来越多的外围设备,支持多种协议等等的吧。

10、windows和linux系统到底有什么不同?使得微软只要不公开源代码,其他人就不知道windows的代码是什么东西?

so many differences。

windows在某种程度上公开了源码,ddk等开发包中都有源码。windbg也公开了几乎全部的symbol以供专业人员使用。

11、linux现在有1000万行代码,即使当小说阅读也要花上几年时间,有没有一个人懂得每一行代码呢?他是怎么做到的呢?

一本小说,并不是所有的地方都是引人入胜、值得去看的,有的时候我们还可以推测出故事的发展。

源代码也是如此。有的时候没必要去追究所有代码的含义,我们只需要大致知道这部分代码的功能就可以了。

另外,代码的一大部分都是常量的声明,为了支持各种各样的约定、协议。

12、嵌入式里有个专门搞驱动开发的,为什么不让写到arm处理器中的linux直接控制各种硬件呢?因为你的对象,比如路由器,就那么些硬件,你都知道……

没开发过,不清楚。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8793618.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-21
下一篇2023-04-21

发表评论

登录后才能评论

评论列表(0条)

    保存