嵌入式linux 订阅
嵌入式 Linux是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,近几年来已成为研究热点。目前正在开发的嵌入式系统中,有近50%的项目选择Linux作为嵌入式操作系统。 [1]  嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_Linux Hardhat Linux 等嵌入式Linux支持,实时性能稳定性好安全性好。 [2] 展开全文
嵌入式 Linux是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,近几年来已成为研究热点。目前正在开发的嵌入式系统中,有近50%的项目选择Linux作为嵌入式操作系统。 [1]  嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_Linux Hardhat Linux 等嵌入式Linux支持,实时性能稳定性好安全性好。 [2]
信息
广泛应用
移动电话
行业协会
Embedded Linux Consortum
中文名
嵌入式linux
出    现
20世纪60年代晚期
嵌入式linux简介
嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_Linux Hardhat Linux 等嵌入式Linux支持,实时性能稳定性好安全性好。 [2]  如果分别让10位工程师给出嵌入式系统的定义,将得到10个不同的答案。一般来说,大部分的嵌入式系统执行特定的任务。我们假定最简单的嵌入式系统包括输入/输出功能,以及一些控制逻辑,该系统基于它的配置执行某些类型的功能。按照这个标准,可以认为一个包含实现控制逻辑74123计数器以及一个状态是一个嵌入式系统。也许可以补充说,该系统必须可通过存储在固件中的软件进行编程。这个新的嵌入式系统定义包括输入/输出(I/O),以及存储在系统固件中的控制逻辑。一个带有鼠标、键盘、网络连接并运行图形用户界面(GUI,graphical user interface)多任务操作系统的桌面计算机显然满足这些要求,但我们能认为它是一个嵌入式系统吗?如果桌面计算机不是一个嵌入式系统,那么手持设备呢?它们有I/O功能,可以运行存储在固件中的控制逻辑。有人说,桌面计算机和手持设备都有通用计算机设备,可以运行软件来执行许多不同的任务,与之不同的是,嵌入式系统(例如,洗碗机控制器或飞行导航系统)主要是为特定任务而设计的。这种特定的功能限定使嵌入式设备有功能上的唯一性。如果是这样,为什么一些嵌入式系统设计成具有附加的功能,如存储在非易失性存储器中的程序,并且具有运行可以完成原始设计范围之外的任务的多任务操作系统的能力呢?在过去,区分嵌入式系统和通用计算机比简单得多。例如,可以很容易地区分出一个基于8051的T1分幅卡嵌入式系统和一台Sun UNIX工作站。从功能方面很难区分一台Sun工作站和一个包含PowerPC以及32MB内存和16MB闪存的机顶盒。这样的机顶盒可以运行带GUI的多任务操作系统,可现场升级,可以同时运行多个程序(如视频控制器、数字录像和Java虚拟机),还可以进行安全的因特网在线交易。很难判断这种机顶盒是否是一个嵌入式系统。显然,硬件性能的提升和价格的下降使通用计算机和嵌入式系统之间的界限变得很模糊,技术的进步使得我们很难定义什么是嵌入式。
收起全文
精华内容
下载资源
问答
  • 嵌入式linux嵌入式linux嵌入式linux嵌入式linux嵌入式linux
  • 韦东山嵌入式Linux第一期视频

    万人学习 2014-11-29 12:20:18
    掌握写汇编代码的能力,可以分析任意裸板包括U-boot、内核里的相关汇编代码; 掌握常用的硬件部件的操作,比如GPIO,UART,I2C,LCD,触摸屏; 深入理解ARM体系统架构,可以写出具备中断功能的裸板程序,对程序...
  • 嵌入式Linux

    2013-08-02 15:47:37
    嵌入式linux   嵌入式linux 嵌入式 Linux是以Linux为基础的嵌入式作业系统,它被广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费性电子产品以及航空航天等领域中。 目录 ...

    嵌入式linux

      
    嵌入式linux
    嵌入式 Linux是以Linux为基础的嵌入式作业系统,它被广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费性电子产品以及航空航天等领域中。

    简介

    嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_Linux Hardhat Linux 等嵌入式Linux支持,实时性能稳定性好安全性好。[1]
    如果分别让10位工程师给出嵌入式系统的定义,将得到10个不同的答案。一般来说,大部分的嵌入式系统执行特定的任务。我们假定最简单的嵌入式系统包括输入/输出功能,以及一些控制逻辑,该系统基于它的配置执行某些类型的功能。按照这个标准,可以认为一个包含实现控制逻辑74123计数器以及一个状态是一个嵌入式系统。也许可以补充说,该系统必须可通过存储固件中的软件进行编程。这个新的嵌入式系统定义包括输入/输出(I/O),以及存储在系统固件中的控制逻辑。一个带有鼠标、键盘、网络连接并运行图形用户界面(GUI,graphical user interface)多任务操作系统桌面计算机显然满足这些要求,但我们能认为它是一个嵌入式系统吗?
    如果桌面计算机不是一个嵌入式系统,那么手持设备呢?它们有I/O功能,可以运行存储在固件中的控制逻辑。有人说,桌面计算机和手持设备都有通用计算机设备,可以运行软件来执行许多不同的任务,与之不同的是,嵌入式系统(例如,洗碗机控制器或飞行导航系统)主要是为特定任务而设计的。这种特定的功能限定使嵌入式设备有功能上的唯一性。如果是这样,为什么一些嵌入式系统设计成具有附加的功能,如存储在非易失性存储器中的程序,并且具有运行可以完成原始设计范围之外的任务的多任务操作系统的能力呢?
    在过去,区分嵌入式系统通用计算机比简单得多。例如,可以很容易地区分出一个基于8051的T1分幅卡嵌入式系统和一台Sun UNIX工作站。从功能方面很难区分一台Sun工作站和一个包含PowerPC以及32MB内存和16MB闪存的机顶盒。这样的机顶盒可以运行带GUI的多任务操作系统,可现场升级,可以同时运行多个程序(如视频控制器、数字录像和Java虚拟机),还可以进行安全的因特网在线交易。很难判断这种机顶盒是否是一个嵌入式系统。显然,硬件性能的提升和价格的下降使通用计算机嵌入式系统之间的界限变得很模糊,技术的进步使得我们很难定义什么是嵌入式。

    发展历程

    嵌入式系统出现于20世纪60年代晚期,它最初被用于控制机电电话交换机,如今已被广泛的应用于工业制造、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等众多领域。计算机系统核心CPU,每年在全球范围内的产量大概在二十亿颗左右,其中超过80%应用于各类专用性很强的嵌入式系统。一般的说,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统

    应用特点

    [2]嵌入式Linux的应用领域非常广泛,主要的应用领域有信息家电、PDA 、机顶盒、Digital Telephone、Answering Machine、Screen Phone 、数据网络、Ethernet Switches、Router、Bridge、Hub、Remote access servers、ATM、Frame relay 、远程通信、医疗电子、交通运输计算机外设、工业控制、航空航天领域等。
    就是利用Linux其自身的许多特点,把它应用到嵌入式系统里。
    Linux做嵌入式的优势,首先,Linux是开放源代码的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持;其次,Linux的内核小、效率高,内核的更新

      嵌入式linux

    速度很快,linux是可以定制的,其系统内核最小只有约134KB。第三,Linux是免费的OS,在价格上极具竞争力。 Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台,是一个跨平台的系统。到目前为止,它可以支持二三十种CPU。而且性能稳定,裁剪性很好,开发和使用都很容易。很多CPU包括家电业芯片,都开始做Linux的平台移植工作。移植的速度远远超过Java的开发环境。也就是说,如果今天用Linux环境开发产品,那么将来换CPU就不会遇到困扰。同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的TCP/IP协议有最完备的支持。提供了包括十兆、百兆、千兆的以太网络,以及无线网络,Toker ring(令牌环网)、光纤甚至卫星的支持。所以Linux很适于做信息家电的开发。
    还有使用Linux为的是来开发无线连接产品的开发者越来越多。Linux在快速增长的无线连接应用主场中有一个非常重要的优势,就是有足够快的开发速度。这是因为LInux有很多工具,并且Linux为众多程序员所熟悉。因此,我们要在嵌入式系统中使用Linux操作系统
    Linux的大小适合嵌入式操作系统——Linux固有的模块性,适应性和可配置性,使得这很容易做到。另外,Linux源码的实用性和成千上万的程序员热切期望它用于无数的嵌入式应用软件中,导致很多嵌入式Linux的出现,包括:Embedix,ETLinux,LEM,Linux Router Project,LOAF,uCLinux,muLinux,ThinLinux,FirePlug,Linux和PizzaBox Linux
    相比微软,Linux的图形界面发展很快,像GNOME,KDE,UTITY等都是很优秀的桌面管理器,并且其背后有着众多的社团支持,可定制性强,已经在Unix和Linux世界普及开来。

    发展前景

    有巨大的市场前景和商业机会,出现了大量的专业公司和产品

      嵌入式Linux系统优缺点对比[3]

    ,如Montavista Lineo Emi等,有行业协会如Embedded Linux Consortum等,得到世界著名计算机公司和OEM板级厂商的支持,例如IBM Motorola Intel等。传统的嵌入式系统厂商也采用了Linux策略,如Lynxworks Windriver QNX等,还有Internet上的大量嵌入式Linux爱好者的支持。嵌入式Linux支持几乎所有的嵌入式CPU和被移植到几乎所有的嵌入式OEM板。
    展开全文
  • 嵌入式Linux C编程基础

    万人学习 2015-05-10 12:41:25
    本课程是全套课程的第0.2.3课(预科第三课程),主题linux系统下C语言开发学习,总共25小时左右的课程。该视频是我在联嵌科技代课期间随堂真实录制,学生均为根本没接触过C语言的应届毕业生(现在全部毕业,从事...
  • 主要介绍了GNU/Linux的诞生,标准Linux是如何应用在嵌入式系统中的,最后讲述了嵌入式Linux知识架构。

    对于任何一个研发人员来说,Linux是最强大的操作系统,没有之一!为什么这么说呢,原因有下:

    • 高效: 简单粗暴有效的命令可以高效的完成很多的日常开发工作
    • 稳定:Linux运行的稳定性能用来作后台服务器再好不过了
    • 安全:Linux开源,由很多的开发者共同维护,所以可利用漏洞少之又少
    • 开放:Linux源码开放
    • 多用户:真正的可以多用户同时工作

    那么这么强大的一个系统因何而来呢?

    1.GNU/Linux的诞生

    1969年AT&T(美国贝尔实验室)有两个人——Ken,Dennis为了适配他们的游戏而研发出了Unix操作系统,并且抛弃了汇编,顺便发明了C语言,用C完成了整个操作系统,而Unix就是这个话题中的万恶之源~

    其实Unix是开源免费的,因为它只是单机版,没有太大的作用,一段时间后在UC Berkeley诞生出了伟大的TCP/IP协议,使得所有的计算机都可以很好地连通,Unix演变成了BSD,以至于后来的FreeBSD,NetBSD,MacOS,iOS等等……

    然而别忘了,这一切的起源是Unix,当然不可能看着BSD就这么火,Unix开始收费了,对于公司而言,收费就收费呗,无非成本价有点高,然而别忘了还有我们这群苦逼的学生,又想学习使用Unix,又买不起Unix,所以美国一个计算机科学教授Andrew Tnanebaum根据Unix写出了Minix操作系统用来教学,青出于蓝而胜于蓝,1991年美国大二学生Linus Torvalds觉得Minix不太行,所以自己写了一个Linux内核,然而它再强大,也只是一个内核~

    凑巧的是,在那个年代GNU(GNU is Not Uinx)也是一个致力于自由的类unix操作系统,它发展了几乎内核以外的所有软件,并且创建了通用软件许可证GPL(General Public License) —— 免费得到源码永久使用权、可以任意修改、但是有义务公开修改后的代码~
    于是乎,Linux和GNU一拍即合,天造地设的一对就这样诞生了,强强联手,演变成现在最强大的操作系统 —— GNU/Linux

    2.GNU/Linux衍生的发行版

    当然,Linux内核和GNU合起来也还不够,对于用户的使用,还应包含命令行Shell或桌面环境(KDE、GNOME、Unity等),所以就衍生出来很多的Linux发行版,主要有三大分支:

    • redhat
    • debian
    • openSUSE

    这些发行版如果按应用场景来分,主要有两类:

    • 以命令行Shell为主的服务器发行版:CentOS/RHEL、openSUSE、Ubuntu Server
    • 以桌面环境为主的桌面发行版:Ubuntu、Linux Mint、Fedora

    3. 嵌入式Linux

    标准Linux运行在通用计算机上或者云端,虽然包含了很多功能,但是需要的硬件配置较高,如图是Ubuntu 18.04.2 LTS发行版需要的系统要求:

    资源极其有限的嵌入式系统中,显然这样的性能是绝对不可能满足的,那么,如何使强大的Linux内核应用在嵌入式系统中呢?

    嵌入式系统有一个非常鲜明的特点 —— 通常都是针对某一个具体应用,所以将标准的Linux根据情况进行裁剪,只保留需要的功能(比如路由器中运行的Linux就不需要界面功能),因此只需要少量的Flash和RAM就可以完美的运行在嵌入式设备中。

    4.嵌入式Linux知识架构

    5.如何学Linux

    如此强大有效的一个操作系统,仅作学习之用的话选择其中一个自己喜欢的发行版就好,我的学习旅程是:

    首先在虚拟机上学习:

    • 会操作:基本Linux命令,Linux文件系统
    • 会编程:shell脚本编程,基本C编程,网络编程,GUI编程

    然后在开发板上学习,选用ARM9或ARM11:

    • 会启动:移植并成功启动
    • 会驱动:可以编写常见驱动程序
    展开全文
  • 1、嵌入式Linux开发简介 1.1嵌入式系统 1.2嵌入式操作系统简介 1.2.1嵌入式操作系统的发展 1.2.2几种代表性嵌入式操作系统 1.3嵌入式Linux简介 2、搭建嵌入式Linux开发环境 2.1基本概念 主机系统和目标系统 ...

    目录

    1、嵌入式Linux开发简介

    1.1嵌入式系统

    1.2嵌入式操作系统简介

    1.2.1嵌入式操作系统的发展

    1.2.2几种代表性嵌入式操作系统

    1.3嵌入式Linux简介

    2、搭建嵌入式Linux开发环境

    2.1基本概念

    主机系统和目标系统

    交叉编译

    2.2软件安装及使用

    3、基本的Makefile语法

    3.1最基本的Makefile文件

    3.2MakeFile简介

    3.3Makefile规则


    1、嵌入式Linux开发简介

    1.1嵌入式系统

    嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。因此可以这样理解上述三个面向的含义,即嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。嵌入式系统一般由以下几部分组成:嵌入式微处理器、外围硬件设备、嵌入式操作系统和特定的应用程序。    

    近年来掀起了嵌入式系统应用热潮。  

          从上面的定义,可以看出嵌入式系统的几个重要特征:

    1. 系统内核小。
    2. 专用性强。
    3. 系统精简。
    4. 高实时性的系统软件(OS)是嵌入式软件的基本要求。
    5. 嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。
    6. 嵌入式系统开发需要开发工具和环境。  

    1.2嵌入式操作系统简介

    EOS是相对于一般操作系统而言的,它除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件功能等外,还有以下特点:

    • 可装卸性。
    • 强实时性。
    • 统一的接口。
    • 操作方便、简单、提供友好的图形GUI,图形界面,追求易学易用
    • 提供强大的网络功能,
    • 强稳定性,弱交互性。
    • 固化代码。
    • 更好的硬件适应性,也就是良好的移植性。

    1.2.1嵌入式操作系统的发展

    嵌入式操作系统伴随着嵌入式系统的发展经历了四个比较明显的阶段

    第一阶段:无操作系统的嵌入算法阶段

    第二阶段:以嵌人式CPU为基础、简单操作系统为核心的嵌入式系统

    第三阶段:通用的嵌人式实时操作系统阶段

    第四阶段:以基于Intemet为标志的嵌入式系统

    1.2.2几种代表性嵌入式操作系统

    常见的嵌入式系统有:Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、INTEGRITY、OSE、C Executive。

    1.3嵌入式Linux简介

    伴随着Linux的快速成长,嵌入Linux在近两年也发展迅速,与传统商业性操作系统象Vxworks、Psos等相比,嵌入Linux没有昂贵的版权费,而且完全开放源代码,在Internet上有着丰富的开发资源,支持众多CPU架构象PPC、COLDFIRE、ARM、X86、MIPS,这些有点吸引了众多的商家投入Linux的怀抱。          

    与Vxworks等典型嵌入操作系统相比,实时性是Linux的弱项,因此一些公司对Linux进行了二次包装,以提高嵌入linux的实时性,比较优秀的嵌入Linux有Montavista公司的Hardhat Linux,还有RTLinux、Bluecat Linux等。  

    嵌入Linux的移植开发是一项很有趣的工作,在开发的过程中会感受到Linux强大的吸引力。          

    嵌入linux开发我们暂且把它分为四个大部分:硬件系统、bootloader、linux kernel和应用程序,它们的关系如下图: 

    按照这个图来说,我们的开发包括以下一些步骤 设计自己的硬件系统 编写BootLoader 裁减自己的linux内核 开发应用程序

    2、搭建嵌入式Linux开发环境

    2.1基本概念

    主机系统和目标系统

    主机系统就是我们一般用的计算机或者工作站,用来编写和编译代码;目标系统就是嵌入开发系统中的硬件板。在主机开发好的目标执行代码通过网络接口、USB或者串口烧写到目标系统中的永久记忆体(通常是flash),目标系统执行这些代码。模型如下图所示:

    主机系统的要求:

    一般的PC都可以进行嵌入式Linux开发,两个必要的条件是:9针RS-232串口和网络接口。其实串口不一定需要,如果没有串口,可以使用USB——串口转换器。

    目标系统的要求: 目标系统就是我们的开发板。该系列文档适用于S3C2440开发板。市场上的S3C2440开发板的原理图、硬件配置等基本相同,在细节上可能存在一些差异,理解了代码后稍作修改即可。         

    交叉编译

    伴随着以计算机技术、通讯技术为主的信息技术的飞速发展和互联网的广泛应用,3C(Computer、Communication、ConsumerElectronic)合一将成为必然趋势。信息家电,手持设备,移动设备等嵌入式产品的迅速发展,使得嵌入式软件开发再度成为一个研究热点。 由于嵌入式设备的性能局限,往往不能通过本机编译得到所需软件的可执行程序。因此,以Linux为主机操作系统,搭配一个交叉编译系统,为嵌入式设备生成可执行程序已成为现在日益流行的编译嵌入式软件的解决方案。而开放源码的编译器GCC,经过多年的发展,已能支持几乎所有知名厂商的处理器,是嵌入式软件开发中理想的交叉编译器。

    交叉编译环境,用于编译目标系统可执行的代码。之所以要交叉编译环境,是因为我们用的PC CPU的架构为X86,目标系统为ARM架构的,所以要有一个编译器,链接器用于将C语言的代码编译为ARM系统可识别的目标代码。           要编译出运行在ARM平台上的代码,所使用的交叉编译器为 arm-linux-gcc;交叉连接器为arm-linux-ld;arm-linux-objcopy用于将一个目标文件的内容复制到另一个文件中,可以进行格式转换,例如可将ELF格式的可执行文件转换为二进制文件;arm-linux-objdump可用于显示二进制文件信息。

    2.2软件安装及使用

    • ADS1.2 集成开发环境的使用。一般用于裸板开发,现在基本不用这个工具,主要使用DS-5,更多的是直接使用gcc进行开发。此外,对于比较高级的ARM CPU一般都会移植大型系统(比如Linux,Android等),很少进行裸板开发了。
    • arm-linux-gcc

    3、基本的Makefile语法

    3.1最基本的Makefile文件

    helloworld:file1.o file2.o //helloworld依赖file1.o file2.o两个目标文件     

    gcc file1.o file2.o -o helloworld //编译出helloworld可执行文件。-o表示你指定的目标文件名 。

     

    file1.o:file1.c file2.h //依赖file1.c文件     

    gcc -c file1.c -o file1.o //编译出file1.o文件。-c表示gcc 只把给它的文件编译成目标文件,用源码文件的文件名命名

     

    file2.o:file2.c file2.h   

    gcc -c file2.c -o file2.o

     

    clean: //当用户键入make clean命令时,会删除*.o 和helloworld文件

    rm -rf *.o helloworld 将上述文件存为Makefile,然直接执行make命令即可编译程序,执行make clean即可清除编译出来的结果。

    3.2MakeFile简介

    无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到 make、make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。因此,有效的利用make和makefile工具可以大大提高项目开发的效率。

     makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

     makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。在Linux中, GNU make工具在当前工作目录中按照GNUmakefile、makefile、Makefile的顺序搜索makefile文件。

    3.3Makefile规则

    make程序基于文件之间的依赖性,需要建立的目标文件,以及建立目标文件时要执行的命令,以上所有被称为规则,存放在文件makefile中。定制规则的语法如下:

    目标列表 : 关联性列表

    <TAB>命令列表

    注意:

    1.可以在关联性列表和命令列表中使用shell文件名模式匹配字符,例如?、*、[]等等。

    2.如果目标的命令列表中某个命令前面带有@,那么当make程序执行时,该命令是不会有反应的,在程序运行完毕之后,所有前面带@的命令按照反序执行。可以通过执行make -n命令显示这些命令以供查看。

    3.如果目标的命令列表中某个命令前面带有-,说明如果该命令执行有误,会跳过该命令并继续执行。

    make程序使用makefile中的规则决定程序中需要重新编译的文件,并再次链接生成可执行代码。如果源文件上修改的时间戳比目标文件上的时间戳更新,那么make重新编译build中包含的源文件。例如,如果修改了一个.h头文件,make程序就会重新编译所有包含该头文件的源文件,前提是头文件在这些源文件的目标文件的关联性列表中;再如某.c源文件被修改,那么该源文件被重新编译,生成对应的新的目标文件。

    展开全文
  • 嵌入式Linux驱动开发

    千人学习 2019-05-11 21:05:29
    说到Linux驱动,尤其是嵌入式Linux驱动,大家可能会望而却步,因为入门太难!很多书上或课程基本是这样的:一上来给我们展示一大堆高深莫测的代码,感觉是C语言,又感觉不是C语言。说它是C语言,这里能找到一些C的...
  • 嵌入式Linux体系结构;什么是嵌入式Linux;什么是嵌入式LinuxLinux简介;什么是嵌入式Linux Linux简介;什么是嵌入式Linux Linux简介;什么是嵌入式Linux Linux简介;什么是嵌入式Linux Linux简介;什么是嵌入式Linux Linux...
  • 嵌入式Linux network

    2020-03-19 15:29:20
    嵌入式Linux i.MX开发板 嵌入式Linux NFS 嵌入式Linux 交叉编译工具链 嵌入式Linux LED GPIO 嵌入式Linux input 嵌入式Linux UART 嵌入式Linux CAN 本篇介绍下网络的使用, 采用米尔MYS-6ULX板子出厂配置的系统. ...

    前言

    这是前篇:

    本篇介绍下网络的使用, 采用米尔MYS-6ULX板子出厂配置的系统. 主要参考 Linux 网络编程——TCP编程, 很浅显易懂, 还有野火的11. 套接字, 这一篇也可以看看: Linux网络编程.

    PC, Ubuntu18, IP地址192.168.3.141, 作为服务器(server).
    i.MX6ULL, 和服务器在同一局域网, 作为客户端(client).

    网络通信简介

    核心步骤和流程:
    在这里插入图片描述

    服务器程序

    来自米尔官方带的例程, 编写pc_server.c:

    #include <stdio.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <string.h>
    #include <sys/types.h>
    #include <netinet/in.h>
    #include <sys/socket.h>
    #include <sys/wait.h>
    #include <arpa/inet.h>
    
    #define SERVPORT 3333 /*port */
    #define BACKLOG 10    /* max client */
    
    int main()
    {
        int sockfd, client_fd;
        struct sockaddr_in my_addr; /* loacl */
        struct sockaddr_in remote_addr;
        int sin_size;
        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
        {
            perror("socket fail!");
            exit(1);
        }
        my_addr.sin_family = AF_INET;
        my_addr.sin_port = htons(SERVPORT);
        my_addr.sin_addr.s_addr = INADDR_ANY;
        bzero(&(my_addr.sin_zero), 8);
    
        if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
        {
            perror("bind error!");
            exit(1);
        }
        if (listen(sockfd, BACKLOG) == -1)
        {
            perror("listen error!");
            exit(1);
        }
        while (1)
        {
            sin_size = sizeof(struct sockaddr_in);
            if ((client_fd = accept(sockfd, (struct sockaddr *)&remote_addr, &sin_size)) == -1)
            {
                perror("accept error");
                continue;
            }
            printf("REC FROM: %s\n", inet_ntoa(remote_addr.sin_addr));
    
            if (fork() == 0)
            {
                if (send(client_fd, "Make Your idea Real! \n", 26, 0) == -1)
                    perror("send error!");
                close(client_fd);
                exit(0);
            }
            else
                close(client_fd);
        }
    }
    

    使用gcc编译: gcc -o server pc_server.c

    客户端程序

    编写arm_client.c :

    #include <stdio.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <string.h>
    #include <netdb.h>
    #include <sys/types.h>
    #include <netinet/in.h>
    #include <sys/socket.h>
    
    #define SERVPORT 3333
    #define MAXDATASIZE 100 /*max client */
    #define SERVER_IP "192.168.3.141"
    
    int main(int argc, char *argv[])
    {
        int sockfd, recvbytes;
        char buf[MAXDATASIZE];
        struct hostent *host;
        struct sockaddr_in serv_addr;
    
        if ((host = gethostbyname(SERVER_IP)) == NULL)
        {
            herror("gethostbyname error!");
            exit(1);
        }
        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
        {
            perror("socket create error!");
            exit(1);
        }
        serv_addr.sin_family = AF_INET;
        serv_addr.sin_port = htons(SERVPORT);
        serv_addr.sin_addr = *((struct in_addr *)host->h_addr);
        bzero(&(serv_addr.sin_zero), 8);
        if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) == -1)
        {
            perror("connect error!");
            exit(1);
        }
        if ((recvbytes = recv(sockfd, buf, MAXDATASIZE, 0)) == -1)
        {
            perror("connect error!");
            exit(1);
        }
        buf[recvbytes] = '\0';
        printf("form server: %s", buf);
        close(sockfd);
    }
    
    

    交叉编译: arm-linux-gnueabihf-gcc -o arm_client arm_client.c

    运行

    PC运行./server, 开发板运行./arm_client:
    在这里插入图片描述
    在这里插入图片描述

    微信公众号

    欢迎扫描关注我的微信公众号, 及时获取最新文章:
    在这里插入图片描述

    展开全文
  • 走进嵌入式Linux的世界 一、嵌入式系统 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件是可裁剪的,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。嵌入式系统最典型的特点是...
  • 嵌入式Linux开发环境搭建;嵌入式系统定义;嵌入式系统的应用;嵌入式Linux开发环境;嵌入式Linux开发环境;嵌入式Linux开发环境;嵌入式Linux开发环境;嵌入式Linux开发环境;嵌入式Linux开发环境;嵌入式Linux开发环境;...
  • 嵌入式Linux UART

    2020-03-17 20:08:17
    嵌入式Linux i.MX开发板 嵌入式Linux NFS 嵌入式Linux 交叉编译工具链 嵌入式Linux LED GPIO 嵌入式Linux input 本篇介绍下uart的使用, 采用米尔MYS-6ULX板子出厂配置的系统. 主要参考自野火的10. 串口通讯与终端...
  • 第8章 构建嵌入式Linux系统 第8章 构建嵌入式Linux系统 8.1 嵌入式Linux系统的构建流程 8.2 Bootloader 8.3 Linux内核 8.4 根文件系统 8.1 嵌入式Linux系统的构建流程 嵌入式Linux的组成 嵌入式Linux的构建 嵌入式...
  • 如何学习嵌入式Linux

    千次阅读 多人点赞 2020-05-13 16:30:07
    从事嵌入式Linux培训12年来,我们写过很多《关于如何学习linux》的文章,这是最新的,本文将不断更新。 第1章 单片机和Linux的区别 1.1 有哪些产品使用单片机或Linux 所有的电子产品,所用技术都可以认为要么是...
  • 嵌入式linux简介

    千次阅读 2020-02-19 18:56:59
    嵌入式linux系统应用非常广泛,涵盖各行各业,基于ARM、mips等微处理器架构的硬件平台。基于嵌入式linux系统的设备已经深入生活中各个角落,随处可见。   我们常说的嵌入式linux系统,其实与电脑端运行的linux...
  • 介绍了嵌入式Linux系统体系架构,以及每一层开发人员的开发流程。
  • 嵌入式Linux开发基础

    千人学习 2015-12-01 13:56:11
    嵌入式Linux开发环境的构建,Linux命令行的基本使用,VI、GCC、Makefile基本工具的使用,交叉开发环境的使用。 学习条件: 1.C语言编程基础
  • 嵌入式Linux开发前,你可能需要知道这些基本概念 作者之前编写了一系列嵌入式Linux的开发文档: 关注公众号【微联智控】,并回复【嵌入式Linux资料】,可获取以上pdf文档​的下载链接。 当编写到一定程度...
  • 嵌入式linux和桌面linux的区别主要区别是: 1. 硬件平台: 嵌入式Linux一般是Mips, ARM平台, 桌面Linux一般是x86平台。 2. 根文件系统 嵌入式Linux一般用UBIFS, yaffs2, jffs2. 桌面Linux一般用ext3。 3. ...
  • 嵌入式Linux系统移植 嵌入式Linux系统移植是进行Linux驱动开发的基础,如果连Linux系统移植都完成不了,那就更不用说驱动开发了。因此,Linux系统移植至关重要。 嵌入式Linux系统的移植要点 搭建交叉开发环境 ...
  • 嵌入式Linux开发流程 在一个嵌入式系统中使用Linux开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过如下的过程: 1.建立开发环境 操作系统一般使用RedHat-Linux,版本从7到9都可以,...
  • 很好的嵌入式linux视频教程 (进程通讯) (编程基础) (文件编程) (进程通讯) (多线程) (网络编程) 进程控制) 进程管理) 高级字符设备驱动) 字符设备驱动) 内存管理子系统) 内核开发基础...
  • 嵌入式Linux中SSH服务搭建,讲述 交叉编译环境搭建,移植ssh到嵌入式Linux
  • 嵌入式Linux入门:概述

    万次阅读 多人点赞 2017-06-01 20:48:25
    本文就结合笔者经历写一写个人的嵌入式Linux入门的一些步骤和经验。不当之处,望方家指正。 在正式开始之前,先花一点时间写写笔者学习的经历。我是计算机专业,因此,对于模拟电路、数字电路、操作系统原理、...
  • 嵌入式Linux系统移植入门

    千人学习 2016-01-20 10:21:19
    本课程介绍嵌入式Linux系统移植的相关的,bootloader,内核分析与配置,文件系统知识。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,482
精华内容 18,592
关键字:

嵌入式linux

linux 订阅