2020年10月17日 星期六

建置程式開發環境

建置程式開發環境

教學目標:

在 Linux 上面有許多程式開發環境,從最陽春的 vim、Emacs 乃至於大型專案開發會用到的Eclipse 都是 Linux 上面的程式開發環境。使用 vim 作程式開發對學生而言略嫌功能太過簡陋,而 Eclipse 是屬於大型專案工具,光是啟動、運作都需要不少資源,因此不大建>議學生使用。本課程的目標即在於教導學生建置 Linux 上面的程式開發環境,我們的首選>是 geany 這個輕量級的 IDE 程式開發工具。


教學方法:

在這門課程上我們採用 geany 來進行程式開發,其安裝方式如下:

# apt-get install geany

Geany 的好處是它的介面非常精簡,支援 C/C++、 Python 等程設語言之語法高亮度顯示,

而且可以直接呼叫 GNU C 或是 Python 來進行程式編譯與執行的操作,簡單來說其功能非常類似 DOS 時代的 Turbo C/C++ 一樣,是個輕量級的程式開發環境。下圖是 geany 載入 C 語言的畫面,我們可以看到其介面非常的簡潔,適合初學程式設計的學生來使用。





2020年6月10日 星期三

Milkyway 安裝與設定

Milkyway 安裝與設定



1. 下載

   請至 TSRI 網頁下載最新版的 Milkyway,其檔案為:

milkyway_2019.12_linux.tgz

2. 解壓縮/安裝


# tar xfva milkyway_2019.12_linux.tgz -C /opt/EDA

3. 設定

請編輯 .bashrc,新增底下段落:

Milkyway_bin="/opt/EDA/milkyway/cur/bin/linux64"

export PATH=$PATH:$Milkyway_bin


4. 測試

請執行

$ Milkyway -galaxy

看看有沒有畫面出來

2020年6月3日 星期三

IC Compiler2 之安裝與設定



IC Compiler 2 是 Synopsys 所推出之 P&R (Place & Route) 軟體,主要針對 16nm 以下的先進製程,目前最新的版本是2019.12-sp1 版,下載後會出現 icc2_2019.12-sp1_linux.tgz 這個檔案,請至 /opt/EDA 目錄中解開:

# tar xfva icc2_2019.12-sp1_linux.tgz -C /opt/EDA

解完後會出現底下檔案/目錄:

2019.12-sp1
cur -> 2019.12-sp1/

接下來可以設定 .bashrc

請在 .bashrc 中設定:

ICC2_bin="/opt/EDA/icc2/cur/bin"

PATH=$PATH:$ICC2_bin


由於 IC Compiler 是 Check Synopsys 的 License 設定,因此我們可以直接沿用之前的設定,不必重新再修改 LM_LICENSE_FILE。

執行

icc2_shell -gui

執行後會出現底下錯誤訊息:

Warning: Cannot use command line editor for terminal type 'rxvt-unicode'. (CLE-100)
Cannot initialize GUI.
IceWM version 1.3.8+mod+20161220 is not supported. Plese upgrade to
version 1.3.8 or newer.

第一個錯誤訊息是說它不支援 rxvt-unicode 的終端機,我們可以執行:

export TERM=vt100

來重新設定 TERM,如此一來可以「騙過」icc2_shell 執行。

第二個錯誤訊息則是要更新 icewm 到 1.3.8 以上,我把 icewm 升級到 1.4.3 即可以正常執行,IC Compiler 2 是我第一個遇上會挑 Window Manager 的 EDA 工具。基本上絕大多數的 EDA 工具都不挑 Window Manager,ICC2 是目前遇到唯一的一個。



2020年5月28日 星期四

SD Card 整合

SD Card 整合 #1
2020/05/29



整合至 sdcard.img #1

截至目前為止,我們已經完成了底下事項:
1. rootfs -> OK
2. linux kernel -> OK
3. boot loader (u-boot) -> OK
4. SD card image -> OK

現在要開始進行整合的步驟:
1+2+3 -> SD card -> qemu


1. 複製 Linux 核心至 /mnt/sdcard1

~eecs/virtualarm/kernel/linux-3.16.81/arch/arm/boot# cp uImage /mnt/sdcard1

2. 複製 u-boot 檔案至 /mnt/sdcard1

u-boot
u-boot.bin

~eecs/virtualarm/bootloader/u-boot-2016.09# cp u-boot /mnt/sdcard1
~eecs/virtualarm/bootloader/u-boot-2016.09# cp u-boot.bin /mnt/sdcard1

3. 複製 rootfs 目錄至 /mnt/sdcard2

~eecs/virtualarm# rsync -av rootfs/ /mnt/sdcard2

作完之後,我們先解除掛載,然後用 qemu 來開機。


4. 測試開機

~/virtualarm$ ~/virtualarm$ qemu-system-arm -machine vexpress-a9 -m 256 -nographic -kernel u-boot -drive file=../../sd_test.img,if=sd,format=raw,index=0


U-Boot 2016.09 (May 22 2020 - 09:58:23 +0800)

DRAM:  256 MiB
WARNING: Caches not enabled
Flash: 128 MiB
MMC:   MMC: 0
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   smc911x-0
Hit any key to stop autoboot:  0
=> fatload mmc 0:1 0x60000000 uimage

=> setenv bootargs console=ttyAMA0,38400n8 root=/dev/mmcblk0p2

=> bootm 0x60000000

此時即可開機,並以 root 或是 leenix 帳號登錄。

5. 與 br10 連接在一起

請將底下內容另存為  runsd.sh,再來執行即可。

MACHINE=vexpress-a9
#SD_IMAGE=sdcard.img
SD_IMAGE=sd_test.img
#SD_IMAGE=sd_512M.img

#FLASH_IMG=flash.img

KERNEL_VERSION=3.16.81
UBOOT_VERSION=2016.09

MAC="52:54:12:34:00:A0"
BRIDGE=br10


MEMORY=256
#MEMORY=1024

qemu-system-arm -machine $MACHINE -m $MEMORY \
  -serial stdio \
  -drive file=./$SD_IMAGE,if=sd,format=raw,index=0 \
  -kernel ./bootloader/u-boot-$UBOOT_VERSION/u-boot \
  -net nic,macaddr=$MAC -net bridge,br=$BRIDGE




2020年5月27日 星期三

安裝 Cadence INNOVUS

安裝 Cadence INNOVUS

2020/05/28 初版

Cadence INNOVUS 是 Cadence 所發表的 P&R 工具,可針對 16 nm 以下先進製程進行 placement, routing 以及 clocking 等操作。由於我們沒有 Standard Cell Library,因此這個工具安裝完畢後只能打開來看一看,無法進行操作。底下說明安裝流程:


1. 下載

請至 TSRI 下載 INNOVUS 的壓縮檔,以目前 (2020/05/28) 為例,其檔案如下所示:

INNOVUS_19.12.000_linux_1of3.tgz
INNOVUS_19.12.000_linux_2of3.tgz
INNOVUS_19.12.000_linux_3of3.tgz


2. 解壓縮/安裝

# tar xfva INNOVUS_19.12.000_linux_1of3.tgz -C /opt/EDA
# tar xfva INNOVUS_19.12.000_linux_2of3.tgz -C /opt/EDA
# tar xfva INNOVUS_19.12.000_linux_3of3.tgz -C /opt/EDA

3. 設定

====================
在 bashrc 中設定

Innovus_bin="/opt/EDA/INNOVUS/cur/tools/bin"

export PATH=$PATH:$Innovus_bin

====================
設定 OA_HOME

在 innovus 底下有一個 oa_v22.60.024 目錄,其完整路徑是:

/opt/EDA/INNOVUS/cur/oa_v22.60.024

如果你去看之前安裝的 IC618,其中也有一個 oa_v22.60.019 目錄,其完整路徑是:

/opt/EDA/cadence/IC/cur/oa_v22.60.019

假設我們在執行 innovus 要使用到 OA (Open Access Library) 的話,要使用其內建版本的 OA 目錄,不然會有版本不一致的問題。所以在這邊比較麻煩,要在 IC618 啟動 OpenAccess 要使用 IC618 內建的 OA 目錄設定,而要在 Innovus 中得切換過來,不然可能會有問題,通常是遇上了才知道。

要設定 innovus 的 OA 環境,請在 bashrc 中設定:

export OA_HOME=/opt/EDA/INNOVUS/cur/oa_v22.60.024

若是要設定 IC618 的 OA 環境,則要設定為:

export OA_HOME=/opt/EDA/cadence/IC/cur/oa_v22.60.019


4. 測試

$innovus

5. 故障排除

啟動 innovus 時會出現底下錯誤訊息:

$innovus
2020/05/28 11:14:24 Cannot parse the Release File for this OS.
 This OS might be unsupported.
 The content of the release file is below:
 Red Hat Enterprise Linux Server 7.3 (Maipo)

2020/05/28 11:14:24 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2020/05/28 11:14:24 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/INNOVUS/cur/tools.lnx86/innovus/bin/64bit/innovus: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory


請安裝 libncurses5 套件即可,指令如下所示:

#apt-get install libncurses5

安裝 Cadence Incisive

2020/05/28 初版


Cadence Incisive 是 Cadence 新一代的 Simulator,原廠的定義是:

Multi-language simulation for testbench automation, metric-driven verification, and mixed-signal verification
(https://www.cadence.com/en_US/home/tools/system-design-and-verification/simulation-and-testbench-verification/incisive-enterprise-simulator.html)

簡單說它已經不再像以為的 Verilog XL 是以 Verilog 為主的 simulator,而是支援
多種不同的硬體描述語言。底下說明如何安裝此軟體:

1. 下載:

請至 TSRI 下載 Incisive 的壓縮檔,以目前 (2020/05/28) 為例,其檔案如下:

INCISIV_15.20.039_linux_1of6.tgz
INCISIV_15.20.039_linux_2of6.tgz
INCISIV_15.20.039_linux_3of6.tgz
INCISIV_15.20.039_linux_4of6.tgz
INCISIV_15.20.039_linux_5of6.tgz
INCISIV_15.20.039_linux_6of6.tgz


2. 解壓縮/安裝

# tar xfva INCISIV_15.20.039_linux_1of6.tgz -C /opt/EDA
# tar xfva INCISIV_15.20.039_linux_2of6.tgz -C /opt/EDA
# tar xfva INCISIV_15.20.039_linux_3of6.tgz -C /opt/EDA
# tar xfva INCISIV_15.20.039_linux_4of6.tgz -C /opt/EDA
# tar xfva INCISIV_15.20.039_linux_5of6.tgz -C /opt/EDA
# tar xfva INCISIV_15.20.039_linux_6of6.tgz -C /opt/EDA

3. 設定

在 bashrc 中設定

Incisiv_bin="/opt/EDA/INCISIV/cur/tools/bin"

export PATH=$PATH:$Incisiv_bin


####INCISIV####
export VRST_HOME=/opt/EDA/INCISIV/cur

sh $VRST_HOME/env.sh



4. 測試

Incisive 的執行檔很多,可以參考底下網址來進行測試:

https://en.wikipedia.org/wiki/NCSim


$ncverilog ha_gate.v test_ha.v

5. 故障排除

在執行 ncverilog 時會出現 timescale 的錯誤,原因是 ncverilog 比 gplcver
更嚴謹,它會檢查 timescale 語法,如果沒有在你的 verilog 程式中加上此語法的話會
顯示錯誤而不執行。

除此之外,ncverilog 在執行上沒有問題。

2020年5月13日 星期三

ModelSim 安裝流程

ModelSim 安裝流程
2020/05/14

ModelSim 是 Mentor Graphics 公司的產品,其主要功能是硬體描述語言模擬及除錯。目前 CIC 所提供的版本是 2020.1 版,下載完畢後會出現

modelsim_2020.1_linux_1of2.tgz
modelsim_2020.1_linux_1of2.tgz

這個檔案,請在 /opt/EDA 目錄中解開 modelsim 壓縮檔:

/opt/EDA_tools# tar xfva modelsim_2020.1_linux_1of2.tgz -C /opt/EDA
/opt/EDA_tools# tar xfva modelsim_2020.1_linux_2of2.tgz -C /opt/EDA

解開完畢後會出現底下目錄:

/opt/EDA/modelsim# ls -l
總計 4
drwxr-xr-x 4 root root 4096  5月 14 11:08 2020.1
lrwxrwxrwx 1 eecs eecs    7  4月 13 15:31 cur -> 2020.1/


設定 ModelSim

在 .bashrc 中新增底下設定:

Modelsimbin="/opt/EDA/modelsim/cur/modeltech/bin"

export PATH=$PATH:$Modelsimbin

export LM_LICENSE_FILE=1717@lsncku

啟動 Modelsim

打開一個新的終端機,然後執行:

$ vsim

看看有沒有出現 ModelSim 視窗。

故障排除

執行 vsim 時有底下錯誤:


$vsim
/opt/EDA/modelsim/cur/modeltech/bin/../linuxpe/vish: error while loading shared libraries: libXft.so.2: cannot open shared object file: No such file or directory

這個症狀是因為沒有 libXft.so.2 這個檔案,我們去 packages.debian.org 找的結果是這個檔案屬於 libxft2 的套件,現在問題來了,我們安裝 libxft2,然後再執行 vsim 有一模一樣的錯誤。

現在的問題出在 /opt/EDA/modelsim/cur/modeltech/bin/../linuxpe/vish,也就是
/opt/EDA/modelsim/cur/modeltech/linuxpe/vish

那麼 vish 這個檔案是什麼平台上面的 ? 請以 file 來看一下:

/opt/EDA/modelsim/cur/modeltech/linuxpe $ file vish
vish: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.18, BuildID[sha1]=778b94811c99e10e57a58de6050d652e40205fc2, stripped

我們可以看到這個檔案是 386 版,那它要配對的 libxft2 的套件是

libxft2:i386

因此請安裝 libxft2:i386 再試試看。


在 modelsim 的介面中開啟一個 verilog 檔案會出現底下訊息:

# couldn't load file "/opt/EDA/modelsim/2020.1/modeltech/linux/ScintillaTk/libScintillaTk1.14.so": libstdc++.so.6: cannot open shared object file: No such file or directory


原因是找不到 libstdc++.so.6:i386 這個檔案。

Synopsys VCS 安裝

(2020/05/14)

Synopsys VCS 是由 Synopsys 所推出的 verilog 模擬工具,目前 TSRI 所推出的最新版本為 2020.03,底下我們以此版本來進行安裝說明。

1. 下載

請下載底下檔案

vcs_2020.03_linux_1of3.tgz
vcs_2020.03_linux_2of3.tgz
vcs_2020.03_linux_3of3.tgz

2. 解壓縮/安裝

# tar xfva vcs_2020.03_linux_1of3.tgz -C /opt/EDA
# tar xfva vcs_2020.03_linux_2of3.tgz -C /opt/EDA
# tar xfva vcs_2020.03_linux_3of3.tgz -C /opt/EDA

3. 設定環境

VCS=/opt/EDA/vcs/cur/bin
export PATH=$PATH:$VCS

export LM_LICENSE_FILE=26585@lsncku
export VCS_HOME=/opt/EDA/vcs/cur
export VCS_ARCH_OVERRIDE=linux

4. 測試

$ vcs ha_gate.v test_ha.v
觀察其輸出有沒有錯誤訊息。



5. 故障排除

$ vcs ha_cont.v
/opt/EDA/vcs/cur/bin/vcs: 列 3833: dc:命令找不到
/opt/EDA/vcs/cur/bin/vcs: 列 11218: /usr/bin/time: 沒有此一檔案或目錄
/opt/EDA/vcs/cur/bin/vcs: 列 3833: dc:命令找不到

--> 安裝 dc、time 套件:apt-get install dc time

$ vcs
 ERROR : Cannot find 'vcsMsgReport' script in /bin
 Please make sure VCS_HOME is set correctly and continue..

--> 設定 VCS_HOME


$ vcs ha_cont.v
/opt/EDA/vcs/cur/bin/vcs: 列 11218: /usr/bin/time: 沒有此一檔案或目錄
CPU time: .033 seconds to compile

--> 安裝 time 套件:apt-get install time

$ vcs ha_gate.v test_ha.v
/opt/EDA/vcs/cur/linux/bin/vcs1: error while loading shared libraries: libelf.so.1: cannot open shared object file: No such file or directory
CPU time: .043 seconds to compile

--> 安裝 libelf1:i386

2020年5月7日 星期四

編譯 ARM HF Linux 核心

ARM 工具鏈說明 (2021/04/30 改版)

Debian 支援三個不同版本的 ARM 架構,分別是

armel - 沒有 FPU 的 ARM CPU
armhf - 有 FPU,可以硬體執行浮點運算的 ARM CPU
arm64 - 64 位元的 ARM CPU

以本學期的課程來說,我們以 armhf 架構為主來進行工具鏈 (toolchain) 的安裝,這些工具鏈一樣是用來編譯 ARM 版本的 Linux 核心以及其它應用程式,是建構嵌入式系統的基本工具。

1. 安裝

請以 root 權限安裝底下套件:

gcc-arm-linux-gnueabihf
cpp-arm-linux-gnueabihf
g++-arm-linux-gnueabihf

安裝完畢後可以測試這三個套件的可執行檔,指令如下:

$arm-linux-gnueabihf-gcc -v

$arm-linux-gnueabihf-cpp -v
$arm-linux-gnueabihf-g++ -v

上述的輸出有一個非常重要的重點在此:

Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/arm-linux-gnueabihf/6/lto-wrapper
Target: arm-linux-gnueabihf

其中的 Target: arm-linux-gnueabihf 這行告訴我們這是針對 armhf 平台所開發的編譯器。如果你用之前教的 gcc -v 會看到其內容如下:

Target: x86_64-linux-gnu

這表示其編譯目標平台是 x86_64。

2. 測試 armhf 編譯器

2.1 建立 hello.c

請建立 hello.c,其內容如下:

#include <stdio.h>

void main(void)
{
 printf("Hello World\n");
}


2.2 編譯 hello.c 為 armhf 之可執行檔

$ arm-linux-gnueabihf-gcc hello.c -o hello.arm

此時會出現 hello.arm 這個可執行檔,其檔案資訊如下:

$ file hello.arm
hello.arm: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamicall
y linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha
1]=155090b58f9384c7e128b74e743a7993155658fc, not stripped

這個可執行檔是 arm 32 位元版本的可執行檔,從 X86 平台編譯出 ARM 平台可執行檔的流程稱為 cross compile (交叉編譯器)。

此時如果我們要執行 hello.arm 這個程式的話,我們會看到底下輸出:

$ ./hello.arm
bash: ./hello.arm: 無法執行二進位檔案: 可執行檔格式錯誤

(或是英文顯示)

./hello.arm
bash: ./hello.arm: cannot execute binary file: Exec format error

這表示我們的平台目前沒有支援 ARM 32 的可執行檔,必須另外再進行處理才可以支援。

2.3 將 Debian 新增 armhf 架構

Debian 支援硬體架構:

https://wiki.debian.org/SupportedArchitectures

首先我們要觀察目前系統所支援的外掛架構 (非原生 x86_64 架構) 有哪些,請執行:

# dpkg --print-foreign-architectures

理論上不會有任何輸出,因為我們還沒加入 armhf 架構的支援。在大一 Linux 課程中有教大家如何加入 i386 架構的支援,其說明在 157 頁第六章。

要新增 armhf 架構的話,請以 root 權限執行:

# dpkg --add-architecture armhf

此時再執行 dpkg --print-foreign-architectures 指令時會看到有新增一個 armhf
架構,如底下所示:

# dpkg --print-foreign-architectures
armhf

接下來要安裝支援的軟體,請執行

# apt-get update
# apt-get upgrade
# apt install qemu-system:armhf qemu-user:armhf qemu-user-static

安裝所需要的軟體,然後就可以準備執行 hello.arm 這個可執行檔。


2.4 測試 armhf 可執行檔

要在 X86_64 系統中執行 arm 的可執行檔,請執行底下指令:

$ qemu-arm ./hello.arm
Hello World

3. 編 ARM 版 Linux 核心


3.1 下載
請在家目錄建立 ~/qemu_image/arm 目錄,然後在底下建立 kernel 目錄並將 linux-4.4.268.tar.xz 這個檔案解壓縮並放入此目錄,指令如下:

$ mkdir -p ~/qemu_image/arm/kenel
$ tar xfva linux-4.4.268.tar.xz  -C ~/qemu_image/arm/kenel

3.2 解壓縮

$ cd ~/qemu_image/arm/kernel
~/qemu_image/arm/kernel $ tar xfva linux-3.18.123.tar.xz

此時會出現一個 linux-4.4.268 目錄,接下來要設定編譯參數。

3.3 設定核心編譯參數 (依照預設值即可)

3.3.1 虛擬 ARM 平台介紹

核心編譯與 ARM 平台有密切的關係,如果沒有編對平台則無法開機,我們這學期所使用的虛擬 ARM 平台為 qemu-system-arm 已支援的平台,要查詢支援平台的指令如下:

$ qemu-system-arm -M ?

其輸出中有一行:

vexpress-a9

這是指 Versatile Express 平台,其 CPU 為 Cortex A9。

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.subset.boards.express/index.html

我們這學期以此虛擬平台作為上課使用的開發平台。

3.3.2 設定核心編譯參數

請切換至 linux-3.18.123 目錄,然後執行:

~/qemu_image/arm/kernel/linux-3.18.123 $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- vexpress_defconfig

其輸出如下:

ROSS_COMPILE=arm-linux-gnueabihf- vexpress_defconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  SHIPPED scripts/kconfig/zconf.tab.c
  SHIPPED scripts/kconfig/zconf.lex.c
  SHIPPED scripts/kconfig/zconf.hash.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#

接著要手動執行核心編譯參數設定

~/qemu_image/arm/kernel/linux-3.18.123 $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

請執行底下修改,否則之後無法開機:

    General setup  --->
        [*] open by fhandle syscalls

    System Type  --->
        [ ] Enable the L2x0 outer cache controller

-*- Enable the block layer  --->
        [*]   Support for large (2TB+) block devices and files


接著離開核心編譯環境,並儲存參數設定。

3.4 編譯核心

請執行:

~/qemu_image/arm/kernel/linux-4.4.268 $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage LOADADDR=0x60000000 -j 8

~/qemu_image/arm/kernel/linux-4.4.268 $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs modules -j 8

** 如果嫌每次都要打 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 這串指令太長的話,也可以把這串指令設定在 .bashrc 中,請在 .bashrc 中新增底下設定:

alias makearmhf='make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-'

之後,我們只要打 makearmhf 就等於 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 這串指令。

=============================================================================
故障排除:

如果在編譯核心時遇上以下錯誤:

"mkimage" command not found - U-Boot images will not be built
arch/arm/boot/Makefile:79: recipe for target 'arch/arm/boot/uImage' failed
make[1]: *** [arch/arm/boot/uImage] Error 1
arch/arm/Makefile:314: recipe for target 'uImage' failed
make: *** [uImage] Error 2

這是因為沒有 mkimage 這個指令,請上 packages.debian.org 查詢此指令的套件並安裝,安裝完畢後再執行一次 make uImage 指令。

# apt-get install u-boot-tools

=============================================================================
成果驗收:

1. 核心編譯完畢後會出現底下訊息:

Image Name:   Linux-4.4.268
Created:      Fri Apr 30 11:29:49 2021
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    3512976 Bytes = 3430.64 KiB = 3.35 MiB
Load Address: 60000000
Entry Point:  60000000
  Image arch/arm/boot/uImage is ready


我們可以驗收一下 uImage 這個檔案,指令如下:

~/qemu_image/arm/kernel/linux-4.4.268 $ file arch/arm/boot/uImage
arch/arm/boot/uImage: u-boot legacy uImage, Linux-4.4.268, Linux/ARM, OS Kernel Image (Not compressed), 3512976 bytes, Fri Apr 30 03:29:49 2021, Load Address: 0x60000000, Entry Point: 0x60000000, Header CRC: 0x45384E4C, Data CRC: 0x07228E4B


從上面的檔案可以看到這是一個 Linux/ARM 的 OS 核心,版本為 4.4.268

**** 請注意,核心編好 !===== 核心可以用,我們之後會驗證這個核心能不能開機 ****

3.5 編譯核心模組

核心要正常工作必須要有相對應的核心模組,否則無法載入驅動程式,

# Compile Kernel Modules
time make -s ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules -j $CPU_CORE

# Install Kernel Modules
time make -s ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install INSTALL_MOD_PATH=../modules/ -j $CPU_CORE

cd ../modules
time tar cfa ../modules-$KERNEL_VERSION.tar.xz lib

編譯完成後我們會有一個名為 modules-核心編號.tar.xz 的檔案,此檔案可以用來取代原始 rootfs 中 /lib/modules 目錄中舊版的驅動核心模組。因此我們必須將舊版驅動核心模組移除,再放入我們剛剛編完之驅動核心模組。


3.6 測試編好的 Linux 核心模組能否開機

請切換到 linux-KERNEL_VERSION/arch/arm/boot 底下,然後執行:

$ qemu-system-arm -M vexpress-a9 -m 256 -nographic -kernel zImage

$ qemu-system-arm -M vexpress-a9 -m 256M -dtb dts/vexpress-v2p-ca9.dtb -nographic -kernel zImage -append "console=ttyAMA0"


此時會出現開機畫面,然後當掉,如底下所示:

pulseaudio: set_sink_input_volume() failed
pulseaudio: Reason: Invalid argument
pulseaudio: set_sink_input_mute() failed
pulseaudio: Reason: Invalid argument
Booting Linux on physical CPU 0x0
Initializing cgroup subsys cpuset
Linux version 4.4.268 (herman@120-117-72-71) (gcc version 8.3.0 (Debian 8.3.0-2) ) #1 SMP Fri Apr 30 11:24:29 CST 2021
CPU: ARMv7 Processor [410fc090] revision 0 (ARMv7), cr=10c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
Machine model: V2P-CA9
Memory policy: Data cache writeback
CPU: All CPU(s) started in SVC mode.
PERCPU: Embedded 11 pages/cpu @8fdc1000 s13964 r8192 d22900 u45056
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024
Kernel command line: console=ttyAMA0

..


ALSA device list:
  #0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 33
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/smb/smb:motherboard/smb:motherboard:iofpga@7,00000000/10007000.kmi/serio1/input/input2
VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
Please append a correct "root=" boot option; here are the available partitions:
1f00          131072 mtdblock0  (driver?)
1f01           32768 mtdblock1  (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.4.268 #1
Hardware name: ARM-Versatile Express
[<80015ab0>] (unwind_backtrace) from [<80012604>] (show_stack+0x10/0x14)
[<80012604>] (show_stack) from [<804b4510>] (dump_stack+0x94/0xa8)
[<804b4510>] (dump_stack) from [<804b0624>] (panic+0x9c/0x1f4)
[<804b0624>] (panic) from [<8063e2b4>] (mount_block_root+0x1c0/0x250)
[<8063e2b4>] (mount_block_root) from [<8063e444>] (mount_root+0x100/0x108)
[<8063e444>] (mount_root) from [<8063e59c>] (prepare_namespace+0x150/0x198)
[<8063e59c>] (prepare_namespace) from [<8063deac>] (kernel_init_freeable+0x24c/0x25c)
[<8063deac>] (kernel_init_freeable) from [<804b60f8>] (kernel_init+0x8/0xe4)
[<804b60f8>] (kernel_init) from [<8000f390>] (ret_from_fork+0x14/0x24)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

此時表示 kernel 可以開機,但是因為還沒有跟整個系統整合在一起,所以會當機,我們按 Ctrl-a 再按 x 即可退出。


4. 放到你的「虛擬」嵌入式 ARM 平台,並使其開機

待續

2020年4月22日 星期三

2020/04/23 安裝 Cadence 5141

如何安裝 IC5141

目前 IC5141 的安裝檔案如下:

IC_51.41.151_linux_1of2.tgz
IC_51.41.151_linux_2of2.tgz

安裝指令如下:

# tar xfva IC_51.41.151_linux_1of2.tgz -C /opt/EDA/cadence
# tar xfva IC_51.41.151_linux_2of2.tgz -C /opt/EDA/cadence

安裝完畢後會出現 IC51.41.151 這個新的目錄

請至 /opt/EDA/cadence/IC 目錄中執行底下指令:

/opt/EDA/cadence/IC # rm cur
/opt/EDA/cadence/IC # ln -s IC51.41.151 cur

作完之後我們可以使用一般權限來執行 icfb (IC 5141 的啟動指令不是 virtuoso),
此時會出現底下錯誤訊息:

$ icfb&

[1] 11843
eecs@120-117-72-30:~$ /opt/EDA/cadence/IC/cur/tools/dfII/bin/icfb: 列 17: /opt/EDA/cadence/IC/cur/tools/bin/cds_root: 沒有此一檔案或目錄

系統的訊息是說 /opt/EDA/cadence/IC/cur/tools/bin/cds_root 不存在,但是我們執行

ls -l /opt/EDA/cadence/IC/cur/tools/bin/cds_root

有看到檔案。因此我們可以來 file cds_root 這個檔案,其輸出如下:

/opt/EDA/cadence/IC/cur/tools/bin$ file cds_root
cds_root: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped

從上面輸出我們可以看到 cds_root 是 32 位元的可執行檔,接下來可以看目前系統是否
有支援 32 位元模式,指令如下:

# dpkg --print-foreign-architectures
armhf
armel
arm64

這邊沒有看到 i386,因此我們要手動新增 i386 支援,指令如下:

# dpkg --add-architecture i386

新增 386 版之後再安裝 libc6:i386 套件以支援 386 可執行檔。

# apt-get update
# apt-get install libc6:i386

此時再執行 icfb 可以看到底下訊息:

$ icfb&
[1] 12318
eecs@120-117-72-30:~$ /opt/EDA/cadence/IC/cur/tools/dfII/bin/icfb.exe: error while loading shared libraries: libXt.so.6: cannot open shared object file: No such file or directory

此時檢查 libxt6 會發現此套件已安裝,但是 icfb.exe 還是找不到,原因如下:

$ file /opt/EDA/cadence/IC/cur/tools/dfII/bin/icfb.exe
/opt/EDA/cadence/IC/cur/tools/dfII/bin/icfb.exe: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, with debug_info, not stripped, too many notes (256)

系統告訴我們 icfb.exe 的可執行檔是 i386 版,因此要安裝 i386 版的 libxt6 才可以,
請執行:

# apt-get install libxt6:i386

2020/04/23 安裝 Synopsys ADP

Synopsys ADP

ADP (The Laker Advanced Design Platform) 原本是 Springsoft 的產品,其功能為電路圖繪製 (Schematic Capture),後來 SpringSoft 賣給 Synopsys,因此目前 ADP 為 Synopsys 公司之產品,本工具可以搭配 Laker 使用。

下載

至下載網頁下載目前最新版本之 ADP,其檔案為:

adp_2016.12-3_linux.tgz

解壓縮

# tar xfva adp_2016.12-3_linux.tgz -C /opt/EDA

設定環境

在 .bashrc 中新增底下設定

LakerADP="/opt/EDA/adp/cur/bin"

export PATH="$PATH:$LakerADP"

至於 License Server 的設定方式與 Laker 相同,因此無需再設定。

測試

執行 adp 啟動工具,並畫 inv 的 schematic,以測試其編輯功能都沒有問題。

在我們的例子中要打絕對路徑才能執行 adp,所以請執行

/opt/EDA/adp/cur/bin/adp

啟動 adp。

除錯

在啟動 adp 時會出現底下錯誤:

$ adp
/opt/EDA/adp/cur/platform/LINUX64/bin/adp: error while loading shared libraries: libXp.so.6: cannot open shared object file: No such file or directory

這是表示 adp 在執行時需要 libXp.so.6 這個動態連結函式庫才可以執行,不幸的是這個函式庫在 Debian 10 中已經不見了,我們往前找會發現在 Debian Jessie 版中有這個檔案,位於 libXp6 的套件中,因此我們手動將此檔下載,下載網址是:

http://ftp.tw.debian.org/debian/pool/main/libx/libxp/libxp6_1.0.2-2_amd64.deb

下載完畢後再以 root 權限手動執行安裝,指令如下:

# dpkg -i libxp6_1.0.2-2_amd64.deb
選取了原先未選的套件 libxp6:amd64。
dpkg: 包含 libxp6:amd64 的 libxp6_1.0.2-2_amd64.deb 中的預先相依問題:
 libxp6 預先相依於 multiarch-support
  multiarch-support 沒有被安裝。

dpkg: error processing archive libxp6_1.0.2-2_amd64.deb (--install):
 預先相依問題 - 不會安裝 libxp6:amd64
處理時發生錯誤:
 libxp6_1.0.2-2_amd64.deb

上述錯誤訊息是說我們沒有安裝 multiarch-support,因此我們要再安裝此套件:

# apt-get install multiarch-support

然後再執行:

# dpkg -i libxp6_1.0.2-2_amd64.deb

如此一來即可完成 libXp6 套件的安裝。接下可以再測試 adp 執行是否正確:

$ adp

2020年4月15日 星期三

如何以批次的方式來分割、格式化硬碟

如何以批次的方式來分割、格式化硬碟

1. 清空目前隨身碟/記憶卡上面的所有分割區

# dd if=/dev/zero of=/dev/sdb bs=512 count=1

2. 撰寫 fdisk 指令

把 fdisk 用來分割硬碟的指令另存新檔叫作 fdisk.cmd,其內容如下:

n
p
1

+100M
t
b
n
p
2


w

3. 手動操作

# dd if=/dev/zero of=/dev/sdb bs=512 count=1    -> 清空分割區
# fdisk /dev/sdb < fdisk.cmd                    -> 批次分割硬碟
# fdisk -lu /dev/sdb                            -> 檢視成果
# mkdosfs    /dev/sdb1
# mkfs.ext4  /dev/sdb2

=======================================================================

4. 自動格式化硬碟

目的:
1. 指定隨身碟的編號
2. 指定第一個分割區的大小
3. 自動分割
4. 自動格式化

5. 寫成 script 來作自動化

vi createusb.sh

其內容如下:

USB=/dev/sdb

PART1=/dev/sdb1
PART2=/dev/sdb2

PART1_SIZE=200M


cat > /tmp/fdisk.cmd << EOF
n
p
1

+$PART1_SIZE
t
b
n
p
2


w
EOF

dd if=/dev/zero of=$USB bs=512 count=1

fdisk $USB < /tmp/fdisk.cmd
mkdosfs   $PART1
mkfs.ext4 -F $PART2

6.

建立一個 createusb2.sh

#1 100MB        VFAT
#2 200MB        SWAP
#3 *            EXT4

2020年3月31日 星期二

安裝 HSPICE 及模擬

安裝 HSPICE 及模擬

SPICE 是電路模擬程式,在 1970 年代由柏克萊大學開始研發,之後發展出許多分支,其中 HSPICE 是電路模擬的工業標準,在完成電路設計後,必須以 HSPICE 來進行模擬以驗證電路功能是否正確無誤,符合我們的要求。

要安裝 HSPICE,請至 CIC 下載 HSPICE 之檔案,以 2020/3 月為例,目前最新版之 HSPICE 為 2020.03 版,下載完後會出現

hspice_2020.03_linux.tgz
installation_guide_synopsys.txt

這 2 個檔案,其中第一個是 HSPICE 的安裝檔,第二個是安裝說明,我們主要是看 HSPICE 的 License Server 設定埠為

26585@lsncku

HSPICE 的安裝路徑一樣整理到 /opt/EDA/hspice,首先下底下指令來安裝

# tar xfva hspice_2020.03_linux.tgz -C /opt/EDA

此時會自動在 /opt/EDA 底下將 HSPICE 安裝到 /opt/EDA/hspice 目錄下。HSPICE 安裝完畢後進行設定,否則無法對應到正確目錄,之後模擬會出問題。請在

/opt/EDA/hspice/cur/hspice/bin

目錄下執行

/opt/EDA/hspice/cur/hspice/bin # ./config -r /opt/EDA/hspice/cur

其中 /opt/EDA/hspice/cur 是目前安裝目錄,此時 ./config 可以進行設定並退出。完成此步驟後,接下來要設定執行路徑及 License Server。

設定執行路徑

請在 ~/.bashrc 中新增底下設定:

Hspice="/opt/EDA/hspice"
Hspicebin="/opt/EDA/hspice/cur/hspice/bin"

export PATH=$PATH:$Hspice:$Hspicebin

LM_LICENSE_FILE=5280@lsncku:26585@lsncku

作完後,以一般使用者的權限執行

$ hspice

看看能不能正常呼叫這個檔案,沒問題後,可以設定 HSPICE 環境,請將 CIC 的虛擬製程模擬檔 cic018.l 複製至 ~/model 目錄下,再編譯 ~/model/1p6mcic018.include 檔案,其內容只有一行:
.lib '/home/eecs/model/cic018.l' TT

接下來可以在 virtuoso 中測試 HSPICE 是否能執行並跑出模擬波形,請依老師操作測試。

2020年3月25日 星期三

如何安裝 CIC 0.18 Virtual CMOS Process

# mkdir -p /opt/EDA/PROCESS
# tar xfva cic018.tar.xz -C /opt/EDA/PROCESS

解開完畢後請至 /opt/EDA/PROCESS 目錄底下觀察是否有 CIC0181P6M 目錄。


接下來要將製程檔複製回自己家目錄,請先執行:

~$ mkdir -p model lib lklib simulation

建立空目錄,接下來可以進行檔案複製:

~$ cp /opt/EDA/PROCESS/CIC0181P6M/virtuoso/cic18.tf model
~$ cp /opt/EDA/PROCESS/CIC0181P6M/virtuoso/display.drf .
~$ cp /opt/EDA/PROCESS/CIC0181P6M/model/cic018.l model

複製完畢後,請在 ~/model 目錄中新增一個 1p6mcic018.include 檔案,內容如下:

.lib '/home/herman/model/cic018.l' TT


接下來我們即可測試 virtuoso 環境。

Virtuoso 6.1.8 安裝流程

下載、安裝、設定 Cadence Virtuoso EDA 工具


下載及驗證:

Cadence Virtuoso EDA 工具是業界佔有率相當高的 EDA 工具,主要功能在於繪製電路圖 (Schematic Entry)、符號圖 (Symbol)、佈局圖 (Layout)。除此之外,Cadence Virtuoso 亦可以直接呼叫外部工具來進行 Spice Simulation 以及 DRC/LVS驗證。

要安裝 Cadence Virtuoso EDA 工具,首先要下載 CIC 所提供的壓縮檔,以目前 (2020/03/12) 而言,其最新的版本是 IC_06.18.040,總共有五個壓縮檔要下載,如底下所示:

IC_06.18.040_linux_1of5.tgz
IC_06.18.040_linux_2of5.tgz
IC_06.18.040_linux_3of5.tgz
IC_06.18.040_linux_4of5.tgz
IC_06.18.040_linux_5of5.tgz

下載完畢後,請執行 gzip -t xxx.tgz 來測試所下載之壓縮檔是否有誤,如果沒有任何錯誤訊息的話,代表此壓縮檔格式正確,接下來可以進行安裝。


================================================================================

解壓縮及安裝:

建立安裝目錄

# mkdir -p /opt/EDA/cadence

解開壓縮檔

# tar xfva IC_06.18.040_linux_1of5.tgz -C /opt/EDA/cadence
# tar xfva IC_06.18.040_linux_2of5.tgz -C /opt/EDA/cadence
# tar xfva IC_06.18.040_linux_3of5.tgz -C /opt/EDA/cadence
# tar xfva IC_06.18.040_linux_4of5.tgz -C /opt/EDA/cadence
# tar xfva IC_06.18.040_linux_5of5.tgz -C /opt/EDA/cadence

解開之後,會出現

/opt/EDA/cadence/IC 目錄,在此目錄下即是已解開之 Virtuso EDA 工具。

================================================================================

設定 Virtuoso 環境

1. 要設定 Virtuoso,請看原廠設定手冊,其位置在

/opt/EDA/cadence/IC/cur/doc

目錄,我們要看有關 installation 或 setup 或 administrator's guide 之類的文件。以此例來說,在 doc 目錄下有一個名為 install 的子目錄,此目錄存放 Cadence Installation Guide,這是原廠的安裝手冊,任何設定上的問題,以此檔內敘述為主。

2. 設定 Virtuoso 執行路徑

由於我們的 PATH 變數還沒有設定 Virtuoso 的執行環境,如果執行

$ virtuoso

的話,會出現底下錯誤訊息:

bash: virtuoso: command not found

這是由於 virtuoso 目前沒有在 ~/.bashrc 的 PATH 變數中設定,
因此在 ~/.bashrc 中要加上底下設定:

Virtuoso="/opt/EDA/cadence/IC/cur/tools/bin"
icfb="/opt/EDA/cadence/IC/cur/tools/dfII/bin"

export PATH=$PATH:$Virtuoso:$icfb

####ENV for IC60 #####
CDS_LIC_FILE=5280@lsncku
CDS_INST_DIR=/opt/EDA/cadence/IC/cur
CDS_ROOT=/opt/EDA/cadence/IC/cur
CDS_HOME=/opt/EDA/cadence/IC/cur
CDS_Netlisting_Mode=Analog
CDSDIR=$CDS_INST_DIR/tools
#XKEYSYMDB=$CDS_INST_DIR/share/cdssetup/tdmX11/XKeysymDB
XNLSPATH=$CDS_INST_DIR/share/cdssetup/tdmX11/nls
CDS_AUTO_64BIT=ALL

OA_HOME=/opt/EDA/cadence/IC/cur/oa


export LM_LICENSE_FILE=5280@lsncku:1717@lsncku:27000@lsncku:26585@lsncku




設定完畢後,重新打開新的終端機視窗,在此視窗中執行

$ virtuoso
bash: /opt/EDA/cadence/IC/cur/tools/dfII/bin/virtuoso: /bin/ksh: bad interpreter: No such file or directory

上述的錯誤訊息是 virtuoso 找不到 ksh 這個 shell,請安裝 ksh 這個套件,再執行

========================================================================
修改 /opt/EDA/cadence/IC/cur/share/oa/bin/sysname

eecs@120:~$ virtuoso
2020/03/20 10:45:59 System is not a supported distribution
2020/03/20 10:45:59 An error occurred. We don't recognize OS
2020/03/20 10:45:59 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2020/03/20 10:45:59 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
virtuoso:   ERROR: The command /opt/EDA/cadence/IC/cur/share/oa/bin/sysname returned an error status:
                            unknown
virtuoso:    INFO: Note that OpenAccess (OA) requires running the Configure phase.
virtuoso:          See the "OpenAccess Installation and Configuration Guide" before
virtuoso:          you complete the configuration step. This manual is included with
virtuoso:          the Cadence product documentation.

========================================================================
$ virtuoso
2020/03/20 10:49:20 System is not a supported distribution
2020/03/20 10:49:20 An error occurred. We don't recognize OS
2020/03/20 10:49:20 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2020/03/20 10:49:20 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/cadence/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared libraries: libXrender.so.1: cannot open shared object file: No such file or directory

請安裝  libxrender1 套件
========================================================================
$ virtuoso
2020/03/20 11:16:55 System is not a supported distribution
2020/03/20 11:16:55 An error occurred. We don't recognize OS
2020/03/20 11:16:55 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2020/03/20 11:16:55 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/cadence/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared libraries: libXt.so.6: cannot open shared object file: No such file or directory

請安裝 libxt6 套件
========================================================================
$ virtuoso
2020/03/20 11:18:25 System is not a supported distribution
2020/03/20 11:18:25 An error occurred. We don't recognize OS
2020/03/20 11:18:25 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2020/03/20 11:18:25 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/cadence/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory


請安裝 libx11-xcb1 套件
========================================================================
$ virtuoso
2020/03/20 11:19:51 System is not a supported distribution
2020/03/20 11:19:51 An error occurred. We don't recognize OS
2020/03/20 11:19:51 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2020/03/20 11:19:51 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/cadence/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory

請安裝 libxss1 套件
========================================================================

$ virtuoso
2020/03/20 11:21:02 System is not a supported distribution
2020/03/20 11:21:02 An error occurred. We don't recognize OS
2020/03/20 11:21:02 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2020/03/20 11:21:02 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/cadence/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared libraries: libXft.so.2: cannot open shared object file: No such file or directory

請安裝 libxft2 套件
========================================================================

$ virtuoso
2020/03/20 11:22:02 System is not a supported distribution
2020/03/20 11:22:02 An error occurred. We don't recognize OS
2020/03/20 11:22:02 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2020/03/20 11:22:02 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/cadence/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

安裝 nvidia 驅動程式模組再重新開機
========================================================================
$ virtuoso
2020/03/20 11:45:12 System is not a supported distribution
2020/03/20 11:45:12 An error occurred. We don't recognize OS
2020/03/20 11:45:12 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2020/03/20 11:45:12 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/cadence/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared libraries: libGLU.so.1: cannot open shared object file: No such file or directory

請安裝 libglu1-mesa 套件
========================================================================
$ virtuoso
2020/03/20 11:46:31 System is not a supported distribution
2020/03/20 11:46:31 An error occurred. We don't recognize OS
2020/03/20 11:46:31 WARNING This OS does not appear to be a Cadence supported Linux configuration.
2020/03/20 11:46:31 For more info, please run CheckSysConf in <cdsRoot/tools.lnx86/bin/checkSysConf <productId>
/opt/EDA/cadence/IC/cur/tools/dfII/bin/64bit/virtuoso: error while loading shared libraries: libdb-4.7.so: cannot open shared object file: No such file or directory

作底下連結
/usr/lib/x86_64-linux-gnu# ln -s libdb-5.3.so libdb-4.7.so
========================================================================
$ virtuoso

此時應該可以看到 virtuoso 視窗

2020年3月5日 星期四

在 Debian 10 上面安裝舊版 nv 驅動程式

在 Debian 10 上面安裝舊版 nv 驅動程式

我們目前機器裡面安裝的 3D 加速卡是 nvidia GT 620,使用底下指令可以看到:

lspci -k

01:00.0 VGA compatible controller: NVIDIA Corporation GF119 [GeForce GT 620 OEM] (rev a1)
        Subsystem: ASUSTeK Computer Inc. GF119 [GeForce GT 620 OEM]
        Kernel modules: nvidia

這個顯卡因為已經十分老舊的關係,在 Debian 10 上面的 nvidia-kernel-dkms 套件已經不再支援,因此我們要安裝舊版 (legacy) 的 nv 驅動程式,以支援此顯卡。請先設定 /etc/apt/sources.list 這個檔案,加上 contrib non-free 參數,如底下所示。

deb http://opensource.nchc.org.tw/debian buster main contrib non-free

接下來請安裝 nvidia-legacy-390xx-kernel-dkms 套件,操作如下所示:

# apt-get -y install nvidia-legacy-390xx-kernel-dkms

此時會開始安裝 nvidia-legacy 版的驅動程式,其編號為 390,裝完之後的訊息如下所示:

..(前略)
DKMS: install completed.
設定 nvidia-legacy-390xx-driver (390.116-1) ...
執行 glx-alternative-nvidia (1.0.0) 的觸發程式……
執行 glx-alternative-mesa (1.0.0) 的觸發程式……
執行 libc-bin (2.28-10) 的觸發程式……
執行 update-glx (1.0.0) 的觸發程式……
執行 glx-alternative-nvidia (1.0.0) 的觸發程式……
執行 libc-bin (2.28-10) 的觸發程式……
執行 initramfs-tools (0.133+deb10u1) 的觸發程式……
update-initramfs: Generating /boot/initrd.img-4.19.0-8-amd64


作完之後請檢查 /etc/modprobe.d/nvidia-blacklists-nouveau.conf 檔案是否有底下設定:

blacklist nouveau
blacklist ast

設定完畢後可以重新開機,以便載入 nvidia 驅動程式。重新開機之後可以輸入

lsmod |grep nvidia

以及

lspci -k

來確認 nvidia 驅動程式模組已經載入。確認無故後可以照之前流程來設定

/etc/X11/xorg.conf 檔案:

# X -configure                          -> 產生 /root/xorg.conf.new 檔

# vi xorg.conf.new 把 nouveau 改成 nvidia

# cp /root/xorg.conf.new /etc/X11/xorg.conf -> 將設定檔複製到 /etc/X11 中

接著用一般使用者帳號進入 X 視窗,並打開 chrome 看看能不能以 3D 模式觀看地球