1.windows操作系统都有哪些

2.计算机有哪些系统软件和哪些应用软件

3.电脑系统稳定性受挑战?这几个方法帮你解决问题

4.DOS是什么操作系统?

5.计算机控制系统主要分几大类,并说明各类的特点?同时指出计算机控制系统的主要性能指标?

6.适合初学者学习的嵌入式教程

个人电脑系统开发方案设计,个人电脑系统开发方案设计

把原来的内存条用橡皮擦擦金手指,再重新结实应该就可以了。如果能开机,但系统无法正常启动,可能是系统坏了。直接换个验证过的系统盘重装系统就行了,这样就可以全程自动、顺利解决 系统无法启动 的问题了。用u盘或者硬盘这些都是可以的,且安装速度非常快。具体安装方法如下:

U盘安装

用ultraiso软件,打开下载好的系统安装盘文件(ISO文件),执行“写入映像文件”把U盘插到电脑上,点击“确定”,等待程序执行完毕后,这样就做好了启动及安装系统用的u盘,用这个做好的系统u盘引导启动机器后,即可顺利重装系统了。

硬盘安装

前提是,需要有一个可以正常运行的Windows系统,提取下载的ISO文件中的“*.GHO”和“安装系统.EXE”到电脑的非系统分区,然后运行“安装系统.EXE”,直接回车确认还原操作,再次确认执行自动安装操作(执行前注意备份C盘重要资料)。

windows操作系统都有哪些

电脑操作系统 - 现在的主流操作系统

个人电脑

个人电脑市场从硬件架构上来说目前分为两大阵营,PC机与Apple电脑。

它们支持的操作系统:

1.Windows系列操作系统

由微软公司生产;

2.Unix类操作系统

如SOLARIS,BSD系列(FREEBSD,openbsd,netbsd,pcbsd);

3.Linux类操作系统

如UBUNTU,suse linux,fedora,等

4.Mac操作系统

由苹果公司生产(Darwin),一般安装于MAC电脑。

大型电脑

最早的操作系统是针对20世纪60年代的大型主结构开发的,由于对这些系统在软件方面做了巨大投资,因此原来的计算机厂商继续开发与原来操作系统相兼容的硬件与操作系统。这些早期的操作系统是现代操作系统的先驱。现在仍被支持的大型主机操作系统包括:

Burroughs MCP-- B5000,1961 to Unisys Clearpath/MCP, present.

IBM OS/360 -- IBM System/360, 1964 to IBM zSeries, present

UNIVAC EXEC 8 -- UNIVAC 1108, 1964, to Unisys Clearpath IX, present.

现代的大型主机一般也可运行Linux或Unix变种。

嵌入式系统

嵌入式系统使用非常广泛的操作系统(如VxWorks、eCos、Symbian OS及Palm OS)以及某些功能缩减版本的Linux或者其他操作系统。某些情况下,OS指称的是一个内置了固定应用软件的巨大泛用程序。在许多最简单的嵌入式系统中,所谓的OS就是指其上唯一的应用程序。

类Unix系统

一个在Linux底下执行的客制化KDE桌面系统所谓的类Unix家族指的是一族种类繁多的OS,此族包含了System V、BSD与Linux。由于Unix是The Open Group的注册商标,特指遵守此公司定义的行为的操作系统。而类Unix通常指的是比原先的Unix包含更多特征的OS。

Unix系统可在非常多的处理器架构下执行,在服务器系统上有很高的使用率,例如大专院校或工程应用的工作站。自由软件Unix变种,例如Linux与BSD近来越来越受欢迎,它们也在个人桌面电脑市场上大有斩获,例如Ubuntu系统,但大部分都是电脑高手在使用。

某些Unix变种,例如HP的HP-UX以及IBM的AIX仅设计用于自家的硬件产品上,而SUN的Solaris可安装于自家的硬件或x86电脑上。苹果电脑的Mac OS X是一个从NeXTSTEP、Mach以及FreeBSD共同派生出来的微内核BSD系统,此OS取代了苹果电脑早期非Unix家族的Mac OS。经历数年的披荆斩棘,自由开源的Unix系统逐渐蚕食鲸吞以往专利软件的专业领域,例如以往电脑动画运算巨擘——SGI的IRIX系统已被Linux家族及Plan 9[3]丛集所取代。

Linux系统

Linux的是一套免费的32位多人多工的操作系统,运行方式同UNIX系统很像,但Linux系统的稳定性、多工能力与网络功能已是许多商业操作系统无法比拟的,Linux还有一项最大的特色在于源代码完全公开,在符合GNU GPL(General Public License)的原则下,任何人皆可自由取得、散布、甚至修改源代码。

就Linux的本质来说,它只是操作系统的核心,负责控制硬件、管理文件系统、程序进程等。Linux Kernel(内核)并不负责提供用户强大的应用程序,没有编译器、系统管理工具、网络工具、Office套件、多媒体、绘图软件等,这样的系统也就无法发挥其强大功能,用户也无法利用这个系统工作,因此有人便提出以Linux Kernel为核心再集成搭配各式各样的系统程序或应用工具程序组成一套完整的操作系统,经过如此组合的Linux套件即称为Linux发行版。

国内Linux发行版做的相对比较成功是红旗和中软两个版本,界面做得都非常的美观,安装也比较容易,新版本逐渐屏蔽了一些底层的操作,适合于新手使用。两个版本都是源于中国科学院软件研究所承担的国家863的Linux项目,但无论稳定性与兼容性与国外的版本相比都有一定的差距,操作界面与习惯与 Windows越来越像,提供一定技术支持和售后服务,适宜于国内做低价的操作系统解决方案。

微软Windows

Microsoft Windows 系列操作系统是在微软给IBM机器设计的MS-DOS的基础上设计的图形操作系统。现在的Windows系统,如Windows 2000、Windows XP皆是建立于现代的Windows NT内核。NT内核是由OS/2和OpenVMS等系统上借用来的。Windows 可以在32位和64位的Intel和AMD的处理器上运行,但是早期的版本也可以在DEC Alpha、MIPS与PowerPC架构上运行。 虽然由于人们对于开放源代码作业系统兴趣的提升,Windows的市场占有率有所下降,但是到2004年为止,Windows操作系统在世界范围内占据了桌面操作系统90%的市场。[4]

Windows系统也被用在低阶和中阶服务器上,并且支持网页服务的数据库服务等一些功能。最近微软花费了很大研究与开发的经费用于使Windows拥有能运行企业的大型程序的能力。

WindowsXP在2001年10月25日发布,2004年8月24日发布最新的升级包WindowsXP Service Pack 2。 微软最新的操作系统 Windows Vista(开发代码为Longhorn)于2007年1月30日发售[5]。Windwos Vista增加了许多功能,尤其是系统的安全性和网络管理功能。Windows Vista拥有界面华丽的Aero Glass。

苹果Mac OS

苹果Mac OS系列操作系统是苹果公司 (原称苹果电脑)给苹果个人电脑系列设计的OS。

其他

大型主机以及嵌入式操作系统均与Unix或Windows家族关系不大,除了Windows CE、Windows NT Embedded 4.0及Windows XP Embedded是Windows的血亲产品,以及数种*BSD和嵌入式Linux包为例外。

少数较旧的OS今日依然在一些需要稳定性的市场中活跃,例如IBM的OS/2[6]BeOS以及XTS-400。

在达康时代狂潮过后,如AmigaOS与RISC OS等少数人使用的OS依然持续建立,以满足狂热的爱好者社群与特殊专业使用者。

未来

研究与建立未来的操作系统依旧进行著。操作系统朝提供更省电、网络化、华丽的使用者界面的方向来改进。Linux及一些类UNIX OS正努力让自己成为个人用户舒适的环境。GNU Hurd是一个企图完全兼容Unix并加强许多功能的微内核架构。微软Singularity是一个奠基于.Net并以建立较佳内存保护机制为目目标研究。

计算机有哪些系统软件和哪些应用软件

1、Windows 2000

Microsofi Windows 2000是沿袭微软公司Windows NT系列的32位视窗操作系统,是Windows操作系统发展的一个新里程碑。Windows 2000起初称为Windows NT 5.0。

2、WindowsXP

Windows XP是Microsoft公司于2001年10月发布的一款操作系统。它不再用微软公司一贯的以年份命名的方式(如先前的Windows 95、Windows 98和Windows 2000),而是以一个全新的名字WindowsXP来命名这款全新的操作系统。

3、Windows 7

2009年10月,微软公司推出了Windows 7,核心版本号为Windows NT 6.1。Windows7可供家庭及商业工作环境、笔记本电脑、平板电脑、多媒体中心等使用。Windows 7先后推出了简易版、家庭普通版、家庭高级版、专业版、企业版等多个版本。

4、Windows 8

2012年10月26日,微软正式推出Windows 8。Windows 8是由微软公司开发的具有革命性变化的操作系统。该系统旨在让人们的日常电脑操作更加简单和快捷,为人们提供高效易行的工作环境。Windows 8支持个人电脑(X86构架)及平板电脑(X86构架或ARM构架)。

5、Windows 10

2015年7月29日,美国微软公司正式发布计算机和平板电脑操作系统Windows 10。 2014年10月1日,微软在旧金山召开新品发布会,对外展示了新一代Windows操作系统,将它命名为“Windows 10”,新系统的名称跳过了数字“9”。

2015年1月21日,微软在华盛顿发布新一代Windows系统,并表示向运行Windows7、Windows 8.1以及Windows Phone 8.1的所有设备提供,用户可以在Windows 10发布后的第一年享受免费升级服务。

百度百科-Windows操作系统

电脑系统稳定性受挑战?这几个方法帮你解决问题

一、系统软件

1、类Unix系统

所谓的类Unix家族指的是一族种类繁多的OS,此族包含了System V、BSD与Linux。由于Unix是The Open Group的注册商标,特指遵守此公司定义的行为的操作系统。而类Unix通常指的是比原先的Unix包含更多特征的OS。

类Unix系统可在非常多的处理器架构下运行,在服务器系统上有很高的使用率,例如大专院校或工程应用的工作站。

2、微软Windows

Microsoft Windows系列操作系统是在微软给IBM机器设计的MS-DOS的基础上设计的图形操作系统。现在的Windows系统,如Windows 2000、Windows XP皆是创建于现代的Windows NT内核。

NT内核是由OS/2和OpenVMS等系统上借用来的。Windows可以在32位和64位的Intel和AMD的处理器上运行,但是早期的版本也可以在DEC Alpha、MIPS与PowerPC架构上运行。

3、MacOS?

macOS,前称“MacOS X”或“OS X”,是一套运行于苹果Macintosh系列计算机上的操作系统。Mac OS是首个在商用领域成功的图形用户界面系统。

Macintosh开发成员包括比尔·阿特金森(Bill Atkinson)、杰夫·拉斯金(Jef Raskin)和安迪·赫茨菲尔德(Andy Hertzfeld)。

从OS X 10.8开始在名字中去掉Mac,仅保留OS X和版本号。2016年6月13日在WWDC2016上,苹果公司将OS X更名为macOS。

4、Chrome OS

Google Chrome OS是一项Google的轻型的、基于网络的计算机操作系统,其基于Google的浏览器Google Chrome的Linux内核。

5、linux

linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

二、应用软件

1、办公室软件

文书试算表程式投影片报告数学程式创建编辑器绘图程式基础数据库档案管理系统文本编辑器。例如:WPS。

2、互联网软件

即时通讯软件电子邮件客户端网页浏览器客户端下载工具。例如:百度网盘、迅雷。

3、分析软件

计算机代数系统统计软件数字计算计算机工程设计。例如:MySQL。

4、协作软件

协作产品开发软件。例如:钉钉。

5、商务软件

会计软件企业工作流程分析客户关系管理Backoffice企业规划供应链管理产品生命周期管理。例如:金蝶财务软件。

DOS是什么操作系统?

你的电脑是否遇到了麻烦?可能正在肆虐,系统稳定性受到了挑战。但别担心,我们有几个解决方案来帮助你恢复系统的稳定。

系统还原

首先,你可以尝试进行系统还原。在开机时按下F8键进入安全模式,然后找到“程序”里的“附件”,再选择“系统工具”中的“系统还原”。选择一个合适的日期,系统就可以恢复到那个时间点的状态了。

GHOST恢复

如果你的电脑有做系统镜像,那么用GHOST恢复会是一个更快的选择。通常,这个过程只需要3分钟,简单又高效。

系统安装光盘修复

如果以上两种方法都不能解决问题,那么你可能需要使用系统安装光盘进行修复。如果修复不成功,那么最后的解决方案就是重新安装系统了。

尝试其他方法

不过,请记住,重新安装系统虽然可能是解决这类问题的最佳方案,但在尝试其他方法之前,不妨按照上述的顺序进行尝试,这样可以节省你不少时间哦。

计算机控制系统主要分几大类,并说明各类的特点?同时指出计算机控制系统的主要性能指标?

DOS实际上是Disk Operation System(磁盘操作系统)的简称。顾名思义,这是一个基于磁盘管理的操作系统。与现在使用的操作系统最大的区别在于,DOS是命令行形式的,靠输入命令来进行人机对话,并通过命令的形式把指令传给计算机,让计算机实现操作的。  

DOS是1981~1995年的个人电脑上使用的一种主要的操作系统。由于早期的DOS系统是由微软公司为IBM的个人电脑开发的。

故而即称之为PC-DOS,又以其公司命名为MS-DOS,因此后来其他公司开发的与MS-DOS兼容的操作系统,也延用了这种称呼方式,如:DR-DOS、Novell-DOS ....等等。

扩展资料:

平时所说的DOS一般是指MS-DOS。从早期1981年不支持硬盘分层目录的DOS1.0,到当时广泛流行的DOS3.3,再到非常成熟支持CD-ROM的DOS6.22,以及后来隐藏到Windows9X下的DOS7.X,前前后后已经经历了20年,至今仍然活跃在PC舞台上,扮演着重要的角色。?

只要打开计算机,计算机就开始运行程序,进入工作状态。计算机运行的第一个程序就是操作系统。操作系统是应用程序与计算机硬件的"中间人",没有操作系统的统一安排和管理,计算机硬件没有办法执行应用程序的命令。

操作系统为计算机硬件和应用程序提供了一个交互的界面,为计算机硬件选择要运行的应用程序,并指挥计算机的各部分硬件的基本工作。  

最初的计算机用的都是DOS操作系统,后来,微软公司开发了Windows操作系统,又叫做Windows操作平台。由于Windows操作平台简单易学,不必记忆大量的英文命令,而且功能也越来越完善

适合初学者学习的嵌入式教程

1、计算机控制系统主要分几大类,并说明各类的特点?

计算机控制系统的分类 计算机控制系统的分类有三种方法:以自动控制行式分类,以参于控制方式分类或以调节规律分类。 一、以自动控制行式分类 以自动控制方式可以分成如下几类: (一) 计算机开环控制(Computer Open Loop Control)系统 若计算机开环控制系统的输出对生产过程能行使控制,但控制结果---生产过程的状态没有影响计算机控制的系统,计算机\控制器\生产过程等环节没有构成闭合环路,则称之为计算机开环控制系统.从图上看出生产过程的状态没有反馈给计算机,而是由操作人员监视生产过程的状态,决定控制方案,并告诉控制计算机使其行使控制作用. (二) 计算机闭环控制 计算机对生产对象或过程进行控制时,生产过程状态能直接影响计算机控制的系统,称之为计算机闭环控制系统.控制计算机在操作人员监视下,自动接受生产过程状态检测结果,计算并确定控制方案,直接指挥控制部件(器)的动作,行使控制生产过程作用. 在这样的系统中,控制部件按控制机发来的控制信息对运行设备进行控制,另一方面运行设备的运行状态作为输出,由检测部件测出后,作为输入反馈给控制计算机;从而使控制计算机\控制部件\生产过程\检测部件构成一个闭环回路.我们将这种控制形式称之为控制计算机闭环控制. 计算机闭环控制系统,利用数学模型设置生产过程最佳值与检测结果反馈值之间的偏差,控制达到生产过程运行在最佳状态. (三) 在线控制 只要计算机对受控对象或受控生产过程,能够行使直接控制,不需要人工干预的都称之为控制计算机在线控制或称联机控制系统. (四) 离线控制 控制计算机没有直接参于控制对象或受控生产过程.它只完成受控对象或受控过程的状态检测,并对检测的数据进行处理;而后制定出控制方案,输出控制指示,操作人员参考控制指示,人工手动操作使控制部件对受控对象或受控过程进行控制.这种控制形式称之为计算机离线控制系统. (五) 实时控制系统 控制计算机实时控制系统是指受控制的对象或受控过程,每当请求处理或请求控制时,控制机能及时处理并进行控制的系统,常用在生产过程是间断进行的场合.如炼钢,每炼一炉钢是一个过程;又如轧钢过程,每轧出一块钢算一个过程,每个过程都重复进行.只有进入过程才要求计算机进行控制.在计算机一旦进行控制时,就要求计算机对来自生产过程的信息在规定的时间内作出反应或控制.这种系统常使用完善的中断系统和中断处理程序来实现.综上所述,一个在线系统并不一定是实时系统.但是一个实时系统必是一个在线系统. 二、 以参于控制方式来分类 按控制机参于控制方式来分类, 可分成如下几种: (一)直接数字控制系统 由控制计算机取代常规的模拟调节仪表而直接对生产过程进行控制,由于计算机发出的信号为数字量,故得名DDC控制。实际上受控的生产过程的控制部件,接受的控制信号可以通过控制机的过程输入/输出通道中的数/模(D/A)转换器将计算机输出的数字控制量中转换成模拟量;输入的模拟量也要经控制机的过程输入/输出通道的模/数(A/D)转换器转换成数字量进入计算机. DDC控制系统中常使用小型计算机或微型机的分时系统来实现多个点的控制功能.实际上是属于用控制机离散样,实现离散多点控制.这种DDC计算机控制系统已成为当前计算机控制系统中主要控制形式之一. DDC控制的优点是灵活性大,集中可靠性高和价格便宜.能用数字运算形式对若干个回路,甚至数十个回路的生产过程,进行比例--- 积分---微分(PID)控制,使工业受控对象的状态保持在给定值上,偏差小且稳定.而且只要改变控制算法和应用程序便可实现较复杂的控制.如前馈控制和最佳控制等.一般情况下,DDC级控制常作为更复杂的高级控制的执行级. (二) 计算机监督控制系统 计算机监督控制系统是针对某一种生产过程,依据生产过程的各种状态,按生产过程的数学模型计算出生产设备应运行的最佳给定值,并将最佳值自动地或人工对DDC执行级的计算机或对模拟调节仪表进行调正或设定控制的目标值.由DDC或调节仪表对生产过程各个点(运行设备)行使控制. SCC系统的特点是能保证受控的生产过程始终处于最佳状态情况下运行,因而获得最大效益.直接影响SCC效果优劣的首先是它的数学模型,为此要经常在运行过程中改进数学模型,并相应修改控制算法和应用控制程序. (三) 多级控制系统 在现代生产企业中,不仅需要解决生产过程的在线控制问题,而且还要求解决生产管理问题,每日生产品种、数量的调度以及月季安排,制定长远规划、预报销售前景等, 于是出现了多级控制系统. DDC级主要用于直接控制生产过程,进行PID或前馈控制;SCC级主要用于进行最佳控制或自适应控制或自学习控制计算,并指挥DDC级控制同时向MIS级汇报情况.DDC级通常用微型计算机,SCC级一般用小型计算机或高档微型计算机. 车间管理的MIS主要功能是根据工厂级下达的生产品种、数量命令和搜集上来的生产过程的状态的信息,随时进行合理调度,实现最优控制,指挥SCC级监督控制. 工厂管理级的MIS主要功能是接受公司下达的生产任务和本厂的实际情况,进行最优化计算,制订本厂生产和短期(旬或周或日)安排,

原文链接:网页链接

嵌入式Linux学习路线图

我是1999年上的大学,物理专业。在大一时,我们班里普遍弥漫着对未来的不安,不知道学习了物理后出去能做什么。你当下的经历、当下的学习,在未来的一天肯定会影响到你。毕业后我们也各自找到了自己的职业:出国深造转行做金融、留校任教做科研、设计芯片、写程序、创办公司等等,这一切都离不开在校时学到的基础技能(数学、IT、电子电路)、受过煅炼的自学能力。

所以,各位正在迷茫的在校生,各位正在尝试转行的程序员,未来一定有你的位置,是好是坏取决于你当下的努力与积累。

我不能预言几年后什么行业会热门,也不能保证你照着本文学习可以发财。我只是一个有十几年经验的程序员,给对编程有兴趣的你,提供一些建议。

1.程序员的三大方向

程序员的方向,一般可以分为3类:专业领域、业务领域、操作系统领域。你了解它们后,按兴趣选择吧。

对于专业领域,我提供不了建议。

业务,也就是应用程序,它跟操作系统并不是截然分开的:

①开发实体产品时,应用程序写得好的人,有时候需要操作系统的知识,比如调度优先级的设置、知道某些函数可能会令进程休眠。

②写应用程序的人进阶为系统工程师时,他需要从上到下都了解,这时候就需要有操作系统领域的知识了,否则,你怎么设计整个系统的方案呢?

③做应用程序的人,需要了解行业的需求,理解业务的逻辑。所以,当领导的人,多是做应用的。一旦钻入了某个行业,很难换行业。

④而操作系统领域,做好了这是通杀各行业:他只负责底层系统,在上面开发什么业务跟他没关系。这行很多是技术宅,行业专家。

⑤操作系统和业务之间并没有一个界线。有操作系统经验,再去做应用,你会对系统知根知底,碰到问题时都有解决思路。有了业务经验,你再了解一下操作系统,很快就可以组成一个团队自立门户,至少做个CTO没问题。

1.1 专业领域

它又可以分为下面2类。

1.1.1 学术研究

比如语音、图像处理、人工智能,这类工作需要你有比较强的理论知识,我倾向于认为这类人是“科学家”,他们钻研多年,很多时候是在做学术研究。

在嵌入式领域,需要把他们的成果用某种算法表达出来,针对某种芯片进行优化,这部分工作也许有专人来做。

1.1.2 工程实现

也有这样一类人,他们懂得这些专业领域的概念,但是没有深入钻研。可以使用各类开源资料实现某个目标,做出产品。比如图像处理,他懂得用opencv里几百个复杂函数来实现头像识别。有时候还可以根据具体芯片来优化这些函数。

“专业领域”不是我的菜,如果你要做这一块,我想最好的入门方法是在学校学习研究生、博士课程。

1.2 业务领域

换句话说,就是应用程序,这又可以分为下面2类。

1.2.1 界面显示

做产品当然需要好的界面,但是,不是说它不重要,是没什么发展后劲。

现在的热门词是Android APP和IOS APP开发。你不要被Android、IOS两个词骗了,它们跟以前的VC、VB是同一路货色,只是、仅仅是一套GUI控件的实现。

希望没有冒犯到你,我有理由。

一个程序需要有GUI界面,但是程序的内在逻辑才是核心。Android、IOS的开发工具给我们简化了GUI的开发,并提供了这些控件的交互机制,封装并提供了一些服务(比如网络传输)。但是程序内部的业务逻辑、对图像声音的处理等等,这才是核心。另外别忘了服务器那边的后台程序:怎样更安全地保存数据、保护客户的隐私,怎样处理成千上万上百万的并发访问,等等,这也是核心。

但是,从Android、IOS APP入门入行,这很快!如果你是大四,急于找到一份工作,那么花上1、2个月去学习Android或IOS,应该容易找到工作,毕竟APP的需求永远是最大的,现在这两门技术还算热门。在2011、2012年左右,Android程序员的起薪挺高,然后开始下滑。Android APP的入门基本只要1个月,所以懂的人也越来越多。2013、2014年,IOS开发的工资明显比Android高了,于是各类IOS培训也火曝起来。中华大地向来不缺速成人才,估计再过一阵子IOS工程师也是价了。

会Android、IOS只是基本要求,不信去51job搜搜Android或IOS,职位要求里肯定其他要求。

1.2.2 业务逻辑

举个简单例子,做一个打卡软件,你需要考虑这些东西:

①正常流程是上班下班时都要打卡

②有人忘记了怎么办?作为异常记录在案,推送给管理员

③请时怎么处理?

④加班怎么处理?

对于更复杂的例子,会议系统里,各个模块怎么对接,各类协议怎么兼容,你不深入这个行业,你根本搞不清楚。

应用开发的职位永远是最多的,入门门槛也低。基本上只要你会C语言,面试时表现比较得体,一般公司都会给你机会。因为:

①你进公司后,还需要重新培训你:熟悉它们的业务逻辑。

②你要做的,基本也就是一个个模块,框架都有人给你定好了,你去填代码就可以了。

说点让你高兴的事:软件公司里,做领导的基本都是写应用程序的(当然还有做市场的)。写应用程序的人,对外可以研究市场接待客户,对内可以管理程序员完成开发,不让他做领导让谁做?

如果你的志向是写应用程序,那么我建议你先练好基本功:数据结构、算法是必备,然后凭兴趣选择数据库、网络编程等等进行深入钻研。

最后,选择你看好的、感兴趣的行业深耕个10年吧。做应用开发的人选择了某个行业,后面是很难换行业的,选行很重要!

1.3 操作系统领域

UCOS太简单,VxWorks太贵太专业,Windows不玩嵌入式了,IOS不开源,所以对于操作系统领域我们也只能玩Linux了。

在嵌入式领域Linux一家独大!

Android呢?Android跟QT一样,都是一套GUI系统。只是Google的实力太强了,现在Android无处不在,所以很多时候Linux+Android成了标配。注意,在这里我们关心的是Android的整个系统、里面的机制,而不是学习几个API然后开发界面程序。操作系统领域所包含的内容,简单地说,就是制作出一台装好系统的专用“电脑”,可以分为:

①为产品规划硬件:

按需求、性能、成本选择主芯片,搭配周边外设,交由硬件开发人员设计。

②给单板制作、安装操作系统、编写驱动

③定制维护、升级等系统方案

④还可能要配置、安装Android等GUI系统:

⑤为应用开发人员配置开发环境

⑥从系统角度解决疑难问题

这个领域,通常被称为“底层系统”或是“驱动开发”。

先解决2个常见误区:

①这份工作是写驱动程序吗?

看看上面罗列的6点,应该说,它包含驱动开发,但远远不只有驱动开发。

②我们还需要写驱动吗?不是有原厂吗?或者只需要改改就可以?

经常有人说,芯片原厂都做好驱动了,拿过来改改就可以了。如果,你的硬件跟原厂的公板完全一样,原厂源码毫无BUG,不想优化性能、削减成本,不想做一些有特色的产品,那这话是正确的。

但是在这个不创新就是找死的年代,可能吗?!原因有二:

①即使只是修改代码,能修改的前提是能理解;能理解的最好煅炼方法是从零写出若干驱动程序。

②很多时候,需要你深度定制系统。

以前做联发科手机只需要改改界面就可以出货了,现在山寨厂一批批倒下。大家都使用原厂的方案而不加修改时,最后只能拼成本。

举个例子,深圳有2家做交通摄像头、监控摄像头的厂家,他们曾经找我做过4个项目:

①改进厂家给的SD卡驱动性能,使用DMA。

②换了Flash型号后,系统经常出问题,需要修改驱动BUG。

③触摸屏点击不准,找原因,后来发现是旁路电容导致的。

④裁减成本,把4片DDR换为2片DDR,需要改bootloader对DDR的初始化。

这些项目都很急,搞不定就无法出货,这时候找原厂?除非你是中兴华为等大客户,否则谁理你?

我在中兴公司上班时,写驱动的时间其实是很少的,大部分时间是调试:系统调优,上帮APP工程师、下帮硬件工程师查找问题。我们从厂家、网上得到的源码,很多都是标准的,当然可以直接用。但是在你的产品上也许优化一下更好。比如我们可以把摄像头驱动和DMA驱动揉合起来,让摄像头的数据直接通过DMA发到DSP去。我们可以在软件和硬件之间起桥梁作用,对于实体产品,有可能是软件出问题也可能是硬件出问题,一般是底层系统工程师比较容易找出问题。

当硬件、软件应用出现问题,他们解决不了时,从底层软件角度给他们出主意,给他们提供工具。再比如方案选择:芯片性能能否达标、可用的BSP是否完善等等,这只能由负责整个方案的人来考虑,他必须懂底层。

在操作系统领域,对知识的要求很多:

①懂硬件知识才能看懂电路图

②英文好会看芯片手册

③有编写、移植驱动程序的能力

④对操作系统本身有一定的理解,才能解决各类疑难问题

⑤理解Android内部机制

⑥懂汇编、C语言、C++、JAVA

它绝对是一个大坑,没有兴趣、没有毅力的人慎选。

①这行的入门,绝对需要半年以上,即使全天学习也要半年。

②它的职位,绝对比APP的职位少

③并且你没有1、2年经验,招你到公司后一开始你做的还是APP。

优点就是:

①学好后,行业通杀,想换行就换行;想自己做产品就自己做产品。

②相比做应用程序的人,不会被经常变动的需求搞得天天加班。

③门槛高,当然薪水相对就高。

操作系统领域,我认为适合于这些人:

①硬件工程师想转软件工程师,从底层软件入门会比较好

②单片机工程师,想升级一下。会Linux底层的人肯定会单片机,会单片机的人不一定会Linux。

③时间充足的学生:如果你正读大二大三,那么花上半年学习嵌入式Linux底层多有益处。

④想掌握整个系统的人,比如你正在公司里写APP,但是想升为系统工程师,那么底层不得不学。

⑤想自己创业做实体产品的工程师,你有钱的话什么技术都不用学,但是如果没钱又想做产品,那么Linux底层不得不学。

⑥做Linux APP的人,没错,他们也要学习。

这部分人不需要深入,了解个大概就可以:bootloader是用来启动内核,Linux的文件系统(第1个程序是什么、做什么、各目录干嘛用)、APP跟驱动程序的调用关系、工具链,有这些概念就可以了

本文中,就把操作系统默认为Linux,讲讲怎么学习嵌入式Linux+Android系统。

1.4 嵌入式Linux+Android系统包含哪些内容

嵌入式Linux系统包含哪些东西?不要急,举一个例子你就知道了。

①电脑一开机,那些界面是谁显示的?

是BIOS,它做什么?一些自检,然后从硬盘上读入windows,并启动它。

类似的,这个BIOS对应于嵌入式Linux里的bootloader。这个bootloader要去Flash上读入Linux内核,并启动它。

②启动windows的目的是什么?

当然运行应用程序以便上网、聊天什么的了。

这些上网程序、聊天程序在哪?

在C盘、D盘上。

所以,windows要先识别出C盘、D盘。在Linux下我们称之为根文件系统。

③windows能识别出C盘、D盘,那么肯定有读写硬盘的能力。

这个能力我们称之为驱动程序。当然不仅仅是操作硬盘,还有网卡、USB等等其他硬件。嵌入式Linux能从Flash上读出并执行应用程序,肯定也得有Flash的驱动程序啊,当然也不仅仅是Flash。

简单地说,嵌入式LINUX系统里含有bootloader、内核、驱动程序、根文件系统、应用程序这5大块。而应用程序,我们又可以分为:C/C++、Android。

所以,嵌入式Linux+Android系统包含以下6部分内容:

①bootloader

②Linux内核

③驱动程序

④使用C/C++编写的应用程序

⑤Android系统本身

⑥Android应用程序

Android跟Linux的联系实在太大了,它的应用是如此广泛,学习了Linux之后没有理由停下来不学习Android。在大多数智能设备中,运行的是Linux操作系统;它上面要么安装有Android,要么可以跟Android手机互联。现在,Linux+Android已成标配。

2. 怎么学习嵌入式Linux操作系统

本文设您是零基础,以实用为主,用最快的时间让你入门;后面也会附上想深入学习时可以参考的资料。

在实际工作中,我们从事的是“操作系统”周边的开发,并不会太深入学习、修改操作系统本身。

①操作系统具有进程管理、存储管理、文件管理和设备管理等功能,这些核心功能非常稳定可靠,基本上不需要我们修改代码。我们只需要针对自己的硬件完善驱动程序

②学习驱动时必定会涉及其他知识,比如存储管理、进程调度。当你深入理解了驱动程序后,也会加深对操作系统其他部分的理解

③Linux内核中大部分代码都是设备驱动程序,可以认为Linux内核由各类驱动构成

但是,要成为该领域的高手,一定要深入理解Linux操作系统本身,要去研读它的源代码。

在忙完工作,闲暇之余,可以看看这些书:

①赵炯的《linux内核完全注释》,这本比较薄,推荐这本。他后来又出了《Linux 内核完全剖析》,太厚了,搞不好看了后面就忘记前面了。

②毛德操、胡希明的《LINUX核心源代码情景分析》,此书分上下册,巨厚无比。当作字典看即可:想深入理解某方面的知识,就去看某章节。

③其他好书还有很多,我没怎么看,没有更多建议

基于快速入门,上手工作的目的,您先不用看上面的书,先按本文学习。

2.1 入门路线图

设您是零基础,我们规划了如下入门路线图。前面的知识,是后面知识的基础,建议按顺序学习。每一部分,不一定需要学得很深入透彻,下面分章节描述。

2.2 学习驱动程序之前的基础知识

2.2.1 C语言

只要是理工科专业的,似乎都会教C语言。我见过很多C语言考试90、100分的,一上机就傻了,我怀疑他们都没在电脑上写过程序。

理论再好,没有实践不能干活的话,公司招你去干嘛?

反过来,实践出真知,学习C语言,必须练练练、写写写!

当你掌握基本语法后,就可以在电脑上练习一些C语言习题了;

当你写过几个C程序后,就可以进入下一阶段的裸机开发了。

①不需要太深入

作为快速入门,只要你会编写“Hello, world!”,会写冒泡排序,会一些基础的语法操作,暂时就够了。

指针操作是重点,多练习;

不需要去学习过多的数据结构知识,只需要掌握链表操作,其他不用学习,比如:队列、二叉树等等都不用学;不需要去学习任何的函数使用,比如文件操作、多线程编程、网络编程等等;这些知识,在编写Linux应用程序时会用,但是在操作系统特别是驱动学习时,用不着!

永往直前吧,以后碰到不懂的C语言问题,我们再回过头来学习。

在后续的“裸机开发”中,会让你继续练习C语言,那会更实战化。

C语言是在写代码中精进的。

②可以在Visual Studio下学习,也可以在Linux下学习,后者需要掌握一些编译命令,我们暂时没有提供C语言的教程,找一本C语言书,网上找找免费的C语言(主要看怎么搭建环境),就可以自学了。

2.2.2 PC Linux基本操作:

对于PC Linux,我们推荐使用Ubuntu,在它上面安装软件非常简便。

我们的工作模式通常是这样:在Windows下阅读、编写代码,然后把代码上传到PC Linux去编译。实际上,Ubuntu的桌面系统已经很好用了,我们拿到各种智能机可以很快上手,相信Ubuntu的桌面系统也可以让你很快上手。为了提高工作效率,我们通常使用命令行来操作Ubuntu。

不用担心,你前期只需要掌握这几条命令就可以了,它们是如此简单,我干脆列出它们:

①cd : Change Directory(改变目录)

cd 目录名 ?// 进入某个目录cd .. // cd “两个点”:返回上一级目录cd - // cd “短横”:返回上一次所在目录

②pwd : Print Work Directory(打印当前目录 显示出当前工作目录的绝对路径)

③mkdir : Make Directory(创建目录)

mkdir abc // 创建文件夹abcmkdir -p a/b/c // 创建文件夹a,再a下创建文件夹b,再在b下创建文件夹c

④rm : Remove(删除目录或文件)

rm ?file // 删除名为file的文件rm -rf dir ? // 删除名为dir的目录

⑤ls : List(列出目录内容)

⑥mount : 挂载

mount -t nfs -o nolock,vers=2 192.168.1.123:/work/nfs_root /mntmount -t yaffs /dev/mtdblock3 /mnt

⑦chown : Change owner(改变文件的属主,即拥有者)

chown book:book /work -R ?//对/work目录及其下所有内容,属主改为book用户,组改为book

⑧chmod : Change mode(改变权限),下面的例子很简单粗暴

chmod 777 /work -R ?// 对/work目录及其下所有内容,权限改为可读、可写、可执行

⑨vi : Linux下最常用的编辑命令,使用稍微复杂,请自己搜索用法。

要练习这些命令,你可以进入Ubuntu桌面系统后,打开终端输入那些命令;或是用SecureCRT、putty等工具远程登录Ubuntu后练习。

2.2.3 硬件知识

我们学习硬件知识的目的在于能看懂原理图,看懂通信协议,看懂芯片手册;不求能设计原理图,更不求能设计电路板。

对于正统的方法,你应该这样学习:

①学习《微机原理》,理解一个计算机的组成及各个部件的交互原理。

②学习《数字电路》,理解各种门电路的原理及使用,还可以掌握一些逻辑运算(与、或等)。

③《模拟电路》?好吧,这个不用学,至少我在工作中基本用不到它,现在全忘光了。

就我个人经验来说,这些课程是有用的,但是:

①原理有用,实战性不强。

比如《微机原理》是基于x86系统,跟ARM板子有很大差别,当然原理相通。

我是在接触嵌入式编程后,才理解了这些课程。

②每本书都那么厚,内容都很多,学习时间过长,自学有难度。

针对这些校园教材的不足,并结合实际开发过程中要用到的知识点,我们推出了《学前班_怎么看原理图》的系列:

学前班第1课第1节___怎么看原理图之GPIO和门电路.wmv

学前班第1课第2.1节_怎么看原理图之协议类接口之UART.wmv

学前班第1课第2.2节_怎么看原理图之协议类接口之I2C.wmv

学前班第1课第2.3节_怎么看原理图之协议类接口之SPI.wmv

学前班第1课第2.4节_怎么看原理图之协议类接口之NAND Flash.wmv

学前班第1课第2.5节_怎么看原理图之协议类接口之LCD.wmv

学前班第1课第3节___怎么看原理图之内存类接口.wmv

学前班第1课第4.1节_怎么看原理图之分析S3C2410开发板.wmv

学前班第1课第4.2节_怎么看原理图之分析S3C2440开发板.wmv

学前班第1课第4.3节_怎么看原理图之分析S3C6410开发板.wmv

即使你只具备初中物理课的电路知识,我也希望能通过这些,让你可以看懂原理图,理解一些常见的通信协议;如果你想掌握更多的硬件知识,这些也可以起个索引作用,让你知道缺乏什么知识。

这些所讲到的硬件知识,将在《裸板开发》系列中用到,到时可以相互对照着看,加深理解。

2.2.4 要不要专门学习Windows下的单片机开发

很多学校都开通了单片机的课程,很多人都是从51单片机、AVR单片机,现在比较新的STM32单片机开始接触嵌入式领域,并且使用Windows下的开发软件,比如keil、MDK等。

问题来了,要不要专门学习Windows下的单片机开发?

①如果这是你们专业的必修课,那就学吧

②如果你的专业跟单片机密切相关,比如机械控制等,那就学吧

③如果你只是想从单片机入门,然后学习更广阔的嵌入式Linux,那么放弃在Windows下学习单片机吧!

理由如下:

①Windows下的单片机学习,深度不够

Windows下有很好的图形界面单片机开发软件,比如keil、MDK等。

它们封装了很多技术细节,比如:

你只会从main函数开始编写代码,却不知道上电后第1条代码是怎么执行的;

你可以编写中断处理函数,但是却不知道它是怎么被调用的;

你不知道程序怎么从Flash上被读入内存;

也不知道内存是怎么划分使用的,不知道栈在哪、堆在哪;

当你想裁剪程序降低对Flash、内存的使用时,你无从下手;

当你新建一个文件时,它被自动加入到工程里,但是其中的机理你完全不懂;

等等等。

②基于ARM+Linux裸机学习,可以学得更深,并且更贴合后续的Linux学习。实际上它就是Linux下的单片机学习,只是一切更加原始:所有的代码需要你自己来编写;哪些文件加入工程,需要你自己来管理。

在工作中,我们当然倾向于使用Windows下更便利的工具,但是在学习阶段,我们更想学习到程序的本质。

一切从零编写代码、管理代码,可以让我们学习到更多知识:

你需要了解芯片的上电启动过程,知道第1条代码如何运行;

你需要掌握怎么把程序从Flash上读入内存;

需要理解内存怎么规划使用,比如栈在哪,堆在哪;

需要理解代码重定位;

需要知道中断发生后,软硬件怎么保护现场、跳到中断入口、调用中断程序、恢复现场;

你会知道,main函数不是我们编写的第1个函数;

你会知道,芯片从上电开始,程序是怎么被搬运执行的;

你会知道,函数调用过程中,参数是如何传递的;

你会知道,中断发生时,每一个寄存器的值都要小心对待;

等等等。

你掌握了ARM+Linux的裸机开发,再回去看Windows下的单片机开发,会惊呼:怎么那么简单!并且你会完全明白这些工具没有向你展示的技术细节。

驱动程序=Linux驱动程序软件框架+ARM开发板硬件操作,我们可以从简单的裸机开发入手,先掌握硬件操作,并且还可以:

①掌握如何在PC Linux下编译程序、把程序烧录到板子上并运行它

②为学习bootloader打基础:掌握了各种硬件操作后,后面一组合就是一个bootloader

2.2.5 为什么选择ARM9 S3C2440开发板,而不是其他性能更好的?

有一个错误的概念:S3C2440过时了、ARM9过时了。

这是不对的,如果你是软件工程师,无论是ARM9、ARM11、A8还是A9,对我们来说是没有差别的。

一款芯片,上面有CPU,还有众多的片上设备(比如UART、USB、LCD控制器)。我们写程序时,并不涉及CPU,只是去操作那些片上设备。

所以:差别在于片上设备,不在于CPU核;差别在于寄存器操作不一样。

因为我们写驱动并不涉及CPU的核心,只是操作CPU之外的设备,只是读写这些设备的寄存器。

之所以推荐S3C2440,是因为它的Linux学习资料最丰富,并有配套的第1、2期。

2.2.6 怎么学习ARM+Linux的裸机开发

学习裸机开发的目的有两个:

①掌握裸机程序的结构,为后续的u-boot作准备

②练习硬件知识,即:怎么看原理图、芯片手册,怎么写代码来操作硬件

后面的u-boot可以认为是裸机程序的集合,我们在裸机开发中逐个掌握各个部件,再集合起来就可以得到一个u-boot了。

后续的驱动开发,也涉及硬件操作,你可以在裸机开发中学习硬件知识。

注意:如果你并不关心裸机的程序结构,不关心bootloader的实现,这部分是可以先略过的。在后面的驱动中,我们也会重新讲解所涉及的硬件知识。

推荐两本书:杜春蕾的《ARM体系结构与编程》,韦东山的《嵌入式Linux应用开发完全手册》。后者也许是国内第1本涉及在PC Linux环境下开发的ARM裸机程序的书,如果我说错了,请原谅我书读得少。

对于裸机开发,我们提供有2部分:

①环境搭建

第0课第1节_刚接触开发板之接口接线.wmv

第0课第2节_刚接触开发板之烧写裸板程序.wmv

第0课第3节_刚接触开发板之重烧整个系统.wmv

第0课第4节_刚接触开发板之使用vmwae和预先做好的ubuntu.wmv

第0课第5节_刚接触开发板之u-boot打补丁编译使用及建sourceinsight工程.wmv

第0课第6节_刚接触开发板之内核u-boot打补丁编译使用及建sourceinsight工程.wmv

第0课第7节_刚接触开发板之制作根文件系统及初试驱动.wmv

第0课第8节_在TQ2440,MINI2440上搭建所用系统.wmv

第0课第9节_win7下不能使用dnw烧写的替代方法.wmv

.................

原文链接:网页链接