2015年7月25日 星期六
[Note][EZ-USB]
快要被 Eclipse 搞瘋掉之前, 找到了解決方法, 但是應該不算正解, 不過先記下來, 可以用先.
加入 static library ( .a)
要加入 libcyu3mipicsi.a, 先把它複製到相對應的 debug/release 目錄下, 然後在 project property 的 C/C++ General 下面的 Paths and Symbols 的 Libraies 的地方, 加入去掉前面 lib, 後面 .a 的 cyu3mipicsi, 就可以了
2015年7月19日 星期日
[Ubuntu][RPi] Setup toolchain
Raspberry Pi 固然可以做很多事, 但是有些事做起來還是不太順手, 譬如說大量的編譯工作. 因此, 接下來會在 Ubuntu 上設置 cross compiler, 也就是 toolchain, 以作為開發環境. 用 Ubuntu 的原因
- Ubuntu 使用的普及率較高, 可取得資源較多.
- Raspberry Pi 和 Ubuntu 都屬於 Debian 這個 distribution, 目錄結構都一樣.
Toolchain 有兩種方式可以取得, 一種是下載已經編譯好的套件, 一種是下載 source code, 自行編譯.
安裝已經編譯好的 Toolchain
先安裝其他必要的套件
$ sudo apt-get install make git-core ncurses-dev
下載 toolchain
$ mkdir rpi
$ cd rpi
$ git clone https://github.com/raspberrypi/tools.git
再把它加到路徑中. 最簡單的方法就是加到 bashrc 裡面. 但是這邊不採用這個做法, 因為加到 bashrc 裡面, 只要登入, 就會在路徑中. 如果我們要在這一台電腦編譯這一台電腦所要執行的程式, 這樣就會造成混亂. 這裡的方法是把它放到 script 中, 要用到的時候再引入進來, 如果不要用, 可以登出再登入就可以了.
$ nano setrpi.sh
因為畫面有截斷, 所以另外寫在下面, 另外, 根據 Ubuntu 的版本不同, 32/64 位元的設定也有不同. 設定錯誤會產生執行 arm-linux-gnueabihf-gcc 的時候, 回報 arm-linux-gnueabihf-gcc "File not Found” 的錯誤.
Ubuntu 32 位元版
export PATH=$PATH:~/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian
Ubuntu 64 位元版
export PATH=$PATH:~/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64
測試
在 rpi 下面開一個 temp 目錄, 加入 hello.c
$ mkdir temp
$ cd temp
$ nano hello.c
然後用以下命令編譯
$ arm-linux-gnueabihf-gcc hello.c –o hello
用 file 檢查檔案屬性.
試著執行這個檔案, 會回報檔案格式不符.
上傳到 Raspberry Pi 之後, 可以正常執行.
2015年7月18日 星期六
[RPi] setup lightweight webserver
其實並不一定需要 webserver 來開放 Raspberry Pi 的遠端存取. 然而, 如果需要存取的時候, 有一些條件判斷, 透過 web server 會是一個方便的途徑. 例如說, Raspberry Pi 上面有兩個 web cam, 雖然可以直接連線, 但是透過 web server 轉址, client 不需要事先知道 Raspberry Pi 上面有幾個 web cam, 可以透過 web 的方式查詢, 就方便許多.
Linux 上面的 Web Server, 一般就是 LAMP, 所謂的 LAMP, 指的就是 Linux + Apache + MySQL + PHP 的軟體組合, 以提供一個完整, 功能強大的 web server, 可以完成一個商用的 web server. 但是我們並不需要一個功能非常強大的 web server, 所以這邊會採用一個輕量級的解決方案 lighttpd.
* 目前我這邊並沒有適合的網際網路環境 (這個說法很怪, 不過最近是這樣). 因此會以 LAN 實作, 要注意的部份是 static IP, 以及 DNS 的設定, 另外 raspberry Pi 上面的密碼也應該要修改. 這部份日後再補上.
Install lighttpd
$ sudo apt-get install lighttpd
出現以下訊息表示 lighttpd 已經安裝完成, 重開機之後就會自動啟動
[ ok ] Starting web server: lighttpd.
Install MySQL
(option) 如果沒有用到資料庫, 這部份其實是可以不用裝. 而且, 由於 Raspberry Pi 在 3.12 之後的版本, 不能正確安裝, 必需要 roll back 到之前的版本. 所以這裡就不安裝. 如果一定要安裝可以用以下的命令先 roll back 到之前的版本
$ sudo rpi-update f6eef32dd6388c3b04dbf462bd324d93281bf397
$ sudo apt-get install mysql-server
Install PHP
$ sudo apt-get install php5-common php5-cgi php5
這個安裝的順序很重要. PHP5 如果找不到 php5-cgi 會去安裝 Apache, 那就失去我們要安裝輕量級方案的用意了.
Set Directory permission
Web Server 預設會使用到 /var/www 這個目錄, 這個目錄的權限需要做一些設定
$ sudo chown www-data:www-data /var/www
$ sudo chmod 775 /var/www
$ sudo usermod –a –G www-data pi
測試
刪除 /var/www/index.lighttpd.html
新增 /var/www/index.php, 參考以下內容. 注意, HTML copy 的時候, 可能會多出一些不必要的字元.
<?php
print <<< EOT
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test successful</title>
</head>
<body>
<h1>Hello from Raspberry Pi</h1>
<p>Congratulations.</p>
<p>Your webserver and PHP are working.</p>
</body>
</html>
EOT;
?>
結果
在 IE 輸入網址或 IP Address, 會出現錯誤
這是因為 lighttpd 沒有設定對應到 PHP 的問題.
$ sudo apt-get install php5-cgi
$ sudo lighttpd-enable-mod fastcgi fastcgi-php
$ sudo service lighttpd force-reload
然後. 再重新載入網頁, 就可以了.
2015年7月17日 星期五
[VirtualBox] Setup development environment
這邊說明 VirtualBox 設定的一些步驟. 這部份比較零碎, 當做備忘.
- Internet Connection, VirtualBox 裡面的 Ubuntu 使用 Windows Host 的網路連線
- Boot to Console, Ubuntu 開機時, 直接進入 console 的登入畫面
- Share Folder, VirtualBox 裡面的 Ubuntu 和 Windows Host 共用資料夾, 分享檔案
- VirtualBox extension pack, 安裝 VirtualBox 的 extension pack
- Share WebCam, VirtualBox 裡面的 Ubuntu 使用 Windows Host 的 Webcam
Internet Connection
網路連線是 linux based 系統不可或缺的必要條件, 軟體/系統的更新都需要線上作業, VirtualBox 開機時, 有時候會連不上, 這時就需要修改 VirtualBox 的網路配置.
選擇到要啟動的虛擬機器, 然後按上面的設定
選擇網路
在 “附加到”的後面, 選擇要連接的網路卡, 然後按確定
回到 Ubuntu 的畫面, 重新開機, 就可以連上網路.
Boot to console
大部份的時間, 我們會在 console mode 下命令, 所以就不需要浪費時間等 GUI 啟動, 再進入 console mode, 以下 修改 /etc/default/grub, 讓開機的時候直接進入 console, 而不要啟動 GUI 的畫面.
先備份要修改的檔案
$ sudo cp –n /etc/default/grub /etc/default/grub.backup
如果要復原
$ sudo mv /etc/default/grub.backup /etc/default/grub
$ sudo update-grub
修改 /etc/default/grub $ sudo nano /etc/default/grub mark 掉 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” 這一行 修改為 GRUB_CMDLINE_LINUX=”text” 取消 GRUB_TERMINAL=console 這一行的 mark 參考附圖的修改存檔後更新
$ sudo update-grub
$ sudo reboot
Share Folder
建立 VirtualBox 和 Windows 的共用資料夾, 在需要交換檔案的時候, 就會很方便.
1. 設定 Windowds 上面要共用的目錄
在下方的狀態列上的資料夾圖示上面按右鍵, 會出現共用資料夾設定的選單,
因為還沒設定好, 會出現錯誤的警告.
開啟共用資料夾設定畫面.
按右上方的圖示新增共用資料夾
點選資料夾路徑後面的下拉選單, 選取其他, 再選擇要從 Windows 上共用的資料夾. 並且設定成自動掛載, 設為永久.
確定後, 重新開啟 Ubuntu 以安裝 guest additions
2. 設定 Ubuntu 上的共用目錄
先安裝 dkms
$ sudo apt-get install dkms
安裝完後, 重新開機. 並且在登入後, 虛擬機器的選單 裝置/插入 Guest Additions CD 映像, 選擇 virtualbox-guest-additions.iso. 如果 Ubunto 的安裝光碟仍在系統中, 就先他移除. 然後掛載 cdrom
$ sudo mkdir /mnt/cdrom
$ sudo chmod 777 /mnt/cdrom
$ sudo mount /dev/sr0 /mnt/cdrom
$ cd /mnt/cdrom
$ ./VBoxLinuxAdditions.run –nox11
然後看看是否已經掛入
把 shared 這個分享目錄掛到 /mnt/shared
$ sudo mount –t vboxsf –o rw shared /mnt/shared
這樣就可以在 /mnt/shared 下面看到 windows 分享的目錄
修改 /etc/fstab 以自動掛入分享目錄
VirtualBox extension pack
VirtualBox 有一個 extension pack, 用來支援不同平台間的資援分享, 以下說明下載安裝.
下載 :
安裝
在 VirtualBox 的選單中, 選擇 檔案, 喜好設定,
在左邊的選項中, 選擇擴充套件
按最右邊的瀏覽按紐.
開啟 extension pack
選擇安裝後, 出現授權同意畫面, 捲動到最下面之後, 選擇同意.
自動完成安裝後, 提示 OracleVMVirtualBoxExtensionPack 安裝成功.
Extension Pack 顯示在 擴充套件中
Share Web Cam
確定虛擬機沒有在執行中, web cam 也沒有在使用中
開啟 VirtualBox, 選擇主畫面的設定值按紐
選擇左邊選項中的 USB
勾選啟用 USB 控制器, 以及啟用 USB 2.0 (EHCI) 控制器
按下右邊帶 + 號的新增按紐. 會出現幾個 USB device. 如果有不明裝置, 只顯示 PID/VID, 可以打開 windows 的裝置管理員, 對照 PID/VID 把它選進來.
選完之後, 重新開啟 VirtualBox , 並啟動 Ubuntu, 這時才會開始安裝驅動. 再關掉 Ubuntu. 回到 VirtualBox 的主畫面, 選擇設定值, USB, 加入篩選器, 這時候就會出現偵測到的 Webcam. 把它選進來.
重新啟動 Ubuntu, 可以看到這個 web cam 已經進來了.
2015年7月14日 星期二
[VirtualBox] Windows 7 + Virtual 4.3 + Ubuntu 14.04
由於作業上的方便, 有時候還是要用到 Windows, 所以後面會以 Windows 7 + VirtualBox + Ubuntu 做為開發的環境. 這邊先說明 VirutalBox 的安裝.
下載 VirtualBox
現在的版本是 5.0, 不過, 我偏好不要太新的版本, 所以還是使用稍微舊的版本, 在以下 link 下載https://www.virtualbox.org/wiki/Download_Old_Builds_4_3
下載後執行安裝
接受預設的安裝
完全依照預設的選項, 一步一步安裝
安裝後開始執行
填入虛擬機器的描述名稱
設定使用 1 GB 的 RAM
選擇立即建立虛擬硬碟
套用預設的磁碟映像檔案格式
選擇固定大小的硬碟配置
選擇硬碟映像檔存放的位置. 並且設定這個磁碟映像檔的大小, 這邊設定成 96 G.
VirtualBox 建立磁碟映像檔. 這個動作要很久, 我的電腦了大約 30 分鐘.
完成後回到 VirtualBox 管理員的畫面
按上面的啟動按紐, 開始進行 Ubuntu 的安裝. 第一次執行會花一些時間. 然後會提示選擇開機光碟映像檔的畫面. 指定開機映像檔之後, 啟動, 就會開始安裝.
進入 Ubuntu 的安裝畫面. 按 Install Ubuntu 開始安裝.
選擇安裝時更新.
移除磁碟映像檔中的虛擬磁區.
同意寫入變更到虛擬磁碟.
選擇時區和鍵盤後, 設定自己的名字. 其他的就會自己填入.
開始安裝 Ubuntu
完成後回到登入畫面