M-book

求上得中, 求中得下, 求下得无!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年10月12日

摘要: 分类:Andriod2010-10-31 20:54681人阅读评论(0)收藏举报摘要:介绍Android移动平台系统架构.通过对An droid源代码的分析. 将其与标准Linux内核(2.6.27)源代码相比较,详细解析An droid内核的功能更新,分析讨论An droid内核与标准Linux内核之间的不同以及An droid在移动平台上的优势.并对An droid在各种内核之间做出一个定位,介绍Ubuntu环境下An droid内核的获得与编译引言随着嵌入式技术的发展.智能手机的运行速度和所集成的功能获得了极大提升 借着这股东风.Google主导的开放手机联盟OHA (0Den Han 阅读全文

posted @ 2011-10-12 17:38 M-book 阅读(705) 评论(0) 推荐(1) 编辑

摘要: 在讨论全局变量之前我们先要明白几个基本的概念:1. 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌 入式下做开发工作的话,那么你可能非常的理解编译与连接的区别!当在VC这样的开发工具上编写完代码,点击编译按钮准备生成exe文件时,VC其实做了两 步工作,第一步,将每个.cpp(.c)和相应.h文件编译成obj文件;第二步,将工程中所有的obj文件进 阅读全文

posted @ 2011-10-12 15:51 M-book 阅读(1905) 评论(0) 推荐(0) 编辑

2011年10月7日

摘要: Android调试方法1、查看内核输出信息: 进入adb shell命令状态然后用cat /proc/kmsg2,查看android输出信息:进入adb shell 后使用logcat查看 阅读全文

posted @ 2011-10-07 11:25 M-book 阅读(311) 评论(0) 推荐(0) 编辑

2011年9月13日

摘要: 关于大端和小端,自己已经记了很多次了,可每次都忘,今天创新工场笔试,第一道题就是关于大端小端的知识,可惜,自己又忘了,怎么回事,说到底,是自己同时记大端和小端,导致容易混淆,现在只记小端了:小端,是数的高位存在内存地址的高位,小高高!下面是从网上摘抄的一些东东,帮助理解和记忆,来自http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_14837.html:端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡 阅读全文

posted @ 2011-09-13 10:34 M-book 阅读(1279) 评论(1) 推荐(2) 编辑

2011年9月5日

摘要: 设置/build/target/product/lynx.mk文件1、添加支持输入法PRODUCT_PACKAGES := \Calculator \ Calendar \ Camera \ .... LatinIME \ PinyinIME \ .... 编译时将package下相应的封包编译到系统中2、添加语言支持PRODUCT_LOCALES := \zh_CN \en_US \zh_TW \fr_FR \es_ES \ja_JP \ ko_KR \ ru_RU编译是将相应支持的语言封包编译到系统中 阅读全文

posted @ 2011-09-05 11:21 M-book 阅读(488) 评论(0) 推荐(0) 编辑

摘要: Android系统中预置apk两种方法:一、用户可以通过apk安装器删除的预置方法1、将*.apk放置在/build/target/board/lynx/apk文件夹中2、修改/build/target/board/lynx/lynx.mk文件,按照该文件的格式将apk调用添加进去即可3、重新编译。另:使用adb安装和删除1、安装adb install */*.apk2、删除adb shellrm /data/app/*.apk二、用户不能删除的预置方法若将apk直接放置在/out/target/product/lynx/system/app位置下,配置的apk是用户不能使用安装器删除的同时, 阅读全文

posted @ 2011-09-05 10:43 M-book 阅读(1350) 评论(2) 推荐(0) 编辑

2011年8月28日

摘要: volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中),之所以直接从寄存器中取值,而不去内存中取值,是因为编译器优化代码的结果(访问cpu寄存器比访问ram快的多)。以上两种情况的区别在于被编译成汇编代码之后,两者是不一样的。之所以这样做是因为变量i可能会经常变化,保证对特殊地址的稳定访问。=====以下 阅读全文

posted @ 2011-08-28 22:57 M-book 阅读(201) 评论(0) 推荐(1) 编辑

摘要: 在大型C语言项目工程或者linux内核中我们都会经常见到两个FASTCALL和armlinkage两个标识符(修饰符),那么它们各有什么不同呢?今天就给大家共同分享一下自己的心得.大家都知道在标准C系中函数的形参在实际传入参数的时候会涉及到参数存放的问题,那么这些参数存放在哪里呢? 有一定理论基础的朋友一定会肯定地回答:这些函数参数和函数内部局部变量一起被分配到了函数的局部堆栈中,真的是这样吗?其实还有例外的情况:首 先作为linux操作系统,它不一定就只运行在X86平台下面,还有其他平台例如ARM,PPC,达芬奇等等,所以在不同的处理器结构上不能保证都是通过 局部栈传递参数的,可能此时就有朋 阅读全文

posted @ 2011-08-28 22:57 M-book 阅读(215) 评论(0) 推荐(0) 编辑

摘要: linux i386 kernel中:#define fastcall __attribute__((regparm(3)))#define asmlinkage __attribute__((regparm(0))) 函数定义前加宏asmlinkage ,表示这些函数通过堆栈而不是通过寄存器传递参数。 宏asmlinkage定义如下:#define asmlinkage __attribute__((regparm(0))).gcc编译器在汇编过程中调用c语言函数时传递参数有两种方法:一种是通过堆栈,另一种是通过寄存器。缺省时采用寄存器,假如你要在你的汇编过程中调用c语言函数,并且想通过堆栈 阅读全文

posted @ 2011-08-28 22:57 M-book 阅读(226) 评论(0) 推荐(0) 编辑

摘要: 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variablevoid msg(){printf("Hello\n");}下面是main.c的内容int main(void){extern char a; // extern variable m 阅读全文

posted @ 2011-08-28 22:56 M-book 阅读(222) 评论(0) 推荐(0) 编辑