Linux内核驱动基础(3)uboot内核初步移植

来源:互联网 发布:计划经济苏联 知乎 编辑:程序博客网 时间:2024/05/12 07:11

一 概述

接下来要讲的移植方法主要针对老版本linux内核(version< 2.6.37),由于新版本linux内核开始使用设备树来添加板级信息,所以linux内核版本大于3.0的,该移植方法已经过时

 

二 Linux内核初步移植

linux内核移植是指将linux内核重新运行到新的电路板上

内核移植主要包括以下两个方面的移植

体系架构移植 即将linux内核移植到一个全新的SOC体系上面,需要添加CPU调度,内存管理,编写各种总线控制器驱动,对DMA,IRQ,TIMER,GPIO,CLOCK等设备资源进行统一封装,使得内核驱动开发者可以直接使用request_dma(),request_irq(),clk_get(),gpio_request这样的函数来申请DMA,中断,时钟,GPIO等等

对于上述移植一般是SOC级的移植,由主芯片厂商完成

 

设备外设移植  芯片已经正常工作,根据不同的外设,裁剪添加不同的驱动,今天讨论的相对比较简单,主要是建立板卡的基本代码,并不进行驱动的配置和移植

 

步骤如下:

 

1 进入arch/arm/mach-omap2,修改Makefile和Kconfig文件

添加新板卡编译方式


如上图所示:Kconfig中添加新板卡选项


如上图所示:Makefile中添加新板卡编译选项

 

2 进入arch/arm/tools,在mach-types中添加新板卡的arch_number

注意arch_number要和uboot的arch_number一致


 

3添加配置文件

选取与该板卡原理图相近的板卡,拷贝它的配置文件

arch/arm/configs/xxxx_defconfig作为自己的配置文件,然后再根据板卡原理图添加/删除相应的驱动程序

 

4 添加板级文件

选取与该板卡原理图相近的板卡,拷贝它的板级文件

arch/arm/mach-omap2/board-xxx.c作为自己的板级文件,然后修改MACHINE_START后面的板卡参数,再根据原理图添加/删除代码


通过以上四个步骤,新板卡的内核就已经可以跑起来了.

 

三 uboot初步移植

1 修改uboot顶层目录的Makefile,为新板卡添加uboot编译选项,主要是添加nand,sd卡等编译方式

2 将内核源码树的include/generated/mach-types.h(自动生成的文件)替换uboot源码树的arch/arm/include/asm/mach-types.h,使得uboot的arch_number和linux内核保持一致

3 添加配置文件,选取与该板卡原理图相近的板卡,拷贝他的配置文件include/configs/xxx.h作为自己的配置文件. 特别需要注意的地方是DDR大小,DDR频率的配置,串口的配置等等

4 添加板级文件,选取与该板卡原理图相近的板卡,拷贝他的板级文件board/ti/ti8168/evm.c作为自己的板级文件. 特别需要注意的地方是添加正确的arch_number


转载,请注明  匠牛社区AM5728开发板

 

0 0
原创粉丝点击