要學習arm-linux核心,得先移植到開發板上去執行了,才有興趣進行下一步的研究。人就是這樣,沒先看到現象就不太願意去詳細學習。
一、接下來就得移植arm-linux核心到開發板,移植過程一般有三種方式:
1)、直接在解壓後的核心資料夾(linux不是這樣叫的,我為了好理解)中,使用 make menuconfig 命令乙個乙個進行配置。乙個核心檔案數多達2萬個,可想對剛入門不久的人難度是多大,所以此不適合菜鳥,只適合傳說中的牛人;
2)、使用預設配置,在預設配置的基礎上進行修改(此方法難度也有,但相對第一種方法那就沒什麼了);
3)、使用廠家提供的配置檔案(在買開發板的時候,廠家肯定會給你帶一些廠家提供的資料,沒資料咱不買就是);
這裡講下後兩種方法,對於第二種方法先要改一下相應的檔案:
a)、頂層makefile: arch = arm 和 cross_compile = arm-linux-,不修改這裡編譯出來的檔案是x86架構的。
b)、修改平台輸入時鐘,這裡對著自己的晶元改,我用的的四12mhz的;
c)、修改機器碼id,此機器碼id就是u-boot傳進來的id號,如果不修改id號,它會提示你說你的id號不匹配;
這裡可能講的不是很細,都的自己去慢慢摸索,錯了他都會給你錯誤提示,對著提示慢慢改。
對於第三種,那就就簡單。首先把廠家的config複製到 .config中,再執行 make menuconfig 進入配置介面,根據自己需要慢慢配置、剪裁。最後執行 make zimage 就等著它慢慢編譯。最後會在 arch/arm/boot中找到需要的zimage檔案。
二、簡要分析下核心啟動
移植核心的目的就是,在arm-linux作業系統上執行運用程式。
核心的工作:1、處理u-boot傳入的引數;
a)、判斷是否支援cpu和單板,此過程是用彙編寫的;
b)、建立頁表;
c)、enable mmu;
d)、跳轉到start_kernel(核心的第乙個c程式)
2、掛接根檔案系統;
3、執行應用程式
其只要涉及的函式如下:arch/arm/kernel/head.s
start_kernel
setup_arch
setup_command_line
reset_init
kernel_init
prepare_namespace
mount_root
init_post
嵌入式核心製作
一.核心簡介 1.系統架構 1 linux是由使用者空間和核心空間構成的 2 使用者空間主要是使用者應用程式以及一些c庫檔案,配置檔案。一般是看得見的。3 核心空間主要是系統呼叫介面,狹義上的核心,處理器架構相關的 4 劃分兩個空間的理由 處理器有不同的工作模式,不同的模式許可權不一樣,可以執行的指...
核心模組嵌入式
linux核心模組程式設計特點 1 不能使用c庫和c標準標頭檔案 2 必須使用gnu規範 3.沒有記憶體保護機制 4.不能處理浮點運算 5.注意同步和併發的問題 6.注意可移植性 一,模組函式 1 載入函式 將模組函式用關鍵字static修飾,避免和核心函式重名 init 把標記的函式放在elf檔案...
嵌入式學習
1 c 語言 第二版譚浩強。2 資料結構 c語言版。3 實用 c 程式設計 4 學習51 微控制器,加深對中斷的理解。5 學習 arm微控制器。1 細讀 arm微控制器基礎與實戰 周立功編寫。2 細讀相關晶元的原版英文文件。如 arm920te.pdf s3c2410 1.2.pdf。6 學習uco...