tiny4412学习一:编译uboot,体验裸机
首先,我们在ubuntu建立一个自己的文件夹,我的是:
/home/wang/tiny_4412下有
datasheet shc(原理图PCB文件夹) src tools
src下有
codes u_boot
codes是裸机存放位置,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,体验裸机的更多相关文章
- tiny4412学习笔记-将uboot、zImage、文件系统烧到emmc中
1.首先还是要将u-boot写入SD卡中从SD卡启动. 使用读卡器将SD插入电脑中,使用umount卸载u盘, fdisk -l显示其挂载点为 /dev/sdb1 切换到/home/bunfly/im ...
- tiny4412学习笔记-将uboot、zImage、文件系统烧到emmc中 (转)
http://blog.chinaunix.net/uid-30025978-id-4788683.html 1.首先还是要将u-boot写入SD卡中从SD卡启动. 使用读卡器将SD插入电脑中,使用u ...
- tiny4412学习(一)之从零搭建linux系统(烧写uboot、内核进emmc+uboot启动内核)【转】
本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/74080109 版权声明:本文为博主原创文章,转载请注明http://blog.c ...
- tiny4412学习之u-boot启动过程
这个文档简要分析了tiny4412自带的u-boot的启动过程,这个u-boot启用了mmu,并且命令的接收和执行方式跟以前的不同. 文档下载地址: http://pan.baidu.com/s/1s ...
- (二)我的Makefile学习冲动&&编译过程概述
前言 一 年轻的冲动 二 学习曲线 1 Makefile基本语法 2 bash基础 3 world 三 编译过程概述 1 主机预装工具 2 编译host工具 3 编译交叉工具链 4 编译内核模块 5 ...
- Linux入门学习教程:虚拟机体验之KVM篇
本文中可以学习到的命令: 1. aptitude 是apt-get 不会产生垃圾的版本 2. dpkg -L virtualbox 显示属于该包的文件 lsmod | grep kvmfi ...
- 编译Uboot——错误记录
我使用的是ZLG的EasyARM i.MX280A的开发板.官方提供的编译器时arm-fsl-linux-gnueabihf(gcc 4.4.4).自己尝试使用arm-linaro-linux-gnu ...
- Tiny4412 学习
平台: Tiny4412ADK + S700 + 4GB FlashU-boot: 友善之臂提供的开源U-boot Linux: linux-3.0.31 Android: android_4_1_2 ...
- Tiny4412 开发板 编译环境搭建【转】
本文转载自:http://blog.csdn.net/beijiwei/article/details/51055369 版权声明:本文为博主原创文章,未经博主允许不得转载. /*********** ...
- hi3531 SDK 编译 uboot, 改动PHY地址, 改动 uboot 參数 .
一,编译uboot SDK文档写得比較清楚了,写一下须要注意的地方吧. 1. 之前用SDK里和别人给的已经编译好的uboot,使用fastboot工具都刷不到板子上.最后自己用SDK里uboot源代码 ...
随机推荐
- 修改oracle实例名orcl为demo
修改oracle实例名有六步: 1.sqlplus username/password as sysdba登陆,然后从spfile文件创建pfile文件 :create pfile from spfi ...
- BarTender如何将条码下的数字嵌入到条码中
现今社会,在各种包装箱子.书籍.超市商品等东西上面,必不可少的绝对要数条形码或者二维码了.有时候,根据客户的需求或者其他条件限制等原因,我们需要将BarTender 2016条码下的数字嵌入到条码中. ...
- Javascript中数组与字典(即map)的使用
简述: 简单记录一下数据结构Map和数组, 其实在Javascript这种弱类型的脚本语言中,数组同时也就是字典,下面主要就是字典数组的简易使用 代码: 1. 数组中添加map <!DOCT ...
- [mobi文件格式详细介绍一]_[资料篇]
Amazon 收购 Mobipocket 于 2005年3月: Kindle 第一版于2007发布,mobi成为其系统支持的电子格式之一,mobi是由kindle带动发展起来的; 有人问Amazon为 ...
- 如何判断exe或dll的目标平台及是否是.NET?
1. COFF文件头中偏移0处的Machine指示目标机器类型(IMAGE_FILE_MACHINE_AMD64等),偏移18处的Characteristics位指示文件属性(IMAGE_FILE_3 ...
- winform基本控件的使用2(用户登录界面的设计)
首先还是通过例子来讲解,这次的实验主要是使用messageBox的使用方法,关于messageBox的使用方法在我的博客里面有相关的转载,请自己查看,下面说一下实验要求. 功能要求:模拟一个用户登陆的 ...
- logstash无法使用conf启动
最近刚开始学习使用logstash,再安装好后准备验证下第一个demo的时候,出现了问题 Error: Expected one of #, input, filter, output at line ...
- openssl创建非认证的https证书(红色的)
1.生成csr,key openssl req -new -newkey rsa:2048 -sha256 -nodes -out example_com.csr -keyout example_co ...
- javascript判断某种元素是否进入可视区域
判断是否在指定的可视区域内,先用最简单的方式,比如整个页面为可视区域 找到几个关键因素: sTop= $(window).scrollTop(); //滚动条距顶部的高度 clientHeight= ...
- R语言—图像初阶
dev.new() 创建一个新图像之前打开一个新的窗口 win.graph() 同上 pch() 指定绘制点时使用的符号 cex() 指定符号的大小,是一个数值,表示绘图符号相当于默认大小的缩放倍数 ...