linux系统移植安卓,Android系统移植与驱动开发概述
1)应⽤程序层
Android平台不仅仅是操作系统,也包含了许多应⽤程序,诸如SMS短信客户端程序、电话拨号程序、图⽚浏览器、Web浏览器等应⽤程序。这些应⽤程序都是 ⽤Java语⾔编写的,并且这些应⽤程序都是可以被开发⼈员开发的其他应⽤程序所替换,这点不同于其他⼿机操作系统固化在系统内部的系统软件,更加灵活和个性化。
2)应⽤程序框架层
应⽤程序框架层是我们从事Android开发的基础,很多核⼼应⽤程序也是通过这⼀层来实现其核⼼功能的,该层简化了组件的重⽤,开发⼈员可以直接使⽤其提 供的组件来进⾏快速的应⽤程序开发,也可以通过继承⽽实现个性化的拓展。
3)系统运⾏库层
从图中可以看出,系统运⾏库层可以分成两部分,分别是系统库和Android运⾏时。
4)Linux内核层
Android是基于Linux2.6内核,其核⼼系统服务如安全性、内存管理、进程管理、⽹路协议以及驱动模型都依赖于Linux内核。
⼆、Android版本与Linux内核的关系
关于Android对应Linux内核版本,⼤家可以到⾃⼰⼿机中的设置---关于⼿机查看
查Linux 系统的内核版本⽅法:①uname -a
uname -a
②cat /proc/version
cat /proc/version
注:/proc 不是普通的⽂件系统,⽽是系统内核的映像,也就是说,该⽬录中的⽂件是存放在系统内存之中的,它以⽂件系统的⽅式为访问系统内核数据的操作提供接
⼝。⽽uname 命令就是从/proc/version ⽂件中获取信息的,当然直接查看/proc/version⽂件的内容(⽅法2 )也可以获取同样的信息. uname 命令加上参数“-a” 可以获取更多的信息,否则只显⽰当前的系统名,也就是只会输出“Linux”.
三、Linux设备驱动
设备的分类:
字符设备
块设备
⽹络设备
安卓程序开发用什么软件例⼦(s3c6410⼩灯):
#include
#include
#include
#include
#include
#include
#include
#define DEVICE_NAME "s3c6410_leds"
#define DEVICE_COUNT 1 // 设备数量
#define S3C6410_LEDS_MAJOR 0
#define S3C6410_LEDS_MINOR 234
#define PARAM_SIZE 3
static unsigned char mem[4]; // 保存4个Leds的设置状态
static int major = S3C6410_LEDS_MAJOR;
static int minor = S3C6410_LEDS_MINOR;
static dev_t dev_number; // 设备号
static int leds_state = 1;
static char *params[] = {"string1", "string2","string3"};
static int param_size = PARAM_SIZE;
static struct class *leds_class = NULL;
static long s3c6410_leds_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
switch (cmd)
{
unsigned tmp;
case 0:
case 1:
if (arg > 4)
{
return -EINVAL;
}
tmp = ioread32(S3C64XX_GPMDAT);
if (cmd == 1)
{
tmp &= (~(1 << arg));
}
else
{
tmp |= (1 << arg);
}
iowrite32(tmp, S3C64XX_GPMDAT);
return 0;
default:
return -EINVAL;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论