摘要:
在了解ARM公司的产品架构之前,先来看看ARM公司的历史,这样对看懂内核的代码会很大帮助的,否则看到内核里有众多的宏定义,支持不同的结构指令选择,倒底是怎么回事,也是迷茫的,不解的。近来微软公司宣布Windows8正式支持ARM处理器,这是计算机发展历史上的一件大事,标志着X86结构的处理器的主导地位发生了动摇,ARM处理器将在市场上渐渐成为主流,恐怕指日可待。难怪有人惊呼,Intel公司将被击败?在这场高科技革命的变化中,它的主角ARM公司有着什么样的历史呢?这家公司远离硅谷,位于剑桥大学的英国公司,到底是怎么样走到今天的,居然能将芯片巨人Intel拉下马?1978年12月5日,物理学家赫尔 阅读全文
摘要:
在前面包含头文件,定义一些必要的宏之后,就到了实际运行代码的开始了,这里就是内核解压内核映象文件的开始位置了,也就是代码段的开始位置了。前面都没有看到实际的代码,因此会碰到很多新的知识点,新的拦路虎的,这更加需要花费时间和耐心了。现在就开始吧! .section".start", #alloc, #execinstr在这行代码里,先看来理解section关键字,这个关键字主要用来定义一个段的开始。在计算机组织可执行代码,主要通过分段的方式,比如一般的程序,都包括有几个段:代码段、数据段、堆栈段、全局数据段。这个关键字的格式如下:.sectionsection_name [, 阅读全文
摘要:
在嵌入式系统里,主要存在三种调试手段,一是使用硬件的LED显示灯,这种方式最原始,也最简单,只需要一个高低电平,就可以表示什么状态了,比如电源状态灯,网络连接灯等。二是使用串口通讯调试输出,由于串口通讯设置的参数最简单,连接线也最简单,编码也最简单,更何况在目前计算机环境里,没有串口基本不可能。三是使用调试器,比如JTAG等,一般比较复杂一些,需要硬件也多一些。在内核开发,或者嵌入式系统,最好使用串口调试输出,因为这些对多个CPU运行时,可以准确地输出,使用JTAG就不一定了。#ifdefined(CONFIG_ARCH_SA1100) .macro loadsp,rb mov \rb,#.. 阅读全文
摘要:
Oracle 10046是一个Oracle内部事件。最常用的是在Session级别设置sql_trace(alter session set sql_trace=true)即是开启了级别为1的10046调试事件。当设置了10046事件之后,Oracle 将产生一个dump文件。通过得到的dump文件进行进一步分析,可以得到Oracle 内部执行系统解析、调用、等待、绑定变量等详细的trace信息,对于分析系统的性能有着举足轻重的作用。一、10046事件的相关参数该事件需要设置一些参数以控制dump文件的输出:TIMED_STATISTICS 用于控制计时信息,可以设定为true和false。. 阅读全文
摘要:
下面这段代码,就是设置使用串口作为调试输入输出手段了,因为这种方式是最通用的,目前来说,所有嵌入式处理器都带有串口的,这个是基本配置,因此这种方式最通用,又不用添加什么其它的资源,使用起来非常方便,成为嵌入式软件、操作系统内核必选的调试方式。下面来细细地品读这段代码:#else#include<mach/debug-macro.S>当看到这行代码时,也许你会问,为什么汇编代码里也可以使用C语言的include关键字呢?其实,这是linux下编译系统的一大特色,在汇编代码里,当把后缀名写成大写时,它不是汇编器直接可以编译的代码,而是需要使用C预处理的文件。因此,在这个汇编文件里是可以 阅读全文
摘要:
接着下来这段代码,是跟调试有关的,如下:/** Debugging stuff** Note that these macros must notcontain any code which is not* 100% relocatable. Any attemptto do so will result in a crash.* Please select one of thefollowing when turning on debugging.*/这段注释意思是说下面的宏定义代码只能包括100%可重定位的代码,否则会导致运行崩溃的危险。如果要调试时,要选择合适的宏来使用。#ifdefD. 阅读全文
摘要:
一、概述:如果你的Oracle数据库性能低下,行链接和行迁移可能是其中的原因之一。我们能够通过合理的设计或调整数据库来阻止这个现象。行链接和行迁移是能够被避免的两个潜在性问题。我们可以通过合理的调整来提高数据库性能。本文主要描述的是:什么是行迁移与行链接如何判断行迁移与行链接如何避免行迁移与行链接当使用索引读取单行时,行迁移影响OLTP系统。最糟糕的情形是,对所有读取操作而言,增加了额外的I/O。行链接则影响索引读和全表扫描。注:在翻译行(row)时使用记录来描述(便于理解),如第一行,使用第一条记录。二、Oralce 块操作系统块的大小是操作系统读写的最小操作单元,也是操作系统文件的属性之一 阅读全文
摘要:
由上面的编译过程可知,内核一般是压缩后保存,并由引导程序加载到内存,然后CPU跳到相应的位置运行的,因为压缩后的代码是不能直接运行,所以必须存在一个解码的过程,而这个解码过程是怎么样执行呢?又是怎么样实现的呢?下面带着这两个问题来学习解压的过程。从上面分析编译过程,就可以知道需要从目录/Android-2.0/kernel/arch/arm/boot入手,在这个目录里主有piggy.S、head.S、misc.c、vmlinux.lds文件,在连接时是把head.S连接到内核的最开始位置,以便最先运行,这是由vmlinux.lds里决定。因此,就是从head.S来开始分析。/** linux/ 阅读全文
摘要:
在分析内核运行之前,先要了解内核是怎么样编译出来的,以便对内核的构造有一个详细的了解,在头脑里形成一个清晰的印象。随着技术的发展,对内核进行各种各样的处理,以便在空间上减到最小,在时间上也减到最小,在成本方便也减到最小。在成本方面,更加关键了。比如不对内核进行处理,内核编译出来的vmlinux文件,就有53M大小,保存这个文件,就得占用53M的FLASH存储空间。压缩后文件的大小为2.5M,这样算来,就省了50M的空间。如果保存这50M的FLASH成本为1元RMB,那么每个月100万台手机,每个月就可以节省100万RMB,看看这是多么可观的利润。可见对内核的优化作用,是很有价值的,当然还有其它 阅读全文
摘要:
我的G4已经买回来使用好久了,大概是2009年买的,系统是android 1.6,并且还是台湾的繁体版本。已经使用这么长时间,很多新的软件已经不能使用,并且使用起来也不是很方便,只好升级到2.3.7系统。先在网上搜索相关的资料,并学习好。对了,我的SD卡已经损坏了,还得去电子市场购买一个4G的SD卡,这样才具备硬件的基础。1. 准备手机连接电脑先要把手机的数据通讯线,就是买手机时配置的USB数据线,拿出来插入电脑,然后到HTC网站下载HTC Sync安装,然后再安装QQ的手机应用助手。如果手机可以在QQ的应用助手里连接到,说明手机连接到电脑没有问题了。这时,就需要使用QQ应用助手备份所有资料, 阅读全文