android内核如何直接使用Linux内核已经自带的内核?

JustSoSo39521 2015-12-03 10:58:52
我要把Linux内核本身自带的驱动smsc95xx编译进Android内核中,我直接把配置该驱动的宏打开CONFIG_USB_NET_SMSC95XX=y,编译内核后,该驱动的.c文件也生成了.o文件,这是不是代表驱动已经编进内核了?因为之前我看的驱动代码driver都有对应一个device的信息(有name,addr,gpio号等...)在板级文件中,而这个linux内核自带的这个smsc95xx驱动,我在代码中没看到相关的device信息。请高手回答这个驱动可以直接使用了吗,还是需要在板级文件中添加device相关的代码?
...全文
659 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
猪头三小队长 2015-12-09
  • 打赏
  • 举报
回复
如果确认编译进内核,那么是否生成相应设备文件要取决于几个条件, 1. module_init怎么写的,如果不是module_init直接调用probe,那就只能在驱动对应的设备存在的情况下,probe才会被调用到。也有module_init直接调用probe的情况。 2. 设备是否存在,如果设备真实存在并且probe被正确调用,那么这阶段之后主设备号和次设备号都已经生成。 3. probe怎么写的,有的probe只申请资源,拿到次设备号,而有的probe就直接把所有事干了,根据probe的顺序把所有设备生成到相应位置。 4. 如果probe不管生成设备,就得自己写脚本mknod了,首先要cat /proc/devices找到有没有你的设备,有的话就用mknod按照次序生成文件,如果你的设备是misc之类的通用主设备号,就要通过查询misc设备的次设备号来确定mknod参数
Eliot_shao 2015-12-09
  • 打赏
  • 举报
回复
驱动要和设备匹配后才会执行驱动的probe,才会生成相应的设备节点,才可以被应用层调用
JustSoSo39521 2015-12-03
  • 打赏
  • 举报
回复
什么情况 没人回答......
xunshanwuzhao 2015-12-03
  • 打赏
  • 举报
回复
我看4412的板子,QT和Android系统都是基于同一个Linux内核,应该可以通用的
 本书内容   本书的各个章节及其组织方式如下所示。   第1章“Android系统概述”,概述Android系统方面的内容,包括智能手机平台的发展历程、Android系统的特点、Android的3种开发工作,以及Android的2种不同的开发方式。   第2章“Android系统开发综述”,介绍Android系统开发的综述性内容,包括工具使用、获得代码、编译系统、仿真器运行、SDK使用等。   第3章“AndroidLinux内核与驱动程序”,介绍Android内核的特点、Android使用的专用驱动程序、Android系统可能使用的标准设备驱动。   第4章“Android的底层库和程序”,介绍Android系统的基础程序,以本地程序为主。   第5章“Android的Java虚拟机和Java环境”,这是介于本地和Java层之间的相关内容,主要介绍Android的Java虚拟机Dalvik的基本概念、Android Java程序的环境、JNI的使用方法,以及Java框架的启动流程等。   第6章“Android的GUI系统”,包括Android GUI系统架构、底层的pixelflinger和libui库、Surface系统、Skia和2D图形系统、Android的OpenGL和3D图形系统等内容。   第7章“Android的Audio系统”,主要是音频的输入输出环节,音频系统从驱动程序、本地框架到Java框架都具有内容。   第8章“Android的Video输入输出系统”,介绍Android的Video输入输出系统,包括Overlay系统和Camera系统两个部分,前者只有本地的内容,后者各个层次均有内容。   第9章“Android的多媒体系统”,介绍Android的多媒体系统的核心部分,包括Android中多媒体系统的业务、结构、多媒体系统的核心框架、OpenCore系统结构和使用等内容。   第10章“Android的电话部分”,介绍Android系统在电话方面的功能,Android是智能手机系统,电话是其核心部分。   第11章“Android的连接部分”,主要包括WiFi、蓝牙及定位系统等,这些Android的连接部分也具有从驱动层到Java应用层的结构。   第12章“Android的传感器系统”,传感器系统涉及Android的各个层次,具有完整的结构,相比其他系统,传感器系统的各个层次都比较简单。   第6~12章分模块介绍Android的几个核心系统,主要是本地框架和Java框架方面的内容,兼顾应用程序和驱动层,这是本书的重点。   第13章“Android应用程序概述及框架”,介绍Android应用程序层的基本概念和应用程序框架,这部分内容是Android自下而上的第4个层次,可以基于源代码或者SDK开发,它们之间的差别非常小。   第14章“Android应用程序的主要方面”,介绍Android应用程序层开发的各个方面,基本上是横向内容,包括应用程序的基本控制、各种UI元素的使用、图形API使用3个方面的内容。   第15章“Android应用程序的设计思想”,本章的内容是基于通用的应用程序和GUI程序的通用设计思想,结合Android系统自身的特点,提出一些值得注意的问题和设计方法。   本书读者   本书适应广大的读者群,力求在Android的系统移植、应用程序开发、系统框架改进方面给读者全面的支持。不同的读者在学习本书时,应该使用不同的方法。   Android初级开发者:在本书指引下阅读代码,搭建系统开发环境,对于Android应用程序的开发者,重点关注后3章的内容。   Android中、高级开发者:通过本书的引导,学习系统架构,关注开发要点,并尽量使用手机系统的通用设计思想、软件工程思想、系统工程思想来指导Android系统学习。   嵌入式Linux系统学习者:将Android作为一个集Linux核心和应用层程序于一体的系统进行学习,并可以利用Android的仿真环境运行和调试程序。   读者在学习本书的过程中,应尽量对照本书的框图和手头的Android源代码,这样可以达到事半功倍的效果。本书在重点代码中加上大量的注释,帮助读者阅读,对于非重点的代码,不占用本书的篇幅,读者可以参考开放的源代码。可以采用顺序读和重点读相结合的方式学习本书,顺序读关注系统框架,重点读关注开发要点。   本书作者   本书在编写过程中提炼和综合Android早期开发者的经验、中国大陆Androidin社区的开发成果,以及各位专家的经验和技术,这是本书出版的知识源泉。本书主要由Androidin社区的两名核心技术专家韩超和梁泉领衔规划和编著,韩超统稿。总部设在南加州、专注于Android平台并提供其移动应用开发及解决方案的迈奔无线(mAPPn Inc.)也投入技术和人力参与了本书的工作。   参与本书编写的还有于仕林、张宇、张超等人,赵家维、黄亮、沈桢、徐威特、杨钰等参与了审校工作。   由于时间仓促,可能依然存在一些错误和问题,请读者见谅,欢迎读者讨论和指点。 编辑本段 目 录   第1章 Android系统概述 1   1.1 基础知识 1   1.1.1 Android开发系统的由来 1   1.1.2 移动电话系统开发模式 2   1.1.3 未来移动电话的功能及Android的优势 4   1.2 Android的开发工作 6   1.2.1 Android移植开发 6   1.2.2 Android应用开发 8   1.2.3 Android系统开发 9   1.3 Android的SDK与源代码 10   1.3.1 基于SDK的Android开发 10   1.3.2 基于源代码SDK Android开发 11   第2章 Android系统开发综述 13   2.1 Android的系统架构 13   2.1.1 软件结构 13   2.1.2 Android的工具 16   2.2 Android源代码的开发环境 18   2.2.1 Android源代码的获取和提交 18   2.2.2 Android源代码结构 21   2.2.3 编译 24   2.2.4 系统的运行 25   2.3 Android SDK的开发环境 32   2.3.1 SDK的结构 32   2.3.2 Windows环境SDK开发 33   2.3.3 Linux环境SDK开发 42   第3章 AndroidLinux内核与驱动程序 44   3.1 Linux核心与驱动 44   3.2 Android专用驱动 45   3.2.1 Ashmem 45   3.2.2 Binder 45   3.2.3 Logger 46   3.3 Android使用的设备驱动 46   3.3.1 Framebuffer显示驱动 46   3.3.2 Event输入设备驱动 48   3.3.3 v4l2摄像头——视频驱动 50   3.3.4 OSS音频驱动 53   3.3.5 ALSA音频驱动 54   3.3.6 MTD驱动 56   3.3.7 蓝牙驱动 57   3.3.8 Wlan驱动 58   第4章 Android的底层库和程序 60   4.1 底层库和程序的结构 60   4.1.1 本地实现的基本结构 60   4.1.2 增加本地程序和库的方法 61   4.2 标准C/C++库bionic 64   4.3 C语言工具库libcutils 65   4.4 init可执行程序 66   4.5 Shell工具 72   4.6 C++工具库libutils 75   4.6.1 libutils的基本内容 75   4.6.2 Binder 76   4.6.3 libutils中的其他内容 82   4.7 Android的系统进程 85   4.7.1 servicemanager 85   4.7.2 zygote 87   第5章 Android的Java虚拟机和Java环境 88   5.1 Dalvik虚拟机和核心库 88   5.1.1 dex工具库和虚拟机的实现 89   5.1.2 核心库 90   5.1.3 nativehelper库 91   5.2 Android的Java程序环境 91   5.2.1 Java类的层次结构 91   5.2.2 Android Java类的代码 92   5.2.3 Android系统API 92   5.3 JNI的使用 96   5.3.1 JNI的架构和实现方式 97   5.3.2 JNI的实现方式 97   5.3.3 在应用程序中使用JNI 99   5.4 系统服务的Java部分 101   5.4.1 Binder 102   5.4.2 ServiceManager 103   5.4.3 系统进程 103   第6章 Android的GUI系统 106   6.1 Android GUI系统综述 106   6.2 pixelflinger和libui库 108   6.2.1 pixelflinger 108   6.2.2 libui 108   6.2.3 输出/输入与硬件的接口 109   6.3 Surface系统 113   6.3.1 Surface系统本地接口 113   6.3.2 SurfaceFlinger本地代码 115   6.3.3 Surface的Java和JNI代码 119   6.4 Skia和2D图形系统 121   6.4.1 Skia底层库 121   6.4.2 Android图形系统的JNI接口 124   6.4.3 Android的图形包(graphics) 125   6.5 Android的OpenGL系统与3D图形系统 125   6.5.1 OpenGL的本地代码 125   6.5.2 OpenGL的JNI代码 130   6.5.3 OpenGL的Java类 130   第7章 Android的Audio系统 132   7.1 Audio系统综述 132   7.2 Audio系统和上层接口 134   7.2.1 Audio系统的各个层次 134   7.2.2 media库中的Audio框架部分 135   7.2.3 AudioFlinger本地代码 138   7.2.4 Audio系统的JNI代码 140   7.2.5 Audio系统的Java代码 142   7.3 Audio的硬件抽象层 142   7.3.1 Audio硬件抽象层的接口定义 142   7.3.2 AudioFlinger中自带Audio硬件抽象层实现 144   7.3.3 Audio硬件抽象层的真正实现 150   第8章 Android的Video输入输出系统 151   8.1 Video输入输出系统综述 151   8.1.1 Android的Overlay系统结构 152   8.1.2 Android的Camera系统结构 153   8.2 Overlay系统 155   8.2.1 Overlay系统的框架部分定义 156   8.2.2 SurfaceFlinger系统的Overlay部分 158   8.3 Overlay的硬件抽象层 161   8.3.1 Overlay系统硬件抽象层的接口 161   8.3.2 Overlay系统硬件实现框架 164   8.3.3 Overlay系统硬件实现的注意事项 166   8.4 Camera系统与上层接口 169   8.4.1 Camera本地代码框架 169   8.4.2 CameraService 176   8.4.3 Camera的JNI代码 179   8.4.4 Camera的Java代码 182   8.5 Camera的硬件抽象层 182   8.5.1 Camera硬件抽象层的接口定义 182   8.5.2 Camera硬件抽象层的桩实现 184   8.5.3 Camera硬件抽象层的硬件实现 188   第9章 Android的多媒体系统 190   9.1 Android多媒体系统的结构和业务 190   9.1.1 多媒体系统的宏观结构 190   9.1.2 多媒体的各种业务 192   9.2 多媒体系统的各个层次 199   9.2.1 libmedia的框架部分 199   9.2.2 多媒体服务 208   9.2.3 多媒体部分的JNI代码 213   9.2.4 多媒体部分的Java框架代码 215   9.2.5 android.widget.VideoView类 216   9.3 多媒体实现的核心部分OpenCore 216   9.3.1 OpenCore概述 216   9.3.2 OpenCore的层次结构 217   9.3.3 OpenCore的OSCL部分 219   9.3.4 OpenCore的文件格式和编解码部分 221   9.3.5 OpenCore 的Node 222   9.3.6 OpenCore 的功能扩展 223   9.3.7 OpenCore的 Player 226   9.3.8 OpenCore 的Author 236   第10章 Android的电话部分 243   10.1 Android电话部分综述 243   10.2 Modem驱动 243   10.3 本地的RIL代码 245   10.3.1 简介 245   10.3.2 RILD守护进程 246   10.3.3 libril库 247   10.3.4 RIL的实现库Reference RIL 247   10.3.5 Request(请求)流程 248   10.3.6 Response(响应)流程 249   10.3.7 RIL的移植工作 251   10.4 Java框架及应用 251   10.4.1 基本架构 252   10.4.2 呼叫 255   10.4.3 短信 256   10.4.4 数据连接 257   10.4.5 其他框架部分及其他应用 258   第11章 Android的连接部分 259   11.1 WiFi部分 259   11.1.1 WiFi基本架构 259   11.1.2 WiFi本地实现 260   11.1.3 WiFi的Java和JNI 263   11.1.4 Settings中的WiFi设置 265   11.1.5 WiFi工作流程实例 265   11.2 蓝牙部分 267   11.2.1 蓝牙基本架构 268   11.2.2 蓝牙用户空间库bluez 269   11.2.3 bluez适配层 272   11.2.4 蓝牙的JNI和Java部分 272   11.3 GPS和定位部分 280   11.3.1 定位系统基本架构 281   11.3.2 定位系统驱动层 281   11.3.3 GPS本地实现 282   11.3.4 GPS JNI实现 283   11.3.5 定位系统Java实现 284   第12章 Android的传感器系统 286   12.1 传感器系统综述 286   12.2 传感器系统层次结构 288   12.2.1 传感器系统的各个层次 288   12.2.2 传感器系统的JNI 288   12.2.3 传感器系统的Java代码 290   12.3 传感器系统的硬件抽象层 291   12.3.1 传感器系统硬件抽象层的接口定义 291   12.3.2 传感器系统硬件抽象层的示例实现 293   12.3.3 传感器系统硬件抽象层的实现要点 296   12.4 Sensor的使用 296
目录 ······ 第1章 Android简介 1.1 一些背景信息 1.1.1 不远的过去 1.1.2 未来的前景 1.2 对Android的误解 1.3 开放的移动开发平台 1.4 自带Android应用程序 1.5 Android SDK功能 1.5.1 对包括摄像头、GPS和加速计在内的硬件的访问 1.5.2 自带的Google地图、地理编码和基于位置的服务 1.5.3 后台服务 1.5.4 SQLite数据存储和检索数据库 1.5.5 共享数据和应用程序间通信 1.5.6 使用Google Talk的P2P服务 1.5.7 扩展的数据支持和2D/3D图形 1.5.8 优化的内存和进程管理 1.6 开放手机联盟简介 1.7 运行Android的环境 1.8 从事Android开发的原因 1.8.1 推动Android普及的因素 .1.8.2 Android的独到之处 1.8.3 改变移动开发格局 1.9 开发框架简介 1.9.1 开发包中的资源 1.9.2 理解Android软件栈 1.9.3 Dalvik虚拟机 1.9.4 Android应用程序架构 1.9.5 Android库 1.9.6 高级Android库 1.10 小结 第2章 开始入手 2.1 Android开发 2.1.1 开始前的准备工作 2.1.2 创建第一个Android活动 2.1.3 Android应用程序的类型 2.2 面向移动设备的开发 2.2.1 关于硬件设计的考虑事项 2.2.2 考虑用户环境 2.2.3 Android开发 2.3 To-Do List示例 2.4 Android开发工具 2.4.1 Android模拟器 2.4.2 Dalvik调试监控服务(DDMS) 2.4.3 Android调试桥(ADB) 2.5 小结 第3章 创建应用程序和活动 3.1 Android应用程序的组成部分 3.2 程序清单简介 3.3 使用清单编辑器 3.4 Android应用程序生命周期 3.5 理解应用程序的优先级和进程状态 3.6 分离资源 3.6.1 创建资源 3.6.2 使用资源 3.6.3 To-DoList资源示例 3.6.4 为不同的语言和硬件创建资源 3.6.5 运行时配置更改 3.7 深入探讨Android活动 3.7.1 创建一个活动 3.7.2 活动生命周期 3.7.3 Android活动类 3.8 小结 第4章 创建用户界面 4.1 Android UI基本设计 4.2 View简介 4.2.1 使用View创建Activity(活动)用户界面 4.2.2 Android Widget工具箱 4.3 布局简介 4.4 创建新的View 4.4.1 修改现有的View 4.4.2 创建复合控件 4.4.3 创建定制的Widget和控件 4.4.4 使用定制的控件 4.5 创建和使用菜单 4.5.1 Android菜单系统简介 4.5.2 定义活动的菜单 4.5.3 动态更新菜单项 4.5.4 处理菜单选择 4.5.5 子菜单和上下文菜单 4.5.6 To-Do List示例续 4.6 小结 第5章 Intent、广播接收器、 Adapter和Internet 5.1 Intent简介 5.1.1 使用Intent来启动活动 5.1.2 使用Intent Filter来为隐式Intent提供服务 5.1.3 使用Intent Filter作为插件和扩展 5.1.4 使用Intent来广播事件 5.2 Adapter简介 5.2.1 Android提供的部分Adapter简介 5.2.2 使用Adapter绑定数据 5.3 使用Internet资源 5.3.1 连接到Internet资源 5.3.2 利用Internet资源 5.4 Dialog简介 5.4.1 Dialog类简介 5.4.2 使用活动作为对话框 5.5 创建一个地震查看器 5.6 小结 第6章 数据存储、检索和共享 6.1 Android中的数据保存技术 6.2 保存简单的应用程序数据 6.2.1 创建和保存preference 6.2.2 检索共享的preference 6.2.3 保存活动状态 6.2.4 为地震查看器创建一个Preference页 6.3 保存和载入文件 6.3.1 将静态文件作为资源添加 6.3.2 文件管理工具 6.4 Android中的数据库 6.4.1 SQLite简介 6.4.2 Cursor和内容值 6.4.3 使用Android数据库 6.5 内容提供器简介 6.5.1 使用内容提供器 6.5.2 本地Android内容提供器 6.5.3 创建一个新的内容提供器 6.5.4 创建和使用地震内容提供器 6.6 小结 第7章 地图、地理编码和基于位置的服务 7.1 使用基于位置的服务 7.2 使用Test Proyider构建模拟器 7.2.1 更新模拟位置提供器中的位置 7.2.2 创建一个应用程序来管理Test Location Provider 7.3 选择——个Location Provider 7.3.1 查找可用的提供器 7.3.2 根据要求标准查找提供器 7.4 确定自己所在的位置 7.4.1 “Where Am I”示例 7.4.2 追踪移动 7.4.3 更新“WhereAmI”示例中的位置 7.5 使用邻近提醒 7.6 使用Geocoder 7.6.1 反向地理编码 7.6.2 前向地理编码 7.6.3 对“Where Am I”示例进行地理编码 7.7 创建基于地图的活动 7.7.1 MapView和MapActivity简介 7.7.2 创建一个基于地图的活动 7.7.3 配置和使用MapView 7.7.4 使用MapController 7.7.5 对“Where Am I”示例使用地图 7.7.6 创建和使用覆盖(Overlay) 7.7.7 MyLocationOverlay简介 7.7.8 ItemizedOverlay和Overlayltem简介 7.7.9 将View固定到地图和地图的某个位置上 7.8 对Earthquake示例添加地图功能 7.9 小结 第8章 后台工作 8.1 服务简介 8.1.1 创建和控制服务 8.1.2 将活动和服务绑定 8.2 使用后台工作线程 8.2.1 创建新的线程 8.2.2 为GUI操作同步线程 8.2.3 将Earthquake Service移动到后台线程 8.3 创建一个Toast 8.3.1 定制Toast 8.3.2 在工作(worker)线程中使用Toast 8.4 Notification简介 8.4.1 Notification Manager简介 8.4.2 创建Notification 8.4.3 触发Notification 8.4.4 向Earthquake Monitor中添加Notiflcation 8.4.5 高级Notification技术 8.4.6 持续的和连续的Notification 8.5 使用Alarm 8.6 使用Alarm更新Earthquake 8.7 小结 第9章 P2P通信 9.1 Android即时消息简介 9.1.1 使用GTalk服务 9.1.2 和GTalk服务绑定 9.1.3 建立GTalk连接,开始一个IM会话 9.1.4 在线状态和联系人列表简介 9.1.5 管理聊天会话 9.1.6 发送和接收数据信息 9.2 SMS简介 9.2.1 在应用程序中使用SMS 9.2.2 发送SMS信息 9.2.3 监听SMS消息 9.2.4 紧急响应的SMS示例 9.2.5 紧急响应自动化 9.3 小结 第10章 访问Android硬件 10.1 使用媒体API 10.1.1 播放媒体资源 10.1.2 录制多媒体 10.2 使用摄像头 10.2.1 控制摄像头设置 10.2.2 使用摄像头预览 10.2.3 照相 10.3 Sensor Manager简介 10.4 使用加速计和指南针 10.4.1 加速计介绍 10.4.2 检测加速度的改变 10.4.3 创建一个速度计 10.4.4 确定方向 10.4.5 创建指南针和地平仪 10.5 Android电话功能 10.5.1 打电话 10.5.2 监控电话状态和电话活动 10.5.3 监控数据连通性和活动 10.5.4 访问手机的属性和状态 10.5.5 控制电话 10.6 使用蓝牙 10.6.1 蓝牙服务介绍 10.6.2 控制本地蓝牙设备 10.6.3 发现并配对蓝牙设备 10.6.4 管理蓝牙连接 10.6.5 使用蓝牙进行通信 10.6.6 使用蓝牙耳机 10.7 管理网络和Wi-Fi连接 10.7.1 监控和管理Internet连接 10.7.2 管理活动的连接 10.7.3 管理你的Wi-Fi 10.8 控制设备震动 10.9 小结 第11章 Android高级开发 11.1 Android的安全性 11.1.1 Linux内核安全 11.1.2 权限简介 11.1.3 声明和实施权限 11.1.4 为广播Intent实施权限 11.2 使用AIDL来支持服务IPC 11.3 使用Internet服务 11.4 构建内容丰富的用户界面 11.4.1 使用动画 11.4.2 使用主题来为应用程序添加皮肤 11.4.3 高级画布绘图 11.4.4 SurfaceView简介 11.4.5 创建交互式控件 11.5 小结
Linux内核一直是学习的难点:将近3000万行代码,5万多个源文件,代码庞大繁杂、代码很难看懂。《Linux内核编程》将突破以往传统的学习方式,采取更有效和科学的学习方法,多角度地对内核进行多层次分析,不局限于形式,不拘泥细节,目的只有一个:更轻松、更高效地去理解内核、学习内核。为了更好地让学员掌握内核编程技能,更好地理解内核,本课程将采用并不局限于以下学习方法进行课程的录制:降维分析,化简为繁,将复杂的系统简单化用软件工程的方法分析内核:软件分层、模块化分解、框架迭代多角度立体分析Linux内核,目的只有一个:更好地理解内核利用Linux内核中的面向对象编程思想去分析复杂的子系统、子系统交互利用多任务编程的思想去分析Linux内核本套课程预计分为20个左右的小模块,每个模块一个专题,每个专题会陆续发布。拟录制的模块包括但不限于:模块机制、内核裁剪与配置、内核编译与启动、系统调用、中断、文件系统、调度、内存管理、内核同步、设备模型、字符驱动、块驱动、定时器、input、platform设备驱动、device tree、proc、sysfs、I/O...  本课程是《Linux内核编程》的入门篇,主要给大家介绍一下Linux内核开发、Linux驱动开发的就业行情、行业生态、需要掌握哪些技能、Linux内核的学习方法、如何搭建Linux内核的学习开发环境。 

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧