智慧家居實訓第二天 嵌入式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 讀的位元組數