首先,我們在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 //運行
查看出結果。至此完畢 ,回想下都做了什么吧。
新聞熱點
疑難解答