2020年10月2日 星期五

Quick guide for building Raspberry Pi kernel 4.4.x


For  Driver course (www.ittraining.com.tw)

1) 安裝toolchain (Cross compiler)

# For 32 位元Linux 

export PATH=/home/student/pi/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin:$PATH

# For 64 位元Linux
export PATH=/home/student/pi/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi-x64/bin:$PATH


root@ubuntu:/home/student/pi# arm-linux-gnueabihf-gcc -v

..
gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03)





2) Linux kernel 編譯

#進入kernel source tree

cd linux  

# 產生 .config


For Raspberry Pi 2, Pi 3, Pi 3+, and Compute Module 3 default build configuration

KERNEL=kernel7
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig

For Raspberry Pi 4
KERNEL=kernel7l
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2711_defconfig

#編譯 Linux kernel、kernel module 及 device tree

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j 2
# 安裝  kernel module

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=../modules modules_install



#複製kernel image & dtb 到 Raspberry Pi


sudo cp arch/arm/boot/zImage /boot/$KERNEL.img
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/


#複製 kernel modules 到 Raspberry Pi


tar zcvf modules.tar.gz  modules

scp modules.tar.gz root@192.168.1.141:/root

tar zxf modules.tar.gz
解開後將 <kernel version> 目錄放到 /lib/modules/


----------------------------------------------------
在 Raspberry Pi 編譯kernel module

1.) copy kernel source to  Raspberry Pi

scp linux-rpi-4.14.98-v7.tar.gz root@192.168.1.157:/root

tar zxf linux-rpi-4.14.98-v7.tar.gz

2.)建立連結到 kernel source

cd /lib/modules/4.14.98-v7
ln -sf  /root/linux-rpi-4.14.98-v7 build




------------------------------------------------------------------------------------
3.) build  driver module from source

cd kernel_driver/01_LED 
.
├── chr_led.c
├── Makefile
└── test.c

make 


├── chr_led.c
├── chr_led.ko
├── chr_led.mod.c
├── chr_led.mod.o
├── chr_led.o
├── Makefile
├── modules.order
├── Module.symvers
└── test.c

發生 fixdep error! Exec format error

進入kernel source 重新產生ARM版本的工具集

cd /root/linux-rpi-4.14.98-v7
make scripts 







4.)   測試 module

#載入模組sudo insmod chr_led.ko

#顯示所有模組
lsmod




#用user應用程式測試driver
gcc test.c -o test

sudo ./test   ==> 你會看見LED 在閃礫

#卸載模組
rmmod chr_led







2020年9月18日 星期五

好用的SSH Client : MobaXterm


 MobaXterm 為一個SSH Client, 可以用來連入我們Linux 的伺服器

    新增SSH Session: 

       Remote Host: 虛擬主機的外部IP


接下來會需要輸入登入Linux主機的帳密  (記得:有分大小寫)


使用MobaXterm的三大好處
  • 你可以用SFTP的視窗操作, 就可以直接上傳或下載遠端Linux主機的檔案,

  • 你可以遠端開啓,編輯Linux主機的檔案, 如果你不熟vi或nano這類UNIX文字編輯器,這可以讓你使用你所習慣的windows編輯器, 如Notepad++等.



  • 由於MobaTerm 內含X Server,所以你可以在遠端執行具有一個GUI 視窗的程式 (X Client), 而視窗畫面會出現在我們本機的windows上. (有興趣可以去google 一下 X Window, X11 protocol) 


  

     Note: 預設MobaXterm 使用SSH, 會啓動X11 Forwarding. 可以讓GUI 視窗仿佛要顯示在local端,然而實際上是走SSH 通道將畫面Forwarding 到windows系統這邊來.


在windows上用Virtual Box 建置Linux主機


STEP 0:  Prepare Your VirtualBox Environment

下載VirtualBox 軟體: https://www.virtualbox.org/wiki/Downloads

下載 Ubuntu Image (取得一個已經包含完整系統的虛擬應用裝置檔案ova檔)


*ova 為VirtualBox使用的開放虛擬機器格式OVF (Open Virtualization Format)


STEP 2. Importing an Existing Virtual Machine into VirtualBox
 

啓動 VirtualBox , 並在 [File->Import Appliance]


選擇xxxx.ova檔, 載入後, 之後此VM系統及運作中在檔案系統所產生的檔案, 預設是放在
C:\Users\<user>\VirtualBox VMs\LinuxVMImages\xxxx下, 此即為Machine Folder 的位置。 若要變更預設Machine Folder位置, 則在Import Appliance時要點選
Expert Mode, 則可以在Import Appliance時, 變更Machine Folder的預設位置.



匯入需要一些時間....wait ..wait ..




STEP 3. Start Virtual Machine

接著點選剛匯入的VM, [Start] 


啓動時也許會跳出錯誤訊息, 大多數是因為VM內的網卡硬體裝置可能和你的機器不同, 所以只要重新選擇成你機器的網卡, 就可以正常啓動!




以使用者帳號 ubuntu (password: ubuntu) 登入, 大功告成.




FAQ: 

  1.若看到錯誤訊息像是CPU虛擬化的問題, 就要進入BIOS 設定畫面,將 "Intel virtualization
 technology" 給打開


2.  確認.ova檔案是正確的, 至少檔案大小要是對的



其他

1.) 在windows使用SSH Client登入Ubuntu

在Ubuntu 下 , 開啓 terminal 執行 ifconfig 可以看到Ubuntu IP,  接著在windows 啓動SSH Client (如MobaXterm) 連入。接著用 SSH 的SFTP 功能, 如同FTP一樣, 可以很方便的讓Host 和 Guest 交換檔案。  ==> 更多關於Mobaxterm的使用







設定時區

sudo timedatectl set-timezone Asia/Taipei

date 





2.) Shared Folder

可以讓Host OS( Winodws)  分享資料匣給Guest OS (Ubuntu), 則Host可以和Guest共用此資料匣來交換檔案. Host 啓動Shared Folder 並勾選自動mount , 則Guest OS (Ubuntu) 會mount 此 資料匣在 /media路徑下, 或者開啓檔案管理員 (nautilus) 也看到此共用的資料匣。



相關文章:


2020年9月7日 星期一

win10安裝 Anaconda +Tensorflow2.0

一. 建議使用Google Colab 執行keras/tensoflow 的程式,因為這是最適合初學者的操作環境, 不僅可以省去很多套件安裝的麻煩, 還可以擁有免費的GPU/TPU 計算資源可以使用.




二.  Win10 安裝 Anaconda + Python 3.7+ Tensorflow2.x


1. ) 先下載Anaconda 3.x    並安裝 (基本上只要一直按"下一步",即可完成安裝)



2.) 利用Anaconda 建置一個虛擬環境, 並在此虛擬環境下安裝所需的套件

先在Windows 開始選擇, 找到 “Anaconda Prompt”, 並開啓 [Anaconda Prompt]




 
接著執行以下指令

#新增虛擬環境(取名為tf2.0)

conda create -n tf2.0 python=3.7

#啓用虛擬環境並安裝TF2.0 (穏定版本)

conda activate tf2.0

pip install tensorflow==2.0.0-beta1

pip uninstall numpy

pip install numpy==1.16.2

pip install matplotlib


#在虛擬環境tf2.0安裝其他套件 (如果有需要的話)

conda install jupyter


#在虛擬環境tf2.0, 進入python 互動環境(REPL)並檢查TF版本

python

import tensorflow as tf

tf.__version__





#移除conda虛擬環境tf2.0

conda env remove --name tf2.0

=======其他=============

# 將tensorflow 2.0 更新到目前最新版本(非stable 版本, 如果有必要的話才更新)
pip install tf-nightly --upgrade


2020年9月3日 星期四

使用Google Compute Engine 建置Linux環境

 

申請Google Compute Engine 90天試用


利用 gmail 帳戶, 在Google Compute Engine (GCE) 快速獲得免費的LINUX主機
申請時雖然會需要輸入信用卡號.但90天內使用是不用錢的 ~

1.) 建置虛擬主機

 
新增一個 VM 執行個體



主要是選擇作業系統, 


這裡我們選擇了Linux Ubuntu 18.04 的版本






基本上其他的設定都預設就可以了, 在最下方, 按下 [建立] 就這樣清鬆地建立一台LINUX 主機了. 接下來就是遠端登入使用這台主機了.

2.) 使用SSH 登入GCE的Linux Ubuntu 

使用SSH登入, 只允許使用RSA認證的方式登入。我們可以使用puttygen.exe 來產生成對的RSA public key & private key


3.) 在GCE/[中繼資料] 和 [安全殼層金鑰] 新增一組RSA Public key

  這裡的金鑰及值, 都是從puttygen.exe  貼上來的





2020年9月2日 星期三

Python Open GL及RL 套件安裝


進行下列軟體安裝  ( 底下安裝指令在Ubuntu 18.04的測試過,皆可順利安裝)

若沒有Linux 環境怎麼辦? ==> 請參考使用Google Compute Engine 建置Linux環境

得先確認 python版本須為3.6以後 (事實上, Ubuntu 18.04 所安裝的Python己經是3.6以後的版本), 

執行  python3 -V  會顯示python的版本 ==> Python 3.6.9
 



開始安裝套件

[Install pip3]
sudo apt-get install python3-pip


[Install PyOpenGL]
sudo apt-get install -y python-opengl

[Install RL SDK]
sudo pip3 install pybullet
sudo pip3 install gym

 執行 Hello PyBullet World 範例


可用SFTP 將測試檔案test.py 上傳Ubuntu 主機或直接在主機上新增程式

新增一個純文字檔案, 將下列代碼複製貼上, 並存為test.py 


執行python3 test.py , 終端機上會出現底下畫面



會開啓Open GL所顯示的3D畫面視窗, 恭喜你環境建置成功啦


[References]

https://github.com/bulletphysics/bullet3/releases
https://gym.openai.com/docs/#installation





2020年8月9日 星期日

DYNAMIXEL Motor: R+ Manager 2.0

 選擇 DYNAMIXEL X 系列(因為我們是XL430-W250 servo)

會自動選擇COM PORT (FTDI USB-Serial)
 Baudrate : 57600 bps (出廠預設)
開始掃描, 成功掃描到 XL430-250 motor
可以用工具針對 XL430-250 moto 內部的EEPROM 及RAM 內容做讀取及修改

先在 [Torque Enable] 設成off ,然後在Goal Position 這一格設定轉動的step或解度,
即可以看到馬達的轉動