Welcome 微信登录

首页 / 操作系统 / Linux

Linux内核移植基本框架

Linux内核移植基本框架

一.获得Linux源码二.解压系统源码解压命令Gzip -v rootfile 压缩一个文件rootfileGunzip rootfile.gz 解压缩一个文件Tar命令既可以压缩文件也可以解压缩文件,决定于tar 命令后面所跟参数-A将文件添加到现有的tar包-c表示创建新的tar包-t列出tar包中的内容-x从tar包中解压文件-f指定tar文件的名称-j用bzip2/bunzip2来压缩和解压tar包,后缀为.tar.bz2-z用gzip/gunzi...
Android权限之三共享UID和签名

Android权限之三共享UID和签名

共享UID安装在设备中的每一个Android包文件(.apk)都会被分配到一个属于自己的统一的Linux用户ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。用户ID 在应用程序安装到设备中时被分配,并且在这个设备中保持它的永久性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是可以互相访问任意数据. 也可以配置成运行成不同的进程, 同时可以访问其他APK的数据目录...
Android权限之二packages.xml解析

Android权限之二packages.xml解析

/data/system/packages.xml这个文件由PackageManagerService.java生成,里面记录了系统当中安装的APK的所有属性,权限等信息。当系统中的APK安装、删除、升级时,文件就会被更新。<permissions>标签定义了目前系统中定义的所有权限。主要分为两类:系统定义的(package属性为Android)和APK定义的(package属性为APK的包名)。<package>代表一个APK的属...
Android中KeyEvent的生命周期

Android中KeyEvent的生命周期

1、生成存在这样一个线程,它不断地从driver读取Event,并把它放到RawEvent队列中。这个队列中的RawEvent既有按键,也有触摸、轨迹球等事件。RawEvent队列中的每个RawEvent最后都会通过一系列转化,最终变为KeyEvent被发送给另外一个线程,即输入线程,也就是一个Activity的主线程。2、传递KeyEvent传递过程主要可以划分为三步:过滤器、View树、Activity过滤器部分主要对应着PhoneWindowMana...
Android应用程序中用Java创建本地进程来执行C/C++程序

Android应用程序中用Java创建本地进程来执行C/C++程序

大致分为五步:创建环境、建立连接、发送数据、读取结果、释放资源。下面我们以打开一个shell进程,在进程中执行pwd命令,然后退出为例,来看一下整个过程。1、创建环境主要有两个:执行程序和当前目录。这个和在命令行下执行一个普通的Linux程序一样,先有一个当前目录,然后在当前目录下面调用要执行的程序。我们运行pwd的话,就需要在一个目录下启动shell进程。当前目录我们可以随便选一个。这里选根目录。ProcessBuilder pb = new Proce...
Linux共享内存+信号量编程示例

Linux共享内存+信号量编程示例

写在前面:最近被一本超级垃圾的书折磨够呛,书中的例子全是错的,不过幸好我不是初学者的水平。有几个例子还不错,但是书上的代码编译都不过,我折腾了很长时间才修改正确,发上来留着以后复习用。/*** 描述:通过共享内存进行进程间通信,使用信号量来同步.* 直接运行程序会启动服务端,会打印出shmid* 然后再启动并添加shmid这个参数即可启动客户端,然后即可进行通信* Created on: 2010-4-29* Author: QQwen* 开发环境: fc...
Linux用实时信号发送数据

Linux用实时信号发送数据

//////////////////////////////////////////////////////本例是一个用信号发送数据元素的例子//可以使用 man sigqueue 获得更多信息//siginfo_t结构允许发送的信号带有一个单独的数据(这个元素可以是一个指针,从而间接传递任意大小的数据 ),要用 union sigval//sigqueue()可以传送带有数据的消息到指定的进程。要生成一个带有union sigval的信号,必须使用sig...
Linux系统平台下关于GCC编译及使用的方法

Linux系统平台下关于GCC编译及使用的方法

Linux系统平台下关于GCC编译及使用的方法 (-Werror,它要求GCC将所有的警告当成错误进行处理 )编译:第一步、是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程:gcc -E hello.c -o hello.i预处理的宏定义插入到hello.i中第二步、是将hello.i编译为目标代码,这可以通过使用-c参数来完成:gcc -c hello.i -o hello.o也可以通过源文件直接生成gcc -c hello.c第三步、是...
Linux MMC/SD/SDIO体系结构

Linux MMC/SD/SDIO体系结构

有关MMC/SD/SDIO相关的知识这里就不多讲了,请参考相关资料。这里主要涉及Linux下MMC相关内容。内核版本(2.6.36)首先说一下Linux相关MMC的代码分布,主要有两个目录,一个头文件目录和一个源代码目录。分别位置如下:include/linux/mmcdrivers/mmc要阅读MMC相关代码就必须要看这两个目录。在drivers/mmc目录下分别有三个子目录,其将对应接下来要讲的MMC的体系结构。这三个子目录分别为:cardcoreho...
Arm Linux 优化

Arm Linux 优化

ARM Linux的优化主要涉及部分:1.内核部分2.应用程序部分两者的主要区别在于:内核没有使用标准C库和涉及浮点运算。所以在针对内核和应用程序优化上有所区别。优化一般涉及两个方面:空间和时间。一般情况我们只能选择最优,两种不可兼得。不过随着ARM新的核A15的推出(据说速度可以达到2.5G,看来ARM的野心也不小,虽然WINDOWS系统还不支持ARM,未来也不不一定)以及现在存储的技术和性价比不断提升,将来的开发主要应该会走PC的路,注重功能和可复用,...
嵌入式Linux加载引导内核和根文件系统的方法

嵌入式Linux加载引导内核和根文件系统的方法

总体来说,嵌入式Linux内核和根文件的引导与PC机差不多。嵌入式linux内核和根文件系统可以存放在各种可能的存储设备中,一般情况下我们将内核和根文件系统直接烧入到Flash中(包括NOR和NAND flash),这种方法的缺点是在内核和根文件系统出现修改时我们就不得不得重新对flash进行擦除和烧写工作,这个非常耗时,在产品开发调试阶段非常不适合,只有在最终成品时才比较适用。哪在开发阶段采用哪种方式比较好呢?先还是看看现在都有些常用的存储设备吧。我们常...
ARM GCC工具链有关的使用总结

ARM GCC工具链有关的使用总结

使用GCC工具链有那么久了,对其也有所了解了。主要用它来编译ARM平台的一些代码。下面是使用时的一些总结:1.GCC工具链对文件命是区分大小的。这个可能与它有关的系统有关,像UINX/LINUX这类系统,文件命是区分大小的。HELLO.C Hello.C hello.c是三个不同的文件。我们可能不会在同一个项目中使用这样三个文件,但如果我们在命名文件命是把如后缀命写错了就可能出问题了。 .C 和.c是不一样的,.C会被认为是C++语言文件,.c是C语言文件...
Linux内核模块/驱动编程基础

Linux内核模块/驱动编程基础

Linux内核开发时需要注意以下几个问题:1.不能访问C库,内核不能使用标准库。这个可以在编译链接内核以后从内核目录下的.vmlinux.cmd可以看出:arm-xxx-ld -nostdlib ... ... 。不过内核在lib下实现了部分常用的函数,如memset,strcpy这类函数,还有可能针对具体体系结构进行优化的代码,一般在arch/xxx/lib下。2.内核编程使用的GNU C,而不是我们的标准C语言语法。看看内核的代码就知道。3.因为是内核...
<< 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 >>