转:与一线Linux嵌入式开发project师的对话

陈project师一直做Linux的嵌入式开发。作为在开发一线的project师。他对非常多问题的看法可能更切合实际需求,于是,通过邮件。就嵌入式开发方面的问题,请他谈了一下自己的看法:

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

陈工回答:

        对于嵌入式Linux入门,假设有一定基础,可以从驱动開始;假设没有基础。我个人建议还是从应用程序開始。由于从应用程序開始是最easy的,也是 最直观的。而驱动程序执行在内核态。驱动本身的结构就比較复杂,假设要彻底弄明确驱动的执行机制,必然牵涉内核,对于高年级的学生恐怕问题会少一些。而 对于低年级的学生,问题预计较多。我以前遇到过一些刚開始学习的人,就是一入门就栽了。失去了信心,当然这仅仅是少数。只是。假设在遇到问题之后,可以得到即时、 正确的点化,那就是好事了。

既然您决定讲驱动,那就从内核模块開始。在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的应用。大多数的应用并不须要图形界面,比方交换机、路由器、嵌入式网关以及server等等。图形界面呢,主要应用在多媒体、手机等手持设备和一些须要图形界面的人机交互系统。

        嵌入式Linux可选图形界面非常多,上网找找的话,能够发现远非我们常说的QT、MiniGUI等。包含Tiny-X。matchbox、OPIE、GPE等等。不同GUI有自己的特色,有自己的特殊应用场合,对于产品开发,依据须要选择合适的GUI。对于学习,自然是选择easy得到、easy开发的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编程,主要是在系统开启一个WEBserver。制作一些网页,通过远程登录可以对整个系统进行配置甚至升级等功能。比方我们的路由器配置网页。

这样的应用在以后会越来越广泛。

      (3)另外一个就是Shell编程了。Shell的作用我想,*NIX世界的人都非常清楚。

在非常多应用里面,通过一些非常富有技巧性的Shell脚本。实现了非常复杂的功能。包含远程系统升级等。

       以上我提到的这3方面,很易于实验,在没有硬件。仅仅有PC的情况都能够做。

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

与一线Linux嵌入式开发project师的对话的更多相关文章

  1. 招一位安防软件project师,嵌入式开发project师

    岗位职责 1.负责海思平台IPC产品应用层软件设计及维护 2.私有平台协议对接及为第三方提供技术支持. 任职资格: 1.较强的学习.领悟能力,能够高速熟悉公司现有代码. 2.熟练掌握C.C++开发语言 ...

  2. Android开发project师,前行路上的14项技能

    导读: 你是否曾渴望回到宋朝? 或者什么朝,反正就是男耕女织的古代. 哦,那时的首都在汴梁(开封),房价想必没有如今这么高,工作?无非就是给你把锄头,去,种地去.夕阳西下了,麦子垛后,你和翠姑搂抱在一 ...

  3. 专访Linux嵌入式开发韦东山操作系统图书作者--转

    CSDN学院讲师韦东山:悦己之作,方能悦人 发表于2015-04-28 08:09| 6669次阅读| 来源CSDN| 24 条评论| 作者夏梦竹 专访Linux嵌入式开发韦东山操作系统图书作者 摘要 ...

  4. 中国软件开发project师之痛

    在最近的一次会议上,有高层谈到之前在中国觉得自己做得非常牛,但与美国同行接触后却发现与人家存在非常大的差距,这一点我在外企工作时也有过相同的体会.真正与外国同行接触后才会知道什么是差距,在这篇文章中我 ...

  5. 掌握11项技能,你就是优秀的前端开发project师

    导读: 你或许会认为前端开发是一个非常easy的工作,对呀,你就是刚刚从网页设计转型过来的.但当你深入当中时,一定会发现好像前端开发不是那么简单,光站点性能优化.响应式.框架就让你焦头烂额, 确实,做 ...

  6. 千千万万的IT开发project师路在何方

    已经找不到该文章的最初出处了,有找到的人请告诉我.谢谢~~ 千千万万的IT开发project师路在何方 2007-06-25 21:41 恭喜,你选择开发project师作为自已的职业! 悲哀.你选择 ...

  7. 成都PHP开发project师薪资信息

    这是成都的PHPproject开发师招聘.如图所见,最低的月薪是4K,最高的是35W,PHP开发工程师正处于炙手可热的发展趋势,还愁拿不到高薪,找不到工作的你,还犹豫什么,机会就在眼前,成都传智播客P ...

  8. Linux 嵌入式 开发环境 交叉编译安装

    1.安装 Ubuntu 系统 安装完毕,系统 提示 重启,这个时候 请拔掉U盘,进行重启 OK. 2.安装 NFS 服务 3.安装 openssh服务 4.开启openSSH服务 5.就可以使用 Wi ...

  9. Linux嵌入式开发中常用的两个工具

    TFTP 全称:Trivial File Transfer Protocol(简单文件传输协议) 进行小文件传输 在ubuntu下设置TFTP服务器 $ sudo apt-get install tf ...

随机推荐

  1. Java的跨平台原理

    JAVA的跨平台原理 JAVA的跨平台原理 Java是一种简单易用.完全面向对象.有平台无关性.安全可靠的.主要面向Internet的开发工具.Java自从1995年正式面世以来,它的快速发展已经使整 ...

  2. 我的Fedora22美化日记

    首先我说一下,我命令是乱打的[不要打我],用之前先google 配置RPMFusion仓库 $ sudo dnf install --nogpgcheck http://download1.rpmfu ...

  3. 通过springmvc的RequestMapping的headers属性的使用

    直接上图: springmvc中可以通过@RequestMapping注解折配置headers属性,也就是通过headers属性来配置请求头信息,从而通过这个属性值来映射请求,因为不同浏览器的Acce ...

  4. 【LeetCode题意分析&解答】35. Search Insert Position

    Given a sorted array and a target value, return the index if the target is found. If not, return the ...

  5. 四轴飞行器1.7 NRF24L01P无线通讯和改进型环形缓冲

    原创文章,欢迎转载,转载请注明出处 这次花了10多天了才再次写blog,一是中秋优点小活动,二是这次完成了不少东西.. 终于接近完成了,这次完成了NRF的通讯,并且用了改进的环形缓冲和简单的通讯协议规 ...

  6. android小知识之圆角ListView

    有些东西看多了,就厌烦了:extjs对我这种感觉最为强烈.甚至,有时觉得设计之殇是审美疲劳.直角看多了,就想看看圆角,不知何时,这几年刮起了一阵阵的圆角设计风:CSS新标准纳入圆角元素,iphone中 ...

  7. PCB打样镀层问题

    现在大部分pcb打样所用PCB板一般有锡板和金板之分(一般根据客户要求和产品特 性选择),那么它们有什么区别呢?现在我将他们的区别作比较如下: 1. 从成本方面来说,锡板价格低,金板价格高. 2. 从 ...

  8. Delphi获取与设置系统时间格式,即GetLocaleInfo和SetLocaleInfo

    在Delphi中,特别是在写管理系统软件时,经常要用到 FormatDateTime 以将 TDateTime 格式的日期时间转换成字符串形式的值显示或保存起来,或者用 StrToDateTime将字 ...

  9. java selenium webdriver实战 helloWord

    第一步:建立Maven项目 Selenium 支持 maven 工程,这会让你的工作更加简便. 用 Eclipse 建个 Maven 的工程,建成后,修改 pom.xml <dependenci ...

  10. Netty那点事: 概述, Netty中的buffer, Channel与Pipeline

    Netty那点事(一)概述 Netty和Mina是Java世界非常知名的通讯框架.它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户ne ...