嵌入式程序员是难得的全栈型程序员。

从最底层的针脚定义,到存储器分配,地址空间分配,bootloader的编写和移植,OS的裁剪和移植,驱动程序编写,安装各种协议栈(类Unix都自己带了,大局部小型RTOS都不带)。上层应用的开发,UI的开发等等。一手包办。

此时互联网太火了,搞的大家都觉得做互联网产品的才是程序员。但是还有那么多专用软件程序员,工业代码程序员。

我早就想说了,不是独有写网站写app的才是程序员。

文章相对比较长,字数比较多,大家可以先打开头像关注我,之后慢慢看,///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像左下角黑色字体加我也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///

事实上嵌入式应用的比大多人认为的可能更广泛,像你用的鼠标,键盘,充电宝,U盘,键盘,各种LED灯板,电动车,汽车等内部都波及嵌入式的开发在里面,带电设备除了纯电气或者模拟IC搭建的,但凡波及数字IC的局部,都有嵌入式软件开发在里面,市场比你想象的大得多,但你感觉到嵌入式引领过潮流吗?由于这是一门应用工程技术,是把用户需求,各种协议/规范配合硬件转化成最后产品的工作,你说难不难呢,除了C/C++,Linux,makefile,芯片寄存器,各种总线接口开发/调试这些技术,依据需求,有时还要深层去了解协议内部的详细达到(如TCP/IP, BLE)来攻克调试中的bug问题,这些都须要大量时长去进修掌握,有时为了自己能够独立测试,还要会一些上位机软件(像我就专门写过python/C#写过测试串口,网络客户端以及SSL功能的代码), 重要关键是波及这么多的技术的产品利润和销量还不一定高,嵌入式开发的薪资自然性价比不高。我也是机缘巧合入这行业的,在加上自己感兴趣,自己也准备做下去,不过已经在布局往产品技术经理方向开展,我是还算满意。

单纯嵌入式并不会波及前沿热门的技术,须要长时长不间断积攒的进修(我最佩服我曾经的部门经理,没论硬件,软件,市场,产品架构都十分擅长,然而都快40的他还经常去学新知识,我们遇到的问题他根本都能攻克),薪水在所有行业中等偏上,十分稳定,即便遇到公司倒闭,重新找工作没有任何压力(我之前离任更新下简历,面试邀请不断),假如认识到这些,还是觉得能够承受,那欢迎你也加入这个融入日常生活的行业,假如自身喜爱嵌入式,但追求高薪的话,我十分建议去做算法(特指图像/视频算法),把嵌入式作为应用平台来看待,可能会更适宜

嵌入式linux开发流程

在嵌入式进修的过程中,嵌入式linux的进修是不可少的,能够说嵌入式linux是进修比较艰难的,会遇到林林种种的问题,那么嵌入式linux进修有一个重要的点就是嵌入式linux开发的流程,这是必需要知道的,之后我们就看看这方面的大牛总结的嵌入式linux开发流程及一些遇到的艰难,攻克方法。

嵌入式开发流程其实很简略,但是里面是有很多小的东西须要你注意的,这也是我这么多年来的一些经历,先说嵌入式linux开发流程:

一 建设开发环境,首先你必需要会安装配置嵌入式linux开发环境,这个是根本

操作系统当然是LInux,或者在win系统下安装虚拟机,通过网络下载相应的GCC交叉编译器进行安装,或者安装产品厂家提供的交叉编译器。

这一步,就相当于在win系统下,要安装一个IDE开发环境,如MDK,IAR等。在这一点上,我时常会由于这出现一些问题,就由于配置没配好,导致下面的步骤没法进行,报错,要切记这里须要你仔细点。

二 配置开发主机

主要是配置minicom,也就是串口助手,minicom软件是作为调试嵌入式开发板信息输出的监督器和键盘输写工具,是一个非常方便的工具,我们开发其他嵌入式程序时,其实很多时候也采用串口调试,所以最终原理都是相通的。

嵌入式linux开发流程

配置网络,主要是配置NFS网络文件系统,这个主要是用于下载程序,当然不配置也能够,有很多别的办法。

三 建设引导装在程序的bootloader

常用的bootloader主要有u-boot、vivi等,貌似主流的就是u-boot,这个依据自己详细的芯片进行移植修改。有些芯片是没有内置引导加载程序的,这就须要编写开发板上的Flash的少些程序,当然也能够用windows下的通过JTAG并口和仿真器少些Flash芯片程序,也有linux下的公开源代码的J-Flash程序,在自己做的时候,能够预留多重方式,这样是有用的。

简略的讲,其实就是要做好一个属于自己板子的u-boot,完成初始化,内核引导,下载、烧写等。其实在这一点上,也会是个难点,这里须要掌握的东西多,这最好程的烧写,内核引导,网络上有免费下载的Windows下通过JTAG并口简易仿真器烧写ARM外围Flash芯片的烧写程序,也有Linux下的公开源代码的J-Flash程序。假如不能烧写自己的开发板,就须要依据自己的详细电路进行源代码修改。这是系统正常运行的第一步。假如购置了厂家的仿真器当然比较容易烧写Flash,这对于须要迅速开发自己产品的人来说能够极大地提高开发速度,但是其中的核心技术是没法了解的。

再来就是嵌入式Linux操作系统移植了

嵌入式linux开发流程

假如有专门针对你运用的CPU的Linux再好不过,假如uCLinux、ARM-Linux、PPC-Linux等,假如没有,就要尝试移植专属自己的linux了,其次再添加自己特定硬件的驱动程序,进行调试修改,对于带MMU的CPU能够运用模块方式调试驱动,而对于uCLinux这样的系统则须要编译进内核,与内核为一体,再进行调试。最好的就是下载他人已经移植好的Linux操作系统来弄,这样会高效

之后就是根文件系统了

前面的文章讲述过,没有根文件系统的Linux是没法正常工作的,还须要根文件系统。所以须要下载运用busybox软件来达到制作根文件系统。

再依据自己的应用须要来添加其他程序,默认的启动脚本一般都不会合乎应用的需求(由于所有的嵌入式开发都是自由定制的),所以就要修改根文件系统中的启动脚本,它的寄存位置至于/etc目录下,包含:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自动挂载文件系统的配置文件/etc/fstab,其实就是定制自己要开机启动的程序,详细情况会随着系统的不同而不同,根文件系统在嵌入式系统中一般设为只读,须要运用mkcramfs、genromfs等工具产生少些映像文件。记得这一步要看好,别为了省时长写错。

弄好上面那么之后就简略了就是建设应用程序的Flash磁盘分区

一般会运用jffs2或者YAFF文件系统,这须要在内核中提供这些文件系统的驱动,有的系统运用NOR FLASH,有的系统运用NAND FLASH,也有的系统两种flash都运用,到时候就看详细情况了。

开发应用程序

应用程序能够放到根文件系统中,也能够放到yaffs、jffs2文件系统中,有的应用不运用根文件系统,直接将应用程序和内核设计在一起,就是类似于uCOS-II的方式。

其实,上面的那些步骤也就是为了这一步,在这里你要注意他有三种呈现方式:

(1)直接讲应用程序和内核设计在一起,类似与uCOS-II的方式

(2)基于qt等GUI开发应用程序

(3)没有屏幕,独有简略的人机接口,假如串口,按键,数码管,这种也能达到复杂功能开发

此时就是对烧写内核、根文件系统、应用程序的加载了(其实差不多也就完了)

没论怎么加载,模块也好,所有的这些开发,过程资料,都是要烧写到flash中的,其次应用程序须要什么,就加载对应的功能程序即可。

四 发布产品

开发一款中高型的控制器设备,功能比较复杂,甚至须要复杂的屏幕交互,假如手机(安卓是linux的亲儿子,OS是linux的亲表弟),取款机,效劳器交易系统,那么linux就非常适宜了。

开发一款小型控制器设备,假如功能不太复杂,能够运用稍微高级的CPU,裸机或者ucos等来开发,也很方便,也能做很多定制版的工业小型控制器。

嵌入式linux开发流程差不多就是这样了,在进修时一步一步来,就不会出错,大牛说的这些都进修到了吗,掌握这些方法,嵌入式linux开发流程就不是事儿。

对单片机感兴趣的朋友可以找我,我录制了一些关于单片机的入门教程,有需要的童鞋找我拿就像,免费的,私信我“林老师”就可以拿~点击打开我的头像就能领取

嵌入式程序员是难得的全栈型程序员相关推荐

  1. web全栈架构师所需技术栈_统一架构–一种构建全栈应用程序的简单方法

    web全栈架构师所需技术栈 Modern full-stack apps – like single-page apps or mobile apps – usually have six layer ...

  2. 使用 Tetra 构建全栈应用程序

    大多数全栈应用程序将前端和后端代码分成不同的文件:大多数 Web 框架都是基于这种结构构建的.随着文件和代码行数的增加,它可能会增加代码库的复杂性,从而使调试变得更加困难.通过引入一个名为Tetra的 ...

  3. 程序员千万不要选全栈开发

    作者 | 千鸟(网名)   小路助手开发者 责编 | 晋兆雨 出品 | CSDN(ID:CSDNnews) 对于大多数人来说,大学毕业后选择一家满意的公司,一路升职加薪才是正解,但他却偏偏选择了一条鲜 ...

  4. 大写的服!用耳朵也能写代码?盲人程序员自学编程成为全栈工程师

    作者 | 年素清 责编 | 王晓曼 出品 | 程序人生 (ID:coder _life) 蔡勇斌幼年失明,靠着顽强的毅力和不服输的精神自学编程,成为了一名全栈工程师.作为一名盲人,为了让全中国的其他盲 ...

  5. “程序员千万不要选全栈开发”

    作者 | 千鸟(网名)   小路助手开发者 责编 | 晋兆雨 出品 | CSDN(ID:CSDNnews) 对于大多数人来说,大学毕业后选择一家满意的公司,一路升职加薪才是正解,但他却偏偏选择了一条鲜 ...

  6. 黑马程序员之Web前端全栈 · 阶段一 前端开发基础 (3)

    Web前端全栈 · 阶段一 前端开发基础 (3) 说明 三.HTML 标签 1. HTML 语法规范 1.1 基础语法概述 1.2 标签的关系 2. 基本结构标签 2.1 第一个 HTML 2.2 基 ...

  7. 前端程序员如何快速转型全栈工程师(基础版)

    前端与后端的思维专注点很不相同,前端聚焦在如何把内容以可视化的方式展现给用户,后端聚焦在如何利用IT基础设施实现业务逻辑.所以前端参与后端开发时(全栈工程师必备!)首先需要理解后端会做哪些事,其次才是 ...

  8. angular 模块构建_通过构建全栈应用程序学习Angular 6

    angular 模块构建 Angular 6 is out! The new features include better performance, new powerful CLI additio ...

  9. 使用 Bud and Go 构建全栈应用程序

    全栈框架有多种形状和大小,但它们通常有两种通用模式. 第一个模型包括像 Ruby on Rails 和 Laravel 这样的框架,它们以后端为中心,具有帮助您在同一个项目中构建前端的功能,以及易于使 ...

  10. 由小程序开始打通你的全栈之门

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 博客地址:flutterall.com 可能有些奇怪,为什么开头一张图片?留心的同学也许发现了,作词.作曲.编曲,全部都是一个人.有 ...

最新文章

  1. Android studio 启动自学模式
  2. 沙龙预告 | 新书分享《崛起的超级智能:互联网大脑如何影响科技未来》
  3. Javascript中的自执行匿名函数
  4. 如何从新开发的程序中提炼服务
  5. Dell 电话技术支持工程师答用户问(暴笑)
  6. MS-SQL中创建索引
  7. 【day31】函数总结
  8. source insight 导入JDK源码
  9. Spring JtaTransactionManager事务管理
  10. 怎么批量给文件名加统一的几个字?
  11. 同一个服务器装oracle,windows下同一台服务器上装有两个ORACLE数据库实例,通过命令启停数据库...
  12. WPS文字表格自动填充序号
  13. java 农历算法_中国农历算法java实现
  14. 算法的数值稳定性实验报告用c语言,数值计算实验教案.doc
  15. JSON java 正则_9、正则表达式与JSON
  16. PowerDesigner生成数据库时报错Reflexive and mandatory reference
  17. 利用VC++与MSXML解析XML文档
  18. Apache Log4j2远程代码执行漏洞(CVE-2021-44228)
  19. Notability for Mac(最省心的笔记软件)
  20. 视频:《满城尽带黄金甲》精彩预告片曝光

热门文章

  1. IDEA复制某个类的包名路径
  2. ionic2——环境配置篇
  3. Swift - 通过url地址打开web页面
  4. 802.1W RSTP
  5. 将指定文件中的空格或换行删除(可选是否创建一个新文件)
  6. 正则表达式在 ES2018 中的新写法
  7. io_service线程安全队列效率
  8. 网易云基于 Kubernetes 的深度定制化实践
  9. 后台执行命令的工具screen
  10. 【Hibernate框架开发之七】Annotation各种关系CRUD增删改查集合映射继承映射