• 第一章心得体会


    本章内容首先整体了解到了安卓系统移植和驱动开发概述的整体框架。

    安卓的系统架构分为四层:Linux内核、c/c++代码库、Android SDK API、应用程序。

    安卓系统移植的主要两部分工作是应用移植和系统移植,应用移植是将应用程序移植到某一特定的硬件平台上,而系统移植是指让安卓操作系统在某一个特定平台上运行。

    Linux内核版本有三个,分别是linux2.4、linux2.6、linux3.x,linux内核版本号由主版本号、次版本号、修订版本号、微调版本号组成,这也需要我清楚认识一下linux内核的相关信息。

    由于linux内核版本更新很快,所以linux内核对从事驱动开发的我们影响很大,但是这对于学习linux驱动开发来说影响相对较小,所以不管是哪个版本的内核,只要掌握一个内核版本的驱动开发就好了。学习linux驱动要用linux系统,我们应该选择自己熟悉的系统作为自己的实验环境。

    学习linux驱动首先应该准备一个自己熟悉的linux操作系统,用于开发和测试linux驱动;其次准备一块开发版;接着应该学习GNU C以及相关的硬件知识并且不断的实践 。而对于linux设备驱动来说,驱动针对的对象是存储器和外设,而不是针对CPU,linux将存储器和外设分为字符设备、块设备、网络设备,另外,usb驱动、PCI驱动、LCD驱动等大体可归为上述三类设备。linux驱动代码涉及了很多系统的函数和结构体,如readl、writel、printk、miscdevice等,我们需要知道任何的linux驱动都有一个装载函数和一个卸载函数,装载函数和卸载函数分别通过mobule_init和module_exit宏指定。

    所以本章我认识到,学习linux驱动编程一定要了解linux驱动只与linux内核有关,与用户使用的linux系统无关,唯一可以判断linux内核版本号的定义规则,只有组成内核版本号的五部分完全相同,才能说明两个linux系统的内核是相同的。所以从这一点可以看出,学习安卓驱动开发,实际上就是学习linux驱动开发,知识安卓增加了一个HAL,这是安卓特有的,一般的安卓驱动都会有对应的HAL,不过HAL这不是必须的,通过NDK也可以直接访问linux驱动。

  • 相关阅读:
    简述Javascript中call apply
    tomato固件 路由简单玩 BT 电驴 amule highId python 其实dd wrt也一样 含 amule_2.2.61_mipsel.ipk下载
    Ubuntu10.10 下usb鼠标不动了
    Struts2源码分析 初步1 如何入手以及做了哪些初始化
    ubuntu eclipse easyexplore 替代品 open explorer
    struts2 src study 准备工作 和 略谈 如何读开源代码(Java)
    python 解析XML expat方式
    正则表达式基础 多选结构 加不加括号大不同
    UVa1586,Molar Mass
    UVa12100,Printer Queue
  • 原文地址:https://www.cnblogs.com/renxinye/p/5436499.html
Copyright © 2020-2023  润新知