首先,咱們在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 //運行
查看出結果。至此完畢 ,回想下都作了什麼吧。