rk3399prod内核编译及驱动相关

文章目录

前言

吐槽,必须得吐槽,现在国内的商家怎么这么不专业,做块板子,如果需要其他人做某些事情,你的文档是不是得齐全点,你的技术支持是不是得勤快点。

最近在使用国内某商家的rk3399prod(为了避免不必要的纠纷,还是不提名字了,我不说他不改迟早也玩完)。需要用到gpio引脚驱动外部的按键,结果很不正常,接线重启后电平很异常,撤掉线又很正常,怀疑是驱动问题。

于是开始挖坑编译gpio驱动,对这块完全陌生。根据他们的说法,找到kernel的下载地址。然后有wiki教程,结果照着上面敲各种问题。为啥教程不写完整点呢?无语。

1 内核编译

我是在ubuntu18环境下编译的

中途出现以下问题:
1)./make.sh: line 34: genext2fs: command not found
安装工具sudo apt-get install genext2fs

2)gcc: error: unrecognized command line option ‘-mlittle-endian’
这个是使用了系统gcc,要用交叉编译工具 aarch64的gcc。由于执行的make.sh脚本,自然得去里面修改,结果:

JOB=`sed -n "N;/processor/p" /proc/cpuinfo|wc -l`
DTB=eaidk

function help()
{
	echo "Usage: ./make.sh os"
	echo
	echo "Parameter:"
	echo "1) os:    should be android or linux"
	echo
	echo "e.g. ./make.sh android"
	echo "     ./make.sh linux"
}

if [ $# -lt 1 ];then
	help
	exit 1
fi

case $1 in
	android)
		make rockchip_defconfig
		make ARCH=arm64 rk3228h-${DTB}-android.img -j${JOB}
		;;
	linux)
		mkdir -p boot_linux/extlinux
		make rockchip_linux_defconfig
		make ARCH=arm64 rk3228h-${DTB}-linux.img -j${JOB}
		cp -f arch/arm64/boot/dts/rockchip/rk3228h-${DTB}-linux.dtb boot_linux/extlinux/rk3228h.dtb
		cp -f arch/arm64/boot/Image boot_linux/extlinux/
		cp -f extlinux.conf boot_linux/extlinux/
		genext2fs -b 32768 -B $((32 * 1024 * 1024 / 32768)) -d boot_linux -i 8192 -U boot_linux.img
		rm -rf boot_linux
		;;
	factory)
		mkdir -p boot_linux-ft/extlinux
		make rockchip_linux_defconfig
		make ARCH=arm64 rk3228h-${DTB}-linux.img -j${JOB}
		cp -f arch/arm64/boot/dts/rockchip/rk3228h-${DTB}-linux.dtb boot_linux-ft/extlinux/rk3228h.dtb.orig
		make ARCH=arm64 rk3228h-${DTB}-factory.img -j${JOB}
		cp -f arch/arm64/boot/dts/rockchip/rk3228h-${DTB}-factory.dtb boot_linux-ft/extlinux/rk3228h.dtb
		cp -f arch/arm64/boot/Image boot_linux-ft/extlinux/
		cp -f extlinux.conf boot_linux-ft/extlinux/
		genext2fs -b 32768 -B $((32 * 1024 * 1024 / 32768)) -d boot_linux-ft -i 8192 -U boot_linux-ft.img
		rm -rf boot_linux-ft
		;;
	*)
		help
		exit 1
		;;
esac

exit 0

这rk3228h什么鬼,眼睛一扫就感觉不对,这个文件完全是需要改的好伐?唉. 贴出我修改后的

JOB=4
DTB=toybrick-prod
TY=rk3399pro
TKCC=/xxx/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
linux)
		mkdir -p boot_linux/extlinux
                make rockchip_linux_defconfig
                make ARCH=arm64 ${TY}-${DTB}-linux.img CROSS_COMPILE=${TKCC} -j${JOB}	
		cp -f arch/arm64/boot/dts/rockchip/${TY}-${DTB}-linux.dtb boot_linux/extlinux/${TY}.dtb
		cp -f arch/arm64/boot/Image boot_linux/extlinux/
		cp -f extlinux.conf boot_linux/extlinux/
		genext2fs -b 32768 -B $((32 * 1024 * 1024 / 32768)) -d boot_linux -i 8192 -U boot_linux.img
		rm -rf boot_linux
		;;

看看我的改动有多大,试了n次才成功。

JOB用过的都知道,线程数量,通过cpuinfo查看cpu数量然后决定开多少线程编译,可以直接写数字的
DTB 需要进到kernel/arch/arm64/boot/dts/rockchip去看对应的版本
TY 是我自定义的代表板子的型号
TKCC则是需要的交叉编译工具,aarch64-linux-gnu-gcc如果存在,要写成aarch64-linux-gnu-才能成功
然后添加了CROSS_COMPILE
这些试出来,真的心累!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值