2009年5月5日 星期二

nds32le-linux-gdb + gdbserver + DDD Debugging

1. 編譯helloworld.c程式時,Makefile的FLAGS參數要加上-g -O0.
2. 將PC與開發板使用網路連接.



3. 將"gdbserver"與"helloworld.exe"放置SD卡內,並插入至開發板.
4. 設定開發板網路,使用超級終端機輸入"uphcpc eth0"取得網路IP位置(假設:10.0.2.143).
5. 使用超級終端機輸入"./gdbserver :1111 helloworld.exe"啟動GDB伺服器,1111是自行設定的port參數,可任意輸入其他的數值.
6. 使用"Terminal"輸入"ddd --debugger ../(gdb位置)nds32le-linux-gdb (執行檔位置)/helloworld.exe".
注意:若無安裝DDD,請輸入"sudo apt-get install ddd"安裝.
7. 在DDD下方的指令視窗輸入"target temote 10.0.2.143:1111",連線至開發板.
8. 常用指令:
br main:中斷點設在main().
c:繼續執行直到下一個中斷點或結束.
s:執行一行程式碼,如果碰到函式會跳進函式內部去執行.
n:執行一行程式碼,不會跳進函式去執行.

2009年5月4日 星期一

Embedded Linux系統(3-4)_使用Toolchains bould project(for OS)

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu9.04.
(4). Toolchains: AndeSight v1.3.3 for Linux.
(5). Embedded Linux2.6.18
2.目的:使用NFS Server(Network File System)將讓PC與遠端的AndeShape實驗板分享目錄,這樣編譯完成程式後就不用一直插拔實驗板上的SD卡,實驗前請將PC與實驗板的網路線接好.
3. 範例程式_ HelloWorld4:
1. 在桌面新增一個檔案目錄,名稱為〝andeshape〞,檔案目錄內存入一個名稱為〝andes core〞的文字檔,用來測試使用.注意:
A. 以下實驗網路IP,NSF server端:10.0.2.122 ,Client端:10.0.2.180
B. 手動設一個IP輸入〝ifconfig eth0 10.0.2.180〞.
C. 自動設一個IP(建議使用)輸入〝udhcpc eth0〞.
D. 查詢IP值輸入〝ifconfig -a〞.
2. 使用Terminal輸入〝sudo apt-get install nfs-kernel-server〞安裝NFS serve.3. 輸入〝vim /etc/exports〞開啟檔案,
增加〝/home/acer/Desktop/andeshape *(rw,sync,no_root_squash)〞參數.注意:
A. 如無法開啟,需設定權限輸入〝sudo chmod -R 777 /etc/exports〞.B. 參數設定:
rw: read write,可讀寫.
ro: read only,唯讀.
sync: 資料同步寫入到硬碟中.
async: 資料佔存於記憶體中.
no_root_squash: 分享目錄給登入NFS server的使用者,如果是在root下, 使用者也有root權限.
root_squash: 分享目錄給登入NFS server的使用者如果是root時,會變成匿名使用者.
all_squash: 無論任何使用者登入都成為匿名使用者.
4. 使用Terminal輸入〝sudo /etc/init.d/nfs-kernel-server restart〞啟動NFS server.5. 使用Terminal輸入〝ping 10.0.2.180〞測試PC(NFS server端)與實驗板(Client端)網路是否有通.6. 使用Terminal輸入〝showmount -e localhost〞檢查PC(NFS server端)分享出來的目錄資源.7. 使用Terminal輸入〝sudo mount -t nfs 10.0.2.122:/home/acer/Desktop/andeshape /mnt〞掛載PC目錄(NFS server端).輸入〝cd /mnt〞->〝ls〞測試看是否可以分享的資料.8. 使用GtkTerm輸入〝mount -t nfs 10.0.2.122:/home/acer/Desktop/andeshape /tmp -o proto=tcp -o nolock〞掛載實驗板目錄(Client端).輸入〝cd /tmp〞->〝ls〞測試看是否可以分享的資料.


2009年5月3日 星期日

Embedded Linux系統(3-3)_使用Toolchains bould project(for OS)

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu9.04.
(4). Toolchains: AndeSight v1.3.3 for Linux.
(5). Embedded Linux2.6.18
2. 目的: 將2組URAT都接至PC,開啟2個〝超級終端機〞視窗,當CON2輸入指令執行程式時,另一組視窗CON1就會接收資料.
3. 範例程式_ HelloWorld3:
(1). 撰寫程式前先將URAT線接上,並開啟〝超級終端機〞視窗,MS的超級終端機一次只能開啟一個視窗,建議使用
TeraTerm Pro for MS Windows:
http://andescore.blogspot.com/2009/02/msteraterm-pro.html
Gtkterm for Linux:
http://andescore.blogspot.com/2009/02/linuxgtkterm.html
A. 將COM1與COM2連至PC.B. 修改主程式如下所示.下載完整程式:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/AndeSight%7C_V133%7C_helloworld3/helloworld3.zip
(2). 請依照Embedded Linux 系統(3-1) 步驟3.(7)~3.(10)操作,執行程式,顯示結果如下所示.


2009年5月2日 星期六

Embedded Linux系統(3-2)_使用Toolchains bould project(for OS)

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu9.04.
(4). Toolchains: AndeSight v1.3.3 for Linux.
(5). Embedded Linux2.6.18
2. 目的: 將資料寫入Framebuffer,使LCD顯示顏色.
3. 範例程式_ HelloWorld2:
(1). 撰寫程式前先了解Framebuffer寫入資料的原理.
A. 將Framebuffer寫入資料,LCD就會顯示畫面, Embedded Linux Drive初始設定為16bpp,RGB565格式.B. 再寫入資料時需使用M68(Motorola) I/O格式輸出,寫入RGB data的格式如下所示.C. 依據上述原理修改程式如下所示.下載完整程式:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/AndeSight%7C_V133%7C_helloworld2/helloworld2.zip
(2). 請依照Embedded Linux 系統(3-1) 步驟3.(7)~3.(10)操作,執行程式,顯示結果如下所示.


2009年5月1日 星期五

Embedded Linux系統(3-1)_使用Toolchains bould project(for OS)

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu9.04.
(4). Toolchains: AndeSight v1.3.3 for Linux.
(5). Embedded Linux2.6.18
2. 目的: 執行Embedded Linux,並在超級終端機顯示HelloWorld.
3. 範例程式_HelloWorld1:
(1). 依照下列所示撰寫hello.c程式,此程式只是在主程式顯示printf的簡單範例.下載完整程式:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/AndeSight%7C_V133%7C_helloworld1/helloworld1.zip
完整程式包含一個makefile.(2). 編譯前,先在根目錄指定Toolchains,使用〝Terminal〞輸入〝source bashrc.nds32le-linux-V0〞,指定OS編譯路徑.注意: 新開啟〝Terminal〞視窗要重新輸入.(3). 使用"Terminal"輸入"make rebuild",會產生下列訊息.(4). 之後產生hello.adx執行檔.(5). 將hello.adx存在SD卡內,並裝上ADP-XC5FF676 V1.1實驗板上,並接上URAT與電腦連接後,開啟電源,按SW2->SW4.
注意:一般SD卡格式都為FAT32,在Linux下無法顯示長檔名,如要支援長檔名請將SD卡format成EXT2或是EXT3格式.format步驟如下所示: http://andescore.blogspot.com/2009/02/format-sd-cardext2.html (6). 使用"超級終端機",輸入"91",進入Embedded Linux.(7). 輸入〝mount –o mand /dev/cf /tmp〞掛載SD 卡.(8). 輸入〝cd tmp〞至SD卡檔案掛載位置.(9). 輸入./hello.adx〞執行程式.(10). 程式執行完畢後要卸載SD需再根目錄輸入〝umount /tmp〞.