程序员如何休眠电脑系统-程序员如何休眠电脑系统
1.win7系统和所有其他软件如何安装磁盘分区使电脑最佳运行 那些软件必须装在C盘里才好运行
2.pch aspm开还是关
3.我用的是XP系统的,怎么才能是XP运行程序速度加快啊?
4.VC中如何获取当前时间(精度达到毫秒级)
5.自学嵌入式的流程是什么?
6.显著提升程序员身心健康和工作效率的装备有哪些?
win7系统和所有其他软件如何安装磁盘分区使电脑最佳运行 那些软件必须装在C盘里才好运行
你好,软件装在C盘和其他盘符的区别是这样的,首先系统是装在C盘的,所以win7运行的时候硬盘要不停的在C盘读写,如果软件也安装在C盘那软件运行的时候读写的数据也在C盘,硬盘工作的时候就不用跳到其他盘符寻找数据,这也就是说软件安装在系统盘(C盘)运行的效率最高,所以一些常用的软件安装在C盘运行效率会很高,但是也不能所有软件都安装在系统盘,就像你的衣柜或抽屉一样,放置的东西多了,寻找起来就麻烦了。还有就是像PPS(网络电视)、酷狗等这样需要缓存或下载文件的软件就不要装在系统盘了,否则时间长了系统盘东西越来越多,硬盘的工作效率肯定下降了,系统运行就慢了,毕竟现在硬盘的速度是电脑运行速度的关键。而且win7在开机的时候会检查C盘所有文件,你的开机速度会很慢。
至于你问哪些是必须装C盘的,这个就很难回答了,不知道你平时用电脑干什么,如果只是的话就没有必须安装在C盘的软件,如果你是程序员的话是有些软件要安装在C盘才能编译的。我想你要是程序员的话就不会提这个问题了。
另外,如果你觉得电脑开机速度慢的话我告诉你个技巧,那就是不关机,既然不关机那就不存在开机快慢的问题了,哈哈,我不是开玩笑,不关机不是说电脑一直开着,而是利用休眠功能。休眠!既不是睡眠也不是关机,而是休眠。休眠的时候会把当前计算机的工作状态存储到硬盘上,在1分钟内就能完成,然后就断电了,和关机效果一样。而当你按下开机时又会从硬盘上读回之前的工作状态,比如之前的**会继续播放,歌曲会继续播放,游戏会继续,QQ、MSN等直接是登陆状态,灰常方便。设置休眠很简单,在电源管理里面‘按电源按钮时’后面的选项由关机改为休眠。
我想到的就这些了,当然这些也同时适用于XP等系统,毕竟硬盘的工作模式是一样的。
希望能帮到你,另外不要听别人说win7不好,好不好只有咱用了才知道,win98还好呢,现在很少有人用吧,要赶在别人前面,比如win7的语音识别我现在一直在用,很方便啊,还有其他功能是XP比不了的。至于兼容性相信会慢慢提高的,如果你不是专业需要,一定要hold住哦!~~
如果还有不懂的追问吧。
pch aspm开还是关
在系统中按下Win+S,输入powershell,右键点击查找到的Powershell应用,选择“以管理员方式运行”,输入“powercfg -attributes
0012ee47-9041-4b5d-9b77-535fba8b1442 0b2d69d7-a2a1-449c-9680-f91c70521c60 -ATTRIB_HIDE”(不包括引号),回车。
SSD速度上不去?小心系统设置扯后腿
进入“电源选项-更改任务-更改高级电源设置”,在“硬盘”项目中就会看到新出现的SATA LPM节能模式选择。其中HIPM为主机控制、DIPM为设备控制,设置为Lowest是最低功耗模式,SSD在有机会的时候会进入最低功耗模式,明显降低功耗与发热量,但相应的唤醒时间也较长,性能会略有降低;而设置为Active完全关闭节能模式,让SSD获得最好的性能。
上面的命令非常复杂,所以小狮子建议直接推送文章到PC端,然后网页下复制了粘贴操作,确保不会输入错误。
SSD速度上不去?小心系统设置扯后腿
还可以使用命令“powercfg -attributes
0012ee47-9041-4b5d-9b77-535fba8b1442 dab60367-53fe-4fbc-825e-521d069d2456 -ATTRIB_HIDE”。
它在“硬盘”项目里增加了低功耗模式自适应选项,可以设置SSD空闲后进入休眠状态的时间,设置的短一些可以让硬盘有更多机会休眠,降低功耗和发热量,设置的长一些则可以让硬件减少休眠,让硬盘更多地处于工作状态,节省唤醒时间,可以提升一定的性能。
对于NVMe固态硬盘用户,同样用管理员权限打开Powershell界面,输入“powercfg -attributes
0012ee47-9041-4b5d-9b77-535fba8b1442 d639518a-e56d-4345-8af2-b9f32fb26109 -ATTRIB_HIDE”
SSD速度上不去?小心系统设置扯后腿
这个命令会在高级电源设置的“硬盘”选项中添加Primary NVMe Idle Timeout项目,是设置NVMe固态硬盘空闲超过这个某个时长后,进入节能模式。与SATA硬盘的第二个隐藏电源选项类似,如果要适当节能降温就设置得小一些,让硬盘,需要更高性能就将这个值设置得大一些。
SSD速度上不去?小心系统设置扯后腿
对基于PCI-E总线的NVMe规范SSD,还可以通过调整PCI-E设备功耗的方式来给它“减负”,在“电源选项-更改任务-更改高级电源设置”中,选择“PCI Express链接状态电源管理”,将其设置为“最大电源节省量”,也可以让NVMe SSD的功耗和温度降低,不过这一设置还会影响其他PCI-E设备,如PCI-E显卡、USB 3.1接口等,虽然可以比较明显地降低电脑的总功耗和发热量,但不想牺牲太多性能的话,还是要慎用。
我用的是XP系统的,怎么才能是XP运行程序速度加快啊?
Windows XP已经成为目前的主流操作系统,但它对硬件的要求比较高,即使是硬件配置较高的用户也经常会被系统不足所困扰,因此,对系统进行优化是所有Windows XP用户必须掌握的技巧。
一、为Windows XP提速
提高Windows XP的速度可以从三个方面着手:减少启动时间、提高系统运行速度、加快关机速度。
1.加快系统启动速度
Windows XP的启动速度比Windows 2000要0%左右,但相对于Windows 98仍然要慢了不少,不过,我们可以通过优化设置,来大大提高Windows XP的启动速度。加快系统启动速度主要有以下方法:尽量减少系统在启动时加载的程序与服务;对磁盘及CPU等硬件进行优化设置;修改默认设置,减少启动等待时间等。这些方法大部分既可减少系统启动的时间,又可以节省系统,加快电脑运行速度。
(1)Msconfig
Windows XP的启动速度在系统安装初期还比较快,但随着安装的软件不断增多,系统的启动速度会越来越慢,这是由于许多软件把自己加在了启动程序中,这样开机即需运行,大大降低了启动速度,而且也占用了大量的系统。对于这样一些程序,我们可以通过系统配置实用程序Msconfig将它们从启动组中排除出去。
选择“开始”菜单中的“运行”命令,在“运行”对话框中键入“Msconfig”,回车后会弹出“系统配置实用程序”对话框,选择其中的“启动”选项卡(如图1),该选项卡中列出了系统启动时加载的项目及来源,仔细查看每个项目是否需要自动加载,否则清除项目前的复选框,加载的项目越少,启动的速度就越快。设置完成后需要重新启动方能生效。
(2)Bootvis
Bootvis是微软提供的一个启动优化工具,可提高Windows XP的启动速度。
用BootVis提升Windows XP的启动速度必须按照正确的顺序进行操作,否则将不会起到提速的效果。其正确的操作方法如下:
启动Bootvis,从其主窗口(如图2)中选择“工具”菜单下的“选项”命令,在“符号路径”处键入Bootvis的安装路径,如“C:\Program Files\Bootvis”,单击“保存”退出。
从“跟踪”菜单中选择“下次引导”命令,会弹出“重复跟踪”对话框,单击“确定”按钮,BootVis将引导Windows XP重新启动,默认的重新启动时间是10秒。
系统重新启动后,BootVis自动开始运行并记录启动进程,生成启动进程的相关BIN文件,并把这个记录文件自动命名为TRACE_BOOT_1_1。程序记录完启动进程文件后,会重新启动BootVis主界面,在“文件”菜单中选择刚刚生成的启动进程文件“TRACE_BOOT_1_1”。窗口中即会出现“CPU使用”、“磁盘I/O”、“磁盘使用”、“驱动程序延迟”等几项具体图例供我们分析,不过最好还是让BootVis程序来自动进行分析:从“跟踪”菜单中选择“系统优化”命令,程序会再次重新启动计算机,并分析启动进程文件,从而使计算机启动得更快。
(3)禁用多余的服务
Windows XP在启动时会有众多程序或服务被调入到系统的内存中,它们往往用来控制Windows系统的硬件设备、内存、文件管理或者其他重要的系统功能。但这些服务有很多对我们用途不大甚至根本没有用,它们的存在会占用内存和系统,所以应该将它们禁用,这样最多可以节省70MB的内存空间,系统速度自然也会有很大的提高。
选择“开始”菜单中的“运行”命令,在“运行”对话框键入“services.msc”后回车,即可打开“服务”窗口。窗口的服务列表中列出了系统提供的所有服务的名称、状态及启动类型。要修改某个服务,可从列表双击它,会弹出它的属性对话框(如图3),你可从“常规”选项卡对服务进行修改,通过单击“启动”、“停止”、“暂停”、“恢复”四个按钮来修改服务的状态,并可从“启动类型”下拉列表中修改启动类型,启动类型有“自动”、“手动”、“已禁用”三种。如果要禁止某个服务在启动自动加载,可将其启动类型改为“已禁用”。
Windows XP提供的所有服务有36个默认是自动启动的,实际上,其中只有8个是必须保留的(见下表),其他的则可根据自己的需要进行设置,每种服务的作用在软件中有提示。
服 务 作 用 启动类型
Application Management 提供软件安装服务,诸如分派,发行以及删除 手动
Event Log 启用在查看器查看基于 Windows 的程序和组件颁发的日志消息。无法终止此服务 自动
Plug and Play 自动检测新硬件,实现即插即用功能的关键 自动
Remote Procedure Call (RPC) 提供终结点映射程序 (endpoint mer) 以及其他 RPC 服务,属-系统核心服务 自动
Windows Audio 管理基于 Windows程序的音频设备。如果此服务被终止,音频设备及其音效将不能正常工作。如果此服务被禁用,任何依赖它的服务将无法启动 自动
Windows Management Instrumentation 提供共同的界面和对象模式以便访问有关操作系统、设备、应用程序和服务的管理信息。如果此服务被终止,多数基于Windows的软件将无法正常运行。如果此服务被禁用,任何依赖它的服务将无法启动 自动
Workstation 创建和维护到远程服务的客户端网络连接。如果服务停止,这些连接将不可用。如果服务被禁用,任何直接依赖于此服务的服务将无法启动 自动
Windows Installer 根据包含在 .MSI 文件中的指示来安装、修复或删除软件 手动
(4)修改注册表来减少预读取,减少进度条等待时间
Windows XP在启动过程中会出现一个进度条,我们可以通过修改注册表,让进度条只跑一圈就进入登录画面。
选择“开始”菜单中的“运行”命令,在“运行”对话框键入“regedit”命令后回车,即可启动注册表编辑器,在注册表中找HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters,选择其下的EnablePrefetcher键,把它的键值改为“1”即可。
(5)减少开机磁盘扫描等待时间
当Windows日志中记录有非正常关机、死机引起的重新启动,系统就会自动在启动的时候运行磁盘扫描程序。在默认情况下,扫描每个分区前会等待10秒钟,如果每个分区都要等上10秒才能开始进行扫描,再加上扫描本身需要的时间,会耗费相当长的时间才能完成启动过程。对于这种情况我们可以设置取消磁盘扫描的等待时间,甚至禁止对某个磁盘分区进行扫描。
选择“开始→运行”,在运行对话框中键入“chkntfs /t:0”,即可将磁盘扫描等待时间设置为0;如果要在计算机启动时忽略扫描某个分区,比如C盘,可以输入“chkntfs /x c:”命令;如果要恢复对C盘的扫描,可使用“chkntfs /d c:”命令,即可还原所有chkntfs默认设置,除了自动文件检查的倒计时之外。
2.提高系统运行速度
提升系统运行速度的思路与加快启动的速度类似:尽量优化软硬件设置,减轻系统负担。以下是一些常用的优化手段。
(1)设置处理器二级缓存容量
Windows XP无法自动检测处理器的二级缓存容量,需要我们自己在注册表中手动设置,首先打开注册表,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\”,选择其下的“SecondLevelDataCache”,根据自己所用的处理器设置即可,例如PIII Coppermine/P4 Willamette是“256”,Athlon XP是“384”,P4 Northwood是“512”。
(2)提升系统缓存
同样也是在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\”位置,把其下的“LargeSystemCache”键值从0改为1,Windows XP就会把除了4M之外的系统内存全部分配到文件系统缓存中,这样XP的内核能够在内存中运行,大大提高系统速度。
通常来说,该优化会使系统性能得到相当的提升,但也有可能会使某些应用程序性能降低。需要注意的是必须有256M以上的内存,激活LargeSystemCache才可起到正面的作用,否则不要轻易改动它。
(3)改进输入/输出性能
这个优化能够提升系统进行大容量文件传输时的性能,不过这只对服务器用户才有实在意义。我们可在中新建一个DWORD(双字节值)键值,命名为IOPageLockLimit。一般情况下把数据设置8~16MB之间性能最好,要记住这个值是用字节来计算的,例如你要分配10MB的话,就是10×?×,也就是10485760。这里的优化也需要你的机器拥有大于256M的内存。
(4)禁用内存页面调度
在正常情况下,XP会把内存中的片断写入硬盘,我们可以阻止它这样做,让数据保留在内存中,从而提升系统性能。在注册表中找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\”下的“DisablePagingExecutive”键,把它的值从0改为1即可禁止内存页面调度了。
(5)关闭自动重新启动功能
当Windows XP遇到严重问题时便会突然重新开机,可从注册表将此功能取消。打开注册表编辑器,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\”将AutoReboot键的Dword值更改为0,重新启动后设置即可生效。
(6)改变视觉效果
Windows XP在默认情况下启用了几乎所有的视觉效果,如淡入淡出、在菜单下显示阴影。这些视觉效果虽然漂亮,但对系统性能会有一定的影响,有时甚至造成应用软件在运行时出现停顿。一般情况下建议少用或者取消这些视觉效果。
选择桌面上“我的电脑”图标,单击鼠标右键,在弹出的快捷菜单中选择“属性”命令,打开“系统属性”对话框。选择“高级”选项卡,在其中的“性能”栏中单击“设置”按钮,会弹出 “性能选项”对话框(如图4),可选择“调整为最佳性能”单选框来关闭所有的视觉效果,也可选择“自定义”然后选择自己需要的视觉效果。
(7)合理设置页面虚拟内存
同样也是在“性能选项”对话框中,选择“高级”选项卡,在其中的“虚拟内存”栏中单击“更改”按钮,接下来选择虚拟内存为“自定义大小”,然后设置其数值。一般情况下,把虚拟设为不小于256M,不大于382M比较合适,而且最大值和最小值最好一样。
(8)修改外观方案
Windows XP默认的外观方案虽然漂亮,但对系统的占用也多,可将其改为经典外观以获得更好的性能。
在桌面空白位置单击鼠标右键,从弹出的快捷菜单中选择“属性”命令,会打开“显示属性”对话框,在“主题”选项卡选择主题为“Windows经典”,即可将外观修改为更为经济的Windows经典外观。
(9)取消XP对ZIP支持
Windows XP在默认情况下打开了对zip文件支持,这要占用一定的系统,可选择“开始→运行”,在“运行”对话框中键入“regsvr32 /u zipfldr.dll”,回车确认即可取消XP对ZIP解压缩的支持,从而节省系统。
(10)关闭Dr.Watson
Dr.Watson是Windows XP的一个崩溃分析工具,它会在应用程序崩溃的时候自动弹出,并且在默认情况下,它会将与出错有关的内存保存为DUMP文件以供程序员分析。不过,记录DUMP文件对普通用户则毫无帮助,反而会带来很大的不便:由于Dr.Watson在应用程序崩溃时会对内存进行DUMP记录,将出现长时间硬盘读写操作,要很长一断时间程序才能关闭,并且DUMP文件还会占用大量磁盘空间。
要关闭Dr.Watson可打开注册表编辑器,找到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug”分支,双击其下的Auto键值名称,将其“数值数据”改为0,最后按F5刷新使设置生效,这样就取消它的运行了。同样,我们可以把所有具备调试功能的选项取消,比如蓝屏时出现的memory.dmp,可在“系统属性”对话框中选择“高级”选项卡,单击“启动和故障恢复”栏中的“设置”按钮,并在弹出的“启动和故障恢复”对话框中选择“写入调试信息”为“无”(如图5)。
(11)启动硬盘/光驱DMA模式
打开“系统属性”对话框,选择“硬件”选择卡中的“设备管理器”按钮,打开“设备管理器”窗口,在设备列表中选择“IDE ATA/ATAPI 控制器”,双击“主要 IDE 通道”或“次要 IDE 通过”,在其属性对话框的“高级设置”选项卡中检查DMA模式是否已启动,一般来说如果设备支持,系统就会自动打开DMA功能,如果没有打开可将“传输模式”设为“DMA(若可用)”。
(12)关掉不用的设备
Windows XP总是尽可能为电脑的所有设备安装驱动程序并进行管理,这不仅会减慢系统启动的速度,同时也造成了系统的大量占用。针对这一情况,你可在设备管理器中,将PCMCIA卡、调制解调器、红外线设备、打印机端口(LPT1)或者串口(COM1)等不常用的设备停用,方法是双击要停用的设备,在其属性对话框中的“常规”选项卡中选择“不要使用这个设备(停用)”。在重新启动设置即可生效,当需要使用这些设备时再从设备管理器中启用它们。
(13)关闭错误报告
当应用程序出错时,会弹出发送错误报告的窗口,其实这样的错误报告对普通用户而言几乎没有任何意义,关闭它是明智的选择。
在“系统属性”对话框中选择“高级”选项卡,单击“错误报告”按钮,在弹出的“错误汇报”对话框中,选择“禁用错误汇报”单选项,最后单击“确定”即可。
另外我们也可以从组策略中关闭错误报告:从“运行”中键入“gpedit.msc”,运行“组策略编辑器”,展开“计算机配置→管理模板→系统→错误报告功能”,双击右边设置栏中的“报告错误”,在弹出的“属性”对话框中选择“已禁用”单选框即可将“报告错误”禁用。
(14)关闭自动更新
“自动更新”功能对许多Windows XP用户而言并不是必需的,可将其关闭以节省系统。
在“我的电脑”上单击鼠标右键,从快捷菜单中选择“属性”命令,选择“系统属性”对话框中的“自动更新”选项卡,勾选“关闭自动更新,我将手动更新计算机”单选框,单击“确定”按钮即可关闭自动更新功能。如果在“服务”已经将“Automatic Updates”服务关闭,“系统属性”对话框中的“自动更新”选项卡就不能进行任何设置了。
(15)去掉菜单延迟
去掉菜单弹出时的延迟,可以在一定程度上加快XP。要修改的键值位置在“HKEY_CURRENT_USER\Control Panel\Desktop”。修改其下的“MenuShowDelay”键,把默认的400修改为0,按F5刷新注册表即可生效。
(16)清除预读文件
Windows XP的预读设置虽然可以提高系统速度,但是使用一段时间后,预读文件夹里的文件数量会变得相当庞大,导致系统搜索花费的时间变长。而且有些应用程序会产生死链接文件,更加重了系统搜索的负担。所以,应该定期删除这些预读文件。预计文件存放在Windows XP系统文件夹的Prefetc件夹中,该文件夹下的所有文件均可删除。
(17)关闭自动播放功能
在Windows XP中,当往光驱中放入光盘或将USB硬盘接上电脑时,系统都会自动将光驱或USB硬盘扫描一遍,同时提示你是否播放里面的、、音乐等文件,如果是拥有多个分区的大容量的USB硬盘,扫描会耗费很长的时间,而且你得多次手动关闭提示窗口,非常麻烦。这种情况下我们可以将Windows XP的自动播放功能关闭。
运行“组策略”程序。在组策略窗口左边栏中,打开“计算机配置”,选择“管理模板”下的“系统”,然后在右边的配置栏中找到“关闭自动播放”并双击它,会弹出“关闭自动播放属性”对话框。在其中“设置”选项卡中选择“已启用”,“关闭自动播放”下拉列表中选择“所有驱动器”(如图6)。这样以后就不用担心Windows XP的“自动播放”功能带来的麻烦了。
如果你只是想禁止系统扫描某个驱动器(如USB硬盘)上的文件,可用下面的方法。
先连上你的USB硬盘,让系统将它识别出来。然后打开“我的电脑”,选择USB硬盘上的某个分区,按鼠标右键,会弹出磁盘属性窗口,选取“自动播放”选项卡,将所有内容的类型都选择为不执行操作。如果USB硬盘有多个分区,对所有分区都进行同样的操作,这样当你将USB驱动器拔掉再重新接上时,系统会将USB硬盘识别出来,而不会反复问你是否播放USB硬盘中的文件了。
3.加快关机速度
Windows XP的关机速度要慢于启动速度,特别有些任务还需要手工结束,更加延缓了关机速度。因此,要加快关机速度,首先要开启Windows XP的自动结束任务功能。具体步骤是:从注册表中找到“HKEY_CURRENT_USER\Control Panel\Desktop”,把“AutoEndTasks”的键值设置为1即可。
然后再修改“HungAppTimeout”为“4000(或更小)”(预设为5000),该键值同样也在“HKEY_CURRENT_USER\Control Panel\Desktop”下;最后一步再找到“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\”,同样把WaitToKillServiceTimeout设置为“4000”;通过这样设置后的关机速度明显要加快了。
二、为Windows XP减肥
Windows XP安装好后约有1.5GB,其中有一部分文件用途不大,可以将其删除。另外,系统在使用一段时间后也会产生大量的无用文件,这些无用文件既占用的磁盘空间,也影响磁盘读取的速度,应该将它们及时清除。
1.删除系统中不必要文件
(1)删除系统文件备份
在系统文件中的“system32\dllcache”目录里,有将近250MB的文件,它们是Windows?XP系统文件的备份。当Windows XP的系统文件被替换、删除或修改时,Windows XP可以自动从中提取出相应的系统文件还原,从而保证系统的稳定性。该文件夹不能直接删除,而要在命令提示符下输入Sfc.exe /purgecache命令清除。
(2)删除驱动备份
删除Windows XP系统目录中“driver cache\i386”目录下的Driver.cab文件,该文件保存着硬件驱动程序的备份,一般情况下无需使用。即使需要安装新硬件,可将Windows XP的安装光盘插入光驱即可。
(3)删除无用的输入法
在“Windows\ime\”文件夹保存有输入法相关的文件,其中的繁体中文、日文、韩文输入法对我们大部分人都没有用,我们可将“chtime”、“imjp8_1”、“imkr6_1”三个目录删除,它们分别是繁体中文、日文、韩文输入法,这样我们就可以节约80MB硬盘空间了。
(4)删除帮助文件
在使用的Windows XP的初期系统的帮助是非常有用的,但随着对系统越来越熟悉,帮助文件也就越来越多余,此时可以考虑将其删除。XP的帮助文件均储存在系统安装目录下的Help文件夹下,可将其下的文件及目录全部删掉。
2.减少系统占用的硬盘空间
(1)关闭系统还原
系统还原可以将计算机返回到一个较早的时间(称还原点)而不会丢失我们最近的工作,但使用的时间一长,它会占用大量的硬盘空间。因此有必要对其进行手工设置,以减少硬盘占用量。
打开“系统属性”对话框,选择对话框中的“系统还原”选项卡,选择“在所有驱动器上关闭系统还原”复选框以关闭系统还原。如果不关闭系统还原功能,可仅为系统所在的磁盘或分区设置还原。先选择系统所在的分区,单击“配置”按钮,在弹出的对话框中取消“关闭这个驱动器的系统还原”选项,并可设置用于系统还原的磁盘空间大小。
(2)关闭休眠支持
休眠功能会占用不少的硬盘空间,如果使用得少不妨将共关闭,关闭的方法是的:打开“控制面板”,双击“电源选项”,在弹出的“电源选项属性”对话框中选择“休眠”选项卡,取消“启用休眠”复选框。
(3)减小或禁止虚拟内存
在系统的物理内存比较大时,可以考虑减少虚拟内存的数值甚至取消虚拟内存,在拥有512MB物理内存时可将虚拟内存设为物理内存的一半,即256MB,如果拥有1GB物理内存则可以取消虚拟内存。
设置虚拟内存的方法见前面的“合理设置页面虚拟内存”。
3.清除临时文件
(1)清除系统临时文件
系统的临时文件一般存放在两个位置中:一个Windows安装目录下的Temp文件夹;另一个是X:\Documents and Settings\“用户名”\Local Settings\Temp文件夹(X:是系统所在的分区)。这两个位置的文件均可以直接删除。
(2)清除Internet临时文件
上网的时间一长会产生大量的Internet临时文件,定期删除将节省大量的硬盘空间。
打开IE浏览器,从“工具”菜单中选择“Internet选项”,在弹出的对话框中选择“常规”选项卡,在“Internet临时文件”栏中单击“删除文件”按钮,并在弹出“删除文件”对话框,选中“删除所有脱机内容”复选框,单击“确定”按钮。
你也可以将Internet临时文件占用的磁盘设置在一个可以接受的范围,在“Internet临时文件”栏中单击“设置”按钮,然后在“设置”对话框(如图7)中设置临时文件所占用的磁盘空间,也可将Internet临时文件的文件夹移至另一个分区,以减少对系统分区磁盘的占用量。
4.NTFS分区中的文件压缩
Windows XP对NTFS分区的文件提供了文件压缩属性,可有效的节省磁盘空间。
在NTFS分区中,选择要压缩的文件或文件夹,单击鼠标右键,在快捷菜单中选择“属性”命令,然后在“属性”对话框的“常规”选项卡中单击“高级”按钮,在新对话框中的“压缩或加密属性”栏里勾选“压缩内容以便节省磁盘空间”复选框,在“确定”后你会发现文件所占用的磁盘空间大大减少了。
5.清除 Windows XP 共享文件夹
“共享文件夹”,这个文件夹在我们使用工作组的时候有用,可不用进行任何设置,直接把要共享的文件放到这个共享文件夹里就行了,但是实际应用中,很多人并不需要这个功能。我们可通过修改注册表来禁止这个功能,以节省磁盘空间。
打开注册表编辑器,找到:“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion \Explorer\My Computer\NameSpace\DelegateFolders下的子键{59031a47-3f72-44a7-89c5-5595fe6b30ee}”,将这个键值删除即可。删除前最好先进行备份,或者记下这个值,以便需要时可以即时恢复。
三、优化Windows XP网络设置
1.释放QoS Packet所占用的20%网络带宽
Windows XP内建的QoS Packet需要占用20%的网络带宽,不过我们可以将这一部分带宽释放。打开“组策略”窗口,在左边栏中展开“计算机配置→管理模板→网络→QoS数据包调度程序”,然后在右边窗口双击“限制可保留带宽”,在其属性对话框中的“设置”选项卡中将“限制可保留带宽”设置为“已启用”,然后在下方“带宽限制”栏将“带宽限制”设置为0就行了。
2.快速浏览局域网络的共享
通常情况下,Windows XP在连接其他计算机时,会全面检查对方机子上所有预定的任务,这个检查会让你等上30秒钟或更多时间。去掉的方法从注册表中找到“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current Version\Explorer\RemoteComputer\NameSpace”。在此键值下,会有个{D6277990-4C6A-11CF-8D87-00AA0060F5BF}键,把它删掉后,重新启动计算机,Windows XP就不再检查预定任务了,速度将明显提高。
3.提高10/100M网卡传输速率
选择“开始→连接到→显示所有连接”,双击网卡所用的连接,单击“属性”按钮,打开“属性”对话框,选择“高级”选项卡。在“属性”栏中选择“Link Speed/Duplex Mode”,紧接着在“设置值”栏中将“Auto Mode”更改为“10 Half Mode”。这样,手工将10/100M自适应网卡的属性强制为10M半双工模式,使网卡之间不进行自动协商,让网卡之间在传输数据时始终以10Mbps的速度进行,大大提高了网络之间的传输效率。此设置只对部分网卡有效。
四、使用第三方软件优化
对系统进行手工优化比较繁琐,现在有许多专用的系统优化软件,如果能将它们和手工优化结合起来使用可取得比较好的效果。这样的软件常用的有Windows优化大师、超级魔法兔子设置、Advanced Uninstaller PRO,前两个侧重通过优化注册表来优化系统,后者则侧重于通过清除系统垃圾来优化系统。
(一)Windows优化大师
Windows优化大师提供的优化包括系统性能优化和系统清理维护两部分。
1.自动优化
Windows优化大师的自动优化的功能提供了一种简单的优化方式,这种优化针对的是大多数用户最常用的项目进行优化,而且完全不用人的干预。
启动Windows优化大师(如图8),单击右上角的“自动优化”按钮,会弹出自动优化向导,单击“下一步”,在接下来的向导对话框中选择因特网接入方式和用户类型,相信大家对自己属哪一号人和自己的上网方式是哪种应该很清楚了吧。选择好了再一路单击“下一步”即可完成优化。
另外你还可以使用优化方案来进行优化,注册用户可通过网络申请适合自己的优化方案。
2.系统性能优化
单击左下角的“系统性能优化”按钮,你可看到这部分的优化包括磁盘缓存、桌面菜单、文件系统、网络系统、开机速度、系统安全、后台服务七部分内容,下面就讲讲常用的磁盘缓存、开机速度、后台服务这三个,它们对机器的速度影响较大。
(1)磁盘缓存优化
单击“磁盘缓存优化”按钮,首先设置输入/输出缓存的大小,拖动滑块可调整其大小,软件会根据不同的内存大小提供了一个推荐使用值,如256MB推荐使用32MB。
其次还要选定“计算机设置为较多的CPU时间来运行”复选框,并在其后的下拉列表中选择“应用程序”,如果选择“后台服务”除非你准备把电脑作为网络服务器来用。其他的设置就看具体情况和你自己的喜好了,设置好之后单击“优化”按钮,重新启动机器后就可以体验到优化效果。
另外在这里还可设置“虚拟内存”和进行“内存整理”,前者根据软件推荐的值设置就行了,后者也是一个非常有用的功能,可以整理内存的碎片,以释放更多的物理内存给应用程序,运行了一些大型软件后用用它
VC中如何获取当前时间(精度达到毫秒级)
对关注性能的程序开发人员而言,一个好的计时部件既是益友,也是良师。计时器既可以作为程序组件帮助程序员精确的控制程序进程,又是一件有力的调试武器,在有经验的程序员手里可以尽快的确定程序的性能瓶颈,或者对不同的算法作出有说服力的性能比较。
在Windows平台下,常用的计时器有两种,一种是timeGetTime多媒体计时器,它可以提供毫秒级的计时。但这个精度对很多应用场合而言还是太粗糙了。另一种是QueryPerformanceCount计数器,随系统的不同可以提供微秒级的计数。对于实时图形处理、多媒体数据流处理、或者实时系统构造的程序员,善用QueryPerformanceCount/QueryPerformanceFrequency是一项基本功。
本文要介绍的,是另一种直接利用Pentium CPU内部时间戳进行计时的高精度计时手段。以下讨论主要得益于《Windows图形编程》一书,第 15页-17页,有兴趣的读者可以直接参考该书。关于RDTSC指令的详细讨论,可以参考Intel产品手册。本文仅仅作抛砖之用。
在 Intel Pentium以上级别的CPU中,有一个称为“时间戳(Time Stamp)”的部件,它以64位无符号整型数的格式,记录了自CPU上电以来所经过的时钟周期数。由于目前的CPU主频都非常高,因此这个部件可以达到纳秒级的计时精度。这个精确性是上述两种方法所无法比拟的。
在Pentium以上的CPU中,提供了一条机器指令RDTSC(Read Time Stamp Counter)来读取这个时间戳的数字,并将其保存在EDX:EAX寄存器对中。由于EDX:EAX寄存器对恰好是Win32平台下C++语言保存函数返回值的寄存器,所以我们可以把这条指令看成是一个普通的函数调用。像这样:
inline unsigned __int64 GetCycleCount()
{
__asm RDTSC
}
但是不行,因为RDTSC不被C++的内嵌汇编器直接支持,所以我们要用_emit伪指令直接嵌入该指令的机器码形式0X0F、0X31,如下:
inline unsigned __int64 GetCycleCount()
{
__asm _emit 0x0F
__asm _emit 0x31
}
以后在需要计数器的场合,可以像使用普通的Win32 API一样,调用两次GetCycleCount函数,比较两个返回值的差,像这样:
unsigned long t;
t = (unsigned long)GetCycleCount();
//Do Something time-intensive ...
t -= (unsigned long)GetCycleCount();
《Windows图形编程》第15页编写了一个类,把这个计数器封装起来。有兴趣的读者可以去参考那个类的代码。作者为了更精确的定时,做了一点小小的改进,把执行RDTSC指令的时间,通过连续两次调用GetCycleCount函数计算出来并保存了起来,以后每次计时结束后,都从实际得到的计数中减掉这一小段时间,以得到更准确的计时数字。但我个人觉得这一点点改进意义不大。在我的机器上实测,这条指令大概花掉了几十到100多个周期,在 Celeron 800MHz的机器上,这不过是十分之一微秒的时间。对大多数应用来说,这点时间完全可以忽略不计;而对那些确实要精确到纳秒数量级的应用来说,这个补偿也过于粗糙了。
这个方法的优点是:
1.高精度。可以直接达到纳秒级的计时精度(在1GHz的CPU上每个时钟周期就是一纳秒),这是其他计时方法所难以企及的。
2. 成本低。timeGetTime 函数需要链接多媒体库winmm.lib,QueryPerformance* 函数根据MSDN的说明,需要硬件的支持(虽然我还没有见过不支持的机器)和KERNEL库的支持,所以二者都只能在Windows平台下使用(关于DOS平台下的高精度计时问题,可以参考《图形程序开发人员指南》,里面有关于控制定时器8253的详细说明)。但RDTSC指令是一条CPU指令,凡是i386平台下Pentium以上的机器均支持,甚至没有平台的限制(我相信i386版本UNIX和Linux下这个方法同样适用,但没有条件试验),而且函数调用的开销是最小的。
3. 具有和CPU主频直接对应的速率关系。一个计数相当于1/(CPU主频Hz数)秒,这样只要知道了CPU的主频,可以直接计算出时间。这和 QueryPerformanceCount不同,后者需要通过QueryPerformanceFrequency获取当前计数器每秒的计数次数才能换算成时间。
这个方法的缺点是:
1.现有的C/C++编译器多数不直接支持使用RDTSC指令,需要用直接嵌入机器码的方式编程,比较麻烦。
2.数据抖动比较厉害。其实对任何计量手段而言,精度和稳定性永远是一对矛盾。如果用低精度的timeGetTime来计时,基本上每次计时的结果都是相同的;而RDTSC指令每次结果都不一样,经常有几百甚至上千的差距。这是这种方法高精度本身固有的矛盾。
关于这个方法计时的最大长度,我们可以简单的用下列公式计算:
自CPU上电以来的秒数 = RDTSC读出的周期数 / CPU主频速率(Hz)
64位无符号整数所能表达的最大数字是1.8×10^19,在我的Celeron 800上可以计时大约700年(书中说可以在200MHz的Pentium上计时117年,这个数字不知道是怎么得出来的,与我的计算有出入)。无论如何,我们大可不必关心溢出的问题。
下面是几个小例子,简要比较了三种计时方法的用法与精度
//Timer1.cpp 使用了RDTSC指令的Timer类//KTimer类的定义可以参见《Windows图形编程》P15
//编译行:CL Timer1.cpp /link USER32.lib
#include <stdio.h>
#include "KTimer.h"
main()
{
unsigned t;
KTimer timer;
timer.Start();
Sleep(1000);
t = timer.Stop();
printf("Lasting Time: %d\n",t);
}
//Timer2.cpp 使用了timeGetTime函数
//需包含<mmsys.h>,但由于Windows头文件错综复杂的关系
//简单包含<windows.h>比较偷懒:)
//编译行:CL timer2.cpp /link winmm.lib
#include <windows.h>
#include <stdio.h>
main()
{
DWORD t1, t2;
t1 = timeGetTime();
Sleep(1000);
t2 = timeGetTime();
printf("Begin Time: %u\n", t1);
printf("End Time: %u\n", t2);
printf("Lasting Time: %u\n",(t2-t1));
}
//Timer3.cpp 使用了QueryPerformanceCounter函数
//编译行:CL timer3.cpp /link KERNEl32.lib
#include <windows.h>
#include <stdio.h>
main()
{
LARGE_INTEGER t1, t2, tc;
QueryPerformanceFrequency(&tc);
printf("Frequency: %u\n", tc.QuadPart);
QueryPerformanceCounter(&t1);
Sleep(1000);
QueryPerformanceCounter(&t2);
printf("Begin Time: %u\n", t1.QuadPart);
printf("End Time: %u\n", t2.QuadPart);
printf("Lasting Time: %u\n",( t2.QuadPart- t1.QuadPart));
}
////////////////////////////////////////////////
//以上三个示例程序都是测试1秒钟休眠所耗费的时间
file://测/试环境:Celeron 800MHz / 256M SDRAM
// Windows 2000 Professional SP2
// Microsoft Visual C++ 6.0 SP5
////////////////////////////////////////////////
以下是Timer1的运行结果,使用的是高精度的RDTSC指令
Lasting Time: 804586872
以下是Timer2的运行结果,使用的是最粗糙的timeGetTime API
Begin Time: 20254254
End Time: 20255255
Lasting Time: 1001
以下是Timer3的运行结果,使用的是QueryPerformanceCount API
Frequency: 3579545
Begin Time: 3804729124
End Time: 3808298836
Lasting Time: 35612
古人说,触类旁通。从一本介绍图形编程的书上得到一个如此有用的实时处理知识,我感到非常高兴。有美不敢自专,希望大家和我一样喜欢这个轻便有效的计时器。
自学嵌入式的流程是什么?
原文链接:网页链接
嵌入式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
.................未完
原文链接:网页链接
显著提升程序员身心健康和工作效率的装备有哪些?
一把舒适的椅子,盆栽,关掉手机、QQ等的提示音。
环境设备
书架:很多东西都可以放进去,桌上能清爽很多
台灯:夜深人静的时候关上顶灯,打开台灯
白板:我还是习惯放下电脑,用笔去梳理自己的思维逻辑
加速度(一个电脑的有用程度和它里面装的软件数成反比)
给电脑换上SSD吧,你再也不用为了打开Photoshop而等待一分钟了,只需3秒!
给电脑加条内存吧,开虚拟机再也不用等待菊花了
IDE上哪些从来都不用的Plugin给Remove掉吧
Chrome上打开memory-redirect/你会惊奇的发现一个再简单不过的Extension也得占用几十M内存,长时间不用的扩展还是删掉吧
开机启动项赶紧T掉(Mac用户不在此列,我们都是几个月不关机的)
舒适的网络环境绝对是非常重要的,还在用小水管,赶紧去换成10M光纤吧,体验下网上冲浪的感觉!
多显示器绝壁是攻城师的不二利器啊!左边敲代码,右边预览、左边敲代码,右边LOG、左边敲代码,右边看电视
实在只有一个显示器也行啊,多建几个虚拟桌面切换
定制好的你的桌面图标(Mac Dock图标),把常用的提上去
使用Quicksilver、Alfred之类的软件能有效的提高操作效率
键盘的速度绝对比鼠标快,所以还是多记一记快捷键吧。Chrome下的Vimium和Firefox下面的Vimperator上手后对比下用数据操作的时间你会合不拢嘴的
专注
Coding的时候关掉手机提醒吧
邮件通知、QQ消息等简直是让人分散注意力的罪魁祸首
合理的挑选工作时间也很重要(当然得条件允许了,我是感觉每天晚上12点后的三个小时效率非常高,原谅我每天3点睡觉)
一杯茶或咖啡在快没精神的时候是很有作用的
你机箱是多少天没清理了,风扇的声音都快盖过拖拉机了
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。