系統移植 移植涉及的工作

2021-06-27 05:29:20 字數 3514 閱讀 1603

1、移植涉及的工作

a、系統軟體

(1)引導程式:初始化硬體,其目的為載入核心

(2)核心:系統乙個核心功能的**

(3)檔案系統:內容+格式

b、編譯器

交叉編譯:在主機環境編譯,其編譯結果在目標環境下執行

2、交叉編譯器安裝

在linux環境下安裝軟體相當於windows下的綠色軟體,只解壓,然後配

置環境變數即可,而windows下還會向系統註冊。

如果不想每次指定編譯器軟體路徑則在環境變數檔案中設定路勁。每次編譯軟體時會去這個路徑找這個軟體來編譯檔案。

shell命令直譯器,只是將外部命令解析後交給系統核心,相當於用omap138時,dsp中執行那個軟體,通過命令操作dsp擦除nor nand等操作,這個軟體自己寫的,解釋命令,然後去選擇執行什麼。

3、兩個服務

(1)tftp

(2)nfs(網路檔案系統)

pc(server 檔案系統的內容)<--------->板子(client kernel)

4、虛擬機器-網路設定

編譯步驟

1、指定交叉編譯工具鏈

a、修改原始碼頂層目錄下的makefile

ifeq (arm,$(arch))

cross_compile ?=arm-cortex_a8-linux-gnueabi-

endif

b、編譯時指定  (注意= 無空格)

# make arch=armcross_compile=arm-cortex_a8-linux-gnueabi-

2、make 配置

定製編譯系統,以達到編譯指定檔案的目的

# makefsc100_config

配置並編譯

# make fsc100

3、make

make distclean 命令:清空配置和已經編譯的結果

4、編譯出的結果

符號表:作用?

5、s5pc啟動與s3c2440啟動區別

6、s3c2440與s5pc中斷區別

s5pc的中斷更高階,因為具有向量中斷表,會將中斷服務程式的位址放入中斷向量表,當中斷產生後,cpu自動將執行該中斷服務程式,而s3c2440的中斷產生後,由使用者寫程式判斷是哪乙個中斷產生,從而去執行該中斷。

7、dhcp :路由會自動分配ip,如果是pc與板子直接連線,無路由器,不能採用dhcp,應該手動設定ip。

8、橋接

是將乙個網路(是軟體協議)連線到乙個物理網絡卡上,相當於將網路元件連線到哪個物理網絡卡,

網路介面卡:網絡卡

9、

bootargs

:核心啟動引數

10、ram盤 :不會回寫,掉電後不儲存,優點:讀寫速度快

一般情況檔案是儲存在外存中,顯示檔案目錄,只是將檔案的目錄映象到記憶體中,當我們檢視檔案內容時,才會將外存內容讀到記憶體,而ramdisk盤則是將檔案所有內容直接放到記憶體中,這個ram盤一般可以用來存放加密**。

11、守護程序作用

12、otg: 裝置與裝置通訊   一般的host :只能是主機與裝置通訊

1、兩個階段的**

a、第一階段

體系結構/cpu/具體arm核目錄

start.s

體系結構/cpu/具體arm核目錄/soc目錄

b、第二階段

平台庫目錄/board.c

2、核心啟動條件

3、移植的步驟流程說明

a、選平台

原始碼頂層目錄下makefile

fsc100_config:    unconfig

@$(mkconfig) $(@:_config=) armarm_cortexa8 fsc100 samsung s5pc1xx

指定體系平台目錄

cpu目錄

板級目錄

公司目錄

soc目錄

b、修改/定製板級檔案

(1)、機器碼及核心啟動引數的記憶體首位址

(2)、裝置主機端初始化**

c、選配模組

選配模組:命令、邏輯**、驅動

include/configs/配置名.h

include/configs/fsc100.h

(1)、引數

(2)、開關

原始碼中的編譯巨集

makefile編譯開關

(3)、引數開關

12、s5pc100 最開始無u-boot時啟動方式

s5pc100內部有乙個rom,這裡面存放了三星公司的**(選擇引導方式的),如果是採用外部usb口(外部薄碼開關選擇),內部rom會選擇啟動時從外部usb口讀取程式,將程式存放到cpu內部的ram(此程式後面主要完成初始化ddr用,為後面引導u-boot做準備),當程式讀取到cpu內部ram後開始執行此程式,將會初始化外部記憶體,再將u-boot程式通過usb傳輸到ddr中執行,然後將u-boot燒寫進入nandflash中。

13、u-boot初始化時,關閉mmu,因為mmu會對映位址,例如記憶體實體地址為0x2000 0000,而經過mmu對映後可能為0x0000 0000, 這樣啟動時,如果我們希望從實際的記憶體空間執行程式時,無法完成.  所以在程式啟動時關閉mmu.

在第二次初始化時才開啟mmu ,為後面使用.

14、系統核心是常駐記憶體的,

15、cache在初始化時被關閉的原因

因為當外部記憶體上的資料變化時,cache上資料不一定會更新,因此關閉cache,直接從記憶體位址讀取資料,對於cpu來說,所有的外設都會有乙個位址,因為cpu有位址匯流排,他能訪問的位址都是在一定範圍的,記憶體(ddr)只會占去他一部分位址,其他的位址被用作 例如一般的埠位址 、i2c、spi \uart等。但是這些位址會被mmu對映到記憶體中。當這些埠資料發生變化時,記憶體裡資料改變了,但是cache裡的資料還未發生改變,這樣在啟動時會造成錯誤。

關於i/o對映的兩種方式:

許多處理器使用記憶體對映

i/o,就是把裝置的暫存器對映到常規記憶體空間的固定位址

。有些處理器使用埠對映

i/o,就是把裝置的暫存器對映到乙個單獨的位址空間

,這個位址空間一般來說要比常規記憶體小。在這些處理器上,程式必須使用特殊的機器指令來向記憶體對映裝置的暫存器讀取或寫入值。

16、為什麼32位系統的記憶體條只能為2g,而實際使用時為4g

因為採用了mmu管理,理論上系統的記憶體可掛載4個g的記憶體條,但是有一部分的位址空間被外部i/o 占用,例如埠位址 網口位址,nand位址等,剩下的位址給ddr只有2g了。

17、自己在u-boot中增加命令

1、將編寫好的命令實現原始碼放在common資料夾中,修改這個資料夾的makefile讓原始檔生成的.o檔案追加到u-boot.bin中。 然後可以在fsl100.h中加巨集開關。

18、記憶體管理

1、解決小記憶體執行大資料

2、解決編譯時固定記憶體位址,而執行時在記憶體的其他位址,虛實對應。

系統移植 核心移植

irom soc samsung固化的位址 iram soc 256k dram 片上外設 記憶體 norflash 讀快 啟動u boot noneflash 寫快 啟動u boot emmc 包括noneflash和讀寫noneflash的控制器 sdmmc sd卡 bl1 bl2 1.irom...

系統移植 檔案系統移植

設定驅動選項 解壓原始碼 tar xvf busybox 1.22.1.tar.bz2 進入原始碼目錄配置原始碼 make menuconfig busybox settings build options build busybox as a static binary no shared lib...

uboot移植(一) 移植前的準備工作

一 uboot的 uboot的獲取途徑一般有三種,一種是uboot官方提供的這uboot,這裡面是針對多種開發板和晶元的uboot 是全球各地上傳,然後由uboot官方提供的,因為它裡面包含了很多種開發板的uboot,所以檔案比較大 第二種是晶元廠商提供的uboot,一般來講,晶元廠商 三星 會針對...