linux系统入门学习,学嵌入式linux要先学什么

伏羲号

linux系统入门学习,学嵌入式linux要先学什么?

嵌入式发展如此的快,可以说是现在最热的IT技术之一了,很多人加入嵌入式的行业,但是对于刚进入嵌入式或者刚接触嵌入式的人来说,学习嵌入式还是有一定的难度的,我跟前就有很多这样的人,下定决心想要去学嵌入式,但是不知道从何学起,今天我这只老鸟就分享一些嵌入式学习方法,快快搬小板凳来听。

linux系统入门学习,学嵌入式linux要先学什么

对于嵌入式新手来说,知道一点嵌入式,知道嵌入式大概是做什么的,不是很懂,所以要熟悉掌握嵌入式的概念。我们可以看到网上或者书上很多解释:嵌入式系统是针对某个应用,软硬件可裁减的,对体积,功耗,成本等等有严格要求的一个计算机系统。看起来是很复杂的,其实我们来总结一下就是两点:

第一,嵌入式系统是一个计算机系统

第二,嵌入式系统是针对某个应用的,也就是通常所说的“专用的”。

其实再说的通俗易懂点就是针对某个应用的计算机系统!这样的话就很好理解了。

那么重点来了,那就是要学什么,对于嵌入式来说,不要觉得他学很多东西,你就会没有目的的学这学那的,这样只会让自己更加迷茫,不知道要学哪个了,你要知道,嵌入式也就是软件,硬件,编程这些方面的,最基础的也就是C语言了,那刚开始接触,你就需要先从C语言入手。

1、C语言,关于C语言要知道基本的语法,什么是结构体,什么是共同体,有的东西也不用一定要记忆,因为在实际中很少用到;

2、嵌入式最核心的操作系统,所以操作系统原理也应该是要有所了解的,比如时间片、任务调动等等;

3、Linux基本命令的使用(vi编辑器必须会用,因为在终端改文件的时候只能用这个),现在很多的人对鼠标早是情有独钟了,很少用到命令,在学习嵌入式Linux可要改改这个习惯了,Linux用命令操作具有效率高、功能强大的特点,这个是图形界面无法取代的,其实平时的图形界面操作都要转化为命令传输给硬件的。

4、Linux设备驱动的架构要了解,结合原理图和Linux设备驱动相关书籍把每一行代码分析清楚。

上面只是一些简单的嵌入式学习要点,你要先掌握这些,才能再继续后面的,在这里要切记你不要心急,心急吃不了热豆腐,不要希望看什么或者学什么一次就能会,而且记住要理解,不要死记硬背,要理论与实践相结合,实践的多了,那自然而然也就会弄了。还有,不要直接阅读Linux内核源码,看一些自己撞破头也想不明白的东西只能是浪费时间,要循序渐进。

对于初学者,还有一点小建议,我们拿到一个开发板,很兴奋也很激动,想法自然也很多,想用开发板实现自己的这个想法,实现那个想法,然后又不知道从何下手,然后就去论坛中发一个贴,“那个什么什么怎么实现啊,哪位大侠能详细说一下啊,跪求!!”然后等着别人去回复。见没人回复就抱怨。有想法是好的,我们要实现自己的想法也是有前提的,首先,我们对这部分知识了解吗?如果不了解就去google一下(最好别用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到问题,再去发贴问,这样也显得咱们有水平。比如自己连串口是什么都不太清楚呢,就问串口通信怎么做啊,就是人家把代码给咱,咱也不明白是怎么回事啊。

记住每个人都有每个人的方法,就是要勤于练习,不要懒惰,你可以根据我上面的学习方式来进行学习,这个方法就是我在我学习工作中总结的,还是很受用的,希望你和我一样从新手到老鸟,这是一个困难的过程,好好努力最重要。

老电脑安装linux选择哪个版本最流畅?

看你电脑配置了,如果内存大、cpu比较好的话,安装个桌面版,如果内存小、cpu比较差的话,安装个迷你版(不带图形界面),下面我简单介绍3个不错的linux系统,对于日常使用和学习来说非常不错,感兴趣的朋友可以尝试一下:

ubuntu

这是一个众所周知的linux系统,在个人桌面端非常受欢迎,使用率也非常高,有着漂亮的用户界面,强大的软件源支持,完善的包管理系统和丰富的技术社区,兼容绝大多数硬件,包括最新的图形显卡等,大众化、平民化,个人使用来说非常不错,容易学习也容易操作,但对于服务器来说就略显不合适,毕竟在稳定性和可靠性方面不如centos和debian,如果你电脑配置比较好,可以安装桌面版,电脑配置稍低的话,可以安装迷你版,不需要图形界面,运行十分流畅:

centos

这也是一个比较常用的linux系统,和ubuntu相比,比较稳定可靠,因此十分适合做服务器操作系统,许多商业公司都采用这个系统部署生产环境,界面质朴简洁,命令行比较人性化,有着强大的英文文档与开发社区支持,和redhat有着相同的渊源,但免费开源,相对于debian来说,体积略大一些,是一个非常成熟的linux系统,个人使用来说也非常容易操作,如果做服务器的话,不需要安装图形界面,个人桌面端的话,可以安装简洁的gnome或kde桌面,运行也十分流畅:

deepin

这是一个国产操作系统,也是基于linux内核开发,界面美观大方,中文支持良好,自带有非常多的办公软件和开发软件,因此非常适合日常学习和工作,支持视频播放、音乐播放、通讯聊天,但对电脑配置要求相对较高,比较吃内存、也比较占空间,软件支持方面和windows也相差不少,如果你电脑配置比较高,钟情于国产操作系统,可以使用一下deepin,整体效果来说也非常不错:

当然,除了以上3个不错的linux系统,还有许多其他linux系统,比较微型的puppy等,对电脑的配置要求更低,运行也更流畅,但个人使用来说有些不合适,许多软件包、驱动不全,建议还是以主流的linux系统为主,ubuntu、centos等,社区活跃,软件众多,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。

怎样才能成为一个嵌入式Linux高手?

Linux 是一个开源、免费的操作系统,主要应用于服务器(网站服务器、云计算集群、DNS 等)和嵌入式,同时也被很多程序员用作个人操作系统。Linux 使用 GPL 许可证,允许任何人以任何形式传播其源代码。GPL 许可证的内涵很简单:你随意使用我的代码,只要标明这是我的代码就可以了。想学会linux?那么这份嵌入式linux学习路线分享给大家。

1、嵌入式高级C语言

Linux系统

Linux Ubuntu操作系统安装、使用、Linux常用命令、samba服务器、SSH远程登录GCC编译器、GDB调试器、VI编辑器

1、嵌入式C语言高级编程

1、C数据类型、控制语句

2、C程序结构设计、数组、函数、预处理:

3、指针及字符串操作

4、结构体、共用体、宏、枚举

5、文件I/O操作

数据结构及算法

1、数据结构之单向链表、双向链表

2、数据结构之队列、栈

3、数据结构之树、图

4、算法之各种排序(选择法、冒泡法、插入法等)

5、递归

6、算法之二分查找

2、嵌入式设备及GUI开发

嵌入式环境配置与开发工具学习

1、Linux下项目管理工具Make以及Makefile工作原理及其编写

2、Linux下shell脚本相关知识及其编写

3、嵌入式开发环境的基本概念及其搭建

4、A53开发板介绍、设备使用、A53开发板与电脑通信、交叉编译

GUI图形界面开发

1、常用控件——button、label、text edit等

2、常用布局方式——水平布局、垂直布局、固定布局、网格布局、相对布局等

3、常用事件及信号处理技术——信息回调、鼠标、键盘事件等

4、时间编程、数据存储、绘图机制、定时器处理、多任务处理等

3、嵌入式Linux高级程序设计

嵌入式Linux系统编程

1、Linux系统调用概念

2、进程相关概念、多进程实现多任务开发

3、进程间通信:无名管道、命名管道、信号、消息队列、共享内存等

4、多线程实现多任务开发

5、多任务的同步互斥开发:互斥锁、信号量

4、Linux高级网络程序设计

Linux高级网络编程

1、网络相关概念及网络发展

2、TCP/IP协议

3、socket编程、TCP网络编程、UDP网络编程、Web编程开发等

4、Linux网络应用程序开发,Linux网络编程相关API

5、TCP协议服务器的编程方法和并发服务器的实现

6、HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计

7、IPv6与IPv4协议,及其编程接口

8、网络数据通信过程

9、网络原始套接字概念及编程接口

学习完本教程后,你可以了解到Linux操作系统的基础知识,进行简单的Linux命令操作。另外,学习本教程时,建议配合实践进行巩固练习,以便能更好的理解记忆。

Linux终端下有什么生产力效率工具吗?

来试下这些开源工具。你的效率一定会提升。

诚然,很多人使用计算机来娱乐。但是一些人会用来工作,他们的理论是计算机应当能帮我们更快、更好、更有条理地做事。实际应用中,如果没有根据每个人的工作风格来做一些小小的手动配置,计算机也不会提升我们的效率。

Kevin Sonney 喜欢设计系统,今年他在一个 20 篇文章的系列中介绍了 18 种不同的生产力工具,不仅涵盖了网络方面,也涉及了一些能提升他的工作效率的工具。Kevin 最喜欢的所有的工具都收集到了本文,下面概括介绍每种工具的用途。

文件同步

重要的文件应谨慎管理。

Syncthing 能使不同设备上的文件彼此同步。设备可以是 Linux、Windows 或 Mac,也可以是服务器、Android 平板或手机,等等。文件可以是你期望在多台机器间同步的任意文件。Syncthing 是轻量级的点对点工具,因此你不需要支付服务费,你不需要第三方的服务器,而且它很快。同步是一件事,但有时你还需要帮忙处理你拥有的文件。假设你想要一个应用程序在作为一个图形化应用和作为控制台应用时表现不同行为,你可以通过修改符号链接指向的不同的配置文件来达成,如 .foo-gui 和 .foo-term。这完全可以手动修改,但也可以用脚本处理,或者你可以试试 GNU Stow 。邮件管理

我们都依赖于邮件和收件箱,但似乎很少有人对自己管理邮件的方式满意。如果你喜欢用终端工作,为什么不在终端里管理邮件呢?在终端里收发邮件是一件事,但是要能在终端里组织你的邮件就更棒了。如果你的职业是打字员或是天生写脚本的人,试试这类工具吧。

我每天用 OfflineIMAP 把工作邮件同步到笔记本,以便用 Mutt 看邮件。它是很特别的工具,只做一件事:保证本地的邮件副本与远程的收件箱完全同步。配置和用 cron 调度它都相当简单,然后你就可以忘了它的存在。它相当简单,你与 IMAP 打交道的每一刻时间都应该用它。Notmuch 能为邮件消息建立索引、加标签以及搜索邮件。如果你的收件箱出了问题,它可以让你不需要花费很大精力去补救。Vim 可以收发邮件和管理你的日历。当然, Emacs 可以收发邮件和管理你的日历。日历和联系人

我用过的所有的 Linux 系统都预装了 cal 命令。这是一个在终端下用的便捷小日历,它也是个很好的速查工具。然而,它几乎不能被称为一个日历应用程序。 iCalendar 规范(与 Apple 的旧桌面日历无关)中提供了丰富的共享日历功能,虽然 .ics 的约会和事件是纯文本的,但没有在终端中管理它们的工作流。至少,在 khal 和 vdirsyncer 出现之前不存在。

Khal 是基于控制台的读写 .ics 文件的日历工具。Vdirsyncer 是一个能把线上日历(和联系人)同步到本地的终端命令。Khal 在本地运行,vdirsyncer 在远程运行,这样远程的日历能与你管理的本地日历保持同步。管理联系人可能会很难,但是如果你用了 Khard 这个可以读写 vCard 格式文件的终端命令,就会变得简单。反过来,这些文件可以使用 vdirsyncer(你可能已经在使用 khal 日历)同步到远程服务器上。这使得日历和联系人管理变得简单,而且 搭建个人信息管理(PIM)服务器 也比以前容易得多。待办清单组织你每天的行程有很多种方式,但是最简单的一种是用 todo.txt ,一个简单、便携、易于理解的系统,即使设备上没有安装 todo.txt 也不会出现问题。todo.txt 能正常运行的原因是,它就是一个 Bash 脚本,能在几乎所有你能找到的的设备上运行。操作过程很简单:下载脚本,安装到家目录,用一个简单的命令开始调度任务。如果你的计算机上没有安装 todo.sh 命令,那么你的待办清单仍然可以作为纯文本文件来使用,你可以在需要时手动更新它。Jrnl 是一个能追踪的你的日常议程和活动的数字笔记本。如果你要摘抄桌面上的报纸的片段或者把随意的想法写下来,那么这就是你要找的程序。保持联络

沟通是关键,然而现在似乎比以往更多的是聊天平台的问题。这不仅仅是几个客户端,而是几个独立的网络。你怎么管理它们?这里有两个方案。

如果你有很多的联系人分布在太多的聊天网络中,那么你应该试试 BitlBee ,使用这个单一的聊天客户端就可以关联其他所有的聊天网络。Rainbow Stream 是个推特客户端,能让你不被开放的网页浏览器分心,而又能紧跟时事。消息通知

网页浏览器很好,但有时过犹不及。你希望能及时收到消息,但是你又不想全身心地陷入到互联网中。因为互联网是建立在开放的规范和大量的开源技术的基础上的,你不必在一个界面中做所有的事。对于不同的任务有不同的客户端,它们可以让你用自己喜欢的界面来获取你需要的信息。

Tuir 是一个 Reddit 终端客户端。Newsboat 是一个 RSS 阅读器。Wego 是天气预报工具。Vim 可以帮助你登录 Reddit 和 Twitter。Emacs 能让你保持与 Reddit、Twitter 和聊天客户端的联系。保持终端一直开启

如果你正在用终端工作,那么关闭它的意义是什么呢?摆脱 exit 和 Ctrl+D 的诱惑,让你的控制台一直开启着。

Tmux 能分割你的终端,让一个终端窗口“分层"到另一个窗口之上,甚至从一台计算机离开到另一台计算机后,能保持相同的终端会话。DESQview 是另一种方式:它本质上是一个终端窗口管理器。未完待续

本文列出的工具只是 Linux 终端的神奇生产力工具中的一小部分。这个清单会结束,但你自己的清单可以继续。找到你喜欢的工具,学习它们,并将其发挥出最大的优势。当然,一个好的工具不一定要提高你的生产力:有时你最喜欢的命令也可以是能让你最快乐的命令。你的工作是找到自己喜欢的命令,用它们来改变世界。

玩得愉快!

linux系统入门学习路线有哪些推荐?

Linux是自由的免费开源的,它是以unix为原型改造的,一个多用户多任务的操作系统,任何人都可以修改其代码和页面,其中主要的目的就是为了不收商业化的限制,而我们将服务器部署在linux系统上会更加高效稳定、安全(注:UNIX操作系统(尤尼斯),是一个强大的多用户、多任务操作系统,支持多种处理器架构). linux最初是由芬兰赫尔辛基大学学生Linus Torvalds在1991年处于个人爱好设计了linux系统的内核,在1994年正式采用GPL协议。 推荐的发行版如下:

UBUNTU 适合纯菜鸟,追求稳定的官方支持,对系统稳定性要求较弱,喜欢最新应用,相对来说不太喜欢折腾的开发者。Debian,相对UBUNTU难很多的发行版,突出特点是稳定与容易使用的包管理系统,缺点是企业支持不足,为社区开发驱动。Arch,追逐时尚的开发者的首选,优点是包更新相当快,无缝升级,一次安装基本可以一直运作下去,没有如UBUNTU那样的版本概念,说的专业点叫滚动升级,保持你的系统一定是最新的。缺点显然易见,不稳定。同时安装配置相对Debian再麻烦点。Gentoo,相对Arch再难点,考验使用者的综合水平,从系统安装到微调,内核编译都亲历亲为,是高手及黑客显示自己技术手段,按需配置符合自己要求的系统的首选。Slackware与Gentoo类似。CentOS,社区维护的RedHat的复刻版本,完全使用RedHat的源码重新编译生成,与RedHat的兼容性在理论上来说是最好的。如果你专注于Linux服务器,如网络管理,架站,那么CentOS是你的选择。LFS,终极黑客显摆工具,完全从源代码安装,编译系统。安装前你得到的只有一份文档,你要做的就是照文档你的说明,一步步,一条条命令,一个个软件包的去构建你的Linux,完全由你自己控制,想要什么就是什么。如果你做出了LFS,证明你的Linux功底已经相当不错,如果你能拿LFS文档活学活用,再将Linux从源代码开始移植到嵌入式系统,我敢说中国的企业你可以混的很好。Linux学习进阶路线

1、Linux基础

你得挑一个适合你的系统,然后在虚拟机安装它,开始使用它。 如果你想快速学会Linux,我有一个建议就是忘记图形界面,不要想图形界面能不能提供你问题的答案, 而是满世界的去找,去问,如何用命令行解决你的问题。

在这个过程中,你最好能将Linux的命令掌握的不错,起码常用的命令得知道,同时建立了自己的知识库, 里面是你积累的各项知识。

2、Linux平台的C/C++开发,同时还有Bash脚本编程[JAVA]

再下个阶段,你需要学习的是Linux平台的C/C++开发,同时还有Bash脚本编程,如果你对Java兴趣很深还有Java。 同样,建议你抛弃掉图形界面的IDE,从VIM开始,为什么是VIM,而不是Emacs, 我无意挑起编辑器大战,但我觉得VIM适合初学者,适合手比较笨,脑袋比较慢的开发者。 Emacs的键位太多,太复杂,我很畏惧。然后是GCC,Make,Eclipse(Java,C++或者)。

虽然将C++列在了Eclipse中,但我并不推荐用IDE开发C++,因为这不是Linux的文化, 容易让你忽略一些你应该注意的问题。 IDE让你变懒,懒得跟猪一样。如果你对程序调试,测试工作很感兴趣,GDB也得学的很好, 如果不是GDB也是必修课。这是开发的第一步,注意我并没有提过一句Linux系统API的内容, 这个阶段也不要关心这个。你要做的就是积累经验,在Linux平台的开发经验。

我推荐的书如下:C语言程序设计。 C语言,白皮书当然更好。 C++推荐 C++ Primer Plus, Java我不喜欢,就不推荐了,附一个别人的书单:java 入门书籍。 工具方面推荐VIM的官方手册,GCC中文文档,GDB中文文档,GNU开源软件开发指导(电子书), 汇编语言程序设计(让你对库,链接,内嵌汇编,编译器优化选项有初步了解,不必深度)。

如果你这个阶段过不了就不必往下做了,这是底线,最基础的基础,否则离开,不要霍霍Linux开发。 不专业的Linux开发者作出的程序是与Linux文化或UNIX文化相背的,程序是走不远的, 不可能像Bash,VIM这些神品一样。 所以做不好干脆离开。

3、UNIX环境高级编程(作者英年早逝)

UNIX环境高级编程堪称神作,经典中的经典。

接下来进入Linux系统编程,不二选择,APUE,UNIX环境高级编程,一遍一遍的看, 看10遍都嫌少,如果你可以在大学将这本书翻烂,里面的内容都实践过,有作品,你口头表达能力够强, 你可以在面试时说服所有的考官。

(可能有点夸张,但APUE绝对是圣经一般的读物,即使是Windows程序员也从其中汲取养分, Google创始人的案头书籍,扎尔伯克的床头读物。)

这本书看完后你会对Linux系统编程有相当的了解,知道Linux与Windows平台间开发的差异在哪? 它们的优缺点在哪?我的总结如下:做Windows平台开发,很苦,微软的系统API总在扩容, 想使用最新潮,最高效的功能,最适合当前流行系统的功能你必须时刻学习。 Linux不是,Linux系统的核心API就100来个,记忆力好完全可以背下来。 而且经久不变,为什么不变,因为要同UNIX兼容,符合POSIX标准。 所以Linux平台的开发大多是专注于底层的或服务器编程。

这是其优点,当然图形是Linux的软肋,但我站在一个开发者的角度,我无所谓,因为命令行我也可以适应, 如果有更好的图形界面我就当作恩赐吧。另外,Windows闭源,系统做了什么你更本不知道, 永远被微软牵着鼻子跑,想想如果微软说Win8不支持QQ,那腾讯不得哭死。 而Linux完全开源,你不喜欢,可以自己改,只要你技术够。

另外,Windows虽然使用的人多,但使用场合单一,专注与桌面。 而Linux在各个方面都有发展,尤其在云计算,服务器软件,嵌入式领域, 企业级应用上有广大前景,而且兼容性一流,由于支持POSIX可以无缝的运行在UNIX系统之上, 不管是苹果的Mac还是IBM的AS400系列,都是完全支持的。 另外,Linux的开发环境支持也绝对是一流的,不管是C/C++,Java,Bash,Python,PHP,Javascript,。。。。。。就连C#也支持。而微软除Visual Stdio套件以外,都不怎么友好,不是吗?

如果你看完APUE的感触有很多,希望验证你的某些想法或经验,推荐UNIX程序设计艺术, 世界顶级黑客将同你分享他的看法。

4、选择方向:网络,图形,嵌入式,设备驱动

网络方向:服务器软件编写及高性能的并发程序编写

现在是时候做分流了。 大体上我分为四个方向:网络,图形,嵌入式,设备驱动。

如果选择网络,再细分,我对其他的不是他熟悉,只说服务器软件编写及高性能的并发程序编写吧。 相对来说这是网络编程中技术含量最高的,也是底层的。 需要很多的经验,看很多的书,做很多的项目。

我的看法是以下面的顺序来看书:

APUE再深读 – 尤其是进程,线程,IPC,套接字多核程序设计 - Pthread一定得吃透了,你很NBUNIX网络编程 – 卷一,卷二TCP/IP网络详解 – 卷一 再看上面两本书时就该看了5.TCP/IP 网络详解 – 卷二 我觉得看到卷二就差不多了,当然卷三看了更好,努力,争取看了6.Lighttpd源代码 - 这个服务器也很有名了7.Nginx源代码 – 相较于Apache,Nginx的源码较少,如果能看个大致,很NB。看源代码主要是要学习里面的套接字编程及并发控制,想想都激动。如果你有这些本事,可以试着往暴雪投简历,为他们写服务器后台,想一想全球的魔兽都运行在你的服务器软件上。Linux内核 TCP/IP协议栈 – 深入了解TCP/IP的实现

如果你还喜欢驱动程序设计,可以看看更底层的协议,如链路层的,写什么路由器,网卡, 网络设备的驱动及嵌入式系统软件应该也不成问题了。

当然一般的网络公司,就算百度级别的也该毫不犹豫的雇用你。 只是看后面这些书需要时间与经验,所以35岁以前办到吧!跳槽到给你未来的地方!

图形方向,我觉得图形方向也是很有前途的,以下几个方面。

Opengl的工业及游戏开发,国外较成熟。影视动画特效,如皮克斯,也是国外较成熟。GPU计算技术,可以应用在浏览器网页渲染上,GPU计算资源利用上,由于开源的原因,有很多的文档程序可以参考。如果能进火狐开发,或google做浏览器开发,应该会很好 。

嵌入式方向:嵌入式方向没说的,Linux很重要。

掌握多个架构,不仅X86的,ARM的,单片机什么的也必须得懂。 硬件不懂我预见你会死在半路上,我也想走嵌入式方向,但我觉得就学校教授嵌入式的方法, 我连学电子的那帮学生都竞争不过。 奉劝大家,一定得懂硬件再去做,如果走到嵌入式应用开发,只能祝你好运, 不要碰上像Nokia,Hp这样的公司,否则你会很惨的。

驱动程序设计:软件开发周期是很长的,硬件不同,很快。 每个月诞生那么多的新硬件,如何让他们在Linux上工作起来,这是你的工作。 由于Linux的兼容性很好,如果不是太低层的驱动,基本C语言就可以搞定,系统架构的影响不大, 因为有系统支持,你可能做些许更改就可以在ARM上使用PC的硬件了, 所以做硬件驱动开发不像嵌入式,对硬件知识的要求很高。

可以从事的方向也很多,如家电啊,特别是如索尼,日立,希捷,富士康这样的厂子,很稀缺的。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,81人围观)

还没有评论,来说两句吧...