内核启动参数设置
SylixOS内核启动的时候需要传入一些参数以打开、关闭或者设置内核的一些功能组件,这是通过调用API_KernelStartParam 这个接口来实现的:
这些参数根据实际的需要进行设置,这里只介绍几个比较重要的:
- ncpus:设置系统使用的cpu的个数,在开发多核BSP时,可以先将这个参数设置为1,在单核下将最小系统完成后再改成多核进行调试。
- kdlog:内核日志,内核在创建线程、信号量等等事件时会输出打印信息,这个参数就是控制是否开启这些打印信息。一般在最小系统开发时,我们需要将这个参数设置为yes,在开发完成后再改回no 关闭。
- kderror:内核出错时是否输出相关的打印信息,一般都需要输出,使用默认的yes 即可。
- kfpu:内核是否使用硬件浮点寄存器,SylixOS内核默认不使用硬件浮点寄存器。
- heapchk:是否进行堆越界检测,一般都打开。
- hz:系统tick的频率,默认100,一般设置为100或者1000,不易设置过高。
- hhz:高度定时器频率,默认100,需要BSP的支持。
- sldepcache:这个参数只在arm平台上使用,用于指明当前架构的自旋锁实现是否依赖于Cache。因为在系统启动过程中,可能会在Cache还未打开的情况下就使用自旋锁,通过这个参数告诉系统在启动过程中不要使用这些依赖Cache的指令。在全志R16平台,这个参数需要设置为yes 。
- rfsmap:用于指明系统根文件系统映射关系。在实际情况下,根文件系统可以挂载在SD卡、eMMC、Nandflash、内存等各种存储介质上,这个参数就是用来选择具体怎么挂载的。在最小系统的开发阶段,由于我们还没有实现SD卡等存储介质驱动,所以都是挂载在内存文件系统上,也就是这个参数需要设置为rfsmap=/:/dev/ram 。
根据上述的讲解,我们将全志R16平台上的启动参数设置如下:
API_KernelStartParam("ncpus=1 kdlog=yes kderror=yes kfpu=no heapchk=yes " "sldepcache=yes hz=1000 hhz=1000 " "rfsmap=/:/dev/ram");
评论