2008年7月28日 星期一

裝這個就可以直接瀏覽日本WIKI了

http://webaccelerator.google.com/index.html 裝這個就可以直接瀏覽日本WIKI了

2008年7月25日 星期五

安裝emesene取代爛爛的aMSN

Ubuntu如果是8.04的話就可以直接安裝:
sudo apt-get install emesene

但是如果版本比較前面的話就要將source list更新如下:
1. 將/etc/apt/sources.list 加入
deb http://apt.emesene.org/ ./
deb-src http://apt.emesene.org/ ./
2. 執行 sudo apt-get install emesene

OK!!

2008年7月23日 星期三

8051 lab

lab1
===
寫個while loop 控制P3.5值不斷在 0、1間變化
-----------------------------------

lab2
===
UART設定:
SCON=0x50;
PCON = 0x80;
BRL = 126;
BDRCON = 0x1F;

手動加上下面:
Sfr (BDRCON , 0x92);
Sfr (BRL , 0x91);
-----------------------------------

lab3
學習使用interrupt 與 timer

init_INT: 設定interrupt 並將 keyboard interrupt啟動
init_INT0、init_INT1: 2個不同interval的timer
INTLED0: timer interrupt後將LED作開關動作
INTKeyBoard: keyboard 中斷事件

程式碼如下:
void init_INT()
{
IEN0=0x80;
IEN1=0x10;
KBCON=0x00;
}

void init_INT0()
{
TMOD = (TMOD & 0x0F) | 0x20; /* Set Mode (8-bit timer with reload) */
TH1 = 0; /* Reload TL1 to count 100 clocks */
TL1 = TH1;
ET1 = 1; /* Enable Timer 1 Interrupts */
TR1 = 1; /* Start Timer 1 Running */
EA = 1; /* Global Interrupt Enable */
}

void init_INT1()
{
TMOD = (TMOD & 0x0F) | 0x20;
TH1 = 100;
TL1 = TH1;
ET1 = 1;
TR1 = 1;
EA = 1;
}

void INTLED0 (void) interrupt 3
{
overflow_count++;
if(overflow_count==1000)
{
LED = !LED;
overflow_count =0;
}
}

void delay()
{
int i, j;
i=1000;
while(i!=0)
{
j=100;
while(j!=0)
{
j--;
}
i--;
}
}

void INTKeyBoard(void) interrupt 11 using 1
//使用11號中斷 //library為1
{
int recv = INPUT;
if(FUNC==INPUT)// && mode!=1)
{
ET1 = 0;
TR1 = 0;
init_INT0();
printu("Press FUNC\n");
}
else if(NEXT==INPUT)// && mode!=2)
{
LED = 0;
ET1 = 0;
TR1 = 0;
printu("Press NEXT\n");
}
else if(PREV==INPUT)// && mode!=3)
{
LED = 1;
ET1 = 0;
TR1 = 0;
printu("Press PREV\n");
}
else if(PLAY==INPUT)// && mode!=4)
{
ET1 = 0;
TR1 = 0;
init_INT1();
printu("Press PLAY\n");
}
KBSTA = 0x00;
delay();
}
-----------------------------------

lab4

重點在於必須看懂pdf檔裡面的時序圖

下面是lab4所要加上的code:
void ReadFlashID(unsigned char *MID,unsigned char *DID)
{
K9F_FUN = COMMAND;
K9F5608 = 0x90;
K9F_FUN = ADDRESS;
K9F5608 = 0x00;
K9F_FUN = D_DATA;
*MID = K9F5608;
*DID = K9F5608;
while(!(K9F_FUN & RB));
K9F_FUN = INACTIVE;
}


void ReadPage(unsigned int BlockPage,unsigned char *PageBuf)
{
unsigned int data i;
K9F_FUN = COMMAND;
K9F5608 = 0x00;
K9F_FUN = ADDRESS;
K9F5608 = 0x00;
K9F5608 = BlockPage;
K9F5608 = BlockPage>>8;
K9F_FUN = D_DATA;
i=512;
while(!(K9F_FUN & RB));
while(i--)
*PageBuf++ = K9F5608;
K9F_FUN = D_DATA;
K9F_FUN = INACTIVE;
}



void BlockErase(unsigned int BlockPage)
{
K9F_FUN = COMMAND;
K9F5608 = 0x60;
K9F_FUN = ADDRESS;
// K9F5608 = 0; //A0-A7
K9F5608 = BlockPage; //A9-A16
K9F5608 = BlockPage >> 8; //A17-A24
// K9F_FUN = D_DATA;
K9F_FUN = COMMAND;
K9F5608 = 0xD0;
K9F_FUN = D_DATA;
while(!(K9F_FUN & RB));
K9F_FUN = COMMAND;
K9F5608 = 0x70;
if(K9F5608==0) printu("Block Erase successful\n");
else printu("Block Erase failed\n");
K9F_FUN = INACTIVE;
}

MCU lab1 & lab2

lab1
修改 WAP_LCD.c 檔
找到func LCD_DAT_W_Timing
將 RW 設為 0

在lab2 中把溫度傳回RS232
----------------------------------
使用 WriteUSART(char);
後面要加delay不然會太快

itoa(T2_Buffer,ASCII_String);
Write1USART( ASCII_String[0] );
LCD_S_Delay();
LCD_S_Delay();
LCD_S_Delay();
//itoa(T2_Buffer,ASCII_String);
Write1USART( ASCII_String[1] );
LCD_S_Delay();
LCD_S_Delay();
LCD_S_Delay();
//itoa(T2_Buffer,ASCII_String);
Write1USART( ASCII_String[2] );
LCD_S_Delay();
LCD_S_Delay();
LCD_S_Delay();
在VB裡面的 Timer要在屬性裡面將interval設為20
MSComm 設定 輸入長度為 1

2008年7月4日 星期五

Embedded lab3 編譯問題

在我編譯mplayer時參數加上 --enable-static
編譯時會有編譯nas 裡的程式undefined Xau開頭的function bug
解決辦法是 在參數加上 --disable-nas

mplayer所用參數如下

#./configure --target=i586-linux --disable-freetype --disable-select --enable-static --disable-tv-v4l --disable-tv-v4l2 --disable-lirc --enable-live --with-livelibdir=/root/embedded/lab3/live --enable-sdl --with-sdl-config=/root/embedded/lab3/SDL-1.2.8/sdl-config --disable-aa --disable-sse2 --disable-nas

#make

grub 壞掉造成不能開機處理

第一步 用Linux LiveCD開機
第二步 在liveCD環境中執行終端機
打入以下command

#sudo fdisk -l
找到妳安裝linux放根目錄的HD代號 如 /dev/sda1

#sudo mount /dev/sda1 /mnt
將這個HD掛上

#sudo grub-install --root-directory=/mnt /dev/sda
安裝grub到硬碟上

#sudo umount /mnt

成功~ 重新開機
如果失敗可能是因為HD選錯

2008年7月3日 星期四

embedded-lab1 Cross compiler

#!/bin/bash

# Setup

PROJECT=embedded/lab1
USER=root
PRJDIR=/${USER}/${PROJECT}
BUILD_DIR=${PRJDIR}/build-tools
PREFIX=${PRJDIR}/tools/arm
TARGET=arm-pc-linux-gnu
SYSROOT=${PREFIX}/sysroot
export ARCH=arm
export CROSS_COMPILE=${TARGET}-
export PATH=$PATH:${PREFIX}/bin

mkdir -p ${BUILD_DIR}/src

# Get the sources

cd ${BUILD_DIR}
for URL in \
http://ftp.gnu.org/gnu/binutils/binutils-2.16.tar.gz \
http://ftp.gnu.org/gnu/gcc/gcc-3.4.4/gcc-3.4.4.tar.bz2 \
"http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3" \
http://frank.harvard.edu/~coldwell/toolchain/t-linux.diff \
http://ftp.gnu.org/gnu/glibc/glibc-2.3.5.tar.bz2 \
http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.5.tar.gz \
http://frank.harvard.edu/~coldwell/toolchain/ioperm.c.diff \
http://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.gz
do
FILE=${URL##*/}
FILE=${FILE%%\?*}
[ -f ${FILE} ] || wget -O ${FILE} ${URL}
done

# GNU binutils

cd ${BUILD_DIR}/src
tar xvfz ../binutils-2.16.tar.gz
mkdir -p ../BUILD/binutils-2.16
cd ../BUILD/binutils-2.16
../../src/binutils-2.16/configure --prefix=${PREFIX} --target=${TARGET} --with-sysroot=${SYSROOT} 2>&1 | tee configure.out
make 2>&1 | tee make.out
make install 2>&1 | tee -a make.out

# Linux Kernel Headers

cd ${BUILD_DIR}/src
tar xvfz ../linux-2.6.10.tar.gz
ln -s linux-2.6.10 linux
#zcat 2.6.10-at91.patch.gz | patch -d linux -p1
#zcat 26_at91_serial.c.gz >linux/drivers/serial/at91_serial.c
cd linux
make lubbock_defconfig
make include/linux/version.h
mkdir -p ${SYSROOT}/usr/include
cp -a ${BUILD_DIR}/src/linux/include/linux ${SYSROOT}/usr/include/linux
cp -a ${BUILD_DIR}/src/linux/include/asm-arm ${SYSROOT}/usr/include/asm
cp -a ${BUILD_DIR}/src/linux/include/asm-generic ${SYSROOT}/usr/include/asm-generic

# Glibc headers

cd ${BUILD_DIR}/src
tar xvfj ../glibc-2.3.5.tar.bz2
patch -d glibc-2.3.5 -p1 <../ioperm.c.diff
cd glibc-2.3.5
tar xvfz ../../glibc-linuxthreads-2.3.5.tar.gz
cd ../..
mkdir BUILD/glibc-2.3.5-headers
cd BUILD/glibc-2.3.5-headers
../../src/glibc-2.3.5/configure --prefix=/usr --host=${TARGET} --enable-add-ons=linuxthreads --with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out
make cross-compiling=yes install_root=${SYSROOT} install-headers 2>&1 | tee make.out
touch ${SYSROOT}/usr/include/gnu/stubs.h
touch ${SYSROOT}/usr/include/bits/stdio_lim.h

# Step 4: stage 1 gcc

cd ${BUILD_DIR}/src
bunzip2 -c ../gcc-3.4.4.tar.bz2 | tar xvf -
patch -d gcc-3.4.4 -p1 < ../flow.c.diff
patch -d gcc-3.4.4 -p1 < ../t-linux.diff
mkdir -p ../BUILD/gcc-3.4.4-stage1
cd ../BUILD/gcc-3.4.4-stage1
../../src/gcc-3.4.4/configure --prefix=${PREFIX} --target=${TARGET} --enable-languages=c --with-sysroot=${SYSROOT} 2>&1 | tee configure.out
make 2>&1 | tee make.out
make install 2>&1 | tee -a make.out

# Step 5: glibc

cd ${BUILD_DIR}
mkdir BUILD/glibc-2.3.5
cd BUILD/glibc-2.3.5
BUILD_CC=gcc CC=${CROSS_COMPILE}gcc AR=${CROSS_COMPILE}ar RANLIB=${CROSS_COMPILE}ranlib AS=${CROSS_COMPILE}as LD=${CROSS_COMPILE}ld ../../src/glibc-2.3.5/configure --prefix=/usr --build=i386-redhat-linux --host=arm-pc-linux-gnu --target=arm-pc-linux-gnu --without-__thread --enable-add-ons=linuxthreads --with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out

在make 之前必須將 csu/version-info.h修改
前後加上"如下
----------------------------
"Available extensions:"
""
----------------------------
make 2>&1 | tee make.out
make install_root=${SYSROOT} install

# Step 6: stage 2 gcc

cd ${BUILD_DIR}
mkdir BUILD/gcc-3.4.4
cd BUILD/gcc-3.4.4
../../src/gcc-3.4.4/configure --prefix=${PREFIX} --target=${TARGET} --enable-languages=c,c++ --with-sysroot=${SYSROOT} 2>&1 | tee configure.out
make 2>&1 | tee make.out
make install 2>&1 | tee -a make.out
cd ../..

# Step 7: Linux kernel

cd ${BUILD_DIR}/src/linux
make zImage
make modules
make INSTALL_MOD_PATH=${SYSROOT} modules_install

2008年7月2日 星期三

在Ubuntu上安裝openGL環境

一開始先裝基本函式庫
sudo apt-get install build-essential
接著安裝openGL Library
sudo apt-get install libgl1-mesa-dev
再安裝openGL Utility
sudo apt-get install libglut-dev

下面是範例測試程式

#include

void init();
void display();

int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(0, 0);
glutInitWindowSize(300, 300);

glutCreateWindow("OpenGL 3D View");

init();
glutDisplayFunc(display);

glutMainLoop();
return 0;
}

void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glOrtho(-5, 5, -5, 5, 5, 15);
glMatrixMode(GL_MODELVIEW);
gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
}

void display()
{
glClear(GL_COLOR_BUFFER_BIT);

glColor3f(1.0, 0, 0);
glutWireTeapot(3);

glFlush();
}

編譯指令
gcc example.c -o example.out -lGL -lGLU -lglut
測試成功會有茶壺



台南美食 - 仙仁嫩仙草

708台南市安平區華平路713號
06-250-1916
by http://blog.yam.com/tarosa/article/15842714

Embedded Lab3

今天做了embedded lab 之 3
沒想到gcc版本太新也會有問題
可以在configure時使用 --disable-debugchecking
可是make時會出現錯誤
後來安裝了gcc-2.95會出現inttypes.h 沒有的狀況
又試了gcc-3.4 make時會出現沒有cc1plus
加安裝g++-3.4後解決
但是又有新的問題出現 = =
所以改去下網路版的MPlayer rc file Try!
可是還是有bug => undefined reference to `ass_track'