跳到主要內容

發表文章

[Intel][IoT][Galileo]重新編譯Intel Quark-based Galileo Gen 2的Bootloader、kernel、file system、cross compilation toolchain

這篇文章參考由Intel提供的BSP build guide,詳細記錄在Ubuntu 14.04 LTS實驗環境上,由source code建立Intel Quark-based Galileo Gen 2開發板BSP的過程,包含Bootloader、kernel、file system、cross compilation toolchain...等,做為隨時可以重新驗證的實作筆記並從中分析與學習真槍實彈的嵌入式開發技巧。 Intel Quark BSP 由Intel官網下載Intel® Quark™ BSP: https://downloadcenter.intel.com/download/23197 下載回來的檔案為BSP_Sources_and_Docs_for_Intel_Quark_v1.2.1.zip 解壓縮後包含一個source code包與四份文件,分別為: Board_Support_Package_Intel_Quark_v1.2.1.7z: 裏頭包含EDKII Firmware(Quark_EDKII_v1.2.1.tar.gz)、 四份文件: Intel® Quark™ SoC X1000的BSP_BuildGuide、Software_Developer_Manual、Software_Release_Notes與UEFI_Firmware_Writers_Guide 建置EDKII Firmware 首先由建置EDKII Firmware開始,這是一個modern、feature-rich、Open Source、跨平台的UEFI firmware,以下為它的官網與github網址連結: 官網: http://www.tianocore.org/ Github上的Getting-Start教學: https://github.com/tianocore/tianocore.github.io/wiki/Getting-Started-with-EDK-II 以下記錄整個過程下的指令: sudo apt-get install build-essential uuid-dev iasl subversion nasm tar zxvf Quark_EDKII_v1.2.1.tar...

[Intel][IoT][Galileo]Intel IoT初體驗:
跨Windows、OSX、Linux三大平台支援的Intel Quark-based Galileo Gen 2開發板

這篇文章記錄在Intel Quark-based Galileo Gen 2開發板上愉快的Getting Start經驗!! 本尊與配件 下圖就是 Intel Quark-based Galileo Gen 2開發板!! 又是一片與Arduino相容的IoT開發板,配上熱熱的Intel SoC、大大的乙太網路孔跟不知道是否故意設計無防呆的USB轉RS232排針... SD Card跟網路線非標配,不過還好Micro SD card很便宜隨便買個class 4 SDHC的就行了歐!! (PS:此板子只支援32GB以內SDHC格式的SD card歐!!) 看到4GB跟8GB價錢相同,於是就拿8GB了!!也有不附轉卡更便宜的: 快快樂樂Getting Start 請點開Intel的Getting Start,選擇OS、IDE開始Prepare Your MicroSD Card: https://software.intel.com/en-us/iot/library/galileo-getting-started 基本上就是把Pre-built image塞進SD Card、將SD Card插入板子、將不防呆的排線連接板子與USB端連接電腦,裝電腦上的COM Port driver for serial terminal、在Host上使用putty(或相對應的serial terminal)設定鮑率(Baud)與COM Port號碼後開啟、看板子開心的boot image,設定板子網路IP,最後在Host上安裝Intel® Developer Kit version of the Eclipse* IDE (By the way,請完全使用Intel提供的Image與Eclipse等工具組,才能完全照官網教學做) 因為Intel寫得太好了,所以這邊只補充網路部分,Intel官網提供的是透過Wifi模組連接網路,而此片板子使用的是乙太網路,預設板子會使用DHCP自動取得IP,可以透過ifconfig看到板子取到的IP address: ifconfig -a 或是手動設定IP,然後ping看看是否成功: ifconfig enp0s20f6 140.114.78.51...

[Arduino][Eclipse]使用原生的Eclipse CDT建立Andes Andino M1燒錄檔

這篇文章在Windows上以原生的Eclipse CDT,建立Andes Andino M1燒錄檔,藉機探索Andes Andino M1的編譯流程。 歡迎各位多多指教~ 前言提要 由於Arduino原生的IDE對於編寫程式的支援度不足,無法像一般編寫程式那樣點一下追蹤進每個function,也無法進行太多編譯參數的控制,所以想要使用Eclipse重建整個編譯流程,而Arduino搭配Eclipse其實不是件新鮮事,已經有 Arduino Eclipse Plugin ,Andes也在knect.me上提供 Eclipse Arduino IDE ,但是在選擇板子那邊一直沒看到Andino M1選項,而且再也不想繼續被Arduino的sketch綁住,讓我們回歸最原生的C++程式吧~ 準備環境 請先 將 Arduino IDE安裝完成與板子安裝(參考之前的 文章 ) 從Eclipse官網下載Eclipse IDE for C/C++ Developers:  https://eclipse.org/downloads/ 基礎Eclipse操作請自己Google了歐~ 建立核心專案 在先前的 文章 有提過,在撰寫 Arduino sketch時,Arduino IDE會送你一包核心程式碼!! 這些核心程式碼就在Arduino IDE的board manager安裝板子時,幫你下載安裝的。 預設位置在%HOMEDRIVE%%HOMEPATH%\AppData\Local\Arduino15 (%HOMEDRIVE%%HOMEPATH%是Windows上相應於Linux的HOME directory,可以下echo %HOMEDRIVE%%HOMEPATH%來看你的結果) 我們將這些核心程式碼建立為靜態函示庫,供Arduino sketch應用連結。 以下是Eclipse的核心專案建立步驟: [File]->[New]->[C++ Project],Project Name這裡為AndinoM1_Cores1.6.5,Project Type為Static Library,Toolchains為Cross GCC,按[Next]選擇Configuration可以只保留Debu...

[SDN]Computer Networks課後筆記-Software Defined Networking初識

這篇文章筆記在今天交大林盈達老師Computer Networks課程介紹的SDN概念,新手入門歡迎各位多多指教~ 正文開始 傳統的Router提供 實體層(Physical Layer): 介質(Medium)連接、Coding(Source/Channel/Line)、Modulation、Multiplexing... 鏈結層(Link Layer,Node-to-Node,single hop): Framing、Addressing(MAC Address)、CRC Error Control、Flow Control... 網際網路協定協定層(IP Layer,Host-to-Host,multi hop): Data plane(IPv4、IPv6)、Control Plane(Routing、ARP、DHCP、ICMP、multicasting) 共三層的服務,將封包路由(routing)到目的地。 其中Control Plane就像是人的腦袋,Data plane就像是人的身體。 SDN就是把Router的腦袋都砍下來,把它們放到cloud上的Virtual Machine去run,讓Router只留下最基本的功能。 放到雲端run的好處(發展SDN的好處): A. 需要的physical machine少於砍下來的腦袋 B. 根據排隊理論(Queueing Theory,應該是裏頭的Little's law),large resource比split resource的response time好 C. Cisco Router硬體成本僅售價的10%,價值來自上面的軟體,使用SDN可以不用透過update frimare方式更新軟體(須重啟router),透過VM Handover即可切換 D. Computing Power不在受限於Router的處理器速度,SDN App可以做些創新的功能 關於SDN Application A. 執行於cloud上的VM內 B. 與手機APP的比較,手機APP是一次性下載,執行於使用者裝置上,而SDN APP是租借方式,需要持續付錢租借VM來執行APP 一個很重要的問題:SDN router與cloud的距離是否太遠? 是!!即使Google全球也只有14個Da...

[Qt][Embedded][PXA270]
Porting Qt 4.8.6 for Creator XScale PXA270

這篇文章介紹這學期我在嵌入式作業系統課程,使用Creator XScale PXA270板子的一些學習筆記與製作final project的一些過程,歡迎各位多多指教~ 背景介紹 Creator XScale PXA270開發版是一塊由 新華電腦(microtime) 公司出品的 模組化XScale/ARM/SoC/FPGA/DSP嵌入式行動通訊發展平台 ,在此課程與final project主要使用的是"Create XScale‐PXA270 子板"與"MTLCD‐0708048 LCD Module",在Create XScale‐PXA270子板上的為Intel(現在已出售給Marvell)的 Xscale系列 PXA270 處理器,基於ARMv5TE架構指令集,在旁附有SDRAM Memory 64MB、Flash Memory 32MB、SD Card Connectors、RJ45 10/100 Base‐T Ethernet Interface、USB 1.1 Device/Host Port各一、AC97 Audio Codec(Line_in、Mic_in、Headphone)、ADC Interface*4、PWM Interface、CMOS Camera Interface、TFT-LCD Interface、GPIO Interface...等;在軟體功能部分,由新華科技提供了GNU GCC cross compiler toolchain(arm-unknown-linux-gnu-gcc 4.0.2)、Uboot 1.1.5、Linux Kernel 2.6.15.3與patch(提供支援子板上的Ethernet、USB Host、TFT‐LCD(Frame buffer、Touch Screen)、AC97‐Codec...等與母板LED、7‐Seg LED、Key Pad...等的device driver)、rootfs,相關的實驗環境設定可以參考 User Guide 。 看到以上這麼多的軟硬體介面,別以為這板子有多強,其實這是 2006 年 ASUS P535 手機使用的規格了,不禁讓人感嘆科技進步之快阿~ 在此附上開發版本尊 Qt 是自由且開放原始碼的跨平台C...

[Qt][Embedded][PXA270]
[Audio Codec][ALSA][alsa-lib][OSS][madplay]
支援Audio Codec: 關於Qt 4.8.6的AudioOutput與Creator XScale PXA270的聲音輸出之兩三事

這篇文章原本預計是在Qt 4.8.6上支援Audio輸出,在Qt 4.8.6上的聲音輸出使用的是 ALSA (Advanced Linux Sound Architecture)的user-space library: alsa-lib來操作硬體裝置輸出聲音,然而後來因為缺乏alsa.conf的問題,於是改用回舊版Linux Sound System: OSS (Open Sound System)搭配madplay來操作硬體裝置輸出聲音,以下紀錄在Creator XScale PXA270支援Audio Codec到處踩雷的一些過程,歡迎各位多多指教~ Qt與ALSA Qt的Audio輸出在multimedia模組內的audio部分(src/multimedia/audio),其中qaudiodevicefactory.cpp可以明顯看出在linux平台上,使用的是ALSA: #ifndef QT_NO_AUDIO_BACKEND #if defined(Q_OS_WIN) #include "qaudiodeviceinfo_win32_p.h" #include "qaudiooutput_win32_p.h" #include "qaudioinput_win32_p.h" #elif defined(Q_OS_MAC) #include "qaudiodeviceinfo_mac_p.h" #include "qaudiooutput_mac_p.h" #include "qaudioinput_mac_p.h" #elif defined(HAS_ALSA) #include "qaudiodeviceinfo_alsa_p.h" #include "qaudiooutput_alsa_p.h" #include "qaudioinput_alsa_p.h" #elif defined(Q_OS_SYMBIAN) #include "qaudiodeviceinfo_symbian_p.h" #include "qaudiooutput_...

[Qt][Embedded][PXA270][Touch Screen][tslib]
在Qt 4.8.6 for Creator XScale PXA270支援觸控螢幕

這篇文章介紹在Qt 4.8.6 for Creator XScale PXA270上支援觸控螢幕一些過程,歡迎各位多多指教~ 背景介紹 上一篇文章 Porting Qt 4.8.6 for Creator XScale PXA270介 紹如何cross compile Qt 4.8.6 此篇接續該篇的結果繼續說明支援觸控螢幕的步驟 首先拜問Google大神,尋找參考資料: 官方文件提供了詳細的說明:  Qt for Embedded Linux Pointer Handling 甚至有論文( Wang Xibo; Yang Jianan, "Add Touch Screen Support for QT/Embedded," in  Computer Science-Technology and Applications, 2009. IFCSTA '09. International Forum on  , vol.3, no., pp.303-306, 25-27 Dec. 2009 doi: 10.1109/IFCSTA.2009.314 )專門討論如何在Qt上支援觸控螢幕... 在這裡我們使用官網的Tslib Mouse Driver方案!! Tslib,顧名思義就是Touch Screen Library(此句來源: 小耕的隨手筆記: TSLIB on Android gingerbread ),提供觸控螢幕矯正、過濾雜訊...等功能,據資料指出Android也有使用到該library,詳細資訊可以看作者github的README: https://github.com/kergoth/tslib 加入與修改tslib 由Github下載tslib-1.1版、解壓縮並進行修改 wget https://github.com/kergoth/tslib/archive/1.1.tar.gz tar zxvf 1.1.tar.gz cd tslib-1.1/ 修改一 、首先是修改etc/ts.conf,將第二行module_raw input取消註解 # Uncomment if you wish to use the linux input layer event interface mod...