devmem 原始碼注釋

2021-10-09 10:40:32 字數 1826 閱讀 9818

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define fatal do while(0)

#define map_size 4096ul

#define map_mask (map_size - 1)

intmain

(int argc,

char

**ar**)

[ type [ data ] ]\n"

"\taddress : memory address to act upon\n"

"\ttype : access operation type : [b]yte, [h]alfword, [w]ord\n"

"\tdata : data to be written\n\n"

, ar**[0]

);exit(1

);} target =

strtoul

(ar**[1]

,0,0

);if(argc >2)

access_type =

tolower

(ar**[2]

[0])

;if((fd =

open

("/dev/mem"

, o_rdwr | o_sync))==

-1) fatal;

printf

("/dev/mem opened.\n");

fflush

(stdout);

/* map one page */

/* 對映一頁的起始位址*/

map_base =

mmap(0

, map_size, prot_read | prot_write, map_shared, fd, target &

~map_mask);if

(map_base ==

(void*)

-1) fatal;

printf

(, map_base)

;fflush

(stdout);

/* 實際使用的起始偏移的位址*/

virt_addr = map_base +

(target & map_mask)

;//使用的偏移位址限制到1頁之內

switch

(access_type)

printf

("value at address 0x%x (%p): 0x%x\n"

, target, virt_addr, read_result)

;fflush

(stdout);

if(argc >3)

printf

("written 0x%x; readback 0x%x\n"

, writeval, read_result)

;fflush

(stdout);

}if(munmap

(map_base, map_size)==-

1) fatal;

close

(fd)

;return0;

}

根據開發板上的試驗,devmem2 這個版本的相容行對arm平台不是很友好,適用於x86平台, 不適用與arm平台,busybox中提供的devmem對板卡的實用性更好,和相容性更好

Pytorch原始碼注釋

field類為可以由張量表示的常見文字處理資料型別建模。它包含乙個vocab物件,用於定義字段元素的可能值集及其對應的數字表示。field物件還包含與資料型別應如何數位化有關的其他引數,例如標記化方法和應生成的tensor型別。如果在資料集中的兩列之間共享字段 例如,qa資料集中的問題和答案 則它們...

redis原始碼注釋 簡述

second60 20180510 有些人會問 學習一門技術最快的方法是什麼?答案很簡單 就是站在巨人的肩膀上,多看多多抄多練。第一 可以省去我們造輪子,四處碰壁的時間 第二 可以學習巨人的精髓,使自已能力不斷的提公升 第三 多抄,可以使自已寫 的風格像巨人一樣,如火純青 這篇檔案不講技術,純屬非技...

lua原始碼注釋 1

最近讀了點lua的原始碼,打算記錄下來,將來也知道自己這一段幹了啥。其實我以前也試圖讀過lua原始碼,不過一直沒有找對下手方向,比如我一直試圖從main下手,這個是錯誤的,還沒有進行正題,就被一大堆初始化給搞暈了,加之決心不大,就這樣一直拖著沒有看。不過最近因為工作的原因,熟悉了lua的c api,...