• uboot移植


    总体分析:你的目的是什么?

    你的计划是什么?

    你会碰到什么问题?

    你怎么解决的问题?

    你今天做了该做的事情了吗?

    你今天能把该做的事情做完吗?

    修改注意事项有什么?

    注意:Toodir中的Makefile中的路径nand_spl/board/samsung/smdk6410未作更改

             出现nand BUG测检查nand_spl/board/samsung/oko6410下面的config.mk

    你对S3C6410的了解到了什么程度?

    给数据手册制作书签,方便查询……一个一个找太累了!!!

    调试技巧:将修改的部分做Mark by xcc 方便调试。

    启动成功,flash初始化问题。

    增加一个任务:移植一个Linux,内核版本暂定为3.1吧。

    第一步:建立开放环境

           碰到的问题:交叉编译环境在AMD平台的虚拟机上面出现硬件编译环境不支持的问题。Arm-linux-gcc:souch file cannot found

           解决办法:自建交叉编译环境

    第二步:分析

           实现目标:

    本次移植的功能特点包括:

    • 支持Nand Flash读写
    • 支持从Nor/Nand Flash启动
    • 支持CS8900或者DM9000网卡 
    • 支持Yaffs文件系统 
    • 支持USB下载(还未实现)

    1,  了解u-boot主要目录结构和启动流程,阅读代码

    2,  生成了基本的uboot.bin,烧写到开发板上,测试显示无法正确运行,无法正确初始化硬件

    第三步:移植OK6410开发板的步骤

    OK6410开发板u-bootstage1入口点分析。

    一般在嵌入式系统软件开发中,在所有源码文件编译完成之后,链接器要读取一个链接分配文件,在该文件中定义了程序的入口点,代码段、数据段等分配情况等。那么我们的my2440开发板u-boot的这个链接文件就是cpu/arm1176s/u-boot.lds,打开该文件部分代码如下

    制作文件系统分析例图

     u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成;

        u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。

        各个部分的流程图如下:

     

     

    第三步:开始移植

    1,   建立自己的开发板项目并进行测试

     目前u-boot对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就是对三星一些ARM处理器的支持,有smdk2400、smdk2410和smdk6400,但没有ok6410,所以我们就在这里建立自己的开发板项目。

    问题:根据什么修改移植出我所需要的uboot?

    答:1,uboot文档,Makefile,config文件

    2,   数据手册,更改入口地址,下载地址等

    ******************************************************************************

    **************************用Uboot点亮LED灯,方便uboot的调试**************************

    ******************************************************************************

    LED初始化代码初始化

    View Code
     1 #if defined(CONFIG_S3C6410)  //区别与其他开发板
    2 //根据ok6410原理图可知LED分别由S3C6410的GPM0、12、3口来控制,以下是GPM端口寄存器基地址(查6410的DataSheet得知)
    3 #define GPMCON 0x7F008820 //GPMCON口地址
    4 #define GPMDAT 0x7F008824 //GPMDAT口地址
    5 #define GPMPUD 0x7F008828 //GPMPUD口地址
    6 //以下对寄存器的操作参照S3C6410的DataSheet进行操作
    7 ldr r0, =GPMPUD
    8 ldr r1, =0x7FF //即:二进制11111111111,关闭GPMPUD口上拉
    9 str r1, [r0]
    10
    11 ldr r0, =GPMCON //配置PB5、67、8为输出口,对应PBCON寄存器的第10-17位
    12 ldr r1, =0x111111 //即:二进制000100010001000100010001
    13 str r1, [r0]
    14
    15 ldr r0, =GPMDAT
    16 ldr r1, = ~(1<<3) //即:二进制111,向r1寄存器写入二进制 111值
    17 str r1, [r0] 向GPMDAT寄存器写入111值,此时可以看到开发板的LED4亮,其他三个LED是灭的
    18
    19 #endif



  • 相关阅读:
    C#水晶报表的分页统计字段
    ymPrompt消息提示组件js实现
    C#委托学习 原文推荐:http://www.cnblogs.com/warensoft/archive/2010/03/19/1689806.html?login=1#commentform
    C#之winfrom打印图片
    TreeView控件如何设置节点显示与隐藏,主要是用来做后台权限,没有权限的就隐藏,有权限的就显示?
    C#多线程间同步实例 原文:http://blog.csdn.net/zhoufoxcn/article/details/2453803
    C#反射的应用 原文摘自:http://blog.csdn.net/Tsapi/article/details/6234205
    C#编写的winform程序打包方法
    虚拟机下的CentOS环境中安装Node.js和npm
    RequireJS模块化与GruntJS构建
  • 原文地址:https://www.cnblogs.com/ikesee/p/2416694.html
Copyright © 2020-2023  润新知