2016年1月13日 星期三

因為raspberry pi的官方語言是python.... 所以來學學Python



sample_1.py:


         #!/usr/bin/python
        a = input("Input value")
        b = input("Input another value")
        if  a > b:
               c = a * b
        else:
               c = a /b
        print c

   範例比較簡單

   #!/usr/bin/python  的意思是說把它包含進來即可確保你的程式是可執行的

      直接在命令列輸入:

         ./example_1.py  

      就可以執行了

      a = input("Input value")

      這個是說從鍵盤的輸入得到數值...然後存在 變數 a

     if  a > b:
               c = a * b
     else:
               c = a /b
   
     python  相當重視縮排.   用來取代 C語言裡面的  {}
   
     所以 if 和  else 一定要在同一個 column
   
    然後    內容也是一樣.....


sample_2.py:   # use list  []

# encoding: utf-8

my_list = []
my_list.append(1) 
my_list.append(2) 
my_list2 = [55.55,"Hi",3,99,222,222]
my_list2[0]=333.333

print len(my_list),sum(my_list),my_list2.count(222)
print my_list2[0],my_list2[-1],my_list2[1:3],my_list2[2:]  

[]  是  list 的用法

它可以使用
list.append(x) function...    它的意思就是在從list 的最後一個位置後面加入x

len(list) function 可以計算出list 的長度

sum(list) function 可以計算list裡面所有的數值的總和

list.count(x) function 可以計算出 在list 裡面 x 出現過幾次

sample_3.py:   # use dictioniary  {} 

像是 hash-table一樣有一個key對應一個變數
# encoding: utf-8

passwd={'Mars':00000,'Mark':56680}
passwd['Happy']=9999     
passwd['Smile']=123456

del passwd['Mars']
passwd['Mark']=passwd['Mark']+1

print passwd
print passwd.keys()
print passwd.get('Tony') 

第一行 在 初始化  passwd   
第二行 增加 資料    key : 'Happy'   value = 9999
第三行 增加 資料    key : 'Smile'   value = 123456

del    passwd['Mars']   #  刪掉  'Mars' 
passwd['Mark'] = passwd['Mark'] + 1 #  

print passwd.keys()  #  ['Happy', 'Smile', 'Mark']

print  passwd.get('Tony') #  印出 key 'Tony' 所對應的 value


Reference https://docs.python.org/2/index.html
Reference http://tech.marsw.tw/blog/2014/09/03/getting-started-with-python-in-ten-minute

在Raspberry pi上面編譯linux driver

這邊以 DHT11 所提供的driver 來當例子

當你進到dht11km 的 folder....

執行   sudo make  時....會產生以下的error message:




這是因為沒有kernel heaer的關係...必須要用   rpi-source 來解決

step 1:

         sudo wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source -O /usr/bin/rpi-source && sudo chmod +x /usr/bin/rpi-source && /usr/bin/rpi-source -q --tag-update

   然後輸入

   rpi-source

step 2:  

              

       我遇到gcc 版本不合的問題....我的預設版本是 4.9.2  但是proc version 的版本是 4.8.3

   所以來安裝 gcc 4.8版

   sudo apt-get install gcc-4.8 g++-4.8

     然後把gcc 的版本設成  4.8

    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
  sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50

  
  再執行一次

   rpi-source

   還是有問題....原來是缺少了ncurses-devel 這個套件

    

   按照指示安裝  

    sudo apt-get install libncurses5-dev
  
    然後再執行一次

    rpi-source

    就可以安裝好 

    然後回到linux 的目錄下 ....

    鍵入 

    make

    接下來就會開編譯所以的module ...會編譯蠻長時間的....需耐心等待

    

step 3:

        重開機後...回到剛剛抓的 linux 的 folder

        執行

        make modules_prepare



        重開機後....        

        就可以開始去編譯driver 的程式了

        回到 dht11km 的 folder  

         sudo make

        然後就會得到下面的訊息

       
         
Reference : https://github.com/notro/rpi-source/wiki

在Raspberr pi2上面編譯 Kernel



step 1:  安裝最新的Raspiban ...   可以從這邊 download Raspiban

             這邊我是用   2015-1121-Raspiban-jessie
 
             我用 2015-05-05-raspbian-wheezy 會失敗

step 2:   download 最新的  kernel source code

git clone --depth=1 https://github.com/raspberrypi/linux
         
           並且安裝  bc 套件

            sudo apt-get install bc

step 3:

          編譯最新的設定檔 (configuration file)
           cd linux
KERNEL=kernel7
make bcm2709_defconfig

執行編譯動作
make -j4 zImage modules dtbs

           會花上一段時間....等到編譯完成

          sudo make modules_install
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
sudo scripts/mkknlimg arch/arm/boot/zImage /boot/$KERNEL.img

          然後從新開機

          reboot    

          然後再回到 linux的 folder

          make prepare

          然後再一次重新開機

         就可以開始編譯driver

Reference : https://www.raspberrypi.org/documentation/linux/kernel/building.md

Raspberry 上面不能秀出中文.... 因為預設沒有安裝中文字形


文泉驿的正黑体:
sudo apt-get install ttf-wqy-zenhei

文泉驿的微米黑体:
sudo apt-get install ttf-wqy-microhei

文鼎的楷体
sudo apt-get install fonts-arphic-ukai

文鼎的明体
sudo apt-get install ttf-arphic-uming


Reference : http://www.linuxidc.com/Linux/2013-04/82805.htm