2005年6月8日 星期三

Old-Qt4.6.0 for Embedded Linux

Qt4.6.0 for Embedded Linux編譯過程,與Qt4.5版有3個不同的差異,但是基本上都是一樣的.
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/Qt%20for%20Embedded%20Linux%204.6.0/Qt%204.6.0%20for%20Embedded%20Linux.pdf


2005年6月2日 星期四

Old-Embedded Linux系統視窗程式設計-QT(4-2)移植tslib

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. 目的:下載並移植tslib,tslib為QT for Embedded Linux 控制觸控面板的函式庫.
3. 下載與移植:
(1). 至下網址下載〝tslib-1.0〞.
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/tslib-1.0/tslib-1.0.zip
注意:編譯前,先在根目錄指定Toolchains,使用〝Terminal〞輸入〝source bashrc.nds32le-linux-V0〞,指定編譯路徑.
(2). 使用〝Terminal〞輸入〝tar -xvf tslib-1.0.tar〞解壓縮.


(3). 輸入〝cd tslib-1.0〞進入tslib-1.0目錄.(4). 輸入./autogen.sh〞(需先使用System->Administration->Synaptic Package Manager 安裝:m4;autoconf;automake;libtool).(5). 至〝config.sub〞修改程式,依下列所示增加參數,這裡要非常注意容易出錯(Tab鍵與空白鍵的差異)〞.(6). 至〝configure.ac〞修改程式,依下列所示,將〝AC_FUNC_MALLOC〞註解掉. (7). 使用〝Terminal〞輸入〝./configure --prefix=$PWD/_install CC=nds32-linux-gcc --host=nds32-linux ac_cv_func_malloc_0_nonnull=yes〞.(8). 在Desktop上新增〝nds32〞檔案夾,用來存放building後產生的執行檔.(9). 新增〝build.sh〞檔,撰寫下列程式.
注意: 〝build.sh〞檔,已撰寫好,與放在tslib-1.0.zip內,但還是需要修改使用者路徑.(10). 將〝build.sh〞檔放置〝tslib-1.0〞目錄下.(11). 使用〝Terminal〞輸入〝./ build.sh〞開始building.(12). 在Desktop上新增檔案夾,內路徑〝/home/acer/Desktop/nds32/home/acer/Desktop/nds32〞產生下列四個檔案夾.(13). 開啟〝/home/acer/Desktop/nds32/home/acer/Desktop/nds32/etc/ts.cof〞檔案,將〝# module_raw input〞改成〝module_raw input〞#號拿掉後存檔.(14). 將〝/bin;/etc;/lib〞三個檔案夾複製至SD卡.
a. 注意:一般SD卡格式都為FAT32,在Linux下無法顯示長檔名,如要支援長檔名請將SD卡format成EXT2或是EXT3格式.format步驟如下所示: http://andescore.blogspot.com/2009/02/format-sd-cardext2.html
b. 因目前ADP-XC5開發板上所使用的OS為AndeSight v1.3.1 Toolchains building 會造成錯誤,請依照Embedded Linux系統(C)_在SD card上執行Embedded Linux http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/Embedded%20Linux%202.6.27%5E_2/XC527 執行AndeSight v1.3.3 Toolchains building的OS,再執行/bin下的執行檔程式.
(15). 使用〝超級終端機〞輸入〝mount –o mand /dev/cf /tmp〞掛載SD 卡.(16). 輸入export參數:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/tmp/lib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/tmp/etc/pointercal
export TSLIB_CONFFILE=/tmp/etc/ts.conf
export TSLIB_PLUGINDIR=/tmp/lib/ts
export TSLIB_FBDEVICE=/dev/fb0
(17). 輸入〝cd tmp/bin〞至SD卡執行檔位置.(18). tslib-1.0下共有五個測試執行檔:
a. 共有./ts_calibrate〞;〝./ts_harvest〞;〝./ts_print〞;〝./ts_print_raw〞; 執行〝./ts_test〞結果如下所示.

b. 再執行〝./ts_calibrate,會在SD卡〝/tmp/etc/〞下產生〝pointercal〞定位檔,需給下一章節QT for Embedded Linux使用.

注意: ADP-XC5實驗板Embedded Linux進入休眠狀態時,輸入
printf “\033[9;0]” > /dev/tty0〞,開啟.
注意:中斷測試程式按〝Ctrl+C〞.
(19). 程式執行完畢後要卸載SD需再根目錄輸入〝umount /tmp〞.




2005年3月3日 星期四

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

1.實驗環境:
(1).在Embedded Linux 2.6 OS上run.
(2).PC OS:Ubuntu 8.10.
(3).實驗平台:ADP-XC5FF676 v1.1(Andes core N12).
2.控制原理:
ADP-XC5FF676 v1.1 有2組URAT, 當其中一組URAT需要外接裝置時,還有一組可以用來輸入LINUX指令,這次的試驗因為沒有URAT外接的裝置,因此我將2組URAT都接至PC,開啟2個"超級終端機"視窗,一組視窗用來輸入LINUX指令[CON2],另一組視窗接收資料[CON1].
3.範例程式_URAT Control:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/URAT/URAT.zip
4.使用"Terminal"進入有Makefile的檔案夾下,輸入"make all"Build code,產生urat.adx執行檔.
5. 將urat.adx存在SD卡內,並裝上ADP-XC5FF676 V1.1實驗板上,並將CON1(/dev/ttyS1) 與CON2(/dev/ttyS0) URAT與電腦連接後,開啟電源,按SW2->SW4.
6. 使用"超級終端機"並開啟2個視窗, 在對應CON2的"超級終端機"視窗輸入"91"進入Embedded Linux.
7. 在Embedded Linux下鍵入:
(1)"mount -o mand /dev/cf /tmp",掛載SD卡.
(2) "cd tmp" 進入SD卡位置.
(3)在存放程式的目錄內輸入"./urat.adx".
8.在"超級終端機"顯示結果如下所示:
*SD卡卸載輸入"umount /tmp"



2005年3月2日 星期三

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

1.實驗環境:
(1).在Embedded Linux 2.6 OS上run.
(2).PC OS:Ubuntu 8.10.
(3).實驗平台:ADP-XC5FF676 v1.1(Andes core N12).
2.控制原理:
LCD 控制只要在Embedded Linux 下,將Framebuffer寫入資料,LCD就會顯示畫面, Embedded Linux Drive初始設定為16bpp,RGB565格式.
再寫入資料時需使用M68(Motorola) I/O格式輸出,寫入RGB data的格式如下所示.3.範例程式_LCD Display Control:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/ESL_LCD/ESL_LCD.zip
for(i=0;i<((240*320)*2);i+=2) //Green
{
*(pFrameBuffer+i)=0xF0;
*(pFrameBuffer+(i+1))=0x07;
}
4.使用"Terminal"進入有Makefile的檔案夾下,輸入"make all"Build code,產生fbv.adx執行檔.
5. 將fbv.adx存在SD卡內,並裝上ADP-XC5FF676 V1.1實驗板上,並接上URAT與電腦連接後,開啟電源,按SW2->SW4.
6. 使用"超級終端機",輸入"91"進入Embedded Linux.
7. 在Embedded Linux下鍵入:
(1)"mount -o mand /dev/cf /tmp",掛載SD卡.
(2) "cd tmp" 進入SD卡位置.
(3) 在存放程式的目錄內輸入"./fbv.adx".
8.在LCD 3.5”顯示結果如下所示:
*SD卡卸載輸入"umount /tmp"



2005年3月1日 星期二

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

1. 實驗環境:
(1).在Embedded Linux 2.6 OS上run.
(2).PC OS:Ubuntu 8.10.
(3).實驗平台:ADP-XC5FF676 v1.1(Andes core N12).
2.範例程式_Hello:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/hello/hello.zip
(1).hello.c
-----------------------------------------------------------------------------
#include "stdio.h"
#include "sys/types.h"
#include "sys/stat.h"
#include "fcnt.h"
int main(void)
{
int fd; char ch;
printf("\nHello World!\n");
sleep(1);
return 0;
}

-----------------------------------------------------------------------------
(2)Makefile
-----------------------------------------------------------------------------
###########################################
# Copyright (C) 2006-2007 Andes Technology, Inc.
#
# Abstract:
#
# Makefile Experiment.
#
# Revision History:
#
# 2007-09-01 First created by Andestech
###########################################

# CROSS Tools
#CROSS=$(PREFIX)/bin/nds32-elf-
CROSS=nds32-elf-

CC = $(CROSS)gcc
AS = $(CROSS)as
AR = $(CROSS)ar
LD = $(CROSS)ld
NM = $(CROSS)nm
OBJCOPY = $(CROSS)objcopy
OBJDUMP = $(CROSS)objdump
READELF = $(CROSS)readelf

# FLAG
CFLAGS = -g3 -O0 -c -mlib=glibc -EL
#CFLAGS = -g3 -O0 -Wall -c
LDFLAGS = -static -mlib=glibc -EL
#ASMFLAGS = -g3 -O0 -Wall -S
#ASFLAGS = -g3

.PHONY: all clean test

OBJECT = hello
CEXE = $(OBJECT).adx

RM := rm -f
OBJECTS = hello.o

# Rules

all: $(OBJECTS)
$(CC) $(LDFLAGS) -o $(CEXE) $(OBJECTS)
@echo 'Finished building.'


hello.o: hello.c
#$(CC) $(CFLAGS) hello.c -o hello.o
$(CC) $(CFLAGS) $< -o $@ clean: $(RM) $(OBJECTS) $(CEXE) @echo 'Finished cleaned.'

-----------------------------------------------------------------------------
3. 將上述的Makefile與hello.c放在同一個目錄下.



4. 使用"Terminal"輸入"make all",會產生下列訊息.
-----------------------------------------------------------------------------
nds32-elf-gcc -g3 -O0 -c -mlib=glibc -EL hello.c -o
hello.onds32-elf-gcc -static -mlib=glibc -EL -o hello.adx hello.o
Finished building.
-----------------------------------------------------------------------------
5. 之後產生hello.o與hello.adx檔.
6. 將hello.adx存在SD卡內,並裝上ADP-XC5FF676 V1.1實驗板上,並接上URAT與電腦連接後,開啟電源,按SW2->SW4.
7. 使用"超級終端機",輸入"91"進入Embedded Linux.
8. 在Embedded Linux下鍵入:
(1)"mount -o mand /dev/cf /tmp" ,掛載SD卡.
(2)"cd tmp"進入SD卡位置.
(3) 在存放程式的目錄內輸入"./hello.adx"
9.在"超級終端機"顯示結果如下所示:
*SD卡卸載輸入"umount /tmp"


2005年2月5日 星期六

Old-Embedded 系統(2-5)_使用Toolchains bould project(for Non OS)

1.使實驗板上TFT LCD 顯示照片.
2.環境:
(1). Linux OS: Ubuntu9.04.
(2).實驗板:ADP-XC5FF676 V1.1(Andes N12 core) .
3. 範例程式_Hello5:
(1).這個範例主要是由Embedded 系統(2-3)程式修改而來,最重要的部分是我在Ubuntu9.04 下撰寫了一個BMP檔轉Hex的程式.
(2).將image_1.bmp檔與bmp2hex程式放在同一個目錄下.

(3).使用〝Terminal〞輸入〝./bmp2hex〞執行程式,再輸入〝run filename.bmp〞指定需要轉換的.bmp檔.下載BMP2HEX程式:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/BMP2HEX/bmp2hex.zip
(4). 轉換完成資訊.
(5). 轉換完成可以看見多了一個〝BMP_24bit.txt〞的純文字檔,開啟純文字檔將內容複製至程式numerals.h中. (6). 主程式中,需做修改的部分程式碼,主要是將image_1陣列內的資料讀出,再送至LCDC. 下載完整程式:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/Non%20OS%7C_hello5/hello5.zip
(7). 請依照Embedded 系統(2-1) 步驟3.(2)~3.(8)操作,執行程式,顯示結果如下所示.


2005年2月4日 星期五

Old-Embedded 系統(2-4)_使用Toolchains bould project(for Non OS)

1.在實驗板上按SW4~8(GPIO),7段顯示器(LED7~8)會同時顯示數字.
2.環境:
(1). Linux OS: Ubuntu9.04.
(2).實驗板:ADP-XC5FF676 V1.1(Andes N12 core) .
3. 範例程式_Hello4:
(1). 依照範例程式_Hello4所示撰寫hello.c程式,此主程式執行程序為讀取GPIO的值,再將讀取的值送至80port. N12 core的 GPIO初始化暫存器列表.下載完整程式:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/Nos%20OS%7C_hello4/hello4.zip
(2). 請依照Embedded 系統(2-1) 步驟3.(2)~3.(8)操作,執行程式,顯示結果如下所示.


2005年2月3日 星期四

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

1.使實驗板上TFT LCD 顯示RGB色彩.
2.環境:
(1). Linux OS: Ubuntu9.04.
(2).實驗板:ADP-XC5FF676 V1.1(Andes N12 core) .
3. 範例程式_Hello3:
(1). 依照範例程式_Hello3所示撰寫hello.c程式,此主程式執行程序為 A.初始化LCD Controller (LCDC).
B.清除畫面,顯示全黑.
C.顯示紅、綠、藍三色.
N12 core的 LCDC初始化暫存器列表.下載完整程式:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/Non%20OS%7C_hello3/hello3.zip
(2). 請依照Embedded 系統(2-1) 步驟3.(2)~3.(8)操作,執行程式,顯示結果如下所示.


2005年2月2日 星期三

Old-Embedded 系統(2-2)_使用Toolchains bould project(for Non OS)

1.使實驗板上LED7,LED8由00計數至FF.
2.環境:
(1). Linux OS: Ubuntu9.04.
(2).實驗板:ADP-XC5FF676 V1.1(Andes N12 core) .
3. 範例程式_Hello2:
(1). 依照下列所示撰寫hello.c程式,此程式的主程式將資料送至80Port使實驗板上的7段顯示器做00~FF的計數.
下載完整程式:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/Non%20OS%7C_hello2/hello2.zip
(2). 請依照Embedded 系統(2-1) 步驟3.(2)~3.(8)操作,執行程式,顯示結果如下所示.


2005年2月1日 星期二

Old-Embedded 系統(2-1)_使用Toolchains bould project(for Non OS)

1.撰寫在超級終端機顯示HelloWorld簡單範例程式.
2.環境:
(1). Linux OS: Ubuntu9.04.
(2).實驗板:ADP-XC5FF676 V1.1(Andes N12 core) .
3. 範例程式_Hello1:
(1). 依照下列所示撰寫hello.c程式,此程式只是顯示2個printf與主程式呼叫副程式的簡單範例.
下載完整程式:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/Non%20OS%7C_hello1/hello1.zip
完整程式包一個makefile 與.ld檔(必要檔案,在此不介紹此檔內容). (2). 使用"Terminal"輸入"make rebuild",會產生下列訊息.
(3). 之後產生hello.bin執行檔.
(4). 將hello.bin存在SD卡內,並裝上ADP-XC5FF676 V1.1實驗板上,並接上URAT與電腦連接後,開啟電源,按SW2->SW4.
(5). 使用"超級終端機",輸入"97",再輸入〝c:〞.
(6). 輸入〝hello.bin〞,再輸入〝0x500000〞.
(7). 輸入〝55〞. (8). 輸入〝go 0x500000〞執行程式,顯示結果如下所示.