码迷,mamicode.com
首页 > 其他好文 > 详细

tiny4412学习一:编译uboot,体验裸机

时间:2015-08-31 23:22:17      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

首先,我们在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\n"

     : "=&r" (value)

    );

   printf(" value = 0x%x\n", 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  //运行

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

tiny4412学习一:编译uboot,体验裸机

标签:

原文地址:http://www.cnblogs.com/samewang/p/4774129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!