zoukankan      html  css  js  c++  java
  • u-boot移植初步尝试-tiny4412

    获取u-boot源代码

      在u-boot官方网站下载uboot源码。ftp://ftp.denx.de/pub/u-boot/

       因为是第一次移植uboot,所以这里选的版本是 u-boot-2013.01

      解压文件到 /home/tiny4412下。

    cd /home/tiny4412/
    tar xvf u-boot-2013.01

      根据 Linux嵌入式驱动学习之路③u-boot配置分析  中可知在执行mkconfig时会从boards.cfg中提取相应的信息。

      所以在boards.cfg中添加相应的信息。

      tiny4412(目标板型号)   arm(CPU架构)         armv7(CPU型号)       tiny4412(开发板名称)            samsung(生产厂家)        exynos(片上系统)

      打开makefile,指定交叉工具链为 arm-linux-

      找一个最类似的board配置修改。这里我们参考的是 origen

    cd board/samsung/
    cp origen tiny4412 -rf
    cd tiny4412/

      修改makefile信息 将origen该为tiny4412

      将origen.c该为tiny4412.c

    将$(obj)/include/configs/origen.h 复制为tiny4412.H

    将tiny441.h中原来的#define CONFIG_SYS_PROMPT "ORIGEN #" 改成


    将原来的#define CONFIG_IDENT_STRING "for ORIGEN" 改成

      

       编译u-boot 

    make distclean
    make tiny4412_config
    make
    

    编译完成后会生成可执行的u-boot.bin文件。  

    将友善之臂中提供的sd_fuse文件夹复制到顶层目录中。

    编译用于生成bl2的工具

    cd sd_fuse; make

     

    将一张大于4G的SDHC卡插入电脑。假设已被识别为/dev/sdb

    cd sd_fuse/tiny4412/
    sudo ./sd_fusing.sh /dev/sdb

      若有以下提示,则制作成功。

        U-boot image is fused successfully.
        Eject SD card and insert it again.

      将sd卡放入开发板,从SD卡启动,无任何现象。

      确认第一条指令运行到了。(点灯)

      在arch/arm/cpu/armv7/start.s的reset 中添加下面几句话

     /* led (GPM4_0~3) on */    /*点亮LED灯*/
        ldr r0, =0x110002E0
        ldr r1, =0x00001111
        str r1, [r0]
        ldr r1, =0x0e
        str r1, [r0, #0x04]
    

      重新制作sd卡,启动,led被点亮。

      然后,我把led灯的指令放到lowlevel_init中,发现灯点不亮。

      反汇编后,查看了一下我觉得没有问题。一直不知道是为什么。后来在整理相对跳转和绝对跳转笔记时,突然想起来会不会是lowlevel_init这个代码在代码段的位置中太靠后了,因为上电之后内存并没有初始化。所以我修改了链接脚本器。

    在arm/arm/cpu/armv7目录中的u-boot.lds的CPUDIR/start.o (.text*)后加上下面一段话后,led灯被点亮。

    CPUDIR/start.o (.text*)
    board/samsung/tiny4412/libtiny4412.o (.text) arch/arm/cpu/armv7/exynos/libexynos.o (.text)

    sdf

  • 相关阅读:
    Java实现 LeetCode 792 自定义字符串排序(暴力)
    Java实现 LeetCode 792 自定义字符串排序(暴力)
    asp.net session对象的持久化
    Java实现 LeetCode 791 自定义字符串排序(桶排序)
    Java实现 LeetCode 791 自定义字符串排序(桶排序)
    Java实现 LeetCode 791 自定义字符串排序(桶排序)
    Java实现 LeetCode 790 多米诺和托米诺平铺(递推)
    Java实现 LeetCode 790 多米诺和托米诺平铺(递推)
    Java实现 LeetCode 790 多米诺和托米诺平铺(递推)
    小白也能看懂的约瑟夫环问题
  • 原文地址:https://www.cnblogs.com/ynxf/p/5965179.html
Copyright © 2011-2022 走看看