Android深度探索(2)

第五章 搭建S3C6410 开发板的测试环境windows

开发板是开发和学习嵌入式技术的主要硬件设备,尽管能够在PC上开发Linux驱动,而后从新编译成ARM架构的Linux驱动模块。但最终都是要在开发板上进行测试的。这主要是由于ARM架构的开发板可基于X86架构的PCCPU指令以及二进制格式上都有所不一样。并且若是Linux驱动须要访问硬件,而且这些硬件很难在PC上进行模拟,那么就要在带有这些硬件的开发板上进行调试和测试。尽管开发板从技术上与咱们常常用的手机相似,但与手机不一样的是在开发板上安装嵌入式系统要比手机容易的多。并且通常开发板都有不少扩展的端口,能够很容易开发定制的硬件,并与开发板连接。所以,开发板相对于手机来讲,更适合对程序进行测试,尤为适合对底层的Linux程序进行测试。近期因为对开发板的好奇也本身小投资了点,对itop-4412进行了一段时间的探索,一样为三星公司是推出的处理器,不一样开发板的区别主要在烧录嵌入式系统的方式上。书中使用的是一款minicom,基于Linux的串口管理软件,一直是应用笔记本安装虚拟机进行实验学习,对其不太了解,之后有机会使用一下,阅读到烧写Android系统这一小节时还有个小插曲,由于其开发板使用的是预装的WinCE6.0,要烧写成Android须要将原有的系统卸载掉,当说是得进入Eboot模式时,本身还得意的认为书中出现了错误,其实否则EbootUboot一样是属于bootloader引导程序,只不过一个是windows嵌入式,一个是Linux嵌入式而已,接下来的操做基本是对比式的学习,由于windows特有的图形界面交互,跟Linux仍是有必定差异的,相对来讲指令要少,而后一样是配置有线网络,这里结合近期的学习多了一些感悟,由于这种有线网络配置只能保存在内存中,一旦重启开发板,其设置将消失,咱们能够编写一个脚本文件,将上面的命令放到脚本文件中,当开发板每次重启后执行该脚本文件。通常开发板都提供了一个开机自动执行的脚本文件。能够经过对其的修改保存,实现其功能。网络

 

6章 第一个Linux驱动程序:统计单词个数架构

本章详细介绍开发和测试Linux驱动程序的完整过程。Linux驱动和普通的Linux API 没有本质的区别。只是是使用Linux驱动的方式与使用Linux API的方式不一样而已。Linux驱动的工做和访问方式是Linux的亮点之一,实际上是遵循Linux系统将一切皆文件的思想,将每个驱动都映射成一个文件。这些文件称为设备文件或驱动文件,都保存在/dev目录中。这种设计理念使得与Linux驱动进行交互就像与普通文件进行交互同样容易。因为大多数Linux驱动都有与其对应的设备文件,所以与Linux驱动交换数据就变成了与设备文件交换数据。接下来对Linux驱动程序的编写进行了初探,感受仍是一脸茫然,但也算小有收获。首先,编写一个基本的Linux驱动的通常步骤:1.创建Linux驱动的骨架(装载和卸载Linux驱动),(module_initmodule_exit宏指定),两个函数的两个宏的C程序文件也能够看做是Linux驱动的骨架。2.注册和注销设备文件,任何一个Linux驱动都须要有一个设备文件,不然应用程序没法与驱动程序交互。能够分别使用misc_registermisc_deregister函数建立和移除设备文件。3.指定与驱动相关的信息(modinfo命令获取)。4.指定回调函数。5.编写业务逻辑(核心部分)。6.编写Makefile文件。7.编译Linux驱动程序(能够直接编译进内核,也能够做为模块单独编译)。8.安装和卸载Linux驱动。(前五步是关于如何编写Linux驱动程序的,后三步能够是Linux驱动正常工做。后面相继讲了在各类平台的测试,而其实本书的主题之一就是介绍如何将Android移植到不一样的硬件上,那么使用test_word_count在不一样硬件平台上运行实际上也是一种移植,只不过这种移植并非移植操做系统,而是移植应用程序。最简单的应用程序移植就是将应用程序源代码译成可在不一样目标平台运行的二进制文件。若是恰巧这些平台中都包含应用程序所使用的API,那么直接在不一样平台编译便可(有时候须要使用交叉编译器),可是并非全部的API 在各个平台都有,有的API可能名字变化了,有的API在某些平台根本就没实现。面对这样的状况,通常须要先移植这些API,而后再移植应用程序。应用程序移植在Android系统中也会常常发生,若是某些特殊的Android系统(基于ARM芯片)须要一些用C语言实现的Library或可执行程序,但Android平台并无这些功能看,而其余平台(如Ubuntu Linux)有这样的程序,彻底能够修改并从新编译成ARM平台的目标文件放到Android系统中。函数

 

7LED将为我闪烁:控制发光二极管学习

这一章实际上是对上一章的一个应用扩展与深刻,实现了Linux驱动与硬件的直接交互,每个链接Linux的硬件在I/O内存中都会有映射首地址。在使用ioread32iowrite32等函数读写I/O内存时须要指定这些首地址。移植Linux驱动有一条很是重要,就是在修改Linux驱动源码时,应尽可能不修改Linux驱动的接口。测试

相关文章
相关标签/搜索