zoukankan      html  css  js  c++  java
  • tiny4412学习一:编译uboot,体验裸机

    首先,我们在ubuntu建立一个自己的文件夹,我的是:​

    /home/wang/tiny_4412下有

    datasheet  shc(原理图PCB文件夹) src tools

    src下有

    codes   u_boot

    code​​s是裸机存放位置,u_boot​是友善提供的安装包​

    tools下有​

    arm-linux-gcc-4.4.3安装包,dnw安装包​​​

    下面开始体验:​

    1.安装minicom建立通信(详见另一篇博文)​

    2.安装linux-gcc

      1〉解压安装 :sudo tar zxvf arm-linux-gcc-4.4.3.tar.gz -C /​

           直接解压后就可以,-C/会让解压的文件自动放在根目录下指定路径,不用管)​

           注意:C后面有个空格(不需要),并且C是大写的(必须),它是英文单词“Change”

           的第一个字母,在此是改变目录的意思。执行该命令,将把arm-linux-gcc 安装

           到/opt/Friendlyarm/toolschain/4.4.3 目录。​​

       2〉建立目录:​

           sudo mkdir /usr/local/arm

       3〉复制文件:​

           sudo cp -r /opt/FriendlyARM/toolschain/4.4.3        /usr/local/arm​

       4〉添加环境变量:​

           在终端输入 sudo vim   /root/.bashrc,在最后一行输入:​

           export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin (路径)

           (注意等号那边不要有空格)​​

           立即使新的环境变量生效:

            ./etc/bash.bashrc或source /root/.bashrc

    ​   5〉安装兼容库,在终端输入:sudo apt-get install g++-multilib

       6〉测试成功没有,登录root后输入: arm-linux-gcc -v

            这个命令会显示arm-linux-gcc信息和版本    或者

            另开一个终端,输入arm-,然后按两下Tab,如果出现下列信息,则表明安装 

            成功​

    3.进入u_boot目录​编译,执行​

           make clean​       //先清除

           make distclean  //再清除配置,整个过程里面就什么都没了​

           make tiny4412_config   //这必须的​

           make   //至此编译完成​

    4.把编译完的u_boot烧到SD卡里​

       1〉插进电脑执行:

           fdisk -l   //查看SD是否被发现

           如果SD自动被挂载,则需要先卸载,查看​​ls  /media/​​

        2〉进入目录:/sd_fuse/tiny4412   执行​

           ./sd_fusing .sh    /dev.sdb  (就是sdb,不是sdb1也不是sdb2)​

           如果提示缺少一个mkbl2,我们只需要返回上一目录执行make再回来执行就好了。

        3〉把卡拔下来插到开发板上,开关拨至SD启动。

             再打开另一个终端执行:minicom

            启动开发板,在出现的界面快速按空格。我们可以看到开发板从SDMMC启动。

    5.修改u_boot,建立裸机环境

       1〉关闭MMU

           因为开MMU 的话,System.map里面所有函数地址都映射到c里面,

           因为我们之后要做中断处理,开发裸机需要直接访问他们的物理地址,​​​

           查看System.map:在u_boot目录下执行:vim  System.map

           关闭:​vim include/configs/tiny4412.h

           进入后输入:/MMU查找

          把#define CONFIG_ENABEL_MMU改成#undef    CONFIG_ENABEL_MMU  

          保存:wq​

       2〉执行:​

           vim  board/samsung/tiny4412/config.mk​​

           把地址改成:0x43e0 0000​  (以后也可以用5.6.7)

           因为开发板内存地址是:4000 0000到5000 0000  256M​

                                                7000 0000到8000 0000  256M  共256Mx4  1G内存​

       3〉重新编译u_boot​  执行:make​​

    6.把编译完的u_boot烧到SD​

       把SD卡插入电脑,查看加载进来没​

       fdisk -l​

      进入:cd sd_fuse/​

        cd  tiny4412​

        ./sd_fusing.sh   /dev/sdb  //烧进SD​

        分成4部分烧进SD,查看烧写位置:vim sd_fusing.sh,怎样烧写的内容不容易查看。

    7.SD卡插进开发板,启动查看。(记得按空格哦)

    8.查看改动:vim System.map

       查看printf地址:/printf

       看到地址为:43e1 1e78 复制下来

    9.进入​​裸机程序目录,更改代码:​

       #include "regs.h"

       void (*printf)(char *, ...) = 0x43e11e78;   //地址改

       int test(void)

       {

         unsigned long value = 0;

         __asm__ __volatile__ (

         "mrs %0, cpsr "

         : "=&r" (value)

        );

       printf(" value = 0x%x ", value);

       return 0;

       }​

       保存wq退出,执行:make​

       可以看到链接地址是7000 3000​

    10.安装dnw,开发板用USB线连接电脑。​

       在minicom终端界面:dnw  70003000​

       在目录操作终端界面;lsusb  查看三星的设备(此时没驱动,没命令)​

       接下来安装dnw:​

       进入dnw安装包目录:执行​

       tar zxf dnw_linux.tar.gz​

       cd dnw_linux​

       make​

       make install​  //安装完毕​

    11.进入裸机代码目录执行:​

       dnw test.bin  //传到开发板  前提在minicom终端界面执行过:dnw 70003000​

    12.在minicom终端界面执行:​

       go  70003000  //运行

    查看出结果。至此完毕 ,回想下都做了什么吧。

  • 相关阅读:
    javascript常用知识点总结
    【HOJ1356】【Miller_rabin素性测试】Prime Judge
    【POJ1568】【极大极小搜索+alpha-beta剪枝】Find the Winning Move
    【CF39E】【博弈论】What Has Dirichlet Got to Do with That?
    【BZOJ2281】【博弈论+DP】 [Sdoi2011]黑白棋
    【HDU3802】【降幂大法+矩阵加速+特征方程】Ipad,IPhone
    【POJ3243】【拓展BSGS】Clever Y
    【HDU2815】【拓展BSGS】Mod Tree
    【模板】【网络流】Dinic
    【模板】【凸包】Graham_scan
  • 原文地址:https://www.cnblogs.com/samewang/p/4774129.html
Copyright © 2011-2022 走看看