原创 USB總線數據流

一、概述 USB總線的數據流是USB主機和USB設備數據通信的基礎。一般來說,一個完整的USB數據流包含3個階段——令牌階段、數據階段、握手階段。 令牌階段:定義了傳輸類型,表徵數據流的開始。 數據階段:包含了本次傳輸的數據。數據量大小

原创 C語言:指針和數組

const char * p = "Hello World!"; const char Array[] = "Hello World!"; 以上兩種聲明,p和Array都使用了字符串“Hello World!”的地址。在這種情況

原创 USB通信包標識字段PID

包標識字段PID的定義格式如下圖,包標識字段(PID)長度爲8bit,由低4bit的類型字段和高4bit的校驗字段組成。校驗字段是類型字段的反碼。例如,PID[3:0] = 0001B時,完整的PID字段則應該是:1110_0001B,表

原创 C語言:gets、puts、fgets、fput、gets_s函數

char *gets(char *s); int puts(const char *s); gets()函數用於讀取整行輸入,直到遇到換行符,然後丟棄換行符,存儲其餘字符,並且在這些字符後面添加一個’\0’使其成爲一個C字符串。 put

原创 C語言:const關鍵字用法

const關鍵字在C語言中用於保護數據不被修改,即設置數據爲只讀模式。具體有以下幾種用法: 1. const創建變量 const double PI = 3.1415926; /* const 變量 */ const int da

原创 arm-linux-ld: error: Source object has EABI version 5, but target u-boot has EABI version 0

在移植uboot時候,對uboot源代碼進行編譯,出現如下版本錯誤,在網上搜了很多博客文章,也沒有解決。 想着,既然是arm-linux-ld交叉編譯鏈的錯誤,換個版本的編譯器能不能解決呢。於是,將原本Ubuntu12.04上裝的交叉編

原创 keil 編譯問題之系統因素影響 hexbin 功能

keil uVision3中的hex2bin.bat批量處理文件對操作系統是有區別的32位系統中的內容爲: hexbin.exe Out\Scan.hex Out\Scan.bin i64位系統中的內容爲:

原创 keil編譯後生成的M51文件解析

原文地址:https://blog.csdn.net/liucheng5037/article/details/46934147 通過*.m51文件我們可以清楚的看到單片機存儲器的使用情況,以及可以看到每個變量包括局部變量的位置。 之

原创 關於編譯uboot時出現“undefined reference to '__aeabi_unwind_cpp_pr0'”的解決方法

編譯uboot的時候出現如上錯誤,uboot官方給出瞭解決辦法方法如下:編輯uboot根路徑下的/lib_arm/eabi_compat.c  文件在最後加入空函數__aeabi_unwind_cpp_pr0(void)即可

原创 一份Makefile的詳解

指定編譯器爲arm-linux-gcc,鏈接器爲arm-linux-ld,用arm-linux-objcopy 來將ELF格式的可執行文件轉換爲二進制文件. CC = arm-linux-gcc LD = arm-linux-ld O

原创 系統移植之uboot源代碼簡要分析(1)

本次Linux系統移植是基於三星公司的S5PV210(又名Hummingbird)處理器的移植; 採用的BootLoader爲三星官方的uboot:android_uboot_smdkv210.tar.bz2 開發平臺爲Ubuntu12

原创 USB端點詳解

__u8 bEndpointAddress; //端點地址:0~3位是端點號,第7位是方向(0-OUT,1-IN)端點地址:總共8位0,1,2,3四位表示端點號,第7位表示端點方向那麼由這5位可以確定32個端點地址.其中輸入端點0-15輸

原创 系統移植之uboot源代碼簡要分析(2)

經過上一篇系統移植之uboot源代碼簡要分析(1)對uboo進行分析後,我們知道BootLoader的第二階段啓動(BL2)從start_armboot處開始執行,start_armboot函數定義在“lib_arm/board.c”中

原创 友善之臂mini2440 燒錄uboot的方法

利用Minitools工具將uboot.bin 文件燒錄進mini2440開發板的步驟:    1、用USB線將開發板和電腦相連,開發板的S2開關撥到NOR一側,打開minitools,打開開發板電源,即可顯示“已連接開發板(S3C244

原创 C語言變量聲明加冒號的用法

有些信息在存儲時,並不需要佔用一個完整的字節, 而只需佔幾個或一個二進制位。例如在存放一個開關量時,只有0和1 兩種狀態, 用一位二進位即可。爲了節省存儲空間,並使處理簡便,C語言又提供了一種數據結構,稱爲“位域”或“位段”。所謂“位域”