1. 程式人生 > >智慧家居實訓第二天 嵌入式linux程式設計

智慧家居實訓第二天 嵌入式linux程式設計

========嵌入式linux程式設計===============
程式設計環境:linux
程式語言:linux介面+C語言

嵌入式開發流程:
1.編寫工程
2.編譯工程
3.移植工程
4.測試工程

============編寫工程===========
使用程式設計軟體: npp
    安裝方式:雙擊執行檔案----》下一步----》完成
    1.1 開啟npp軟體----》檔案-----》新建檔案
    1.2 右擊新建檔案----》另存為---->找到共享資料夾位置
        儲存為.c檔案
    1.3 建立模型
        int main(int argc,const char *argv[])
        {

          return 0;
        }
    1.4 輸出語句
         引號的最後\n  1.在列印的時候自動換行輸出
                       2.才能顯示在開發板的螢幕上
    1.5 儲存  ctrl+s
=============編譯工程==========
使用交叉工具編譯鏈:
         本地編譯:gcc(C語言) g++(c++語言)
         開發板編譯:arm-linux-gcc
    本地編譯:
         1.gcc  + 檔名.c
             生成一個可執行檔案a.out
             執行:./a.out
         2.gcc  檔名.c   -o  檔名
                         指定生成

練習:列印一下自己的中文名字在虛擬機器上
注意三點:1.編譯的時候進入共享資料夾
          2.注意警告和錯誤
          
==============移植工程===============
如何移植到arm開發板上去?
   1.正確的連結開發板
    電源線  串列埠線   USB轉串列埠
   2.使用 CRT串列埠軟體
     1.解壓軟體CRT,解壓到當前檔案
     2.雙擊SecureCRT.exe
     3.配置協議
   3.檢視USB轉串列埠的com口是多少?
     使用驅動檔案:
        1.下載PL2303驅動
        2.雙擊安裝
        3.計算機----》管理----》裝置管理器----》埠
   4.開啟CRT軟體配置協議
     協議:serial
     埠:根據第三步去看
     波特率:115200
   5.1.看不到終端,使用ctrl+c
     2.重啟開發板  復位鍵
    
   6.使用cd 進入根目錄  cd /
     使用命令df檢視一下開發板的使用空間
    
下載到開發板
  1.在使用編譯的時候使用 arm-linux-gcc
    arm-linux-gcc hello.c -o hello.c

  2.下載檔案的時候使用命令 rx 檔名
          1.rx  檔名
          2.點選傳輸-----》第三個選項-----》共享檔案
          3.找到要傳送的檔案----》傳送
          
=============測試工程===============
  1.修改檔案許可權
    chmod  777 hello
  2.執行檔案
    ./hello
    
火星文:選項----》會話選項----》外觀-----》字元編碼 utf-8----》確定
    
====================================
怎麼樣在開發板上顯示滿江紅?
1.arm開發板是如何顯示顏色
   讀資料  是一行一行的
   一個畫素點   4位元組   位數32
  
2.開啟檔案的操作  使用函式
  在linux中,一切裝置皆檔案
          硬體裝置:我們使用的驅動檔案

  檢視函式  使用linux裡面的man手冊
   man man 檢視所有的手冊
  1 Executable programs or shell commands               核心函式  
  2 System calls (functions provided by the kernel)     系統函式
  3 Library calls (functions within program libraries)  C語言庫函式

 2.1開啟函式  open()
       #include <sys/types.h>
       #include <sys/stat.h>
       #include <fcntl.h>

       int open(const char *pathname, int flags);
        返回值:成功 :返回一個檔案描述符  一個大於的零的數
                失敗 :返回  -1
        
        引數:const char *pathname  -----》字串型別的路徑名
              int flags   -----》許可權
                     O_RDONLY -------read-------只讀許可權
                     O_WRONLY -------write------只寫許可權
                     O_RDWR   ----read and write ----可讀可寫
  2.2寫函式  write()
      #include <unistd.h>

      ssize_t write(int fd, const void *buf, size_t count);
      返回值:成功  返回寫入的位元組數
              失敗  返回 -1
       
      引數:int fd            檔案的描述符
            const void *buf   寫入檔案的位元組數的緩衝區
            size_t count      寫入的緩衝區的大小

  2.3關閉檔案 close()
     #include <unistd.h>

     int close(int fd);
      返回值:成功  返回 0
              失敗  返回 -1
      引數:
            int fd            檔案的描述符

練習:德國國旗和比利時國旗
 
==============顯示圖片=============
常見的圖片型別:jpg gif jpeg  bmp

 一張24位點陣圖 :bmp
 
 錯誤列印函式  perror
   #include <stdio.h>

    void perror(const char *s);

    引數:const char *s   字串
 
 讀取函式  read()
       #include <unistd.h>

       ssize_t read(int fd, void *buf, size_t count);
       返回:成功  返回一個讀取的位元組數
             失敗  返回 -1
       
       引數:int fd           檔案描述符
             void *buf        讀的緩衝區
             size_t count     讀的位元組數
 
 

github原始碼