首先,我们在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,体验裸机的更多相关文章

  1. tiny4412学习笔记-将uboot、zImage、文件系统烧到emmc中

    1.首先还是要将u-boot写入SD卡中从SD卡启动. 使用读卡器将SD插入电脑中,使用umount卸载u盘, fdisk -l显示其挂载点为 /dev/sdb1 切换到/home/bunfly/im ...

  2. tiny4412学习笔记-将uboot、zImage、文件系统烧到emmc中 (转)

    http://blog.chinaunix.net/uid-30025978-id-4788683.html 1.首先还是要将u-boot写入SD卡中从SD卡启动. 使用读卡器将SD插入电脑中,使用u ...

  3. tiny4412学习(一)之从零搭建linux系统(烧写uboot、内核进emmc+uboot启动内核)【转】

    本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/74080109 版权声明:本文为博主原创文章,转载请注明http://blog.c ...

  4. tiny4412学习之u-boot启动过程

    这个文档简要分析了tiny4412自带的u-boot的启动过程,这个u-boot启用了mmu,并且命令的接收和执行方式跟以前的不同. 文档下载地址: http://pan.baidu.com/s/1s ...

  5. (二)我的Makefile学习冲动&&编译过程概述

    前言 一 年轻的冲动 二 学习曲线 1 Makefile基本语法 2 bash基础 3 world 三 编译过程概述 1 主机预装工具 2 编译host工具 3 编译交叉工具链 4 编译内核模块 5 ...

  6. Linux入门学习教程:虚拟机体验之KVM篇

    本文中可以学习到的命令: 1. aptitude 是apt-get 不会产生垃圾的版本 2.       dpkg -L virtualbox 显示属于该包的文件 lsmod | grep kvmfi ...

  7. 编译Uboot——错误记录

    我使用的是ZLG的EasyARM i.MX280A的开发板.官方提供的编译器时arm-fsl-linux-gnueabihf(gcc 4.4.4).自己尝试使用arm-linaro-linux-gnu ...

  8. Tiny4412 学习

    平台: Tiny4412ADK + S700 + 4GB FlashU-boot: 友善之臂提供的开源U-boot Linux: linux-3.0.31 Android: android_4_1_2 ...

  9. Tiny4412 开发板 编译环境搭建【转】

    本文转载自:http://blog.csdn.net/beijiwei/article/details/51055369 版权声明:本文为博主原创文章,未经博主允许不得转载. /*********** ...

  10. hi3531 SDK 编译 uboot, 改动PHY地址, 改动 uboot 參数 .

    一,编译uboot SDK文档写得比較清楚了,写一下须要注意的地方吧. 1. 之前用SDK里和别人给的已经编译好的uboot,使用fastboot工具都刷不到板子上.最后自己用SDK里uboot源代码 ...

随机推荐

  1. HttpUtility.UrlDecode

    如果在 HTTP 流中传递如空格或者标点符号等字符,它们可能会错误地解释在接收端. URL 编码转换为字符实体等效项; 不允许在 URL 中的字符URL 解码反转的编码. 例如,在嵌入到要在 URL ...

  2. 《C#编程宝典:十年典藏版》阅读笔记(1)

    1.运行时错误,使用Checked块语句进行异常检查与抛出异常. 2.值类型使用线程堆栈保存数据,数据大小大概为1M左右,引用类型使用托管堆保存数据,可以无限分配空间,因为有一个GC垃圾回收机制存在, ...

  3. 移动端bug~~移动端:active伪类无效的解决方法【移动端 :active样式无效】

    移动端:active伪类无效的解决方法[移动端 :active样式无效]2016-09-26  15:46:50 问题: 移动端开发的时候实现按钮的点击样式变化,但是在iphone[safiri Mo ...

  4. el表达式无法获取springmvc的model封装好的数据之解决方法

    近日碰到奇怪的问题,应该挺好解决的,可是就是卡住我两天 下面我来描述一下问题 用的是springmvc,自然需要controller,假设我现在所有的配置都是对的. controller代码 @Req ...

  5. 以Administrator权限运行VS时无法拖入文件

    解决办法 1.从任务管理器中关闭explorer进程(你会发现任务栏什么的都没有了) 2.从任务管理器启动explorer.exe(win8需要手动勾选"以管理员权限运行",win ...

  6. IOS-细节错误

    当页面显示时一直奔溃,错误提示-[UICachedDeviceWhiteColor pointSize]: unrecognized selector sent to instance 原因是设置导航 ...

  7. winform中dataGridView单元格根据值设置新值,彻底解决绑定后数据类型转换的困难

    // winform中dataGridView单元格在数据绑定后,数据类型更改困难,只能迂回实现.有时候需要将数字变换为不同的文字描述,就会出现int32到string类型转换的异常,借助CellFo ...

  8. windows下安装boost库

    工作中现在会接触boost,所以我计划两个月之内努力熟悉一下boost.今天在自己win10系统上尝试安装了boost库,下面把遇到的问题总结一下: 1. 下好1.61版本库,在boost目录下运行b ...

  9. ios 写项目的时候遇到的问题及解决方案(2)

    11.自适应文本高度 NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:]}; CGRect rec ...

  10. Redis的AOF是怎么实现的

    今天通过阅读AOF的实现代码,牵出了许多本来不是必须的话题,也都记下来先: Redis自己搞了一套事件循环机制: http://itindex.net/detail/26944-redis-%E4%B ...