原创 Linux動態庫依賴其它動態庫的問題

1 前言 這兩天在編寫一個插件系統Demo的時候,發現了個很奇怪的問題:插件加載器中已經鏈接了ld庫,但是應用程序在鏈接插件加載器的時候,卻還需要顯式的來鏈接ld庫。否則就會報:DSO missing from command l

原创 QT For Android 源碼解析

QT For Android 源碼解析1,前言2,Qt For Android的啓動2.1 在Android的世界2.2 QtActivity2.3 QtActivity的onCreate2.4當QtActivity顯示出來後3,

原创 grub的理解

1 前言 本文主要用來整理和描述在工作過程中使用grub遇到的問題和查閱的相關資料並做了個人總結,並未涉及到對grub的源碼分析。 最近要將我很久之前爲公司移植到一個新的硬件平臺(Intel Bay Trail)上的系統進行備份,

原创 ROS 自定義服務、消息編譯時找不到相關頭文件

ROS自定義服務、消息編譯時找不到相關頭文件   在我們擁有多個package的時候,我們定義了一個消息或者服務,並在代碼中使用了這個消息或者服務。如果是單獨編譯這個包,編譯 通過。但是如果是多個包一起編譯,就會出現找不到相關頭文件的錯誤

原创 VMWare 安裝vmware-tool後仍然無法全屏的解決辦法

在安裝Ubuntu 14.04虛擬機過程中,無法全屏的問題 解決辦法很簡單,一行代碼可解決。在Ubuntu中安裝如下程序包: $ sudo apt-get install open-vm-tools open-vm-tools-desk

原创 ARP包詳解

一.             關於ARP協議的基礎知識 1.ARP的工作原理             我們都知道以太網設備比如網卡都有自己全球唯一的MAC地址,它們是以MAC地址來傳輸以太網數據包的,但是它們卻識別不了我們IP包中的IP地

原创 Uboot 2017.01 SPL中的image_loader

概述 原型 使用 定義 總結 概述: 有些廠商的MCU的啓動過程是:ROM code > SPL > uboot。也就是在Uboot啓動前還需要一個SPL來進行一系列的初始化工作,而SPL和UBoot有什麼區別呢?我認爲最

原创 PHY自動協商和其在Linux下的初始化

以太網PHY自動協商和其在Linux下的初始化一:以太網的自動協商相信很多人對以太網的自動協商原理已經很熟悉了,很多博客也將其描述得十分清楚,本文就不再詳細描述了。我們將換個角度來看待這個問題。首先,以太網的自動協商功能是由PHY硬件自己

原创 反彙編C++ OOP代碼 分析構造函數如何被調用 以及簡單的C++對象內存模型

在今天進行C++代碼的思考時,產生一個疑問,就是C++類的構造函數是如何被調用的 於是就做了一個簡單的實驗來驗證自己的想法。 //main.cpp #include <stdio.h> class People{ priva

原创 Uboot 2017.01 啓動流程分析

前言 2017.01 UBoot包含兩個階段的啓動,一個是SPL啓動,一個是正常的啓動我們稱爲第二階段Uboot。當然,我們也可以選擇使用SPL和不使用。 在編譯的過程中,是先編譯第二階段Uboot,然後在編譯SPL的。這兩個階段的編譯時

原创 Linux Device Tree

疑問 設備樹的使用 疑問 設備樹是怎麼和Linux 設備驅動模型結合在一起的呢? 設備樹是什麼解析,驅動是什麼時候綁定的? 驅動是一起被掃描綁定的,還是會分爲不同的時間段? 設備樹驅動之間是怎麼互相調用接口的

原创 C指針和數組的區別

對於指針和數組的問題已經困擾我許久。今天在打代碼的時候,用到了很多指針和數組的問題。 當初在C與指針中看到,數組可以跟操作指針一樣。 例如: char buffer[1024]; char *p; /

原创 彙編 等號僞指令 計算數組和字符串的大小

等號僞指令將符號名和整數表達式聯繫起來。格式如下: 名字 = 表達式 通常,表達式是32位的整數值,彙編程序的時候,所有出現名字的地方都會在預處理階段替換成對應表達式的值,例如: COUNT = 20 m

原创 編譯RT-tests進行Linux實時性測試

前言: 在工業級的應用上,對於實時性的要求十分嚴格,就如我當前公司中,開發的是工業級機器人, 未收到同步幀,則認爲通信出現異常,於是將機器人停止。 所以實時線程的執行時間變得尤其嚴格,在打完實時補丁後,怎麼對實時性進行測試也

原创 Linux 模塊編譯

在我們發行版的Linux上怎麼樣去編譯一個模塊呢? 有兩種方法,一種是需要在我們的編譯環境中搭建整個源碼樹,然後使用make -C ~/kernel_src/ M=`pwd` modules指令進行編譯。 另一種是不需要搭建源碼樹,直接使