Hi3519-pinctrl驱动开发①开发环境搭建
Hi3519运行的系统基于Linux 3.18.y内核,访问 www.kernel.org 下载Linux 3.18.20内核源码linux-3.2.20.tar.bz2,在虚拟机里面解压源码。编译内核使用网上的交叉编译器可能与使用的内核不配套,造成开发过程中出现一些不可预料的问题,因此海思提供了两款编译工具链 arm-hisiv500-linux 和 arm-hisiv600-linux,其中
Hi3519运行的系统基于Linux 3.18.y内核,访问 www.kernel.org 下载Linux 3.18.20内核源码linux-3.2.20.tar.bz2,在虚拟机里面解压源码。编译内核使用网上的交叉编译器可能与使用的内核不配套,造成开发过程中出现一些不可预料的问题,因此海思提供了两款编译工具链 arm-hisiv500-linux 和 arm-hisiv600-linux,其中 arm-hisiv500-linux 为基于 uclibc 的工具链,arm-hisiv600-linux 为基于 glibc 的工具链。我使用的是arm-hisiv600-linux工具链,解压arm-hisiv600-linux.tar.gz,可以不用安装,防止与其他版本的交叉编译器冲突,使用的时候指定编译器的全路径就行了。
下面就进行内核配置,需要拷贝配置文件到内核源码根目录:
cp arch/arm/configs/hi3519v101_big_little_nand_defconfig .config
这个配置文件是海思提供的,下面就进行menuconfig配置内核:
make ARCH=arm CROSS_COMPILE=/home/tq/arm-hisiv600-linux/bin/arm-hisiv600-linux-gnueabi- menuconfig
选择需要的模块后保存退出。下面就能进行内核编译了:
make ARCH=arm CROSS_COMPILE=/home/tq/arm-hisiv600-linux/bin/arm-hisiv600-linux-gnueabi- uImage
编译完成之后就得到了压缩内核镜像文件uImage。
到这里基本的驱动开发环境完成了,搭建过程比较简单,下面就要为pinctrl开发做准备,先要使能内核的pinctrl驱动。打开内核源码下driver/pinctrl/Kconfig文件,文件中没有Hi3519的pinctrl驱动配置选项,自行添加:
config PINCTRL_HI3519
bool "HI3519 pin controller driver"
depends on ARCH_HI3519V101
help
By tangquan
保存之后进行menuconfig发现在Device Drivers菜单中没有Pin controllers选项,原因在Kconfig文件的前几行中:
config PINCTRL
bool
menu "Pin controllers"
depends on PINCTRL
......
很清楚说明了如果PINCTRL没有定义的话则pinctrl则没有使能,所以就需要定义PINCTRL,打开arch/arm/mach-hisi/Kconfig文件,找到ARCH_HI3519V101选项,添加select选项:
config ARCH_HI3519V101
bool "Hisilicon Hi3519V101 Cortex-a7.Cortex-a17 family" if ARCH_MULTI_V7
select HAVE_ARM_ARCH_TIMER
select ARM_CCI
select ARCH_HAS_RESET_CONTROLLER
select RESET_CONTROLLER
select PM_OPP
select PMC if SMP
select PINCTRL
help
Support for Hisilicon Hi3519V101 Soc family
添加了之后就相当于定义了CONFIG_PINCTRL=y,CONFIG_PINCTRL就算是PINCTRL的全称,这时候进行menuconfig时就会有Pin controllers选项,选择HI3519 pin controller driver,这样就定义了CONFIG_PINCTRL_HI3519=y。
配置选项做好之后在pinctrl文件夹中添加两个文件:pinctrl-hi3519.c、pinctrl-hi3519.h作为驱动源文件和头文件。然后在Makefile中添加编译项:
obj-$(CONFIG_PINCTRL_HI3519) += pinctrl-hi3519.o
由于CONFIG_PINCTRL_HI3519已经定义了且为y,那么这句话解析过来就是:
obj-y += pinctrl-hi3519.o
更多推荐
所有评论(0)