2019独角兽企业重金招聘Python工程师标准>>>

原文地址:与一线Linux嵌入式开发工程师的对话 作者:kjpioo

kjpioo的说明:这篇文章转载自陈莉君老师的博客,文章谈到的“嵌入式开发方面的问题”包括:linux的驱动如何入门、图形界面。红色标注的是我比较感兴趣的内容。
原文如下:
陈工程师一直做 Linux 的嵌入式开发,作为在开发一线的工程师,他对很多问题的看法可能更切合实际需求,于是,通过邮件,就嵌入式开发方面的问题,请他谈了一下自己的看法:

问:关于嵌入式开发,我们准备给同学们讲解一些入门知识,从你一线开发经验来说,给我们一些建议:

陈工回答:

对于嵌入式Linux入门,如果有一定基础,可以从驱动开始;如果没有基础,我个人建议还是从应用程序开始。因为从应用程序开始是最容易的,也是 最直观的。而驱动程序运行在内核态,驱动本身的结构就比较复杂,如果要彻底弄明白驱动的运行机制,必定牵涉内核,对于高年级的学生恐怕问题会少一些,而 对于低年级的学生,问题估计较多。我曾经遇到过一些初学者,就是一入门就栽了,失去了信心,当然这只是少数。不过,如果在遇到问题之后,能够得到即时、 正确的点化,那就是好事了。

既然您决定讲驱动,那就从内核模块开始。在PC上就可以进行的虚拟设备实验,如基于内存的内核模块。可以考虑从模块的结构、编译、插入、卸载等方 面进行阐述。

驱动模块无非分字符驱动、块设备驱动和网络驱动三大类。但是一定要让学生知道,任何一个系统,特别是嵌入式系统,并且在目前的嵌入式Linux产品 开发中,最简单、最重要、最多、最复杂的也是字符设备驱动,从IO驱动到串口驱动、到USB驱动等等,广义上都是字符驱动。让学生最好专注于字符设备驱 动,因为一个嵌入式设备,网卡一般一块,FLASH一般也是一块(也包括几块组成的FLASH组),但是这两方面,基本都有完善的驱动,如网卡驱动有很 多,块设备驱动,硬件层已经有通用接口,不管是NOR FLASH还是NAND FLASH,文件系统层更是有了非常多、非常成熟的文件系统,如 JFFS2、YAFFS、YAFFS2、EXT2、EXT3、ROMFS、CRAMFS等等,无需我们再去研究,学会应用即可。而除此之外的其它设备, 如AD、DA、CAN、RS485等等,都是需要根据应用来进行设计的,这才是一个产品区别于其它产品的重点,更是市场价值增值点。

另外呢,也是前一点引申为而来的,学习Linux,准备做产品的话,不要把Linux当成了终极目标(当然,这是对应用而言的),要有只是把 Linux当成一个平台的思想。更重要的还在各种产品所需求的专业技术,如通信方面像CAN、RS485、GPRS等等,或者工业控制方面,IO控制、 实时特性等等。Linxu博大精深,研究起来永无止境,但是在产品中,只要到了一个产品够用就可以了(当然,多一些更好,要视人而定)。

问:嵌入式应用程序的开发,应用场景较多的是图形界面还是字符界面,如果是图形界面,开发环境QT和Minigui哪一种更合适,哪种类型的应用程序在嵌入式系统中应用比较多?

陈工回答:

对于嵌入式Linux的应用,大多数的应用并不需要图形界面,比如交换机、路由器、嵌入式网关以及服务器等等。图形界面呢,主要应用在多媒体、手机等手持设备和一些需要图形界面的人机交互系统。

嵌入式Linux可选图形界面很多,上网找找的话,可以发现远非我们常说的QT、MiniGUI等。包括Tiny-X,matchbox、OPIE、GPE等等。不同GUI有自己的特色,有自己的特殊应用场合,对于产品开发,根据需要选择合适的GUI。对于学习,自然是选择容易得到、容易开发的GUI。QT是一个不错的选择,由于QT有一个PC上的模拟器,可以在没有实际液晶LCD的情况下,甚至在没有任何硬件的情况下都可以在PC上进行模拟开发。QT是收费的,当然,有免费版可用。MiniGUI呢,纯粹国产的,支持国货,可以考虑选择MiniGUI。这是一个轻量级的嵌入式GUI,可以跨平台,学习版也才100多块。MiniGUI可以用于工业控制场合,QT在这方面的应用目前还没有遇到,主要用在手持设备。

我们在开发中采用Tiny-X,这也是一个可以用于工业控制的GUI,基本兼容X-Window,体积小,占用资源少,速度快,稳定。

对于Linux的应用程序开发,除了GUI程序之外,最基本的应用程序有:

(1)串口编程。无论是在Windows下还是Linux下,串口编程都是极为复杂的,但是非常锻炼一个人的编程水平和能力。

(2)网络编程以及WEB相关编程。网络编程的tcp、udp、tcp/ip等。至于WEB编程,主要是在系统开启一个WEB服务器,制作一些网页,通过远程登录能够对整个系统进行配置甚至升级等功能。比如我们的路由器配置网页。这种应用在以后会越来越广泛。

(3)另外一个就是shell编程了。Shell的作用我想,*NIX世界的人都很清楚。在很多应用里面,通过一些非常富有技巧性的Shell脚本,实现了非常复杂的功能,包括远程系统升级等。

以上我提到的这3方面,非常易于实验,在没有硬件,只有PC的情况都可以做。

学生电脑安装ubuntu,那以后配置嵌入式Linux开发环境可能遇到的问题会多一点。不过没关系,能够解决的。在我个人看来ubuntu适合于家用、办公,但要用于开发,配置难度稍微大一点。不过没有办法,现在电脑硬件太新,最适合的RedHat 9.0无法安装。

转载于:https://my.oschina.net/u/1024767/blog/266208

与一线Linux嵌入式开发工程师的对话相关推荐

  1. 嵌入式系统Linux内核开发工程师必须掌握的三十道题

    嵌入式系统Linux内核开发工程师必须掌握的三十道题 如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师,试试看! 1) Linux中主要有哪几种内核 ...

  2. 嵌入式Linux内核开发工程师必须掌握的三十道题

    如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师. 1. Linux中主要有哪几种内核锁?(进程同步与互斥) (1)自旋锁:非睡眠锁 (2)信号量: ...

  3. 职位介绍 之 嵌入式开发工程师

    笔者电子信息专业硕士毕业,获得过多次电子设计大赛.大学生智能车.数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究.对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验,共同 ...

  4. 总结如何从Linux开发工程师到Linux后台开发工程师再到Linux高级互联网架构师

    前言: 小编也是从事c方面10多年的工作经验.今天跟大家分享一下我总结出来的一系列 C/C Linux后台服务器开发的学习路线.从Linux开发工程师-Linux后台开发工程师-Linux高级互联网架 ...

  5. 嵌入式开发工程师进阶之路

    嵌入式开发工程师进阶之路 一.从微控制器开始 从微控制器的最小系统入手,以其为核心,选择相应电子元件加上最小系统在面包板或洞洞板上搭建硬件电路,并在嵌入式开发工具下使用C语言编写.编译.连接.链接.调 ...

  6. 成为一名优秀的嵌入式开发工程师有哪些要求?

    成为一名优秀的嵌入式开发工程师有哪些要求? 随着国内嵌入式行业的迅速崛起,嵌入式人才严重紧缺,企业对嵌入式人才更是求贤若渴.尽管是在就业难的今天,但是各大人才招聘网站上,高薪招聘嵌入式开发工程师的信息 ...

  7. Linux驱动开发工程师需要掌握哪些技能?

    一.前言 Linux驱动开发是一项高度技术性的工作,需要深厚的编程技能和对计算机硬件的深入理解.随着物联网.人工智能等领域的快速发展,Linux驱动开发工程师的需求日益增加.在这篇文章中,我将为您介绍 ...

  8. linux嵌入式开发遇到坑不用慌 让你快速提升进度

    Linux已经成为很多IT从业者必备的知识技能,也有很多人会参加linux嵌入式开发培训,也有人会选择自学.究竟哪种方法好没有定论,但两者在学习效率上还是有个明显的对比. 有些人选择自学Linux,总 ...

  9. 基于c语言的linux嵌入式开发入门

    前言 本文主要包含,c语言基本结构与语法.make及makefile的使用.main函数参数与返回值的说明.标准输入.输出.错误流的介绍以及linux管道的应用. 语言数据类型 联合体也有翻译为共用体 ...

最新文章

  1. Linux drm显示系统的两种方案
  2. java读取本地文件_java 读取本地文件实例详解
  3. python3练习,python3练习题 - 来自菜鸟的独白
  4. web安全—XSS攻击(二)
  5. idea 保存设置 新建项目_配置、创建IntelliJ IDEA Spring MVC 项目
  6. linux 改变文件夹属性,技术|在Linux中用chattr和lsattr命令管理文件和目录属性
  7. c++ mysql 操作_c++操作mysql入门详解
  8. 关于Android sdkmanager目录结构的总结
  9. 表格细线边款(HTML、CSS)
  10. MAC 控制台常用命令
  11. 计算机及软件工程专业职称,有关软件工程师职称
  12. 打印机显示服务器脱机是什么原因,脱机使用打印机是什么意思?脱机打印机状态显示错误怎么办...
  13. 服务器信号满格但网速很慢,信号满格网速太慢是什么原因,网速慢是什么原因-...
  14. 产品需求文档怎样编写
  15. 张建宁:“海阔天空”的物联网必须脚踏实地
  16. springMVC的大体结构及工作流程
  17. 日本春令营在线比赛第一天总结
  18. Unity学习之Human fall flat创意工坊地图制作
  19. 【牛客】恒生公司2015秋招开发类笔试题
  20. Excel 2013 VlookUp函数使用

热门文章

  1. 一个资深系统管理员的O2O实践(引子)
  2. HIVE: 自定义TextInputFormat (旧版MapReduceAPI ok, 新版MapReduceAPI实现有BUG?)
  3. 使用cronolog 分割Tomcat日志 Apache日志
  4. 深入理解JavaScript内部原理(5): function
  5. Remoting压缩信道的编程配置方式
  6. 27_多线程_第27天(线程安全、线程同步、等待唤醒机制、单例设计模式)
  7. 安装其他插件svn消失
  8. $.ajax 简单记录
  9. DFS 事件id 2104 2004 报错
  10. 安卓 SQLite error:SQLite database locked exception while compling : PRAGMA journal_mode .....