顯示具有 研究與工作 標籤的文章。 顯示所有文章
顯示具有 研究與工作 標籤的文章。 顯示所有文章

2011年3月2日 星期三

陳鍾誠給李家同的一封公開信



為台灣教育界投下一顆震撼彈!


陳鍾誠給李家同的一封公開信
http://ccckmit.wikidot.com/po:bomb

陳鍾誠給李家同的第二封公開信 (續篇)
http://ccckmit.wikidot.com/po:bomb2



PS. 之後有空再補上自己的想法!

2011年1月9日 星期日

Synopsys 之 CoWare PA 使用筆記 (1)


CoWare 於 2010 年 2 月被 Synopsys 併購,CIC 日前釋出 CoWare PA v2010.1.1 的版本給學術界使用,小弟當然馬上從 v2009.1.2 升級到 v2010.1.1 的版本。主要的改版就是啟動 CoWare 軟體時,會先秀出大大的 Synopsys Logo (如上圖所示),Synopsys 砸錢併購後,當然要宣示一下主權。

SystemC 核心的部份採用 SystemC 2.2 的版本,平台環境的部份也支援 RedHat Linux Enterprise 4/5及對應的 CentOS 版本 ( 小弟的 CAD Server 終於可以從 CentOS 4.8 換成 CentOS 5.5 了) 。改版的詳細內容可查閱 Platform Architect Release Notes 這份文件。

其實新版用起來大致上都相同,使用者升級的第一考量是能否相容舊版的 Project,經小弟的測試後,確定是相容的。在 v2010.1.1 中開啟 v2009.1.2 時的 XML 檔沒有問題,唯一要注意的是 Libraries 的部份要 Update System Library,ex: 如果執行時出現找不到 AMBA 相關檔案時,記得先去執行 Libraries 中 AMBA_BL 的  Update System Library 選項。

另外小弟我今天遇到一個撞牆的情況,就是在 CoWare 中進行 HDL-SystemC Cosim 時,修改 HDL 後,進行 HDL-SystemC Cosim 時,修改的部份一直沒有效果,本來以為是 Work 資料夾中 Cache 舊的資料,後來才發現因為當初升級時,為了怕相容會有問題,小弟複製整個 Project 到新的資料夾,但是在跑新資料夾中的 Project 時,因為當初 Import HDL 所產生的 .h 檔 (HDL 外面包一層 SystemC 的皮) 內容以及 Project 的XML 檔所存的內容是採用絕對路徑,所以 HDL 的部份一直參考到舊資料夾的檔案,只要手動將 Project 的XML 檔和 .h 中的絕對路徑改成新資料夾的路徑即可。

2010年11月19日 星期五

Jay,你還不快畢業,還在玩什麼?

http://publicimages.s3.amazonaws.com/deadline.gif
我目前專注於 IPsec 的研究,
在 Linux 中進行實作及模擬。

使用 Verilog 實作純硬體的部份 ( AES, HMAC-SHA1 ),
搭配 ARM 和 MIPS 的 CPU 做系統軟硬體整合。

硬體的部份使用 Design Compiler 進行合成,
再使用 SoC Encounter 進行 Layout。

使用 C/C++ 實作純軟體 IPsec 的版本,
使用 RawSocket 建立一個 Virtual LAN 的環境,
搭配 SystemC 實現 ESL 的驗證環境。

使用 CoWare 執行 ESL 的模擬,
搭配 Modelsim 執行 HW/SW Co-simulation。

目前正在學習用 QT 將驗證平台視窗化,
也正在學習用 LaTeX 發表論文。

PS. 何時才可以脫離 Coding 的無窮迴圈 ???

2010年9月11日 星期六

ARM GCC Toolchain (Cross Compiler) for CentOS 4.8




這兩天花了一點時間在自己的 Server 上裝了  ARM GCC Toolchain (Cross Compiler),之前都使用ARM官版的 RVDS, 不過看學弟們都是用 GNU GCC,所以自己也動手來玩看看。學弟們大部份都在 Ubuntu 上安裝,不過自已的 Server 因為 CIC Tools 的關係而使用 CentOS 4.8。因為環境上的差異,遇到了一些問題,後來陸續解決了 (感謝定遠, 阿德, 冠仲, 阿孜的幫忙),所以在這邊和大家分享自己的安裝步驟。

ARM GCC Toolchain 主要分為兩大類 arm-elf-* 和 arm-linux-* arm-linux-* 是為了要編譯那些要執行在已經有 Linux OS 支援的環境上的程式,使用和 Linux 一樣的 Glibc 這種特定的 C 語言庫。而 arm-elf-* 則是一個獨立的編譯系統,使用 newlib 等其他 C 語言庫,不要求OS支援。主要是為了編譯那些針對嵌入式系统而設計的裸機程式。

目前先和大家分享  arm-elf-* 的部份。


 1. 套件下載
  • 到 GNU 官網下載需要的套件
    binutils-2.19
    gcc-4.5.1
    newlib-1.16.0
    gdb-7.2

    binutils, gcc, gdb 可至 ftp://ftp.ntu.edu.tw/pub/gnu/gnu/ 下載,而 newlib 可至 http://www.mirrorservice.org/sites/sourceware.org/pub/newlib/ 下載。

  • 安裝過程請使用 root 身份,避免權限不足。

  • 我們將套件安裝檔案統一放到 /opt/Toolchain
    另外預計將編譯後的執行檔放在 /usr/cross 下。
    (上述兩個路徑可以任意選擇)

  • 將下載的所有套件於 /opt/Toolchain 下解壓縮。

2. 安裝 binutils 套件
  • 嘗試安裝 binutils-2.20 在 make 過程會有 Error,所以建議安裝 binutils-2.19

  • 切換到 binutils-2.19 安裝資料夾
    cd /opt/Toolchain/binutils-2.19

  • Configure
    ./configure --target=arm-elf
                         --prefix=/usr/cross
                         --enable-interwork
                         --enable-multilib


  • Make & Install
    make -j9
    (如果是在多核心的環境,後面的參數可加快make過程,-j是開多核跑,通常會下N+1)
    make install -j9
    (結束後去看 /usr/cross/bin 下面,應該會有 arm-elf-ar arm-elf-nm arm-elf-objdump 等幾個執行檔。)

  • 將執行檔路徑加到系統路徑中
    (bash) export PATH=$PATH:/usr/cross/bin
    (csh)    setenv PATH "{$PATH}:/usr/cross/bin"

3. 安裝 gcc 套件(上)
  • 安裝 gcc-4.5.1 需要另外 gmp, mpfr, mpc 三個套件,可在下面路徑下載:
    ftp://gcc.gnu.org/pub/gcc/infrastructure/
    另外根據套件相依關係,安裝順序為 gmp, mpfr, mpc, gcc

  • 假設我們已經將以上三的套件檔各別解壓縮到 /opt/Toolchain 下, 並打算各別安裝到 /usr/cross下。

  • 安裝 gmp 套件
    cd  /opt/Toolchain/gmp-4.3.2
    .configure --prefix=/usr/cross/gmp-4.3.2
    make
    -j9
    make install
    -j9

  • 安裝 mpfr 套件
    cd /opt/Toolchain/mpfr-2.4.2
    .configure --prefix=/usr/cross/mpfr-2.4.2
                        --with-gmp=/usr/cross/gmp-4.3.2

    make
    -j9
    make install
    -j9

  • 安裝 mpc 套件
    cd /opt/Toolchain/mpc-0.8.1
    .configure --prefix=/usr/cross/mpc-0.8.1
                        --with-gmp=/usr/cross/gmp-4.3.2
                        --with-mpfr=/usr/cross/mpfr-2.4.2

    make
    -j9
    make install
    -j9

  • 安裝 gcc 套件
    cd /opt/Toolchain/gcc-4.5.1
    ./configure --target=arm-elf
                         --prefix=/usr/cross
                         --enable-interwork
                         --enable-multilib
                         --enable-languages="c,c++"
                         --with-newlib
                         --with-headers=/opt/Toolchain/newlib-1.16.0/newlib/libc/include
                         --with-gmp=/usr/cross/gmp-4.3.2
                         --with-mpfr=/usr/cross/mpfr-2.4.2
                         --with-mpc=/usr/cross/mpc-0.8.1
    make all-gcc
    -j9
    make install-gcc
    -j9

  • 完成後去看 /usr/cross/bin下面,應該會有 arm-elf-gcc, arm-elf-c++, arm-elf-cpp ... 等一大堆執行檔。

4. 安裝 newlib 套件
  • 因為安裝 newlib 會找不到 mpfr 及 mpc 的 lib, 所以需要先將其 lib 的路徑加到系統的 LD_LIBRARY_PATH 變數中。
    (csh) setenv LD_LIBRARY_PATH "{$LD_LIBRARY_PATH}:/usr/cross/mpfr-2.4.2/lib:/usr/cross/mpc-0.8.1/lib"

  • 切換到newlib-1.16.0 安裝資料夾
    cd /opt/Toolchain/newlib-1.16.0

  • Configure
    ./configure --target=arm-elf
                         --prefix=/usr/cross
                         --enable-interwork
                         --enable-multilib


  • Make & Install
    make -j9
    make install
    -j9

5. 安裝 gcc 套件(下)
  • 各別將以下三個 Makefile 檔中
    第23行 host_subdir = . 改成 host_subdir = host-i686-pc-linux-gnu
    /opt/Toolchain/gcc-4.5.1/arm-elf/fpu/libgcc/Makefile
    /opt/Toolchain/gcc-4.5.1/arm-elf/libgcc/Makefile
    /opt/Toolchain/gcc-4.5.1/arm-elf/thumb/libgcc/Makefile


  • 切換到 gcc-4.5.1安裝資料夾後,重新 Make & Install
    cd /opt/Toolchain/gcc-4.5.1
    make all install
    -j9

6. 安裝 gdb 套件
  • 切換到 gdb-7.2 安裝資料夾
    cd /opt/Toolchain/gdb-7.2

  • Configure
    ./configure --target=arm-elf
                         --prefix=/usr/cross
                         --enable-interwork
                         --enable-multilib


  • Make & Install
    make -j9
    make install
    -j9

  • 編完後 /usr/cross/bin 下面應該會多出 arm-elf-gdb, arm-elf-run... 等執行檔,到這邊 Toolchain 就算是建立完成囉。

7. 環境測試
  • 在任意資料夾下寫一個 hello.c 的 C 程式
  • 進行編譯及執行的測試動作
    arm-elf-gcc hello.c -o hello
    arm-elf-run ./hello


2008年6月1日 星期日

下載 PDF 格式的RFC

以前都笨笨的下載TXT格式, 然後再自已轉成PDF,
原來已經有PDF格式可以下載

http://ietfreport.isoc.org/rfc/PDF/

2007年12月19日 星期三

Linux Socket Programming

最近在開始學 Linux Socket Programming,
參考的資料是 Beginning Linux Programming 3rd,
作者是 Richard Stones 及 Neil Matthew。
第15章專門在介紹Socket程式的撰寫。

書中有一部份使用 daytime 的網路服務程式來當範例,
不過因為大家使用的O/S版本不太相同,
以我的環境為例,我用的 CentOS 4.5,
安裝時 daytime 的網路服務程式預設是關的。
大家可以使用 netstat -tlunp 的指令來看看目前已開啟的網路服務程式有哪一些。

如果要開啟 daytime 網路服務程式的話 ( 和書上的操作不同 ),

可以修改 /etc/xinetd.d/daytime.conf 檔案如下:

  • ------------------------------------------
    # default: off
    # description: An internal xinetd service which gets the current system time \
    # then prints it out in a format like this: "Wed Nov 13 22:30:27 EST 2002". \
    # This is the tcp version.

    service daytime
    {
    type = INTERNAL
    id = daytime-stream
    socket_type = stream
    protocol = tcp
    user = root
    wait = no
    disable =
    no
    }
    ------------------------------------------

修改存檔後,需要重新啟動一次 xinetd 的服務程式,
可以下 /etc/init.d/xinetd restart 的指令即可。

2007年11月21日 星期三

VNC 遠端登入相關設定

A.初始化設定 ( VNC Server 端 )

  1. 使用 putty 登入遠端電腦。 PuTTY Download Page http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
  2. 任意處鍵入 vncserver,系統會要求輸入連線時期密碼, 請輸入並牢記,不必和root登入密碼相同。
  3. 完成後鍵入 vncserver -kill :1,將第一次開啟的程式關閉。
  4. 修改 /.vnc/xstartup 檔案如下 ( 留下兩行, 其他註解掉 )。
    --------------------------------------------------------------
    #!/bin/sh

    # Uncomment the following two lines for normal desktop:
    unset SESSION_MANAGER
    exec /etc/X11/xinit/xinitrc

    #[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
    #[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
    #xsetroot -solid grey
    #vncconfig -iconic &
    #xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
    #twm &
    ---------------------------------------------------------------
  5. 任意處鍵入setup => 防火牆設定 => 自訂 => 其他連接埠中鍵入:
    5901:tcp

B.登入步驟 ( VNC Server 端 )

  1. 使用 putty 登入遠端電腦。
  2. 開啟 VNC Server 端程式,並設定解析度。
    vncserver -geometry 1280x1024
    若要兩人同時觀看輪流操作,請加入此參數 -AlwaysShared
  3. 開啟後,會顯示桌面編號,
    New 'xxx:1 (user)' desktop is xxx:1
    Client 端就可以使用此桌面編號遠端登入
  4. 離開時請關閉 VNC Server 端程式
    vncserver -kill :n
    (n為開啟的桌面編號)

C.登入步驟 ( VNC Client 端 )

  1. 安裝 VNC Client 端程式
  2. 使用 步驟B 開啟 VNC Server 端程式
  3. 使用Server端的IP及已開啟的桌面編號遠端登入 xxx.xxx.xxx.xxx : n
  4. 鍵入第一次啟動 vncserver 時所建立的 password 即可登入。
  5. 離開時,請順便關閉 VNC Server 端程式
Reference: http://www.realvnc.com/documentation.html

2007年11月20日 星期二

Linux Device Drivers

因為研究需求,剛踏 Linux Device Drivers 的領域,
http://lwn.net/Kernel/LDD3/ 可下載免費的 PDF 檔。

今天終於把第一個 hello world 的範例給試出來了,
把遇到的問題和大家分享一下。

剛開始照 LDD3 的書建了一個 Makefile,
======================================
ifneq ($(KERNELRELEASE),)
    obj-m := hello.o

else
    KERNELDIR ?= /lib/modules/$(shell uname -r)/build
    PWD := $(shell pwd)

default:
    $(MAKE) -C $(KERNELDIR)
    M=$(PWD) modules

endif
=======================================

不過執行時出現了下面的訊息,
make: Nothing to be done for `default'.

後來上網查,在 $(MAKE) 前面加個 tab 就行 ( 我原本用 space )。

另外 insmod 或 rmmod 時應該會出現的字串,
如果是遠端操作的話,可能不會顯示出來,
可以打 dmesg 來顯示。