網頁

2013年8月31日 星期六

OpenRISC toolchain on Ubuntu

Last Update: 2014/10/26 22:22+08
Type: Note



--- Intro ---



OpenRISC toolchain 環境建立
Ubuntu 建議安裝LTS(Long Term Support)版
各位看倌有興趣可參考 官方安裝說明 有較完整的安裝方式
這裡僅是給我自己的筆記

  • Precompiled binaries
  • Installation from source
  • Installation of development versions

這3個安裝的方法, 應該是則一即可.
但 各版本仍 有些不同 我是全裝起來
再看狀況設置 PATH
還有一個 orbuild 但官方已經說很久沒更新了
所以能不能用就是各位看倌的命了XD


環境: Ubuntu-12.04.2 32bit

Ubuntu-14.04.1 32bit 目前無法成功



--- Content ---




建議使用 su 進入 root 模式
su



Precompiled binaries


這裡有 2 個版本 Latest version 和 1.0rc1
如果是用 Ubuntu 32bit 就直接載 Latest 吧
其它的參考 1.0rc1


---Latest version
cd /opt
wget ftp://ocuser:ocuser@openrisc.opencores.org/toolchain/openrisc-toolchain-ocsvn-rev789.tar.bz2
tar xjf openrisc-toolchain-ocsvn-rev789.tar.bz2 openrisc_rev789

PATH 設置
export PATH=$PATH:/opt/openrisc_rev789/toolchain/bin
export PATH=$PATH:/opt/openrisc_rev789/or1ksim/bin



---Download 1.0rc1
官方提供3個版本
for Ubuntu x86/i686 (32-bit) (待會用wget取得這個檔案)
for CentOS-5.5 x86_64 (64-bit)
for OS X 10.6 (Snow Leopard) (Note. no C++ libraries)

P.S.記得 Ubuntu 也是載 32-bit
指令如下:
cd /opt
wget ftp://ocuser:ocuser@openrisc.opencores.org/toolchain/or32-elf-1.0rc1-x86.tar.bz2
tar xjf or32-elf-1.0rc1-x86.tar.bz2
ln -s or32-elf-1.0rc1 or32-elf
ln -s or1ksim-0.5.1rc1 or1ksim
簡述上面的代碼:
下載 or32-elf 1.0rc1
解壓縮到 /opt
然後建立連結(應該是為了方便改版本)

至於 可不可以放在其它地方, 還沒試過

然後 資料夾底下有:
or32-elf
or1ksim 模擬用

PATH 設置
export PATH=$PATH:/opt/or32-elf/bin
export PATH=$PATH:/opt/or1ksim/bin



Installation from source


先安裝必要的Libraries
apt-get -y install build-essential make gcc g++ flex bison patch \
texinfo libncurses5-dev libmpfr-dev libgmp3-dev libmpc-dev libzip-dev \
python-dev libexpat1-dev

若沒有下載 Latest version / 1.0rc1 可以參考 這篇 來完成or1ksim
若你有用其它安裝方法, 那麼 只有 or1ksim 的PATH設置是必要的
為 避免 其它版本的干擾, 只保留 or1ksim 的 PATH 設置

安裝SVN, 沒有的話
apt-get install subversion

用SVN 下載 OpenRISC toolchain 的 stable 版
在 /opt 裡 執行下列語句, 會自己產生 gnu-stable 資料夾
svn co http://opencores.org/ocsvn/openrisc/openrisc/trunk/gnu-stable

根據官方指示
最好反覆執行下述指令, 直到沒有檔案被更新為止. 我得到的版號是868.
svn update gnu-stable

安裝git, 沒有的話
apt-get install git

進到 gnu-stable 裡
用 git 取得另外2個必要的 source
uClibc 是一個面向嵌入式Linux系統的小型C標準庫
等下 build 時會指定這2個目錄, 即然都是 source 放在一起也比較方便
cd gnu-stable
git clone git://git.openrisc.net/jonas/uClibc
git clone git://git.openrisc.net/jonas/linux



---Building

需要的東西都準備好了
在 /opt/gnu-stable 裡 有 bld-all.sh 可以用來 build
可用 --help 來確認一下可以用的參數
./bld-all.sh --help

先建立 /opt/openrisc 資料夾
拿來放 build 出來的東西
mkdir /opt/openrisc

build all
--prefix 就是建好的東西要放哪
其它3個就是指定剛剛載下來的那些東西所在的目錄
要挺久的, 放給他跑吧, 跑完就OK了
./bld-all.sh --force --prefix /opt/openrisc --or1ksim-dir /opt/or1ksim --uclibc-dir uClibc --linux-dir linux

./bld-all.sh --force --prefix /opt/openrisc --or1ksim-dir /opt/or1ksim --no-uclibc --no-or32-linux

./bld-all.sh --force --prefix /opt/openrisc --or1ksim-dir /opt/or1ksim --uclibc-dir uClibc --linux-dir linux --no-newlib --no-or32-elf 

PATH 設置
export PATH=$PATH:/opt/openrisc/bin



建好後

/opt/openrisc/bin/or32-elf-as
可以 compile assembly code to machine code, 含 Linux kernel
但他的 assembly code 不是 MIPS, 是 32-bit ORBIS32 ISA
可以參考 OpenRISC 1200 version 2 Supplementary Programmer's Reference Manual

/opt/openrisc/bin/or32-linux-as 則是指要在 linux 上面 run 的, 不含 Linux kernel

/opt/openrisc/bin/or32-elf-gcc 則可以拿來 compile C language



Installation of development versions


---Prebuilt versions
cd /opt
wget ftp://ocuser:ocuser@openrisc.opencores.org/toolchain/gcc-or1k-elf-4.8.1-ubuntu-13.04-x86.tar.bz2
tar jxvf gcc-or1k-elf-4.8.1-ubuntu-13.04-x86.tar.bz2
mv gcc-or1k-elf-4.8.1-ubuntu-13.04-x86 or1k-elf-4.8.1

PATH 設置
export PATH=$PATH:/opt/or1k-elf-4.8.1/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:opt/or1k-elf-4.8.1/i686-pc-linux-gnu/or1k-elf/lib



---Newlib toolchain
git clone git://github.com/openrisc/or1k-src.git
git clone git://github.com/openrisc/or1k-gcc.git

mkdir bld-or1k-src
mkdir bld-or1k-gcc

export PATH=$PATH:/opt/or1k-toolchain/bin

Build the first set of tools
make 若產生問題 參考 這篇
cd bld-or1k-src
../or1k-src/configure --target=or1k-elf --prefix=/opt/or1k-toolchain --enable-shared \
--disable-itcl --disable-tk --disable-tcl --disable-winsup --disable-gdbtk --disable-libgui --disable-rda \
--disable-sid --disable-sim --disable-gdb --with-sysroot --disable-newlib --disable-libgloss
make
make install

Build gcc
cd ../bld-or1k-gcc

../or1k-gcc/configure --target=or1k-elf --prefix=/opt/or1k-toolchain --enable-languages=c \
--disable-shared --disable-libssp
make
make install

Build newlib and gdb (without or1ksim in this case)
cd ..
rm -rf bld-or1k-src
mkdir bld-or1k-src  
cd bld-or1k-src

../or1k-src/configure --target=or1k-elf --prefix=/opt/or1k-toolchain --enable-shared --disable-itcl \
--disable-tk --disable-tcl --disable-winsup --disable-gdbtk --disable-libgui --disable-rda --disable-sid \
--enable-sim --disable-or1ksim \
--enable-gdb  --with-sysroot --enable-newlib --enable-libgloss
make
make install

Build gcc again, this time with newlib
cd ..
rm -rf bld-or1k-gcc
mkdir bld-or1k-gcc
cd bld-or1k-gcc

../or1k-gcc/configure --target=or1k-elf --prefix=/opt/or1k-toolchain --enable-languages=c,c++ \
--disable-shared --disable-libssp --with-newlib
make
make install



Final

不管用哪個方法安裝 toolchain
最後完成時, 都是有2個 PATH 設置
一個是 or1ksim, 一個是 toolchain (or32-elf-xxx)
//or1ksim
export PATH=$PATH:/opt/openrisc_rev789/or1ksim/bin //latest
or
export PATH=$PATH:/opt/or1ksim/bin //1.0rc1 & from source


//toolchain
export PATH=$PATH:/opt/openrisc_rev789/toolchain/bin //latest
or
export PATH=$PATH:/opt/or32-elf/bin //1.0rc1
or
export PATH=$PATH:/opt/openrisc/bin //from source
or
export PATH=$PATH:/opt/or1k-toolchain/bin //dev version



---Reference---


官方安裝說明

OpenRISC_GNU_tool_chain_troubleshooting

or1k-src/opcodes/or1k-desc.h:260:73: error: this decimal constant is unsigned only in ISO C90

OpenRISC 1200 version 2 Supplementary Programmer's Reference Manual




沒有留言:

張貼留言