系统移植第四天

系统移植第四天
内核的配置编译
[1]拷贝linux-2.6.35-farsigt.tar.gz 到虚拟机
[2] tar xvf linux-2.6.35-farsigt.tar.gz
[3] 配置交叉编译器
在Makefile中,修改如下:
ARCH ?= arm
CROSS_COMPILE ?= arm-cortex_a8-linux-gnueabi- 
[4] 内核配置
    cp arch/arm/configs/s5pc100_defconfig .config(内核存储当前配置的文件)         恢复开发板默认配置
     make menuconfig 根据需要修改内核配置
 
内核配置项添加(即:加Kconfig脚本文件)
[1] 创建实验目录
    mkdir hello
[2] 创建实验目录中的Kconfig脚本文件
    cp ../Kconfig .   
[3] 修改Kconfig脚本为实验脚本
1. 打开Kconfig脚本的时候,如果提示是否转换为dos文件,一定要选择否,因为Kconfig脚本文件必须为非dos(linux文本文件) 
2. 添加实验脚本 
[4] 添加新的Kconfig脚本到内核工程
1. 打开上一级目录的Kconfig脚本
2. 添加如下语句:
source “driver/hello/Kconfig”(这个路径一定要从内核源代码树的跟目录开始)

内核启动过程
[1] 检查cpu的id
从cpu硬件里面读取cpu id,和内核中支持cpu的列表进行对比,如果说没有找到,打印‘p'
出错的可能性很小 
[2] 检查主板id
用r1中的mach type id值(u-boot传输过来的)和内核支持的mach type id列表进行对比,如果没有找到,打印'a'
出错的可能性非常大,如果出错,检查BootLoader传输到r1的值是否正确 
[3] 内核驱动模块(静态编译到内核)的循环加载
如果加载的驱动模块存在问题,会导致内核启动崩溃
在加入新的驱动后,容易出现这个问题 
[4] 打开console终端,并且把它指定为内核的标准输入、标准输出和标准错误
    如果console终端打开失败,内核可以继续启动,但是会出现警告 
[5] 挂载根文件系统(即:挂载到“/"的文件系统)
    如果挂载根文件系统失败,内核会直接挂死
    这个错误经常出现,常见的问题:
    1. root=参数指定的设备不存在,或者该设备上没有存放根文件系统
    2. 根文件系统类型,内核无法失败,或者编译根文件系统的编译器和编译内核的编译器不兼容
[6] 在根文件系统中寻找init程序(第一个运行的应用程序)
    如果指定的init程序不存在或者格式不内核无法支持,会运行失败,内核会直接挂死
    这个错误经常出现,常见的问题:
    1. 检查init=参数指定的文件是否存在
    2. 检查init=参数指定的应用程序文件格式内核是否支持

内核配置
[1] 配置原理
    Kconfig 产生配置项值
[2] 编译原理(编译过程、模块编译原理)
    obj-y 静态编译到内核的目标文件
    obj-m 动态编译到内核的目标文件
    obj-$(配置项)
[3] 内核启动流程
    1. 内核检查是否支持指定的CPU(正在运行)
       不支持: 打印p错误
    2. 内核检查是否支持指定主板(正在运行)
       不支持:打印a错误
       原因:
       1. 内核不支持主板
          在做最小系统调试,不可能出现  
       2. BootLoder传递给内核的mach id错误
          在做最小系统调试,只可能是这种情况
    3. 驱动加载(静态加载的驱动)
       出错:驱动出错有可能导致内核崩溃
    4. 打开console终端,把它做为标准输入、标准输出和标准错误
       出错:出错会打印错误信息
    5. 挂载根文件系统到"/“
       出错:挂死
       原因:
       内核的root=参数指定的文件系统所在的设备错误
       1. root=参数指定的设备不存在
       2. 设备存在,但设备上没有文件系统
       3. 设备存在,文件系统也有,但是内核不支持文件系统格式
    6. 启动init进程
        出错:挂死
        原因:
        1. 文件系统中没有init=参数指定的程序
        2. 文件系统中存在init程序,程序的格式内核不支持 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值