说明
编译工具链的差异说明:
uclibc: arm-hisiv300-linux
glibc: arm-hisiv400-linux
1、单独编译内核
在干净的海思3536 SDK上,根据 osdrv/readme_cn.txt 文档说明,单独编译kernel:
$ cd osdrv/opensource/kernel/linux-3.10.y/
$ cp arch/arm/configs/hi3536_full_defconfig .config
$ make ARCH=arm CROSS_COMPILE=arm-hisiv400-linux- menuconfig
$ make ARCH=arm CROSS_COMPILE=arm-hisiv400-linux- uImage
*注:编译成功后内核的存放路径:arch/arm/boot/uImage
2、运行内核卡死:
在板子上烧录并运行内核时,卡死位置如下:
bio: create slab at 0
3、问题原因分析
1:海思默认的内核配置:主CPU + 从CPU + PCI_MODE
2:而我使用的板子只使用了主CPU(mpp_single模式),所以运行内核时会直接卡死。
4、解决方法
1:为了确保一切正常,可以在干净的SDK上先对osdrv整体编译一次,参考《编译海思osdrv》
2:编译osdrv成功后,在 osdrv/pub/image_glibc_single/ 会生成可以正常运行的内核(uImage_hi3536:3.7M)。
3:若大家对海思自编译的内核大小不满意,可以在 osdrv/opensource/kernel/linux-3.10.y/.config 的基础上重新做裁剪即可。
*注:如果大家不知怎么裁剪内核,可参考下一章:海思3536内核裁剪方法(详解)