• 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部分代码还需要修改。

  • 相关阅读:
    存储过程
    loadrunner性能测试——入门
    loadrunner性能测试——第一步 录制脚本(中文版)
    LoadRunner初级教程
    LoadRunner培训初级教程
    帮同学参加数学建模做的求点集间最短距离,时间复杂度300*300
    整数划分问题
    MOOC《Python网络爬虫与信息提取》学习过程笔记【requests库】第一周4-
    MOOC《Python网络爬虫与信息提取》学习过程笔记【requests库】第一周1-3
    我的博客园链接
  • 原文地址:https://www.cnblogs.com/physworld/p/15031860.html
Copyright © 2020-2023  润新知