<video id="en21j"><xmp id="en21j">

  • <big id="en21j"></big>

    <source id="en21j"></source>

      <sup id="en21j"><dd id="en21j"><rp id="en21j"></rp></dd></sup>
      1. 西安济通电气有限公司

        研发生产型企业

        行业新闻

        主页 > 行业新闻

        行业新闻

        嵌入式Linux入门:概述

        发布时间:2018-07-31 13:00

        李迟按:

        嵌入式入门文章比比皆是,不同的人有不同的入门方法。本文就结合笔者经历写一写个人的嵌入式Linux入门的一些步骤和经验。不当之处,望方家指正。

        在正式开始之前,先花一点时间写写笔者学习的经历。我是计算机专业,因此,对于模拟电路、数字电路、操作系统原理、数据库原理、编译原理、计算组成原理、计算机体系结构、数据结构等等课程,都是必修课。我虽然都不精通,但起码是学习了。

        我从大二开始就已经接触51和AVR单片机,当时机缘巧合,由同专业的同学——也是我老乡带我开始的。然后开始画板、做板、焊板、写程序这些路子,前后陆续接触大约一两年时间,这些经历对于自学嵌入式Linux打下很好的基础!率瞪,在我开发单片机时,我已经计划好要学嵌入式,而且是偏向软件方向。

        同时我也开始安装Linux,自己捣鼓,包括虚拟机安装、物理机安装。因为考试和困难放弃一段时间,但最后还是继续。

        后来大三买了一块ARM9的开发板,自己捣鼓(不用“研究”,是因为以纯粹的门外汉去进行的)uboot、内核、根文件系统。本着不服输的精神,虽然一度放弃,但还是坚持下去。

        在毕业时慢慢摸到一些门道。但此时技术还不够,代码量还不够,后来工作多年,大量接触各式不同的技术,虽然并没有很深入,但足够养成习惯,——解决问题、研究新技术的方法、习惯。

        综上,我走的路子概括为:单片机-->使用Linux-->嵌入式Linux(u-boot->kernel->rootfs)。软件知识:基础必修课->linux环境编译->Linux驱动。

        从上文可以看到,笔者是作为计算机专业的学生而进入嵌入式Linux领域的。但并不是说一定要在学校学习那些课程才能入门。无论学习什么知识,都是靠自己进行的,但有了过来人指点、带你入门,往往省时省力很多——而这正是本文的目的。

        下面进入正文部分。

        一、系统环境 1、环境搭建

        开发嵌入式需要大量辅助软件,一般来说,我们是在电脑上开发好程序,然后通过某些方式将程序下载到开发板上运行。按这个顺序列出一些我认为必须的:

        Linux系统:主要作为程序开发的系统,选择多人使用并资源丰富的版本,建议ubuntu或fedora,目前我使用ubuntu?梢允褂迷谛槟饣蛭锢砘。

        虚拟机:有条件的推荐使用物理机安装,但一般经常使用vmware这类虚拟机软件,通过这个软件安装ubuntu系统,然后设置共享。然后在这个系统上交叉编译。

        共享方式:有的人喜欢用vmware自带共享功能,有的人喜欢用samba共享。个人建议在ubuntu中设置samba共享,这样可以在windows上将ubuntu共享目录映射成为其中一个盘符,这样做,就可以在windows下操作linux系统的目录、文件了,不过前提是需要网络性能良好。另一种常见的共享方式是nfs,多用于主机和开发板之间的文件传输。

        开发IDE:有的人建议在linux系统中用vim或emacs,但作为初学者入门,不要如此,使用vim、emacs学习成本高,而会打击积极性。在samba共享情况下,建议使用Notepad++、source insight进行代码编译。

        交叉编译:交叉编译是嵌入式一个很重要的概念。由于我们编译的程序是在开发板(开发板又称目标板)上运行的,但开发板又没有环境进行编译,所以带出“交叉编译”概念。即在一台linux主机系统上使用交叉编译器对代码进行编译,但编译得到的二进制文件无法在该主机运行,只能在开发板上运行。不同的板子使用的交叉编译器不同。一般使用商家自带的交叉编译器。

        下载手段:根据应用场合,可以用jtag烧录器下载程序(适用如u-boot开发)?梢允褂胻ftp方式下载程序(适用kernel开发)。在开发板系统启动后且网络正常情况下,可以使用tftp下载、nfs拷贝等方式进行调试(适用于应用层程序开发)。

        另外对于USB转串口线、网络这类的东西,就不一一详细说明了。

        掌握程度:不同人使用的开发环境不尽相同。原则上只要是自己熟悉的环境就可以了,以提高开发效率为准则。

        推荐软件:vmware、notepad++、source insight、tftpd32(均为windows系统软件)。

        2、系统使用

        工欲善其事,必先利其器。系统环境使用熟悉程度越高,越能提高开发速度。举个例了,曾经遇到过别人在设备上调试应用程序,步骤是:编码、编译、制作软件包、用工具升级软件包到设备上,设备上电看效果。这一系列步骤中,制作包、升级软件包耗时很长,对于调试十分不利。如果使用NFS,时间能省至少三分之二。所以说,环境的熟悉是十分重要和必要的。

        本节主要针对Linux系统,对于入门者而言,Linux系统的使用是一个大坎。但要知道,嵌入式开发是离不开linux系统的,是必须学的。目前网络资料十分广泛,几乎遇到的问题都在找到答案,但质量往往良莠不齐,有些甚至会误导人。因此,建议一边学一边做笔记,把自己的疑问、心得、步骤都记录下来(比如,记录第1小节提到的nfs、samba服务安装的步骤)。

        如果时间允许,最好找书本来学习,边看书边敲命令。因为书籍介绍比较系统,有利于了解全貌,再逐个知识点深入,做到胸有成竹。下面列一下需要学习的知识点。

        1、掌握常用命令。必须要学的命令不多,像查看文件、拷贝文件、创建文件、查找文件、显示日期、查看/修改IP,等等。这些常用命令只要使用次数多了,就能熟练掌握。具体的自行搜索。

        2、掌握软件安装步骤。一般linux系统发行版自带有安装工具,如unbutu,在联网情况下直接输入命令apt-get install tool-name,就能安装了。

        3、编译源码方式安装软件。有些工具提供源码需要自己进行编译(比如要在开发板上运行的程序,则无法通过apt-get来安装,需要交叉编译)。linux编译一般有三个步骤:

        配置:./configure

        编译:make

        安装:make install。

        这个知识点自行百度。

        4、了解linux文件系统、目录结构、设备文件。如根目录名称是“/”,配置文件一般位于/etc目录,运行程序一般位于/bin、/sbin、/usr/bin、/usr/sbin,等等。因为嵌入式涉及到根文件系统概念,因而需要对linux目录结构有了解。如果感兴趣,可以去搜索一下LFS。

        5、学习IO重定向、管道概念,学习并会写简单shell脚本。

        6、学习编辑器vi的简单使用(因为有些情况下只有这个编辑器可用)、编译器gcc用法、Makefile知识、gdb调试。(此项针对开发而言)

        推荐资源:

        笔者的主页和博客有大量linux系统使用、软件编译、Makefile,等等文章,欢迎前来围观。

        学习建议:

        1、看书、网络搜索

        2、学会man命令(这是linux内置的帮助命令,比如要了解cp命令的用法,则输入man cp)

        3、记录笔记

        二、应用层 1、C/C++语言
        物联网产品 用智慧系统改变人们的生产生活状况

        智能仪器仪表定制开发 物联网平台设计 物联网无磁水表 智慧水务 各种流量计定制开发 西安嵌入式开发生产 物联网水表?

        快3投注