2015年3月27日 星期五

在Raspberry Pi 上面建立編譯 kernel module 環境之懶人包

在 Raspberry Pi 上面學習 Linux 驅動程式開發是件好事情。一切都顯得非常的美好,除了一開始的編譯Kernel 的動作讓初學者痛不欲生。

因此秉著降低這個門檻的想法,讓初學者能夠順利地先從編譯 Hello.ko 開始一步步建立信心開始。所以我打包了一份 Cross-Compile 好的 Raspberry Pi 官方 Kernel Source Code,放在Google 上面讓人下載,大小大約200MB左右 。網址如下:

https://drive.google.com/a/ittraining.com.tw/file/d/0B4hTYt5ZpXOZVHRDeVpwSnZ1dU0/view

相關文章 編譯Kernel 4.0.y with device tree 


2015年3月26日 星期四

用FPGA 設計一個TFT-LCD 控制器 (上)


發現庫房有十幾片, 先前Samsung S3C6410 開發板是可以驅動這塊4.3吋 TFT-LCD面板。 拿來研究一下, 看看是否有機會可以拿來接在Pi上,  因為有了這個panel之後, Pi將可產生更多應用, 如工業控制的監控儀表板等。S3C6410內建Display Controller可以驅動此面板 , 從線路圖 可發現RGB 共24條資料線, 加上VSYNC, HSYNC, DEN, pixel CLK ,共4條控制訊號連到面板 , 如果Pi 沒有Display Controller 那該如何實現? 用FPGA 自己完成一個TFT-LCD 控制器!


2015年3月25日 星期三

BeMicro CV Kit 子卡設計


為了使用BeMicro CV Kit (Altera CycloneV) 讓FPGA實驗更加多元且方便, 為BeMicro設計一個子卡,可方便進行以下實驗內容

  1. SPI
    • SPI Flash (FPGA SPI Master 實作使用)
    • SPI 接頭 2組 (FPGA SPI 通訊實驗使用)
  2. I2C
    • I2C EEPROM (FPGA I2C Master 實作使用)
    • I2C 接頭 2組  (FPGA I2C 通訊實作使用)
  3. VGA 輸出  (FPGA VGA影像處理及OSD (On Screen Display)設計使用)
  4. UART接頭  (OpenCore UART IP移植使用)
  5. Debug Monitor: UART to USB (PL2303)  
  6. Power indicator (藍光LED)
  7. Power  (5v, 3.3v, GND)
  8. GPIO  x6 (一般FPGA 輸入輸出實驗使用)

FPGA 子卡正面

連接 BeMicro CV Kit (Altera CycloneV)


2015年3月23日 星期一

在Raspberry Pi & Pi2 上面學 Linux 驅動程式開發 (二) -- Hello World --

實驗名稱: Hello World Code

實驗目的: 編譯 Linux Module 並成功掛載進 Linux Kernel 系統之中。

使用材料及設備:

    硬體: Raspberry Pi B+

    軟體: 可編譯 Linux Module 的 Raspbian 系統,Hello.c code。

原理介紹:

    不知道為何,Hello World一直是學習程式設計開發時的第一個範例,在這裡也不例外。我們用一個只是印出 "Hello World!" 字串到 Linux 系統訊息裡的簡單程式,來做為 Linux Driver 學習的切入點。然後試圖由最簡單的例子開始一點一滴地描述 Linux 系統的運作方式,以降低初學者進入這一門領域的門檻。


2015年3月18日 星期三

安裝 Microsoft SQL Server 2014 Express

安裝 Microsoft SQL Server 2014 Express

Microsoft SQL Server 2014 Express 是免費且功能豐富的 SQL Server 版本,適合用來學習、開發、加強桌面、Web 和小型伺服器應用程式。記得要下載 SQL Server 2014 Express含工具的版本(SQLEXPRWT), 這個安裝版本會包含將 SQL Server 安裝及設定為資料庫引擎所需的一切,包括完整版的 SQL Server 2014 Management Studio。SQL Server 2014 Management Studio 是一個SQL Server資料庫管理使用者介面,包含資料庫啓用或關閉、使用者登入帳號設定、資料表權限、資料表查看及SQL 執行等功能。

http://www.microsoft.com/zh-tw/download/details.aspx?id=42299


[選擇新安裝]





登入帳號模式, 可以先用本機windows 登入帳號去用, 之後進入SQL Server 2014 Management
 驗登模式, 可以先用本機windows 帳戶登入, 之後進入SQL Server 2014 Management才新增其他登入帳號


















啓用你的SQL Management Studio , 看見進入畫面



在登入選項按右鍵即可新增帳號



如何將Access 資枓庫轉入SQL server



















安裝 Visual Studio Express 2013



ASP.NET 提供了 Web 平台,該平台為您提供建置 Web 應用程式所需的所有服務。 ASP.NET 是建置在 .NET Framework 上,因此 ASP.NET 應用程式可以使用所有 .NET Framework 功能。 您的應用程式可以使用任何與 Common Language Runtime (CLR) 相容的語言撰寫,包括 Visual Basic 和 C#。
若要建立 ASP.NET Web 應用程式,您可以使用 Visual Studio (or Express 版) 。 目前最新VS 2013 Express版, 已同時包含VS Express 2013 for Desktop 及VS Express 2013 for Web。  其中for Desktop 針對Windows Desktop Application (Windows Form) ,而 for Web 即針對ASP.net Web Application 。此外,你可以下載僅針對Visual Studio Express for Web 來安裝。


安裝 Visual Studio Express 2013 or Visual Studio Express 2013 for Web 

到這裡下載開發工具   http://www.asp.net/get-started




  Next ..Next 就裝完了

Microsoft Azure 是微軟的Cloud Application Platform 就像Google 的GAE 一樣




主要就是選 Visual Studio Express 2013 for Web 的功能



要先申請Microsoft 帳號才能登入使用 (類似Google 服務什麼都要用g-mail  )


裝完之後啓用程式 Visual Studio Express 2013 for Web , 就會看到如下的IDE 程式開發界面。


2015年3月16日 星期一

Raspberry Pi Education Kit



==> 2017 艾鍗Raspberry Pi I/O Shield v3.0子板規格


Raspberry Pi Shield (Raspberry Pi Education Kit) 2.0

此 I/O子卡的設計想法:

讓台灣學習計算機科學(Computer Science)的學生能熟悉硬體控制。

透過子卡你可以學習什麼? 

連接開源硬體Raspberry Pi 即可以學習Linux驅動程式設計或I/O裝置驅動。你可以學習到GPIO (General Purpose I/O)、中斷及其他常見IC間通訊界面, 如UART、I2C、SPI 的裝置驅動程式方法。

Pi  I/O子卡2.0規格: 

  1. I2C Serial EEPROM
  2. SPI Flash 
  3. 2x16 文字型背光LCD顯示器
  4. LEDx2 
  5. 電源指示燈 x1 
  6. 自激磁Buzzer x1 
  7. Buttonx2 
  8. Relay繼電器x1 
  9. 紅外線接收模組 
  10. PL2303 UART to USB 
  11. Switch 切換Pi UART 是否要連接PL2303 
  12. 擴充座 
  13. 電源座 (5V,GND) 
  14. PWM座x1 
  15. UART座for藍芽模組
  16. SPI 座for CC2500通訊模組 RF 
  17. I2C 擴充座 
  18. 40 Pin Header座連接Raspberry Pi



附件下載: 

  1. 電路圖下載
  2. Pi子卡使用說明手冊下載


學習資源: 

Linux Device Drivers, Third Edition














Python 使用 I2C bus on Raspberry Pi



這篇文章介紹使用 Python 來對i2c介面做簡單的控制。

Python控制i2c會需要用到package "python-smbus" ,沒有的話就用apt來安裝吧。

apt-get install python-smbus 另外在熟悉程式開發期間,可以配合i2c-tools工具package來用,這是一個非常好用的工具。

此文章使用艾鍗學院提供的Pi I/O子板來練習,沒有板子的人也可以去買一顆for i2c 的eeprom晶片並參考下列網址的教學,來做連線。


2015年3月13日 星期五

Google Code 準備要關閉了?

這事情實在是太神奇了。

 怎麼前幾天才上去開新的Project,準備開始用Google Code來分享一些檔案... 

今天早上就收到Google Code寄來這麼一封信:...



Google Code 說有其他更好的分享平台,所以Google Code要關了....

不過好像不是說馬上就關掉,而是慢慢來的,還是可以使用原有的所有功能,但是不再接受新的Project建立。

之後會再變成不再接受任何上傳和更新,然後整個變成唯讀狀態。

Orz... 看來要去Github上面開專案了...

2015年3月11日 星期三

在Raspberry Pi & Pi2 上面學 Linux 驅動程式開發 (一) -- Hello World --

前言


自從開始玩 Raspberry Pi 就發現,對於學習使用Linux系統而言,這實在是一個好東西。
想想以前為了安裝Linux系統,都要準備一台不能太新的電腦,然後還要確定上面的硬體都可以找到驅動程式才行。

不然就得弄成雙系統,還常常要重開機切來切去,搞得很麻煩。更不要說是Driver沒寫好結果把系統搞當掉要花時間重新開機了。

雖然之後有virtual box之類的虛擬系統可以使用,但畢竟隔了一層,特別是在要外接USB或是其他I/O裝置的時候就會血壓上升了。

現在,有了Pi一切都不一樣了。


2015年3月6日 星期五

Raspberry Pi 利用 GPIO 控制 32x32 RGB LED 陣列

實驗名稱:
    GPIO 控制 32x32 RGB LED Matrix

實驗目的:
    了解在 Pi 板上,寫 C 語言控制 GPIO 來控制 32 x 32 RGB LED Matrix 的方法。

使用材料及設備:
    市售 32x32 RGB LED 陣列板子


    Raspberry Pi B+ 板
    連接線

ARM Development Suite (ADS)使用



利用ARM Development Suite (ADS)了解ARM 組合語言


安裝ADS (ver 1.2) 後, 可以進入AXD,在options下 "Configure Target"為 ARMUL, 就可以設定ARM Emulator 環境, 開始去學習ARM 組語與了解ARM 架構。








 arm bootloader

按F8 可以Step In單步執行, 看見程式執行時ARM Register r0~r15及CPSR的變化, 並可看到不同運作模式下 FIQ, IRQ,SVC等的Register值變化。也可以看記憶體的變化。


反組譯


該如何從Assembly 跳到C

ARM 初始化程序 ,即一開始設定Exception Vector 並設定好對應的處理函式 (Exception Handler), 初始化 DRAM (即設定DRAM Controller), 指定ARM Stack Pointer (r13) 於DRAM Address, 以進入C 程式

在進入C之前, 尚須了解一個object code的結構,如 Code Section (.text), RW section, ZI  section(.bss)等。接著了解Linker的功能及Linker script 的意義及包含 Load Address (LMA)及Run address (VMA)的不同。一個程式的啓動順序, 包含copy from Load address to Run address), 配置程式執行記憶體空間 及初始化 .bss 區塊為零。最後執行Branch 指令跳到 C 函式, 此函式即為C的進入點。



待續...