原创 Linux網絡編程入門

(一)Linux網絡編程–網絡知識介紹 Linux網絡編程–網絡知識介紹 客戶端和服務端 網絡程序和普通的程序有一個最大的區別是網絡程序是由兩個部分組成的–客戶端和服務器端. 客戶端 在網絡程

原创 C語言結構體的字節對齊原則

爲什麼要對齊? 現代計算機中內存空間都是按照byte劃分的,從理論上講似乎對任何類型的變量的訪問可以從任何地址開始,但實際情況是在訪問特定類型變量的時候經常在特 定的內存地址訪問,這就需要各種類型數據按照一定的規則在空間

原创 TI-RTOS-SPI深度解析

開發板:AM335X 編譯環境:css qq:956465349 gdut15級本科 最近在移植rtos的spi-loopback的測試程序到am335x開發板上 順便把相關的操作函數源碼給分析了下 移植的是pdk_am335x

原创 USB驅動之基礎的概念和數據結構

liunx usb 驅動層次 linux系統中 可以從兩個角度看usb 分別是是主機側和設備側視角 主機側大致如下 …………………………………….. usb設備驅動 mass storage/CDC/HID ……………

原创 POSIX定時器:timer_settime()

最強大的定時器接口來自POSIX時鐘系列,其創建、初始化以及刪除一個定時器的行動被分爲三個不同的函數:timer_create()(創建定時器)、timer_settime()(初始化定時器)以及timer_delete(銷燬它)

原创 自旋鎖

自旋鎖主要是爲了解決對臨界資源的互斥訪問 也就是適合在smp或者單cpu可搶佔的系統中 比如在SMP 多核處理器中的情況 現在的處理器大多是這種類型的 可以使用自旋鎖來解決對臨界資源互斥訪問 當一個CPU在訪問自旋鎖保護的臨界區時

原创 LED入門

點亮一個LED燈一直是單片機或者嵌入式的一個入門程序了 不管是在哪來 只要一問 怎麼入門嵌入式或者單片機 大家都會相看兩不厭的回答:從點亮一個LED開始 在這裏就主要的分析一下點亮一個led有多複雜 最基本的硬件操作: 1.選擇GPI

原创 創建進程

進程:處於執行期的程序 相當於“進程=程序+執行” 但是進程不侷限於一段可執行代碼(代碼段) 還包括進程需要的其他資源 例如打開的文件 掛起的信號量 內存管理 處理器狀態 一個或者多個線程 數據段之類的 進程控制塊就是task_struc

原创 uboot中命令行模式以及命令處理

AM335X中的宏定義 1、需要打開哪些宏 CONFIG_CMDLINE 表示是否支持命令行模式,定義如下: configs/am335x_evm_defconfig :CONFIG_CMDLINE=y CONFIG_SY

原创 mutex互斥體

linux內核也有正宗的互斥體 並且新的內核多使用mutex互斥體 我們這裏只介紹怎麼使用互斥體 定義一個互斥體並且初始化它 struct mutex my_mutex; mutex_init(&my_mutex); 然後獲取互斥體

原创 am335x uboot參數 說明

1、U-Boot啓動參數解析: 進入U-Boot命令行使用printenv命令可以看到U-Boot啓動參數,如使用默認參數,類似如下: 默認的U-boot啓動參數設置的啓動順序爲: (1) SD卡啓動腳本 (2) SD卡 (3)

原创 cache的工作方式

帶有cache的CPU一般是先從cache中取出數據 而不是從內存裏取數據 而CPU是怎麼訪問cache的 cache訪問cache使用的類似的地址編碼方式。 處理器訪問存儲器時 會把地址傳遞給TLB和cache cpu把虛擬地址

原创 軟中斷機制之tasklet機制

tasklet也是利用軟中斷實現的一種下半部機制 軟中斷的一種變種 運行在軟中斷上下文中 struct tasklet_struct { struct tasklet_struct *next;//多個tasklet串成一

原创 中斷管理之下半部軟中斷

Linux中斷管理中有個非常重要的設計理念就是上下半部機制 上半部就是硬件中斷管理 中斷設計爲上下半部的原因如下 1.硬件中斷處理程序以異步方式進行 它會打斷其他重要的代碼執行 因此爲了避免被打斷的程序停止時間太長 硬件中斷處理程序

原创 gcc編譯器

通常我們都是使用的是的vim+gcc編譯 編譯一個c文件的命令是 gcc hello.c -o hello 殊不知氣質這個編譯語句包括 預處理 編譯 彙編 鏈接 預處理主要的作用就是頭文件的擴展 宏定義 條件編譯等 打印出預處理後