linux移植需要考虑什么

推荐文档
难度由低到高分为几个程度
  • 难度1 : 简单
基于某个官方芯片,新增一个电路板

场景
	一般的芯片集成商
	ODM即英语Original Design Manufacturer的缩写,直译为“原始设计制造商”,具体指一家厂商根据另一家产商的要求设计并生产相应产品。
	比如龙旗, 为小米生产手机. 拿的是 高通的方案
	此时 龙旗就要基于高通的骁龙888芯片,新增一个电路板

此时供应商已经提供的porting: // 串口(在SOC里面)肯定是打通的,所以kernel能正常启动到 用户init进程
	1. 母板的porting 

此时需要做的porting:
	1. 相较原厂的母板,如果换DDR,要做DDR的porting 		// 一般不换,或源码本来就支持多个DDR(就不用porting)
	2. 相较原厂的母板,此时换FLASH,要做FLASH的porting 	// 一般不换,或源码本来就支持多个DDR(就不用porting)
	3. ...
	4. 肯定不会换SOC,所以肯定不需要做SOC的porting
  • 难度2 : 复杂
// 主要是 driver(注意:mach-xxx下的描述都是设备描述,不是驱动描述,已经被dts取代) 下的 .c 和 dts 
基于某个微架构,新增一个芯片(同时增加一个电路板)
场景
	比如高通卖方案给龙旗
	此时 高通拿的是ARM的微架构(cortex-A78), 新增一个芯片(骁龙888)

此时供应商已经提供的porting:
	1. ARM架构及微架构的porting
	2. 编译器的porting
	
此时需要做的porting:
	1. 片上控制器的porting
	2. 难度1的所有porting
  • 难度3 : 超级复杂
// TODO ARM没有微架构相关的代码
// ARMv7 的代码适用于所有v7 的 微架构, 不存在还要 配置 微架构config 的情况
基于某个架构,新增一个微架构(同时新增一个芯片和电路板)

场景
	比如ARM卖IP给高通
	此时 ARM 基于 ARMv8 新增一个微架构 cortex-A78

此时供应商已经提供的porting:
	1. ARM架构的porting
	2. 编译器中ARM架构的porting
	
此时需要做的porting:
	1. ARM微架构porting
	2. 编译器中ARM微架构的porting
	3. 难度2的所有porting

  • 难度4: 史诗级复杂
新增一个架构(同时新增一个微架构,芯片和电路板)
场景
	比如ARM,RISCV
	ARM之前(2020年及以前)是没有ARMv9的,ARM新增了ARMv9架构
	RISCV架构之前(2011年之前)是没有的,RISCV基金会新增了RV32和RV64架构

此时供应商已经提供的porting:
	1. 无
	
此时需要做的porting:
	1. ARM架构porting // 参考 [linux arch 提供的函数与宏](https://blog.csdn.net/u011011827/article/details/122557613)
	2. 编译器中ARM架构的porting
	3. 难度3的所有porting

你可能感兴趣的:(杂七杂八总览,armv8,arm开发,X64)