移植linux kernel,应该怎么做

工作需要,公司做的soc芯片换处理器核,本人负责对linux kernel完成跨处理器的移植(arm到powerpc),是小端处理器到大端处理器的移植。因公司soc涉及的模块较多,kernel移植我要完成kernel稳定启动,并且能正常进入console,只有串口驱动。剩余的驱动模块交由各个模块驱动开发人员来完成移植工作。

做了3周左右,代码部分已经根据powerpc的kernel框架修改了原来针对arm的板级支持包,换核后的soc处于FPGA验证阶段,现在kernel已经可以进入console,但是发现核的cache部分有问题,console还不能正常使用(用户空间是cached)。待IC工程师修复cache问题后,问题应该就不大了。

这个移植工作,有很多比方都是值得总结的,如kernel移植思路,大小端移植问题等。

今天就对于移植kernel的思路来总结下,这里总结不涉及具体代码,而只是说说保证kernel能进入console稳定运行这样一个最小系统,我们需要完成哪些部分的移植呢。

根据这次移植我的思路,需要以下几个方面的移植:

cpu core初始化,内存管理子系统(mmu),硬件时钟系统,早期调试打印机制,异常中断子系统,时间子系统(timer),串口驱动


1 cpu core初始化

cpu core的初始化主要指cpu的工作模式,通用寄存器初始化,cache初始化,异常入口初始化,mmu初始化等。也就是cpu core内部各个单元模块的初始化。

这部分针对主流cpu core的各个系列,kernel中都有支持,一般在arch/xxx(处理器类型)/kernel/head_xx.S中,需要我们改动的部分很少,但了解其过程对于解决一些奇怪问题还是有帮助的。

如处于仿真验证阶段的soc,我遇到的cache读写有问题

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值