1.CONFIG_HAVE_KERNEL_GZIP
arm是有这个配置项的,而arm64检索没看到这个配置项,原以为arm64默认支持了,结果最后才看到是arm64不再支持它,而是让bootloader配置支持gzip压缩过的内核镜像。可以在下面的文档中看到对内核压缩镜像的描述
Documentation/arm64/booting.txt
3. Decompress the kernel image
------------------------------
Requirement: OPTIONAL
The AArch64 kernel does not currently provide a decompressor and
therefore requires decompression (gzip etc.) to be performed by the boot
loader if a compressed Image target (e.g. Image.gz) is used. For
bootloaders that do not implement this requirement, the uncompressed
Image target is available instead.
2.CONFIG_SERIAL_AMBA_PL011、CONFIG_SERIAL_AMBA_PL011_CONSOLE
看到arm没有对该项的配置,于是arm64也取消了对其的配置,结果编译得到的内核镜像无法在qemu上通过串口显示,那么多配置项,最终定位到是这两配置项的原因导致了qemu 起内核串口不显示。虽然在配置界面看了该配置项的help 介绍,然而并没看到与qemu 串口显示有什么直接的联系。
3.CONFIG_PGTABLE_LEVELS=4
arm对应配置项值为3,即3级页表,而arm64默认的是4级页表,页表级数本质是看处理器是否支持,当然与系统的位数也有关,好比处理器支持4级页表,而系统是32位的,若32位内核配置为四级页表是不合逻辑的。
4.CONFIG_NO_HZ_IDLE、CONFIG_NO_HZ_FULL
“CONFIG_NO_HZ_IDLE是说在系统idle的时候是没有tick的,当然,在系统运行的时候还是有tick的,因此,我们也称之dynamic tick或者NO HZ mode。3.10版本之后,引入一个full tickless mode,听起来好象任何情况下都是没有tick的,不过实际上也没有那么强,除了CPU处于idle的时候可以停下tick,当CPU上有且只有一个进程运行的时候,也可以停下周期性tick,其他的情况下,例如有多个进程等待调度执行,都还是有tick的。这个配置实际上只是对High-performance computing (HPC)有意义的。”
参考:Linux时间子系统之(十三):Tick Device layer综述
5.CONFIG_VECTORS_BASE=0xffff0000
异常向量基址取决于该配置项,其值可以是0x00000000,也可以是 0xffff0000,arm64没有该配置项,arm64对应的异常向量表的设定待分析,觉得arm64默认配置项是可以实现异常的处理的。
未完待续。。。
虽然参考arm内核配置项对arm64修改了很多配置项,但更多的是照猫画虎,不知其所以然