首先,咱们在ubuntu创建一个本身的文件夹,个人是:linux
/home/wang/tiny_4412下有ubuntu
datasheet shc(原理图PCB文件夹) src toolsvim
src下有bash
codes u_boot函数
codes是裸机存放位置,u_boot是友善提供的安装包测试
tools下有code
arm-linux-gcc-4.4.3安装包,dnw安装包内存
下面开始体验:开发
1.安装minicom创建通讯(详见另外一篇博文)get
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 //运行
查看出结果。至此完毕 ,回想下都作了什么吧。