原创 C/C++ 程序的編譯預處理和條件編譯

** C/C++ 程序的編譯預處理和條件編譯指令詳解** 編譯預處理 #include 包含指令作用爲 將一個源文件嵌入到當前源文件中該點處。 #include<文件名> : 按標準方式搜索,文件位於C++系統目錄的include

原创 Git常用協議-SSH配置

我們常用的GIT遠程倉庫協議有: – Git協議:爲自帶的網絡協議,它適用於不需要對讀進行授權的大型項目    • 優點:傳輸速度最快   • 缺點:授權機制不靈活,要麼不能推送,要麼都能推送 – HTTP/HTTPS協議    • 優

原创 內核中的2套虛擬地址映射方法:動態映射和靜態映射

靜態映射: 1)內核移植時以代碼的形式硬編碼(代碼裏已經把它寫固定了,即移植的時候已經設計好了要把哪個物理地址映射哪個虛擬地址),如果要更改的話必須改源代碼後重新編譯內核。開機時調用映射表建立函數,映射表建立函數。該函數根據映射表

原创 內核中的2套虛擬地址映射方法:動態和靜態

靜態映射方法的特點: 內核移植時以代碼的形式硬編碼(代碼裏已經把它寫固定了,即移植的時候已經設計好了要把哪個物理地址映射哪個虛擬地址),如果要更改的話必須改源代碼後重新編譯內核; 對於移植好的內核,在內核啓動時建立靜態映射表,到內核關

原创 構建根文件系統

一、先來分析下busybox 在根文件系統中有很多命令,如ls、cp等等,每個命令都相當於應用程序,若它有很多命令的話,我們一個個去把應用程序找出來然後編譯是很麻煩的事情。 在嵌入式系統中有一個busybox,它就是如ls、cp等等這

原创 linux內核啓動過程和啓動第一個應用程序

內核的最終目的就是運行應用程序(位於根文件系統)。 內核啓動相關的一些重要過程 1、判斷是否支持這個processor,即CPU。 2、判斷是否支持U-boot傳進來的機器ID。 機器ID是在在r1寄存器中存放的。 其中_arch

原创 U-boot的命令架構和啓動內核

一、U-boot的命令架構 1、U-boot的每個命令都是通過都是通過U-BOOT-CMD宏來定義的(include/command.h)。 格式如下圖所示, 其中: name表示命令的名字,這裏需要注意的是不要用雙引號將其括起來,

原创 Linux內核移植分析

以三星原廠提供的一套內核源碼(對應s5pv210芯片)和我之前在網上買的一塊名字叫x210的開發板爲例 第一步:內核機器碼的確定 MACHINE_START宏(arch\arm\mach-s5pv210,每一個mach文件下最後都有一

原创 Linux內核的配置:menuconfig和Kconfig和.config和Makefile的關係

一、配置前先確認Makefile來檢查交叉編譯工具鏈和SoC架構有沒有設置對。 CROSS_COMPILE ?= 交叉編譯工具鏈的安裝目錄 ARCH = SOC的 架構,比如arm,主要目的是爲了編譯時能找到arch/arm目錄。

原创 用nfs掛載rootfs

nfs是一種網絡通訊協議,由服務器(提供nfs服務的一套軟件)和客戶端(通過nfs這種協議來和服務器進行通信來工作的一個軟件)構成。利用nfs協議可以做出很多直接性應用,我們這裏使用開發板中運行kernel做nfs客戶端,來掛載服

原创 uboot的源碼目錄結構分析

uboot源碼可以有3種獲取途徑:uboot官網下載、SoC廠商官方的、具體開發板的官方 (1)uboot官網下載的。這個是源頭的源代碼,這種代碼對我們來說移植比較困難,因爲源代碼可能沒有匹配你當前使用的開發板,甚至找不到當前開發板使

原创 Makefile的環境變量

(1)makefile中用export導出的就是環境變量。一般情況下要求環境變量名用大寫,普通變量名用小寫。 (2)環境變量和普通變量不同,可以這樣理解:環境變量類似於整個工程中所有Makefile之間可以共享的全局變量,而普通變量只

原创 Linux內核源碼目錄結構

和uboot一樣,Linux源碼可以有3種獲取途徑:Linux官網下載、SoC廠商官方的、具體開發板的官方 (1)Linux官網kernel.org下載的。這個是源頭的源代碼,這種代碼對我們來說移植相比較來說比較困難。 (2)SoC廠

原创 shell程序的傳參

調用shell程序時的傳參 我們都知道在C語言中系統可以通過main函數的argc和argv給它傳參。同樣shell程序本身也可以在調用時傳參給他。在shell程序內部使用傳參也是使用的一些特定符號來表示的,包括: KaTeX par

原创 Makefile中變量賦值運算符=、:=、?=和+=的區別

(1)= 在等號右側的值是變量的值,右側的值可以定義在文件中的任何一處,也就是說,右側 中的變量不一定非要是已經定義好的值,其也可以使用後面定義的值。也就是說用=賦值的變量,在被解析時他的值取決於最後一次賦值時的值,所以你看變量引用的