热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

选定好一定个方向的问题

对底层感兴趣,学习能力、动手能力要强,对问题能够从全局和细节去把握,有很强的系统分析和设计能力。从工程师起步,一般有几个发展方向,一个是成为技术方面的核心,领域内的专家;另一个是从项目中锻炼起来,成为


对底层感兴趣,学习能力、动手能力要强,对问题能够从全局和细节去把握,有很强的系统分析和设计能力。


从工程师起步,一般有几个发展方向,

一个是成为技术方面的核心,领域内的专家;

另一个是从项目中锻炼起来,成为项目主管或是管理型人才;

再有就是利用自己的技术及行业经验去创业。


需要的基础知识学习:


1. 计算机组成/微机原理

主要是为了了解微型计算机的硬件工作原理,明白CPU、总线、I/O、存储器等一些关键结构是怎么工作的,

虽然是很枯燥的知识,但是对熟悉外围设备硬件工作方式,及操作系统,软件架构的设计及优化相当关键。


2. 操作系统

嵌入式产品应用比较广泛的是Linux和WinCE。但操作系统的内部设计原理都是殊途同归。

首先要去学习的是操作系统原理,去了解进程通信、内存管理、文件系统等几个重要的部分,

因为这些在软件开发尤其是内核驱动开发时会用到。接下来可以去熟悉至少一种主流的操作系统,

Linux是一个很好的选择,去了解它的内核架构,设备驱动架构,

如何去编译,裁剪,编写应用程序,以及如何使用在具体的嵌入式产品上。


3. 数字电路
学习这方面的知识主要是了解一些基本的电路知识,如门电路、逻辑电路、存储器、

寄存器,为了更好的理解嵌入式芯片,存储器,外围设备等硬件的设计,

但往往在软件开发中未必能用的到。因为大部分硬件都提供了很完整的软件接口。


4. 编程语言:C语言和汇编
对于C语言本身的基础来说,无非是把结构化,函数,数组,指针弄熟,但是嵌入式开发对C语言应用的要求会更高。

要对内存分配,文件访问,寄存器访问,预处理指令,中断处理程序等等相当熟悉,

这些都是在使用中要注意的细节问题。C语言对程序的优化也很重要,而这些往往是需要从全局去考虑。

汇编一般是和处理器的指令集相关的,可以更好的去理解处理器的工作原理,往往是用在一些需要效率的地方,如系统的初始化。


5. 数据结构和算法
数据结构在嵌入式开发中也很重要,比如说操作系统里的很多实现都用到了具体的算法。基本的数据结构需要掌握,

如各种链表,树,图等等;而算法的学习需要数学知识作为铺垫,用计算机语言去实现。对于软件从业人员来说,

算法终究是一个工具,在实际应用时再深入挖掘也可。


.6. 软件工程/软件测试/项目管理基础

这些是软件开发人员的必备知识。


7. 开发平台
嵌入式的开发平台不局限于一种操作系统,因此要熟悉各种操作系统下的命令、编辑器及开发工具,

这一点往往被很多人忽视。举个例子,Linux下的程序员开发环境往往是按自己的习惯搭建,

熟练掌握一种编辑器如Vim/Emacs可以大幅度提高工作效率。磨刀不误砍柴工。


嵌入式领域的方向是很多的,它所应用到的行业范围也很广。因此除了这些基础的知识以外,在具体的应用中可能还需要一些其它的知识,

这些知识的每一种都可以研究的很深,举几个例子。
1. 内核,驱动及中间件
内核开发和驱动本身就是一个方向,驱动和硬件接口相关,而内核的修改和移植更是需要对OS有很深的理解。

至于中间件,一般是基于OS或存在于OS和应用程序之间的库,最典型的就是基于Linux的Android。

2. 通信协议
通信协议有很多种,经常用到的有网络通信协议,无线通信协议,串口/USB通信协议等等。
3. 音视频技术
牵涉到音频视频处理,压缩,编解码等等。
4. 信息安全
如加密技术,身份认证,数字证书等等。
5. 行业知识
和具体行业或领域相关的知识,如通讯、工控、电子等等。


这里有一个我认为不错的学习步骤:
1. 基础知识中,计算机组成、操作系统、编程语言和数据结构是必需的。
2. 找一种CPU体系,了解其核心架构,学习指令集,比如说ARM。
3. 找一种OS,如Linux,或是传统RTOS,如Nucleus、eCos,读源码和文档,理解OS内部实现,包括进程,任务,消息机制,内存管理,设备驱动,中断等核心内容。
4. 找一块成熟的开发板,板级资料要齐全,熟悉嵌入式软件开发流程。
5. 在项目过程中深入学习其它的技术。

总之,这些知识的学习不是一蹴而就的,过程会很漫长,也没有什么特别的技巧。需要去看大量的技术文档和源码,

而这些文档大部分又都是英文的。在工作和做具体项目的过程中会学习的比较快,理论结合实践才是王道。 


选择一个方向不断深入,选择好一个方向!


我觉得到招聘网站上搜索一下招聘要求,或许就了解的差不多了。1.认清嵌入式设备的本质
嵌入式设备的本质就是一台专用的、微型计算机,所以就像计算机一样由三个层次的东西组成:
1)硬件,包括cpu(如Arm)、存储(如flash)、I/O(显示模块、通讯模块、视音频模块、I/O控制电路等)。
2)系统级软件,主要是OS和I/O软件如LCD、蓝牙、wifi、CDMA、声音等子系统。
3)应用软件,如基于ios的应用开发,基于android的应用开发,基于linux的应用开发。

2.选定学习方向
对于学习嵌入式来说,以上三个层次技术都了解一下是有好处的,但每层次都同时深入学习既增加学习难度也无必要,

因为一个嵌入式设备肯定是由不同的人分工协作完成的,每个人精通某一层次上的技术就行了。

3.创建学习环境
如果能加入到老师的项目里,那是比较理想的。还有就是组队参加各种比赛。
如果自学,我的体会是:
1)对于想学硬件的,从学8位单片机入手,然后再学ARM、DSP、FPGA等比较容易。
2)对于想做系统级软件,从研究linux内核开始,可以买块ARM开发板来辅助学习。
3)学应用软件开发相对容易一些,网上资料也更丰富,有一个手机或开发板就可学习了




推荐阅读
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • 掌握DSP必备的56个核心问题,我已经将其收藏以备不时之需! ... [详细]
  • Python学习:环境配置与安装指南
    Python作为一种跨平台的编程语言,适用于Windows、Linux和macOS等多种操作系统。为了确保本地已成功安装Python,用户可以通过终端或命令行界面输入`python`或`python3`命令进行验证。此外,建议使用虚拟环境管理工具如`venv`或`conda`,以便更好地隔离不同项目依赖,提高开发效率。 ... [详细]
  • 如何撰写PHP电商项目的实战经验? ... [详细]
  • 《软件测试精要》深度解析与实战经验分享
    《软件测试精要》深度解析与实战经验分享,系统梳理了软件测试的核心概念与关键原则,结合实际项目中的测试经验和教训,详细探讨了测试分类、测试权衡要素、测试效率、测试覆盖率以及测试框架的引入和用例设计等内容,为读者提供了全面而实用的指导。 ... [详细]
  • 从用户转型为开发者:一场思维升级的旅程 | 专访 StarRocks Committer 周威
    从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocks Committer 周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。 ... [详细]
  • 西北工业大学作为陕西省三所985和211高校之一,虽然在农业和林业领域不如某些顶尖院校,但在航空航天领域的实力尤为突出。该校的计算机科学专业在科研和教学方面也具有显著优势,是考研的理想选择。 ... [详细]
  • 本文详细介绍了在Ubuntu操作系统中使用GDB调试工具深入分析和调试标准库函数`printf`的源代码过程。通过具体步骤和实例,展示了如何设置断点、查看变量值及跟踪函数调用栈,帮助开发者更好地理解`printf`函数的工作原理及其内部实现细节。 ... [详细]
  • BashShell作为Linux的指定合作伙伴我们已经再熟悉不过了,使用Bash可以快速编写简单的脚本方便我们的日常比如善用vim,awk和sed三剑客,也可以创建十分复杂的逻辑, ... [详细]
  • Haskell学习笔记:探索函数式编程之美
    使用教材:《learnyouaHaskell》,中文1-8章戳我准备工作。编译器&调试器:安装HaskellPlatform, ... [详细]
  • 机顶盒,即数字电视机顶盒(Digital TV Set-Top Box,简称STB),是一种放置在电视机旁的设备。它主要用于将数字信号转换为电视能够识别的模拟信号,从而实现高质量的视频和音频播放。机顶盒不仅支持基本的电视节目接收功能,还具备多种增值服务,如互动点播、网络浏览等。随着技术的发展,现代机顶盒集成了更多的智能功能,成为家庭娱乐的重要组成部分。 ... [详细]
  • 使用360安全卫士进行网购,您的交易安全能否得到全面保障?
    使用360安全卫士进行网上购物时,您的交易安全是否能够得到全面保护?本文将深入探讨这一问题,分析360安全卫士在防范网络欺诈、保护用户隐私和确保交易安全方面的实际效果。通过案例研究和技术评测,帮助读者了解该软件的防护能力,为用户提供更加科学的网购安全建议。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • ANSI
    ANSI是什么编码?用Notepad创建一个文本文件text.txt,其默认编码格式为ANSI(乍看之下,还以为是ASCII ... [详细]
author-avatar
情之瞬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有