AndroidN需要的OpenJDK1.8在线安装方法
1. sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo update-alternatives –config java//手动更改需要的JDK
sudo update-alternatives –config javac//手动更改需要的JDK
- java -version
对Makefile和Kconfig文件的理解
makefile文件:也就是和windows中的批处理文件.dat的意思是相同的,makefile是一个shell文件,它代表了代码间的某种依赖关系,作用是读取.config文件,并且负责创建vmlinux(内核镜像boot.img)和modules(模块文件)
Kconfig文件的作用是:控制make config时,提供配置菜单中的配置选项;并根据用户在配置界面中的选择,将配置结果保存在.config配置文件(该文件将供Makefile使用,以决定要编译的内核组件以及如何编译)。
1.makefile中以#为开头的行相当于注释,不起作用。
2.在驱动文件中的意思是当CONFIG_KEYBOARD_XRA1201P为“y”时,将xra1201p_kpd.o编译进内核镜像,当为“m”的时候,表示其需要被编译成模块。
Kconfig文件:tristrate类型的菜单项多了编译内核模块的选择项,如果选择内建,就是直接编译成内核影响,就会在.config中生成一个CONFIG_KEYBOARD_XRA1201P=y的设置
depends on依赖型定义,指出此菜单的出现是否依赖于另一个定义
deconfig文件
内核编译用作.config的参考
驱动GPIO引脚初始化初始化优先级(重要!!!)
*进行驱动的初始化的时候,申请GPIO的顺序是需要先进行GPIO的初始化,之后才能对GPIO进行申请,如果出现了一些比较特殊的情况,发现某
些寄存器无法写入,应当要排查,其所使用的相应的GPIO的引脚是否在申请前已经初始化。
如果存在在申请GPIO的时候,对应的GPIO引脚尚未进行初始化,也就是申请在前,初始化在后的情况,则应该要对申请的GPIO引脚所在的自身驱动中的设备初始化的优先级进行修改,也就说要在初始化GPIO的驱动程序中,加入优先级更高的init函数,例如subsys_initcall函数,这个函数的优先级高于module_init。*
在驱动修改完毕之后,需要将原有的驱动变换成新的驱动,需要对kernel中的某些文件进行修改
1.dtsi文件,这个文件的作用主要是添加相应的驱动树,同时添加一些驱动的起始地址等一些驱动在初始化的时候需要使用的文件
2.defconfig文件,这个文件主要来设置对kernel的编译模式,例如在驱动文件中的意思是当CONFIG_KEYBOARD_XRA1201P为“y”时,将xra1201p_kpd.o编译进内核镜像,当为“m”的时候,表示其需要被编译成模块。
3.kconfig文件,这个主要是对编译文件的说明,控制make config时,提供配置菜单中的配置选项并根据用户在配置界面中的选择,将配置结果保存在.config配置文件(该文件将供Makefile使用,以决定要编译的内核组件以及如
何编译)。
4.makefile文件,这个文件主要是对读取.config配置文件,并且负责创建vmlinux(内核镜像boot.img)和modules(模块文件),这个文件的设置是需要确定.o文件与defconfig文件之间的联系。
串口调试,可以查询到系统在开机之前的log,一般进入adb shell的时候应该是有USB口存在,但是问题是一旦出现了无法开机,无法进入adb shell的时候,log无法打印,则应该使用串口进行调试使用方法是:串口输入接输出,输出接输入,地接地。硬件连接好之后,在终端上输入sudo minicom命令,则可进入log
2016年11月14号
likely()和unlikely()函数
使用likely()函数,在执行if后面的语句的可能性会大一些,编译器将会把if()确定的内容编译到前面,这样对代码的指令能力能够进行提升,可以提高效率。
使用unlikely(),在执行else后面的内容的可能型会大一些,编译器会把else的内容编译到前面。