zoukankan      html  css  js  c++  java
  • uboot移植之建立新板、初始化时钟/SDRAM/UART

    先uboot中建立一个新单板:

    1、在booard/sansung下复制一份smdk2410文件夹,重命名为smdk2440

    2、在include/configs下复制一份smdk2410.h,重命名为smdk2440.h

    3、在uboot的根目录的boards.cfg文件中:

    仿照
    smdk2410 arm arm920t - samsung s3c24x0
    添加:
    smdk2440 arm arm920t - samsung s3c24x0

    smdk2410的uboot启动流程总结如下:

    1、设置cpu为管理模式
    2、关看门狗
    3、屏蔽中断
    4、设置时钟比例
    5、设置内存控制器
    6、设置栈,调用C函数board_init_f
    7、调用函数数组init_sequence里的各个函数
      board_early_init_f : 设置系统时钟、设置GPIO

    SDRAM的初始化与时钟相关,所以应该先初始化时钟,再初始化SDRAM,所以在屏蔽完中断之后直接初始化时钟,把系统时钟设为400MHz:

     修改完时钟以后,SDRAM的初始化也要修改,在u-boot-2012.04.01/board/samsung/smdk2440/lowlevel_init.S路径下修改为如下代码:

    烧写uboot后串口打印出乱码,串口的配置应该也有问题,串口的初始化函数是在init_sequence指针数组的serial_init函数中实现;

    查看串口波特率的设置,发现在get_HCLK里没有定义CONFIG_S3C2440

    处理措施:include/configs/smdk2440.h:

    去掉#define CONFIG_S3C2410

    加上#define CONFIG_S3C2440

    由于去掉了CONFIG_S3C2410的宏定义,导致s3c2410_nand.c的编译因为没有这个宏定义而出错,解决办法是暂时先不编译这个文件:

    //#define CONFIG_CMD_NAND

    修改完的uboot有将近330K的大小,用openjtag下载太慢,可以选择先下载一个200K的小uboot,再用uboot的usb下载功能下载新uboot:

    1、先用usb 1 30000000命令通过dnw软件把uboot下载到SDRAM起始地址0x30000000处,

    2、关闭写保护:protect off all

    3、擦除norflash扇区:erase 0 7FFFF

    4、把内存中的新uboot写入norflash的0地址处:cp.b 30000000 0 80000

    出现如下画面:

     串口成功打印出信息,但flash部分代码还需要修改。

  • 相关阅读:
    POJ 1300 Open Door
    POJ 2230 Watchcow
    codevs 1028 花店橱窗布置
    codevs 1021 玛丽卡
    codevs 1519 过路费
    codevs 3287 货车运输
    codevs 3305 水果姐逛水果街二
    codevs 1036 商务旅行
    codevs 4605 LCA
    POJ 1330 Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/physworld/p/15031860.html
Copyright © 2011-2022 走看看