1.Kernel的单独编译和验证
1.1 打补丁
- tar.gz的压缩比例没有那么狠
- tar.xz的压缩比例则更狠,先得用xz软件解压成gz
14 cd opensource/kernel
15 tar -xzvf linux-4.9.37.tar.gz
16 mv linux-4.9.37 linux-4.9.y
17 cd linux-4.9.y
18 patch -p1 < ../linux-4.9.37.patch
19 cd ../
20 tar -czvf linux-4.9.y.tgz linux-4.9.y
21 cd ../../
1.2 编译Image
1.2.1 readme上的说明
46 (4)单独编译kernel(以hi3516dv300举例):
47 注意:单独编译内核之前请先阅读osdrv/opensource/kernel下的readme_cn.txt说明。
48
49 待进入内核源代码目录后,执行以下操作
50 cp arch/arm/configs/hi3516dv300_smp_defconfig .config
51 (emmc启动时执行如下操作:cp arch/arm/configs/hi3516dv300_emmc_smp_defconfig .config)
52
53 make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
54 make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage
1.2.2 具体操作过程说明
首先,生成相应的.config文件,并且要对应是EMMC的才行
cd /home/book/Hi3516DV300_Original/Hi3516CV500_SDK_V2.0.2.0/osdrv/opensource/kernel/linux-4.9.y cp arch/arm/configs/hi3516dv300_emmc_smp_defconfig .config -f
make menuconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
其实这一步的menuconfig,也是在生成.config文件而已
注意这一步也是要先load那个.config文件编译Image
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage -j8
在刚刚的步骤中,只是把make menuconfig中选择为y的部分编译进去了
实际上,在海思当中,有很多驱动是以模块的形式存在的,需要单独编译ko文件
1.3 编译模块
这一步,就是把配置为M的那些东西,也把它编译出来了
其实,也就是编译ko文件
编译好ko文件后,就把这些ko文件复制到根文件系统中去
当系统起来后,再通过imsmode的方式去加载它
1.3.1 readme中的说明文件
56 (5)单独编译模块(以hi3516dv300举例):
57 待进入内核源代码目录后,执行以下操作
58 cp arch/arm/configs/hi3516dv300_smp_defconfig .config
59 (emmc启动时执行如下操作:cp arch/arm/configs/hi3516dv300_emmc_smp_defconfig .config)
60 make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
61 make ARCH=arm CROSS_COMPILE=arm-himix200-linux- modules
1.3.2 具体操作过程说明
首先,生成相应的.config文件,并且要对应是EMMC的才行
cd /home/book/Hi3516DV300_Original/Hi3516CV500_SDK_V2.0.2.0/osdrv/opensource/kernel/linux-4.9.y cp arch/arm/configs/hi3516dv300_emmc_smp_defconfig .config -f
make menuconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
其实这一步的menuconfig,也是在生成.config文件而已
注意这一步也是要先load那个.config文件编译模块
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- modules -j8
2烧录
2.1 Kernel的路径
cd /home/book/Hi3516DV300_Original/Hi3516CV500_SDK_V2.0.2.0/osdrv/opensource/kernel/linux-4.9.y/arch/arm/boot