学习嵌入式linux流程

学习嵌入式linux流程,第1张

嵌入式学习是一个循序渐进的过程,有C语言基础还是比较好的,C++的话不搞上层应用就用不上,如果是希望向嵌入式Linux方向发展的话,关于这个方向,我认为大概分3个阶段:

1、嵌入式linux上层应用,包括QT的GUI开发

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脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是需要较强的学习能力和专业功底。只要能坚持下来一定会取得成功!

其实LZ可以到一些嵌入式培训机构的网站上看一下他们的课程设置,就会在脑子里有个清晰的思路,比如华清远见的官方网站,上面的嵌入式内容很丰富,嵌入式方面的信息更新也很迅速,没事可以去转转。

完全可行的。

很多人的头脑印像中,认为linux是主要用作服务器系统,特别的高深,需要手敲很多的命令来执行 *** 作。

其实Linux是一个完全可以作为日常使用的 *** 作系统来使用的。 只不过,在大平台的推广下,它只能作为一个小众产品来使用而已。

现在很多linux桌面 *** 作系统本身就被设计成为模仿Windows的界面风格,熟悉Windows的用户在这一系统下会比较顺手。 常见的Linux桌面发行版有Ubuntu、深度(deepin)等。

聊天 ,腾讯QQ Linux版本,支持X64、ARM64、MIPS64架构。

办公软件 ,虽然Linux下没有微软的Office系列,但WPS是非常不错的一套办公软件哦,完全不逊色与微软的Office。

游戏 ,很多人质疑说,Linux下的 游戏 太少了,根本满足不了大众的 游戏 需求,其实,在我看来,是大多数用户的大型 游戏 的需求还是不大,即便有需求,Linux下也有相应的解决方案,比如:Steam就是在Linux系统下的 游戏 分发软件,通过Steam平台,很多相当不错的 游戏 进入Linux。

程序开发 ,对于程序员来说,几乎的程序开发环境都可以在Linux中搭建起来,并且绝大多数,在Linux下的开发效率是要比在Windows下开发要容易和高效的,因为Linux有着极其强大的自由性。尤其是对于web开发,由于服务器端一般都采用Linux系统,所以,如果本机也安装linux进行开发,那将会节省很多成本,并且保持了环境的高度统一。

Linux对于移动端、云计算、Ai技术以及嵌入式等各个领域,都发挥着非常重要的作用。

非常难,最关键的原因是在linux下,众多的专业软件没有,网银软件什么的没有,同时一些日常生活中的冷僻一点的软件也没有。

1、专业的软件没有

比如PS、CAD等等,这些工具软件就是没有的,所以如果你需要使用这些专业的工具软件,就无法实现全部用linux。

2、日常生活的很多软件也没有

有些人说我不用专业软件,就日常看看视频,上上网之类的。如果你只是这些简单的需求,估计是可以。

但问题是,在linux下,很多的网银软件,控件什么的都没有,这样你付不了款,登不网上银行什么的,这些可就是大问题了。

3、开发方面

开发方面也分好多种,有些是必须在windows下开发的,有些是需要MacOS环境,有些需要linux环境,具体看你的开发需求是什么,并不能一概而论。

但是在我看来,完全只使用linux,不用其它的 *** 作系统,真的很难的,这也是目前国产系统无法广泛推广的根本原因之所以,毕竟所有的国产系统都是基于linux系统的修改版。

我尝试过Linux系统桌面版本的使用情况,这里使Ubuntu及国内的Deepin系统。本文以Ubuntu1804为例。

我们下载系统后初始安装界面差不多就是这个样子,后期可以自定义出各种界面,自由度非常高!

一、日常生活及办公软件

1、聊天软件QQ

腾讯曾于2008年推出QQ for Linux版本,但2009年之后就再也没有更新过,但在上个月24号腾讯宣布QQ for Linux版正式回归!全新版本优化了消息体验,完善了消息的收发能力以及在性能上得到了提升。

2办公软件WPS

WPS官网也是有发布Linux版本的

总体来说办公软件也是非常好用的,跟windows基本没什么区别,满足日常办公需求。

我自己尝试过用Linux来应付一个周的时间,在完全不打开macOS和Windows的前提下,深度Linux基本上可以完全满足我的需求。

得事先讲清楚的是,我基本上已经很少玩 游戏 了,目前做的也都是互联网产研线上的工作, 娱乐 就是看视频听音乐、看博客逛开发者社区,其余的工作和学习也都是跟互联网软件开发相关的,因此Linux对于我来说可以满足基本需求。

硅谷有两种程序员,一种是用macOS的,一种是Linux的,基本上都是这两类程序员占主要,Google和Facebook就是这类硅谷公司的典型。两类程序员基本上都是用Emacs和Vim开发的居多,尤其是做后台的大部分都是在远程服务器上完成,而服务器上就是Linux系统。

Google之前一直用定制版Ubuntu、也就是goobuntu,现在逐渐转向了gLinux,也是基于Debian的Linux版本,Google不限制员工使用什么类型的 *** 作系统,不过Google鼓励工程师实用Linux *** 作系统。

很多同学可能平时不大能接触上,国内也有不少的企业是用这样的环境开发的,比较著名的就是拥有着11亿注册用户的微信开发。微信PRC框架、服务器框架代码、微服务、路由策略、过载和自适应,消息队列等都是在Linux C/C++环境下开发,你所了解的微信的主要功能,比如朋友圈、公众号、支付等核心功能全都是在Linux下开发的。

基本上是采用的微信后台是采用SSH到服务器开发机,大部分基本上采用的是vim/emacs+gcc+gdb进行开发,听说只有很少一部分是本地IDE写好传到变以及进行编译调试,要知道微信这种级别的产品,用户量是10亿级的,代码量是千万行以上的,都还是在Linux C/C++为主要技术栈的环境下进行开发,因此Linux做开发是肯定没问题的。

除了没有Visual Studio、Xcode这些Windows或者macOS下的专门开发工具,其他的主流开发工具,Linux上都非常全面,甚至体验上会更好。

作为生产力系统,Linux对于开发者是极度友好的,Linux是最接近生产环境的,大多数的互联网企业都会选择CentOS、Debian、RedHat Linux、或者一些企业专门深度定制的Linux发行版作为服务器,即使如WhatsApp、Yahoo使用FreeBSD作为服务器,Linux也是非常接近生产环境。

我自己曾经尝试过在深度Linux下学习和工作一周时间,事实上深度Linux很好的完成了我的工作、学习和日常任务。

Emacs/Vim、Visual Studio Code、IntelliJ IDEA、PyCharm是我用得比较多的开发工具,除此之外GCC、GDB、Git都是用得比较多的工具,深度终端已经非常好用了,不需要像Windows上弄个Zoc、Cmder这些第三方终端。

文档编辑我现在基本上已经很少用office了,大部分我都是云端用Google Docs、本地用WPS,除此之外就是做presentation的时候用keynote,基本上已经不用office了,主要是我也忍不office了。脑图一个在线的ProcessOn,本地用MindMaster和Xmind也绰绰有余了。

这可能是大多数同学平时会用的, 娱乐 和社交必然是大家要用的。看视频直接用网站就好了,客户端完全可以不需要,听音乐网易云音乐、Spotify都有Linux原生客户端。

游戏 方面Linux也有Steam,大家可以去下载体验一些 游戏 ,当然如果你是个资深 游戏 玩家,我还是建议你使用Windows,毕竟大多数经典的单机 游戏 、网络 游戏 都是在Linux上没办法玩的。

社交方面,现在微信、钉钉都可以用,微软为Linux开发了Skype原生版本,腾讯也为Linux开发了QQ原生版本,完全够用了。

总体来说,我觉得深度Linux基本上可以满足国内程序员的日常学习、工作、以及 娱乐 的大部分需求。

从问题分析,想必题主应该是一个开发人员。但是题主是一个什么样的开发人员,我却不得而知了。不过既然题主在问题中表示希望开发全部使用Linux系统的表态来看,应该并非Windows系统或者Mac系统的专有程序的开发人员。

因此,我可以假定题主的开发语言应该是跨平台的,或者对特定的开发平台系统是没有要求的。因为只有这样的假定,才符合题主的问题的基础要素。

从这个推断来看,在开发层面上使用Linux系统应该是没有任何问题的。需要注意的是,虽然在Linux系统上没有像Windows或者Mac那么多的可视化工具,但是主流的IDE和常用工具是并不缺少的。只是可能在使用习惯上有一些差异,作为开发人员我相信通过短时间的适应,应该是可以适用的。

但是,作为开发人员,不能仅仅从开发者的角度去考虑问题。因为你需要和各个部门的人进行交互,交换各类文件是常有的事情。所以,如果你的同事适用了某个特定系统支持的特定文件格式,那么在你的电脑上可能就会出现一些问题。

比如使用苹果系统的人,给你一个page文件对吧。这个例子极端了一些,但是这样的场景确实是存在的。

所以,在和同事的文件交互问题解决的前提下,使用Linux系统作为开发 *** 作系统平台是没有太大的问题的。

而在日常生活中,使用Linux系统会有什么影响吗?其实还是有比较大的影响的。首先就是,很多国产端游可能你就没办法愉快的玩耍了。系统不支持,没办法。

虽然Linux系统上有很多的 游戏 ,但更多的人还是喜欢玩自己常玩的 游戏 。因此,如果你常玩的 游戏 在Linux没有发行版,那么这一关就会卡死你了。

不过这个问题并不严重,因为现在大家玩 游戏 主力都转移到了移动端,在PC端的 游戏 大家玩的越来越少。因此,如果你忽略 游戏 方面的需求的话,或者有专门的 游戏 主机的话,那么日常生活中使用Linux系统并没有什么太大的影响。

无论是看**,听音乐,浏览网页,还是从事一些日常的轻度办公以及一些Linux下的各类 游戏 ,还是比较丰富的。

还有一点,Linux系统在部分情况下,对打印机的支持并不好,如果你有大量打印需求,最好先确认系统是否支持你的打印机型号。如果没有这个需求,那就忽略好了。

一个长期使用Windows系统的用户,贸然切换为Linux系统,是会存在很多不适应的地方的。但这并非不能克服,我个人建议如果你初次尝试Linux系统,可以安装国内优秀的Linux发行版Deepin系统。该系统集成了国人常用的各类软件,让大家开箱即用、拎包入住。比如QQ\WPS\搜狗输入法等等。

其自行开发的各类影音 娱乐 软件,也能满足大多数人的日常需求了。而近期因为美国政策原因,华为已经在很多电脑产品上面预装Deepin系统了。如果你近期有购买电脑的需求,并且想要尝试Linux系统,可以购买华为的电脑产品。我相信通过一段时间的学习和适应,你会喜欢上Linux的世界的。

PS:我个人已经有四年不曾使用Windows系统了。主力是苹果系统和Deepin系统,我个人感觉良好。

以上。

Linux的破冰之路在于强大的云端,比如我要用CAD设计,Linux没有这个软件,但是可以在云端有,通过云获得使用软件的能力。那么关键就是需要有更多,更快的实时云端。更人性化的收费标准,太贵了不行。还要有灵活的收费服务套餐。比如我设计一个东西,本来预计三天完成,预计云端费用三百块钱,结果由于某种原因,导致十五天才造成,结果就造成远远超出预期费用。我的意思是,云端收费可以多样化,可以针对时间收费,也可以针对项目收费。未来中国芯片系统的突破之路或许就在云计算服务的普及。这需要更多强大的云端和更快的网络接入速度。云端当然也可以运行任何 游戏 ,由于可控性,还可以避免小孩整夜玩 游戏 !云端建设也可以多样化,比如专门面向 游戏 的,专门面向工业设计的,专门面向影视的……到那时候,个人电脑不需要极其强大的配置,就可以获得顶配的性能,这也是芯片等突出重围的路子,可以获得喘息之机,逐步提高芯片设计制造能力。

如果是常用cad这类制图类软件那在上是不太方便,虽然linux上也有相似软件替代,但总体成熟度目前不如Windows。不过工作中只是偶尔用一下的话有太多云端cad,ps,cd的应用可用了,完全可以用Linux替代

从2012年开始使用fedora至今,中间换过windows,发现不适合开发,又换回fedora,如今fedora已发布31,除了电池管理和显卡驱动,其他问题不大,甚至更高效

完全可行

嗯嗯,,,

一:C语言嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件 *** 作、队列、栈等。

二:Linux基础Linux *** 作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI,编译器GCC,调试器GDB和Make项目管理工具,ShellMakefile脚本编写等知识,嵌入式开发环境的搭建。

三:Linux系统编程重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。

四:Linux网络编程计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解>

五:数据结构与算法数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。

六:C、QTC是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及C的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI程序,并移植QT应用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。

七:CortexA8、Linux平台开发通过基于ARMCortex-A8处理s5pv210了解芯片手册的基本阅读技巧,掌握s5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nandflash控制器等模块,为底层平台搭建做好准备。Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程。同时了解Android *** 作系统开发流程。Android系统是基于Linux平台的开源 *** 作系统,该平台由 *** 作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。

八:驱动开发驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发 *** 作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARMCortex-A8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。

以上就是列出的关于一名合格嵌入式Linux开发工程师所必学的理论知识,其实,作为一个嵌入式开发人员,专业知识和项目经验同样重要,所以在我们的理论学习中也要有一定的项目实践,锻炼自己的项目开发能力。

我就是做LINUX下的C开发的。

准确的说,LINUX下C才是主要的开发语言,但是写应用程序还是要用面向对象的,尤其是图形界面的,不如QT和X和GTK等等。下面说的必须要求你C语言学的很好而且会使用LINUX的情况下。LINUX常用命令要熟悉。

要学LINUX下的C编程,先看一两本LINUX下C的书比较好,这个你自己选择,但是经典的书还是好一些,比如《LINUX程序设计》、《UNIX环境高级编程》,看这些的时候把书上的例子选择一些自己编译一下,哪怕是照着敲进去,事半功倍。

看完一本这样的书,你对LINUX系统编程的知识就足够了,这时候你可以开始阅读一些LINUX下的源代码来锻炼和提升能力了,LINUX下有很多开源的软件,你可以搜一下,应用程序也很多,但是最好的源代码还是LINUX内核。

推荐一本简单的内核书《linux内核完全剖析012》,这个讲的是012内核,代码量只有1万多行的内核,现在的26估计一千万,一辈子看不完。这个书讲了很多X86体系结构的知识,这时理解内核必备的,汇编你要能看懂。

能看懂内核代码了,就说明你至少不是初学者了,现在肯定能开发项目了,有了经验后,恭喜你,你就成为一名LINUX程序员了。

再由这些基础后,你就可以选择一些具体的开放方向了,比如底层一点,驱动,协议等、或者嵌入式应用等、或者是QT等。不过这就是后话了,呵呵

我自己的一些体会,希望能对你有用。

1大多数Linux发放版本,自身捆绑了诸如Java、G、Perl、Python等常用开发工具。

2Windows环境的快速开发工具(RAD),像Borland的CBuilder、Delphi等可视化开发环境,通过简单的用户界面设计、方便的拖拽式开发,促成了Windows平台应用软件的极大丰富。

3Kylix2还是将Delphi从Windows搬到了Linux,CBuilder及Delphi程序语言,为Linux平台开发者提供了一个快速开发电子商务应用的解决方案。据称,无论是建立图形用户界面、数据库或是Web及WebServices应用程序,Kylix3都将带来更快速、更简单的使用经验。

4ylix3具有Windows平台下CBuilder程序开发人员熟悉的工作界面,并同时支持ANSI/ISOC标准,5由Kylix3开发的基于Linux的应用程序,将其源代码经CBuilder或Delphi重新编译之后即可在Windows环境下顺利执行,在Windows平台经过编译后,可供MSIIS、Apache、Netscape等不同Web服务器使用。

6可视化C编译环境和组件式的开发方式,使原本对Linux平台不熟悉的开发者,也能够顺利进行开发

以上就是关于学习嵌入式linux流程全部的内容,包括:学习嵌入式linux流程、日常生活和开发全用linux可行吗为什么、Linux环境下C开发_linux搭建c语言开发环境等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9775770.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存