驅動開發學習筆記2

2021-08-11 11:06:39 字數 1275 閱讀 6934

嘗試在a9開發板執行裸機程式,在這個過程加深對程式執行的 了解。

目的:在a9平台裸機執行跑馬燈程式

led.c是邏輯功能**,led.lds.為記憶體布局檔案,makefile指定編譯規則 ,start.s檔案進行記憶體空間分配,

通過一系列操作生成led.bin檔案。這個bin檔案提供給後面bl2的製作,而且在bl2內順便執行流水燈程式。

bl1是廠家提供的用於初始化晶元的bin檔案,而我們需要製作bl2,使用的工具是廠家提供的製作bl2的源**。

我們編譯好之後生成mkbl2可執行程式, 再執行燒錄指令碼,燒寫進記憶體卡裡面。

燒錄sd卡命令:

dd:燒錄命令

iflag :輸入狀態,選擇dsync同步

oflag :輸出狀態,選擇dsync同步

if:輸入檔案,燒錄的是哪個檔案

of:輸出檔案,把檔案燒錄到**去

seek: 塊偏移量,把檔案寫到輸出裝置的哪個位址

點亮一盞燈的步驟:

1.查詢原理圖,得到led連線在mcu的哪個gpio 上

2.查詢資料手冊,得到gpio對應的暫存器和配置方法。

示例**: *(volatile unsigned long *)0x110002e0 &=0xffff0000;*(volatile unsigned long *)0x110002e0 |= 0x00001111;

shell程式設計

shell可以用來寫指令碼,從而實現批處理,它是一種解釋型語言。

以 #!/bin/bash 來指定使用什麼指令碼直譯器,該例子使用bash來進行解釋。

指令碼支援外部傳參,引數的形式:$1   $2    $3    $4

指令碼中的變數定義只有一種型別,就是字串型別,一般用來表示檔名,或者路徑,在定義時絕對不能在等號兩邊加空格。

變數在使用時,用  $  這種形式來引用。

makefile:

這個東西一般用在大型工程的管理以及編譯,有自動推導規則。

makefile規則:

檔名:makefile或者makefile,用這種名字命名,直接使用make才能檢測到,否則要指定執行檔案。

是一種以目標為導向的!有偽目標和目標之分

執行方式:make 目標,預設操作makefile或者makefile,如果沒有指定目標,則執行點第乙個目標

每次只能執行乙個目標。

編寫規範:

目標名必須頂格書寫,命令操作前必須跟乙個tab鍵!

特殊變數: $@ :指代目標

$<:指代第乙個依賴檔案

$^:指代所有的依賴檔案

Asio驅動開發學習筆記 2

假設有一usb音效卡,支援asio,如何實現asio驅動呢?1 實現register註冊 此處省略,可參考asio官方sample。2 實現class usbasio public iasio,public cunknown的 init createbuffers start stop dispos...

驅動開發學習 2

利用 driverstudio 的 driverwizard 生成了驅動,研究了一天.整個研究了個雲裡霧裡.摸不著一點頭緒.發現走入了誤區,又要學習ddk 又要搞清楚driverstudio的框架.所以難度太大.決定扔掉driverstudio從ddk入手.做了乙個世上最簡單的驅動程式。pragma...

arm linux驅動開發學習2

驅動測試階段 wifi模組始終無法載入成功,usb wifi插上之後,始終無法顯示wifi網路資訊 lib modules 4.1.15 ifconfig a eth0 link encap ethernet hwaddr00 04 9f 04 d2 35 inet addr 192.168 1.5...