原创 對linux用戶空間DMA的分析(和單片機一樣簡單)

一般情況下,對外設的操作包括輪訓方式、中斷方式,對於數據量很大的情況會用到DMA操作。本文介紹一種在用戶空間實現DMA操作的方法來獲取AXI總線上的數據,FPGA部分暫時不詳細說明,之後會有專題來介紹。 首先要明白幾個Linux的機制:

原创 zynq7000之AXI-Lite

1、爲什麼寫這個? 今天是中秋節最後一天,放肆的玩了兩天以後還是要努力工作的。作爲底軟開發人員,會在ARM側操作FPGA的相關接口就夠了。但是好奇心驅使我看了一天FPGA。 2、這個東東有啥用? AXI總線在zynq7000系列S

原创 unix環境下串口接收數據(jni)

阻塞與非阻塞的概念 當我們打開一個設備或者文件是,例如open(devname, O_RDWR | O_NONBLOCK),O_NONBLOCK代表以非阻塞的方式打開。 對於讀設備,一次讀取動作就會讀取當前緩衝區的數據,如果緩衝

原创 linux網卡設備驅動(任意傳輸介質傳輸(與FPGA交互))

1 、底層數據分析 最近由於公司項目需求,需要實現需要把網絡數據包與DMA的交互,DMA後面連接的是FPGA,FPGA再和寬帶收發器相連接。 先不關心FPGA側的數據過程,以後會專門來說。首先分析下體現在ARM側的DMA數據流,(

原创 vxvorks學習4(字符設備驅動)

1、VxWorks設備驅動結構 首先在終端輸入iosFdShow,此命令用來顯示已經打開的設備信息。 fd 是設備描述符,open函數返回以後供read, write等函數使用。 name 設備的名字。 drv 對應的驅動程序

原创 生成FIT格式的系統鏡像

什麼是FIT格式? 全稱是flattened image tree uImage,爲了更好的支持單個固件的通用性,類似於kernel device tree機制,uboot也需要對這種uImage固件進行支 持。FIT uImag

原创 lef文件的深入研究

    先來解釋一下名詞,ELF的英文全稱是Executable and Linkable Format。可執行和可鏈接的文件。     和elf文件對應的是bin文件,bin文件是直接加載到內存中執行的文件,用uboot直接把bin文件

原创 再看"extern"

extern 主要有以下幾種功能: 1、作爲函數和變量的外部申明,注意如果後面存在賦值動作,則變成定義。例如:    int a;   //definiction    extern int a;  //decreation    ext

原创 Android studio 3.4 使用JIN(JNI數據類型以及參數傳遞)

1、JNI數據類型 以下是在Jni.h中定義的數據,這些是簡單的數據類型 ,基本數據類型在Native層直接可以使用; #include <inttypes.h> /* C99 */ typedef uint

原创 vxvorks學習2(雙向鏈表和環形緩衝的使用)

雙向鏈表 1、 數據結構分析 在litLib.h中定義了操作雙向鏈表的基類 typedef struct _Vx_node /* Node of a linked list. */ { struct _Vx_no

原创 vxvorks學習3(任務同步)

VxWorks任務間同步的機制以及通信方式 概念普及: 資源刪除保護:進程A在拿到一個資源的信號量以後,進程A被刪除,這時資源將不能被訪問,因此需要對資源進行保護; 優先級反轉:有三個進程A,B,C。並且進程的優先級A>B>

原创 linux 內核驅動一 字符驅動

linux 字符驅動是最基本的設備驅動程序,接下來的所有內容都會基於這個Demo,當然也會不斷的修改其中的BUG。(早晨逛超市突然想出一句話,“看別人喫肉,自己在流口水的同時,也需要想想他是怎麼捕獵的”)。開個玩笑。 進入正題: #in

原创 vxvorks學習1(多任務實現)

多任務實例 1、任務的創建 int taskSpawn( char *name, //新任務的名字,儲存在psTackBase int poiority, //任務優先

原创 zynq實現動態加載(Partial Reconfiguration)

       上週沒有寫博客,我不會無辜不寫,只因爲有更重要的事情。       首先說明下需求。在某些設計需求中,需要在更換bitstream時,要求一部分邏輯不能重新被加載。也就是說,要求實現FPGA的動態重配置。       這裏主

原创 Android studio 3.4 使用JIN(創建工程)

1 .創建一個新的工程: 首選要保證集成開發環境已經安裝了NDK和Cmake; 2. 右鍵 src->New->Folder->JNI Folder ,這時就可以在main目錄下生產一個JNI文件夾。 3. 創建JNI類 在M