精华内容
参与话题
问答
  • 嵌入式学习路线

    2019-01-21 10:48:00
    1、打好嵌入式软件编程的基础 这一阶段重点打好嵌入式软件编程的基础,包括学习Linux系统的基本应用,Linux... 这一阶段推荐的嵌入式学习书籍如下:《C程序设计语言》,《C语言核心技术》,《数据结构与算法分析-...

    1、打好嵌入式软件编程的基础 

    这一阶段重点打好嵌入式软件编程的基础,包括学习Linux系统的基本应用,Linux的常用命令、C语言编程基础、常用的数据结构。

    特别是C语言中对指针的理解和应用。这一阶段的主要目的是学习编程语言、开发环境、和培养自己的编程思维,为进一步学习嵌入式开发打下良好的基础。 这一阶段推荐的嵌入式学习书籍如下:《C程序设计语言》,《C语言核心技术》,《数据结构与算法分析--C语言描述》,《C和指针》,《C陷阱与缺陷》,《C++ Primer》 ,作为嵌入式软件工程师还要有一定的数字电路及模拟电路基础

     

    2、学习ARM体系结构编程 

    这一阶段才是真正的嵌入式编程,首先我们要选择一款嵌入式CPU和一款嵌入式开发平台,目前ARM 嵌入式CPU应用最广泛,这一阶段重点是学习嵌入式CPU的裸机编程,熟悉中断、定时器、串口、NAND FLASH、网络控制器、LCD屏、触摸屏等常用嵌入式外围设备的硬件工作原理以及如何使用C语言来编程、控制这些硬件。这一阶段除了要学习对硬件编程之外,还需要学习嵌入式硬件的知识,但是对于嵌入式软件工程师来讲,重点是学习硬件的工作原理,在掌握硬件工作原理的基础上,对硬件进行编程控制。这和硬件工程师学习的侧重点有所不同。这一阶段对应的学校的课程主要包括模拟电路、数字电路、微机原理和单片机这一阶段重点是要看CPU的芯片手册,大部分的参考书也是对芯片手册的翻译。推荐的参考书籍如下:《ARM嵌入式系统开发--

    软件设计与优化》,《ARM处理器开发详解 基于ARM Cortex-A8处理器的开发设计

    、学习嵌入式系统的构建 

    这一阶段主要学习带有操作系统的嵌入式系统的构建,包括系统的启动流程、Bootloader的工作流程、UBOOT的编译、裁剪与移植、嵌入式Linux内核的裁剪、移植与编译,嵌入式根文件系统的定制、BootLoader、内核和根文件系统的烧写。 这一阶段的主要目的是掌握带有操作系统的嵌入式系统的构建和烧写过程,以及对嵌入式系统软件的总体构成有个整体认识,为我们接下来学习嵌入式应用和驱动开发打下坚实的基础。 这一阶段推荐的书籍如下:《构建嵌入式Linux核心软件系统实战

    4、学习嵌入式Linux应用程序开发 

    这一阶段主要学习上层的嵌入式Linux应用程序开发,包括基于Linux多进程、多线程、网络、文件与目录和QT编程。掌握嵌入式Linux环境下应用程序开发技术。这一阶段推荐的书籍有: 《UNIX环境高级编程》, 《Unix网络编程》,《Qt Creator快速入门》, 《精通Qt4编程》

     

    5、学习嵌入式Linux驱动程序开发 、

    这一阶段主要学习底层嵌入式Linux设备驱动程序开发设计,包括常用的字符设备驱动、块设备驱动、LCD设备驱动、触摸屏设备驱动以及驱动程序开发中的核心技术。这一阶段推荐的参考书籍有:《Linux设备驱动程序》,《Linux设备驱动开发详解》 

     

    6、完成一个综合项目 

    嵌入式技术关键在于理论和实践的结合,要能够学以致用,完成了以上的所有阶段的知识点学习后,到底有没有学会,会不会用,能不能应用所学知识来解决实际开发中的问题,我们需要来完成一个综合的嵌入式实训项目,例如: 基于嵌入式Linux平台实现的飞行器、 基于嵌入式Linux平台实现的智能机器人等,这些项目都综合应用了嵌入式开发当中的应用,驱动和QT开发技术

     

    转载于:https://www.cnblogs.com/yuanqiangfei/p/10297599.html

    展开全文
  • 嵌入式大神:教你如何从零开始学习路线解析

    万次阅读 多人点赞 2018-08-28 08:49:15
    嵌入式大神:教你如何从零开始学习路线解析   嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等。另外,用c,c++或汇编开发;用高级处理器,arm7,arm9,arm11,...

    嵌入式大神:教你如何从零开始学习路线解析

     

    嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等。另外,用c,c++或汇编开发;用高级处理器,arm7,arm9,arm11,powerpc,mips,mipsel等,或加上操作系统也属于嵌入式的开发。

    嵌入式系统(Embedded System)是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。举例来说,大到油田的集散控制系统和工厂流水线,小到家用VCD机或手机,甚至组成普通PC终端设备的键盘、鼠标、硬盘、Modem等均是由嵌入式处理器控制的。

    嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。

    像我们平常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。

    第一部分:Linux平台搭建与环境熟悉

    了解linux系统;区分各种版本的Linux系统,以便于拓展 Linux视野。

    1、Linux 简介;

    2、Linux 系统的主要特点;

    3、Linux 的组成;

    4、主要的 Linux 版本;

    5、嵌入式 Linux简介与发展

    第二部分:虚拟机安装和LINUX系统安装

    1、虚拟机安装;

    2、Linux系统的安装;

    3、Linux系统的常用软件的安装;

    4、Linux快速入门

    5、 熟悉运用 Linux环境下,常用命令的操作与系统设置,如常用的 Shell;掌握基本的Shell 应用

    第三部分:嵌入式LINUX环境搭建

    1、 建立嵌入式 Linux开发环境

    2、 熟悉嵌入式开发平台

    3、 嵌入式 Linux开发工具

    4、 Linux下的调试技巧

    5、 MAKE工程管理器

    6、 硬件环境的搭建;arm-linux-gcc与 gcc安装配置

    十年资深嵌入式大神:教你如何从零开始学习路线解析

    第四部分: U-Boot

    了解 U-Boot 的作用及工作流程;了解Bootloader 的代码结构、编译过程;移植U-Boot;掌握常用的U-Boot命令。

    1、 Bootloader介绍

    2、 u-boot工程介绍

    3、 u-boot的编译使用

    4、 u-boot源码分析

    5、 u-boot资源分配

    6、 配置编译u-boot

    7、 u-boot移植过程

    8、 u-boot常用命令操作

    9、 添加u-boot新命令

    10、设置u-boot环境变量

    11、 u-boot驱动添加如网卡:DM9000

    第五部分:LINUX内核移植

    熟悉内核的原码结构和kbuild Makefile语法;掌握和内核、驱动模块编译相关的原理及方法。

    1、Linux内核介绍

    2、Linux内核特点

    3、Linux内核源代码结构

    4、Linux内核选项解析

    5、Linux内核编译链接

    6、内核模块编译、使用方法

    第六部分:LINUX根文件系统

    1、busybox 包移植、编译

    2、Linux跟文件系统制作过程

    3、根文件系统介绍

    4. nfs文件服务器系统搭建

    第七部分:LINUX应用学习

    嵌入式Linux应用开发和系统开发是嵌入式Linux中最重要的一部分,也是企业人才需求最广的一部分。

    主要目标是精通嵌入式Linux下的程序设计,熟练掌握嵌入式Linux的开发环境、系统编程以及网络编程,熟悉C++、QT编程并且深刻体会整个嵌入式Linux项目开发流程,强化学员对Linux应用开发的能力。

    1、Linux系统中的进程的概念,在应用程序中线程与父子进程的创建与应用

    2、线程之间、进程之间的通信

    3、进程间通信基本概念

    4、管道(PIPE)

    5、信号(SIGNAL)

    6、内存映射(MAPPED MEMORY)

    7、消息队列(MESSAGE QUEUE)

    8、信号量(SEMAPHORE)

    9、共享内存(SHARE MEMORY)@

    10、tcPip协议在应用程序中的编程开发(SOCKET套接字编程开发)

    10.1. ISO/OSI七层协议模型与IP网络四层模式

    10.2.TCP/IP协议簇

    10.3. 基于嵌入式Linux的TCP/IP网络结构

    10.4. 基于嵌入式Linux的SOCKET编程

    10.5.UDP与TCP的区别

    10.6. UDP SERVER-CLIENT关系程

    11、文件读写与存储

    十年资深嵌入式大神:教你如何从零开始学习路线解析

    嵌入式设计应具备的基本技能

    1、Linux 基础

    安装Linux操作系统

    Linux文件系统

    Linux常用命令

    Linux启动过程详解

    熟悉Linux服务能够独立安装Linux操作系统,能够熟练使用Linux系统的基本命令

    认识Linux系统的常用服务安装Linux操作系统

    Linux基本命令实践

    设置Linux环境变量

    定制Linux的服务Shell

    编程基础使用vi编辑文件

    使用Emacs编辑文件

    使用其他编辑器

    2、Shell 编程基础

    Shell简介

    认识后台程序Bash编程

    熟悉Linux系统下的编辑环境

    熟悉Linux下的各种Shell

    熟练进行shell编程熟悉vi基本操作

    熟悉Emacs的基本操作

    比较不同shell的区别

    编写一个测试服务器是否连通的shell脚本程序

    编写一个查看进程是否存在的shell脚本程序

    编写一个带有循环语句的shell脚本程序

    3、Linux下的C编程基础

    linux c语言环境概述

    Gcc使用方法

    Gdb调试技术

    AutoconfAutomake Makefile 代码优化

    熟悉Linux系统下的开发环境

    熟悉Gcc编译器

    熟悉Makefile规则编写Hello,World程序

    使用 make命令编译程序

    编写带有一个循环的程序

    调试一个有问题的程序

    4、嵌入式系统开发基础

    嵌入式系统概述

    交叉编译

    配置TFTP服务

    配置NFS服务

    下载Bootloader和内核

    嵌入式Linux应用软件开发流程熟悉嵌入式系统概念以及开发流程

    建立嵌入式系统开发环境制作cross_gcc工具链

    编译并下载U-boot

    编译并下载Linux内核

    编译并下载Linux应用程序

    5、嵌入式系统移植

    Linux内核代码

    平台相关代码分析

    ARM平台介绍

    平台移植的关键技术

    移植Linux内核到 ARM平台

    了解移植的概念

    能够移植Linux内核移植Linux2.6内核到ARM9开发板

    6、嵌入式 Linux 下串口通信

    串行I/O的基本概念

    嵌入式Linux应用软件开发流程

    Linux系统的文件和设备

    与文件相关的系统调用

    配置超级终端和MiniCOM

    能够熟悉进行串口通信

    熟悉文件I/O

    编写串口通信程序

    编写多串口通信程序

    7、嵌入式系统中多进程程序设计

    Linux系统进程概述

    嵌入式系统的进程特点

    进程操作

    守护进程

    相关的系统调用了解Linux系统中进程的概念

    能够编写多进程程序编写多进程程序

    编写一个守护进程程序

    sleep系统调用任务管理

    同步与通信Linux任务概述任务调度

    管道 信号 共享内存 任务管理 API

    了解Linux系统任务管理机制

    熟悉进程间通信的几种方式

    熟悉嵌入式Linux中的任务间同步与通信编写一个简单的管道程序实现文件传输

    编写一个使用共享内存的程序

    8、嵌入式系统中多线程程序设计

    线程的基础知识

    多线程编程方法

    线程应用中的同步问题了解线程的概念

    能够编写简单的多线程程序编写一个多线程程序

    展开全文
  • 嵌入式软件学习路线图!

    千次阅读 多人点赞 2017-12-09 17:03:01
    嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段: 1、嵌入式Linux上层应用,包括QT的GUI开发 2、嵌入式Linux系统开发 ...

    嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段:

    1、嵌入式Linux上层应用,包括QTGUI开发

    2、嵌入式Linux系统开发

    3、嵌入式Linux驱动

     

    嵌入式目前主要面向的几个操作系统是,Linux,WINCE、VxWorks等等。

     

    Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。

     

    你可以尝试以下路线:

    (1) C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握。

     

    推荐书籍:《The C Programming Language》 这本经典的教材是老外写的,也有中译版本。

     

    (2) 操作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫进程”“线程”“系统调度等等基本问题搞清楚。

     

    (3)Linux操作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。

    推荐书籍:《UNIX环境高级编程》(2)

     

    (4) 了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。

     

    (5) 系统移植的时候,就需要你从最下层的

    bootloader开始,嵌入式学习加意义气呜呜吧久零九易,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。

     

    (6) 驱动开发

    linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。

    linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。

     

    以上只不过是大概的框架,在实际的开发中还会涉及很多东西,比如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是需要较强的学习能力和专业功底。只要能坚持下来一定会取得成功!

     

    嵌入式是一个比较大的概念,有四个分支(主要)

    1.微控制器(单片机为例)

    2./微处理器(arm为例)

    3.dsp(数字信号处理)

    4.soc(片上系统)

     

    对于我们初学者而言,首先要学习单片机,以51为代表,等你学好51之后,可以深入学习更艰难的东西;当然,并不是说你只需要学习单片机;要想学好单片机,你还得学c语言,得学汇编,得学一大堆应用软件;等到单片机能够掌握的不错的时候又需要自己进行原理图、PCB板的设计;还得掌握系统设计的工程管理什么的;比较多......

     

    单片机还是比较简单的,等到学好之后,开始学习arm的时候,你就接触的多了,什么操作系统啊、驱动编写啊、内核移植啊、应用程序的添加啊、上位机的编写啊,那个就多了,不过到时候你就全知道了。。。

     

    ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:

    (1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9)

    (2)必须掌握一个嵌入式操作系统(初步定为uclinux或linux,版本待定)

    (3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。

     

    从事嵌入式软件开发的好处是:

    (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切 入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。

    (2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。

    (3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般 都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。

    (4)兴趣所在,这是最主要的。

     

    从事嵌入式软件开发的缺点是:

    (1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。

    (2)这方面的企业数量要远少于企业计算类企业。

    (3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。

    (4)平台依托强,换平台比较辛苦。

     

    兴趣的由来:

    1、成功观念不同,不虚度此生,就是我的成功

    2、喜欢思考,挑战逻辑思维

    3、喜欢C语言

    4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)

    5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师

     

    方法步骤:

     

    1、基础知识

    目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。

     

    科目:数字电路、计算机组成原理、嵌入式微处理器结构、汇编语言、C/C++、编译原理、离散数学、数据结构和算法、操作系统、软件工程、网络、数据库。

     

    方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。如thec++programminglanguage(一直没时间读)、数据结构-C2。

     

    2、学习linux

    目的:深入掌握linux系统。

     

    方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习,最后深入代码。

     

    主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。

     

    3、学习嵌入式linux

    目的:掌握嵌入式处理器其及系统。

     

    方法:

    (1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。

    (2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。

    (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)

    主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。

     

    4、深入学习

    A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。

    B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDM A等。

    C、网络与信息安全技术:如加密技术,数字证书CA等。

    D、DSP技术:DigitalSignalProcess,DSP处理器通过硬件实现数字信号处理算 法。

     

    说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习C++,理由是C++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。

     

    注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。

     

    不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的!

     

    永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。

     

    展开全文
  • 在大一时,我们班里普遍弥漫着对未来的不安,不知道学习了物理后出去能做什么。你当下的经历、当下的学习,在未来的一天肯定会影响到你。毕业后我们也各自找到了自己的职业:出国深造转行做金融、留校任教做科研、...

    我是1999年上的大学,物理专业。在大一时,我们班里普遍弥漫着对未来的不安,不知道学习了物理后出去能做什么。你当下的经历、当下的学习,在未来的一天肯定会影响到你。毕业后我们也各自找到了自己的职业:出国深造转行做金融、留校任教做科研、设计芯片、写程序、创办公司等等,这一切都离不开在校时学到的基础技能(数学、IT、电子电路)、受过煅炼的自学能力。

    所以,各位正在迷茫的在校生,各位正在尝试转行的程序员,未来一定有你的位置,是好是坏取决于你当下的努力与积累。

    我不能预言几年后什么行业会热门,也不能保证你照着本文学习可以发财。我只是一个有十几年经验的程序员,给对编程有兴趣的你,提供一些建议。

    程序员的三大方向

    程序员的方向,一般以分为3:专业领域、业务领域、操作系统领域。你了解它们后,按兴趣选择吧。对于专业领域,我提供不了建议。业务,也就是应用程序,它跟操作系统并不是截然分开的:

    ① 开发实体产品时,应用程序写得好的人,有时候需要操作系统的知识,比如调度优先级

    的设置、知道某些函数可能会令进程休眠。

    ② 写应用程序的人进阶为系统工程师时,他需要从上到下都了解,这时候就需要有操作

    系统领域的知识了,否则,你怎么设计整个系统的方案呢?

    ③ 做应用程序的人,需要了解行业的需求,理解业务的逻辑。所以,当领导的人,多是

    做应用的。一旦钻入了某个行业,很难换行业。

    ④ 而操作系统领域,做好了这是通杀各行业:他只负责底层系统,在上面开发什么业务跟

    他没关系。这行很多是技术宅,行业专家。

    ⑤ 操作系统和业务之间并没有一个界线。有操作系统经验,再去做应用,你会对系统知

    根知底,碰到问题时都有解决思路。有了业务经验,你再了解一下操作系统,很快就可组成一个团队自立门户,至少做个CTO没问题。

     

    专业领域

    它又可以分为下面2类。

    学术研究

    比如语音、图像处理、人工智能,这类工作需要你有比较强的理论知识,我倾向于认为这类人是“科学家”,他们钻研多年,很多时候是在做学术研究。

    在嵌入式领域,需要把他们的成果用某种算法表达出来,针对某种芯片进行优化,这部分工作也许有专人来做。

    工程实现

    也有这样一类人,他们懂得这些专业领域的概念,但是没有深入钻研。可以使用各类开源资料实现某个目标,做出产品。比如图像处理,他懂得用opencv里几百个复杂函数来实现头像识别。有时候还可以根据具体芯片来优化这些函数。

    “专业领域”不是我的菜,如果你要做这一块,我想最好的入门方法是在学校学习研究生、博士课程。

    业务领域

    换句话说,就是应用程序,这又可以分为下面2类。

    界面显示

    做产品当然需要好的界面,但是,不是说它不重要,是没什么发展后劲。

    现在的热门词是Android
    APP和IOS APP开发。你不要被Android、IOS两个词骗了,它们跟以前的VC、VB是同一路货色,只是、仅仅是一套GUI控件的实现。

     

    希望没有冒犯到你,我有理由。

    一个程序需要有GUI界面,但是程序的内在逻辑才是核心。Android、IOS的开发工具给我们简化了GUI的开发,并提供了这些控件的交互机制,封装并提供了一些服务(比如网络传输)。

    但是程序内部的业务逻辑、对视频图像声音的处理等等,这才是核心。另外别忘了服务器那边的后台程序:怎样更安全地保存数据、保护客户的隐私,怎样处理成千上万上百万的并发访问,等等,这也是核心。

    但是,从Android、IOS APP入门入行,这很快!如果你是大四,急于找到一份工作,那么花上1、2个月去学习Android或IOS,应该容易找到工作,毕竟APP的需求永远是最大的,现在这两门技术还算热门。在2011、2012年左右,Android程序员的起薪挺高,然后开始下滑。Android APP的入门基本只要1个月,所以懂的人也越来越多。2013、2014年,IOS开发的工资明显比Android高了,于是各类IOS培训也火曝起来。中华大地向来不缺速成人才,估计再过一阵子IOS工程师也是白菜价了。会Android、IOS只是基本要求,不信去51job搜搜Android或IOS,职位要求里肯定其他要求。

     

    业务逻辑

    举个简单例子,做一个打卡软件,你需要考虑这些东西:

    ① 正常流程是上班下班时都要打卡

    ② 有人忘记了怎么办?作为异常记录在案,推送给管理员

    ③ 请假时怎么处理?

    ④ 加班怎么处理?

    对于更复杂的例子,视频会议系统里,各个模块怎么对接,各类协议怎么兼容,你不深入这个行业,你根本搞不清楚。

    应用开发的职位永远是最多的,入门门槛也低。基本上只要你会C语言,面试时表现比较得体,一般公司都会给你机会。因为:

    ① 你进公司后,还需要重新培训你:熟悉它们的业务逻辑。

    ② 你要做的,基本也就是一个个模块,框架都有人给你定好了,你去填代码就可以了。

     

    说点让你高兴的事:软件公司里,做领导的基本都是写应用程序的(当然还有做市场的)。写应用程序的人,对外可以研究市场接待客户,对内可以管理程序员完成开发,不让他做领导让谁做?如果你的志向是写应用程序,那么我建议你先练好基本功:数据结构、算法是必备,然后凭兴趣选择数据库、网络编程等等进行深入钻研。最后,选择你看好的、感兴趣的行业深耕个10年吧。做应用开发的人选择了某个行业,后面是很难换行业的,选行很重要!

     

    操作系统领域

    UCOS太简单,VxWorks太贵太专业,Windows不玩嵌入式了,IOS不开源,所以对于操作系统领域我们也只能玩Linux了。

    在嵌入式领域Linux一家独大!

    Android呢?Android跟QT一样,都是一套GUI系统。只是Google的实力太强了,现在Android无处不在,所以很多时候Linux+Android成了标配。注意,在这里我们关心的是Android的整个系统、里面的机制,而不是学习几个API然后开发界面程序。

    操作系统领域所包含的内容,简单地说,就是制作出一台装好系统的专用“电脑”,可以分为:

    ① 为产品规划硬件:

    按需求、性能、成本选择主芯片,搭配周边外设,交由硬件开发人员设计。

    ② 给单板制作、安装操作系统、编写驱动

    ③ 定制维护、升级等系统方案

    ④ 还可能要配置、安装Android等GUI系统:

    ⑤ 为应用开发人员配置开发环境

    ⑥ 从系统角度解决疑难问题

    这个领域,通常被称为“底层系统”或是“驱动开发”。

    先解决2个常见误区:

    ① 这份工作是写驱动程序吗?

     

    看看上面罗列的6点,应该说,它包含驱动开发,但远远不只有驱动开发。

    ② 我们还需要写驱动吗?不是有原厂吗?或者只需要改改就可以?

    经常有人说,芯片原厂都做好驱动了,拿过来改改就可以了。如果,你的硬件跟原厂的公板完全一样,原厂源码毫无BUG,不想优化性能、削减成本,不想做一些有特色的产品,那这话是正确的。

     

    但是在这个不创新就是找死的年代,可能吗?!原因有二:

    ① 即使只是修改代码,能修改的前提是能理解;能理解的最好煅炼方法是从零写出若干

    驱动程序

    ② 很多时候,需要你深度定制系统。

    以前做联发科手机只需要改改界面就可以出货了,现在山寨厂一批批倒下。大家都使用原厂的方案而不加修改时,最后只能拼成本。举个例子,深圳有2家做交通摄像头、监控摄像头的厂家,他们曾经找我做过4个项目:

    ① 改进厂家给的SD卡驱动性能,使用DMA。

    ② 换了Flash型号后,系统经常出问题,需要修改驱动BUG。

    ③ 触摸屏点击不准,找原因,后来发现是旁路电容导致的。

    ④ 裁减成本,把4片DDR换为2片DDR,需要改bootloader对DDR的初始化。

    这些项目都很急,搞不定就无法出货,这时候找原厂?除非你是中兴华为等大客户,否则谁理你?

    我在中兴公司上班时,写驱动的时间其实是很少的,大部分时间是调试:系统调优,上帮APP工程师、下帮硬件工程师查找问题。我们从厂家、网上得到的源码,很多都是标准的,当然可以直接用。但是在你的产品上也许优化一下更好。比如我们可以把摄像头驱动和DMA驱动揉合起来,让摄像头的数据直接通过DMA发到DSP去。

     

    我们可以在软件和硬件之间起桥梁作用,对于实体产品,有可能是软件出问题也可能是硬件出问题,一般是底层系统工程师比较容易找出问题。当硬件、软件应用出现问题,他们解决不了时,从底层软件角度给他们出主意,给他们提供工具。再比如方案选择:芯片性能能否达标、可用的BSP是否完善等等,这只能由负责整个方案的人来考虑,他必须懂底层。

    在操作系统领域,对知识的要求很多:

    ① 懂硬件知识才能看懂电路图

    ② 英文好会看芯片手册

    ③ 有编写、移植驱动程序的能力

    ④ 对操作系统本身有一定的理解,才能解决各类疑难问题

    ⑤ 理解Android内部机制

    ⑥ 懂汇编、C语言、C++、JAVA

     

    它绝对是一个大坑,没有兴趣、没有毅力的人慎选。

    ① 这行的入门,绝对需要半年以上,即使全天学习也要半年。

    ② 它的职位,绝对比APP的职位少

    ③ 并且你没有1、2年经验,招你到公司后一开始你做的还是APP。

     

    优点就是

    ① 学好后,行业通杀,想换行就换行;想自己做产品就自己做产品。

    ② 相比做应用程序的人,不会被经常变动的需求搞得天天加班。

    ③ 门槛高,当然薪水相对就高。

    操作系统领域,我认为适合于这些人:

    ① 硬件工程师想转软件工程师,从底层软件入门会比较好

    ② 单片机工程师,想升级一下。会Linux底层的人肯定会单片机,会单片机的人不一定

    会Linux。

    ③ 时间充足的学生:如果你正读大二大三,那么花上半年学习嵌入式Linux底层多有益处。

    ④ 想掌握整个系统的人,比如你正在公司里写APP,但是想升为系统工程师,那么底层

    不得不学。

    ⑤ 想自己创业做实体产品的工程师,你有钱的话什么技术都不用学,但是如果没钱又想

    做产品,那么Linux底层不得不学。

    ⑥ 做Linux APP的人,没错,他们也要学习。

    这部分人不需要深入,了解个大概就可以:bootloader是用来启动内核,Linux的文件系统(第1个程序是什么、做什么、各目录干嘛用)、APP跟驱动程序的调用关系、工具链,有这些概念就可以了

     

    本文中,就把操作系统默认为Linux,讲讲怎么学习嵌入式Linux+Android系统。

     

    嵌入式Linux+Android系统包含哪些内容

    嵌入式Linux系统包含哪些东西?不要急,举一个例子你就知道了。

    ① 电脑一开机,那些界面是谁显示的?

    是BIOS,它做什么?一些自检,然后从硬盘上读入windows,并启动它。

    类似的,这个BIOS对应于嵌入式Linux里的bootloader。这个bootloader要去Flash上读入Linux内核,并启动它。

    ② 启动windows的目的是什么?

    当然运行应用程序以便上网、聊天什么的了。

    这些上网程序、聊天程序在哪?

    在C盘、D盘上。

    所以,windows要先识别出C盘、D盘。在Linux下我们称之为根文件系统。

    ③ windows能识别出C盘、D盘,那么肯定有读写硬盘的能力。

    这个能力我们称之为驱动程序。当然不仅仅是操作硬盘,还有网卡、USB等等其他硬件。

    嵌入式Linux能从Flash上读出并执行应用程序,肯定也得有Flash的驱动程序啊,当然也不仅仅是Flash。

     

    简单地说,嵌入式LINUX系统里含有bootloader、内核、驱动程序、根文件系统、应用程序这5大块。而应用程序,我们又可以分为:C/C++、Android。

    所以,嵌入式Linux+Android系统包含以下6部分内容:

    ① bootloader

    ② Linux内核

    ③ 驱动程序

    ④ 使用C/C++编写的应用程序

    ⑤ Android系统本身

    ⑥ Android应用程序

    Android跟Linux的联系实在太大了,它的应用是如此广泛,学习了Linux之后没有理由停下来不学习Android。在大多数智能设备中,运行的是Linux操作系统;它上面要么安装有Android,要么可以跟Android手机互联。现在,Linux+Android已成标配

     

    怎么学习嵌入式Linux操作系统

    本文假设您是零基础,以实用为主,用最快的时间让你入门;后面也会附上想深入学习时可以参考的资料。在实际工作中,我们从事的是“操作系统”周边的开发,并不会太深入学习、修改操作系统本身。

    ① 操作系统具有进程管理、存储管理、文件管理和设备管理等功能,这些核心功能非常

    稳定可靠,基本上不需要我们修改代码。我们只需要针对自己的硬件完善驱动程序

    ② 学习驱动时必定会涉及其他知识,比如存储管理、进程调度。当你深入理解了驱动程

    序后,也会加深对操作系统其他部分的理解

    ③ Linux内核中大部分代码都是设备驱动程序,可以认为Linux内核由各类驱动构成

    但是,要成为该领域的高手,一定要深入理解Linux操作系统本身,要去研读它的源代码。

    在忙完工作,闲暇之余,可以看看这些书:

    ① 赵炯的《linux内核完全注释》,这本比较薄,推荐这本。他后来又出了《Linux 内核

    完全剖析》,太厚了,搞不好看了后面就忘记前面了。

    ② 毛德操、胡希明的《LINUX核心源代码情景分析》,此书分上下册,巨厚无比。当作

    字典看即可:想深入理解某方面的知识,就去看某章节。

    ③ 其他好书还有很多,我没怎么看,没有更多建议

     

    基于快速入门,上手工作的目的,您先不用看上面的书,先按本文学习

     

    入门路线图

    假设您是零基础,我们规划了如下入门路线图。

     

     

    前面的知识,是后面知识的基础,建议按顺序学习。每一部分,不一定需要学得很深入透彻,下面分章节描述。

     

    学习驱动程序之前的基础知识

    C语言

    只要是理工科专业的,似乎都会教C语言。我见过很多C语言考试90、100分的一上机就傻了,我怀疑他们都没在电脑上写过程序。

    理论再好,没有实践不能干活的话,公司招你去干嘛?

    反过来,实践出真知,学习C语言,必须练练练、写写写!

    当你掌握基本语法后,就可以在电脑上练习一些C语言习题了;

    当你写过几个C程序后,就可以进入下一阶段的裸机开发了。

    ① 不需要太深入

    作为快速入门,只要你会编写“Hello, world!”,会写冒泡排序,会一些基础的语法操作,暂时就够了。指针操作是重点,多练习;

    不需要去学习过多的数据结构知识,只需要掌握链表操作,其他不用学习,比如:队列、二叉树等等都不用学;不需要去学习任何的函数使用,比如文件操作、多线程编程、网络编程等等;这些知识,在编写Linux应用程序时会用,但是在操作系统特别是驱动学习时,用不着!永往直前吧,以后碰到不懂的C语言问题,我们再回过头来学习。

    在后续的“裸机开发”中,会让你继续练习C语言,那会更实战化。

    C语言是在写代码中精进的。

     

    ② 可以在Visual Studio下学习,也可以在Linux下学习,后者需要掌握一些编译命令

    我们暂时没有提供C语言的教程,找一本C语言书,网上找找免费的C语言视频(主要看怎么搭建环境),就可以自学了。

    PC Linux基本操作:

    对于PC Linux,我们推荐使用Ubuntu,在它上面安装软件非常简便。

    我们的工作模式通常是这样:在Windows下阅读、编写代码,然后把代码上传到PC Linux去编译。实际上,Ubuntu的桌面系统已经很好用了,我们拿到各种智能机可以很快上手,相信Ubuntu的桌面系统也可以让你很快上手。为了提高工作效率,我们通常使用命令行来操作Ubuntu。不用担心,你前期只需要掌握这几条命令就可以了,它们是如此简单,我干脆列出它们:

    ① cd : Change
    Directory(改变目录)

    cd 目录名 // 进入某个目录

    cd .. // cd “两个点”:返回上一级目录

    cd - // cd “短横”:返回上一次所在目录

     

    ② pwd : Print Work Directory(打印当前目录 显示出当前工作目录的绝对路径)

    ③ mkdir : Make
    Directory(创建目录)

    mkdir abc // 创建文件夹abc

    mkdir -p a/b/c // 创建文件夹a,再a下创建文件夹b,再在b下创建文件夹c

    ④ rm : Remove(删除目录或文件)

    rm file // 删除名为file的文件

    rm -rf dir // 删除名为dir的目录

     

    ⑤ ls : List(列出目录内容)

    ⑥ mount : 挂载

    mount -t nfs -o nolock,vers=2 192.168.1.123:/work/nfs_root /mnt

    mount -t yaffs /dev/mtdblock3 /mnt

     

    ⑦ chown : Change
    owner(改变文件的属主,即拥有者)

    chown book:book /work -R // 对/work目录及其下所有内容,属主改为book用户,组改为book

    ⑧ chmod : Change mode(改变权限),下面的例子很简单粗暴

    chmod 777 /work -R // 对/work目录及其下所有内容,权限改为可读、可写、可执行

    ⑨ vi : Linux下最常用的编辑命令,使用稍微复杂,请自己搜索用法。

    要练习这些命令,你可以进入Ubuntu桌面系统后,打开终端输入那些命令;或是用SecureCRT、putty等工具远程登录Ubuntu后练习。

     

    硬件知识

    我们学习硬件知识的目的在于能看懂原理图,看懂通信协议,看懂芯片手册;不求能设计原理图,更不求能设计电路板。对于正统的方法,你应该这样学习:

    ① 学习《微机原理》,理解一个计算机的组成及各个部件的交互原理。

    ② 学习《数字电路》,理解各种门电路的原理及使用,还可以掌握一些逻辑运算(与、或等)。

    ③ 《模拟电路》?好吧,这个不用学,至少我在工作中基本用不到它,现在全忘光了。

     

    就我个人经验来说,这些课程是有用的,但是:

    ① 原理有用,实战性不强。

    比如《微机原理》是基于x86系统,跟ARM板子有很大差别,当然原理相通。

    我是在接触嵌入式编程后,才理解了这些课程。

    ② 每本书都那么厚,内容都很多,学习时间过长,自学有难度。

     

    针对这些校园教材的不足,并结合实际开发过程中要用到的知识点,我们推出了《学前班_怎么看原理图》的系列视频:

    学前班第1课第1节_怎么看原理图之GPIO和门电路.wmv

    学前班第1课第2.1节_怎么看原理图之协议类接口之UART.wmv

    学前班第1课第2.2节_怎么看原理图之协议类接口之I2C.wmv

    学前班第1课第2.3节_怎么看原理图之协议类接口之SPI.wmv

    学前班第1课第2.4节_怎么看原理图之协议类接口之NAND Flash.wmv

    学前班第1课第2.5节_怎么看原理图之协议类接口之LCD.wmv

    学前班第1课第3节_怎么看原理图之内存类接口.wmv

    学前班第1课第4.1节_怎么看原理图之分析S3C2410开发板.wmv

    学前班第1课第4.2节_怎么看原理图之分析S3C2440开发板.wmv

    学前班第1课第4.3节_怎么看原理图之分析S3C6410开发板.wmv

    即使你只具备初中物理课的电路知识,我也希望能通过这些视频,让你可以看懂原理图,理解一些常见的通信协议;如果你想掌握更多的硬件知识,这些视频也可以起个索引作用,让你知道缺乏什么知识。这些视频所讲到的硬件知识,将在《裸板开发》系列视频中用到,到时可以相互对照着看,加深理解。

     

    要不要专门学习Windows下的单片机开发

    很多学校都开通了单片机的课程,很多人都是从51单片机、AVR单片机,现在比较新的STM32单片机开始接触嵌入式领域,并且使用Windows下的开发软件,比如keil、MDK等。

    问题来了,要不要专门学习Windows下的单片机开发?

    ① 如果这是你们专业的必修课,那就学吧

    ② 如果你的专业跟单片机密切相关,比如机械控制等,那就学吧

    ③ 如果你只是想从单片机入门,然后学习更广阔的嵌入式Linux,那么放弃在Windows

    学习单片机吧!理由如下:

    ① Windows下的单片机学习,深度不够

    Windows下有很好的图形界面单片机开发软件,比如keil、MDK等。

    它们封装了很多技术细节,比如:

    你只会从main函数开始编写代码,却不知道上电后第1条代码是怎么执行的;

    你可以编写中断处理函数,但是却不知道它是怎么被调用的;

    你不知道程序怎么从Flash上被读入内存;

    也不知道内存是怎么划分使用的,不知道栈在哪、堆在哪;

    当你想裁剪程序降低对Flash、内存的使用时,你无从下手;

    当你新建一个文件时,它被自动加入到工程里,但是其中的机理你完全不懂;

    等等等。

     

    ② 基于ARM+Linux裸机学习,可以学得更深,并且更贴合后续的Linux学习。

    实际上它就是Linux下的单片机学习,只是一切更加原始:所有的代码需要你自己来编写;哪些文件加入工程,需要你自己来管理。在工作中,我们当然倾向于使用Windows下更便利的工具,但是在学习阶段,我们更想学习到程序的本质。一切从零编写代码、管理代码,可以让我们学习到更多知识:

    你需要了解芯片的上电启动过程,知道第1条代码如何运行;

    你需要掌握怎么把程序从Flash上读入内存;

    需要理解内存怎么规划使用,比如栈在哪,堆在哪;

    需要理解代码重定位;

    需要知道中断发生后,软硬件怎么保护现场、跳到中断入口、调用中断程序、恢复现场;

    你会知道,main函数不是我们编写的第1个函数;

    你会知道,芯片从上电开始,程序是怎么被搬运执行的;

    你会知道,函数调用过程中,参数是如何传递的;

    你会知道,中断发生时,每一个寄存器的值都要小心对待;

    等等等。

    你掌握了ARM+Linux的裸机开发,再回去看Windows下的单片机开发,会惊呼:怎么那么简单!并且你会完全明白这些工具没有向你展示的技术细节。

    驱动程序=Linux驱动程序软件框架+ARM开发板硬件操作,我们可以从简单的裸机开发入手,先掌握硬件操作,并且还可以:

    ① 掌握如何在PC Linux下编译程序、把程序烧录到板子上并运行它

    ② 为学习bootloader打基础:掌握了各种硬件操作后,后面一组合就是一个bootloader

     

    转载自:韦东山嵌入式Linux

    展开全文
  • 0. 嵌入式入门学习路线

    万次阅读 2019-02-22 11:58:54
    最近有好多同学在咨询嵌入式该怎么入门,应该怎么学习,有什么好的学习方法推荐,以及嵌入式入门的学习路线。今天我就带着大家的问题,一一为大家解决。 STM32基础入门 uCOS-II基础入门 文末有相关学习资料网盘...
  • 学习嵌入式开发有哪些学习路线

    万次阅读 多人点赞 2018-05-15 17:11:44
    所以嵌入式开发学习要知道什么是重点,而且linux是开源免费的,更加适合学习嵌入式,在此之前我们要有一个学习路线,这样才能学的很容易。我总结了4个阶段:一.首先就是基础知识阶段了1.linux系统是我们学嵌入式...
  • 关于嵌入式系统的学习路线

    千次阅读 多人点赞 2018-04-28 21:31:36
    来源:本文乃同济大学软件学院王院长(JacksonWan)在同济网论坛发表的帖子《谈谈软件学院高年级同学的学习方向》的第二部分。三部分依次为:一、关于企业计算方向;二、关于嵌入式系统方向;三、关于游戏软件方向。...
  • 嵌入式学习路线

    千次阅读 多人点赞 2018-06-15 18:18:54
    ******嵌入式开发的相关硬件基础:对于软件工程专业的学生,从事嵌入式软件开发,像数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程;汇编语言、C/C++、数据结构和算法、操作系统,linux;   *******...
  • 嵌入式学习路线

    千次阅读 2018-12-09 12:42:34
    可能是年前跳槽的比较多,遇到不少同学咨询到嵌入式行业发展和职业规划的问题,这里总结一下嵌入式行业的机遇和选择,希望对读者们有所帮助。 我们暂且宏观上把程序员分为3类:业务类,专业类,系统类。 业务类 ...
  • 嵌入式开发学习路线

    千次阅读 多人点赞 2018-07-20 09:49:02
    之前看到别人在学习视频中的回复,觉得很全面,分享给大家 ----...而Linux操作系统也只是一个简单的操作系统,简单的使用对于嵌入式开发人 员来说价值并不很高,真正有价值的是掌握Linux的基本服务和Linux的设计理念...
  • 嵌入式开发(一):嵌入式开发新手入门

    万次阅读 多人点赞 2019-07-26 15:54:18
    本篇文章整理下嵌入式开发中一些入门的基础技能,都是根据以往的工程经验整理,适用于之前没做过嵌入式开发的新手。 嵌入式开发流程一般如下,一般是在PC机的Windows系统下安装Ubuntu虚拟机,搭建嵌入式开发环境及...
  • 随着科技树的不断进步,嵌入式系统产业规模持续的不断增长,作为IT业的里面重要新兴产业来说,现在的市场需求对嵌入式开发人才是非常大的,因此就出现了这样的一些情况,很多人通过去参加嵌入式培训来进军这个嵌入式...
  • 嵌入式开发学习的几种线路图方向

    千次阅读 2018-02-04 17:31:50
    摘要: 嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式开发Linux方向,关注这个方向,我认为大概分3个阶段: 1、嵌入式linux上层应用,包括QT的GUI开发 2、嵌入式...
  • 随着科技树的不断进步,嵌入式系统产业规模持续的不断增长,作为IT业的里面重要新兴产业来说,现在的市场需求对嵌入式开发人才是非常大的,因此就出现了这样的一些情况,很多人通过去参加嵌入式培训来进军这个嵌入式...
  • 一年多以来,关于嵌入式开发学习路线、规划、看什么书等问题,被问得没有一百,也有大几十次了。但是无奈自己对这方面了解有限,所以每次都没法交代,搞得实在不好意思。 但是办法总归是有的,正如前篇文章《最近厚...
  • 嵌入式工程师学习路线

    千次阅读 2018-12-31 19:39:12
    ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:  (1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9)  (2)必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本...
  • 嵌入式开发到底有多难?

    万次阅读 多人点赞 2018-03-13 17:19:47
    譬如,在今年的开发者大调查中,我们发现有34%的开发者面临嵌入式软硬件开发的困难,几乎占了开发者面临困难的三分之一强。数据来源:2017中国软件开发者大调查嵌入式软硬件开发都是坑? 那么,嵌入式软硬件开发真...
  • 嵌入式开发行业近年来受关注度是越来越高,不过在关注度高的前提下还是有些人没有那么了解嵌入式。其实嵌入式技术早已经进入我们的生活当中,比如说最常见的智能手机、智能电视、智能家电等等,那么对于嵌入式开发...
  • 《零基础Android手机嵌入式开发实战课程(网吧计费系统、多功能播放器、驱动开发)》 课程讲师:老夫子  适合人群:初级 课时数量:174课时 用到技术:Bootloader开发、裸板开发 涉及项目:网吧计费系统、多功能...
  • 3.完整的嵌入式学习路线

    千次阅读 2015-12-07 11:35:42
    3.1.怎么样将叫完全学习 3.2.嵌入式核心模块(5大模块) 3.3.Android扩展(3大模块) 3.4.物联网扩展(无限扩展) 3.5.实训项目扩展(未完待续...
  • 学习嵌入式开发路线

    2018-08-06 09:29:00
    所以嵌入式开发学习要知道什么是重点,而且linux的是开源免费的,更加适合学习嵌入式,在此之前我们要有一个学习路线,这样才能学的很容易。我总结了4个阶段: 一。首先就是基础知识阶段了   1....
  • 学习嵌入式可以说是比较困难的,但是也是有方法的,要增加自己Linux的技能,只有通过实践来实现了。所以,一定要在学习中勤于实践,你会收获更多。 在实际的学习过程中,嵌入式软件工程师需要学什么?相信是困扰...
  • 嵌入式开发概述

    千次阅读 2016-07-11 10:25:07
    嵌入式系统的概念 嵌入式系统在术语上被定义为:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适用于应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它的特点在于两方面:嵌入、专用...
  • 嵌入式学习的几种线路图

    千次阅读 2016-12-16 14:10:08
    嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段: 1、嵌入式linux上层应用,包括QT的GUI开发 2、嵌入式linux系统...
  • 嵌入式工程师需要掌握的内容非常广泛,嵌入式可以说是当下最有前途的IT应用领域,小到电子词典、手机,大到航空航天设备都是典型的嵌入式系统,因此,通过嵌入式技术人才的职业发展空间是非常大的。要快速学习掌握...
  • 嵌入式开发到 android 开发再到 javaWeb 开发

    千次阅读 多人点赞 2018-02-28 15:41:51
    “今天在网上看到一则段子:一位去年8月加入百度外卖的员工诉苦道,’我先是百度员工,然后是饿了么员工,现在又变成阿里员工了,可我明明什么都没有做啊。’ - -keithxiaoy” 这个段子的由来一则资讯:一名...
  • 嵌入式驱动开发学习路线

    万次阅读 多人点赞 2018-04-19 15:40:35
    ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2)必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) (3)必须...
  • 嵌入式开发要学什么,怎么学,让你从菜鸟变老鸟

    万次阅读 多人点赞 2018-06-12 16:40:56
    对于嵌入式的学习来说,你要掌握好方法最重要,不能漫无目的的学习,那样就会使你学的很迷茫,所以学习嵌入式一、嵌入式开发学习路线(按照当前主流的企业岗位需求,基本都是linux,和android系统)直白点说你学的技术...
  • 第一阶段:嵌入式系统开发基础理论 10天轻松掌握 C语言 (套餐) 1.C语言必备Linux命令 2.C语言必备基础知识 3.C语言输入输出专题 4.C语言控制语句 5.C语言数组和字符串 6.C语言指针专题 7....
  • 嵌入式开发实例

    2018-04-20 11:26:03
    嵌入式linux应用程序开发标准教程(第二版) 课堂实例

空空如也

1 2 3 4 5 ... 20
收藏数 234,920
精华内容 93,968
关键字:

嵌入式学习路线