1. 程式人生 > >uboot移植之uboot和kernel的引數傳遞

uboot移植之uboot和kernel的引數傳遞

從uboot啟動核心的形式theKernel (0, machid, bd->bi_boot_params)
可以看出uboot給核心傳遞了3個引數,第1個是0,第2個是機器碼,第3個是引數列表在SDRAM的起始位置
剛好滿足一下呼叫核心的條件
• R0=0。
• R1=機器型別ID;
• R2=啟動引數標記列表在RAM 中起始基地址

①在 uboot/board/tekkamanninja/mini2440/mini2440.c的board_init函式中
指定機器碼
gd->bd->bi_arch_number = MACH_TYPE_MINI2440 
而MACH_TYPE_MINI2440定義在include/asm-arm/mach-types.h
#define MACH_TYPE_MINI2440             1999


需對應核心的linux/arch/arm/mach-s3c2440/mach-mini2440.c中一行程式碼
MACHINE_START(MINI2440, "MINI2440 test")
而MINI2440定義在linux/arch/arm/tools/mach-types
mini2440        MACH_MINI2440        MINI2440        1999

②在 uboot/board/tekkamanninja/mini2440/mini2440.c的board_init函式中
指定引數位置
    gd->bd->bi_boot_params = 0x30000100;

對應核心的linux/arch/arm/mach-s3c2440/mach-mini2440.c中一行程式碼
.boot_params    = S3C2410_SDRAM_PA + 0x100,
如果uboot沒有給出gd->bd->bi_boot_params的值,則linux預設去這個地址定址tag
如果uboot給出了gd->bd->bi_boot_params的值,則linux則按照uboot的給的這個地址去定址tag

所以即使uboot中設定
    gd->bd->bi_boot_params = 0x30000000或 0x30000200 0x300000300(或許設定一個空閒的記憶體區就可以)
而核心
的.boot_params    = S3C2410_SDRAM_PA + 0x100,(就用不到了)
也能順利啟動核心
,已試過

在試驗中發現uboot中設定gd->bd->bi_boot_params
=0或將gd->bd->bi_boot_params註釋掉,都未能順利啟動核心。貌似在uboot必須為gd->bd->bi_boot_params指定一個值才行,而linux的.boot_params 始終都沒有用到。


gd是一個全域性結構體指標,用於uboot中各個檔案中重要的引數傳遞,其成員見http://blog.csdn.net/songqqnew/article/details/6847699
看一下uboot在sdram 0x30000100處給核心傳遞了什麼東東,見http://blog.csdn.net/songqqnew/article/details/6847609

相關推薦

uboot移植ubootkernel引數傳遞

從uboot啟動核心的形式theKernel (0, machid, bd->bi_boot_params) 可以看出uboot給核心傳遞了3個引數,第1個是0,第2個是機器碼,第3個是引數列表在SDRAM的起始位置 剛好滿足一下呼叫核心的條件• R0=0。 • R1

uboot移植啟動過程詳解2

/*******************************************************************************          uboot啟動過程之第二階段的分析(board.c的分析)

uboot移植啟動過程詳解1

/*******************************************************************************     uboot啟動過程第一階段的分析(start.s檔案) 核心:start.s的分析, 其他:

uboot移植配置編譯過程詳解4

/****************************************************************     uboot的連結指令碼:u-boot.lds     時間:2018年11月下旬  &

uboot移植配置編譯過程詳解3

/**************************************************************************************     2018.10下旬     針對三星官方為210移植過的

uboot移植配置編譯過程詳解2

/***********************************************************************************             2018.11月

uboot移植config.mk的詳解

/***********************************************************************************             2018.11月         作者:劉鈺         注:以uboot\u

uboot與linux核心間的引數傳遞過程分析

轉載於:uboot與linux核心間的引數傳遞過程分析(ChinaUnix上的文章,不能收藏過來,只好轉載了) U-boot會給Linux Kernel傳遞很多引數,如:串列埠,RAM,videofb、MAC地址等。而Linux kernel也會讀取和處理這些引數。兩者之間通過struct ta

uboot移植網路驅動移植--移植操作--7.29

1、網絡卡驅動檔案介紹 uboot/drivers/net/dm9000x.c和dm9000x.h。 這個驅動來自於linux kernel原始碼。所以我們uboot中是移植而不是編寫。 2、網絡卡移

matlabc++混合程式設計---Mex結構mexFunction引數傳遞

最近的專案需要matlab和C的混合程式設計,經過一番努力終於完成了專案要解決的問題。現在就將Mex的一些經驗總結一下,當然只是剛剛開始,以後隨著學習的深入繼續新增。首先講講寫Mex的一些常規規定,然後我們會重點關注混合程式設計中最難解決資料的問題--結構到底如何轉換

c++指標作為函式引數傳遞的問題

轉自:http://blog.csdn.net/fjb2080/article/details/5623427   原創文章,轉載請註明出處,謝謝! 作者:清林,部落格名:飛空靜渡   部落格地址:http://blog.csdn.net/fjb2080 &n

MyBatis 介面繫結 session.getMapper( ) 引數傳遞

MyBatis 介面繫結方案 session.getMapper( ) 作用:建立一個介面後,由 mybatis 把 mapper.xml 生成介面的實現類,通過呼叫介面物件就可以獲取 mapper.xml 中編寫的 sql. mybatis 和

js中的型別函式引數傳遞型別問題

js中的型別: 2大型別:原始型別和物件。 原始型別有 boolean、number、string這三個普通原始型別,還有null、undefined這倆特殊原始型別 物件嘛就多了,普通物件、內建物件、全域性物件、函式、陣列等。 函式引數傳遞型別:   對於原始型別,傳遞的是值,

關於Java的引用函式引數傳遞

Java中沒有了指標,這有時給程式設計師帶來了些許不便。Java的語言設計者強調,這種不便可以通過Java的引用特性得到彌補。即對於Java的任何物件,我們可以申明物件變數,但不產生例項,這樣,把該變數指向具有實際例項的物件,即可實現同一例項物件的多個變數引用,如: int

uboot分析uboot啟動過程分析

1.拿到uboot的原始碼之後,一般需要經過四個步驟: (1)解壓縮 (2)打補丁:patch -p? < ..補丁檔案 解釋:?用數字替代,表示忽略掉前幾級目錄。 (3)配置:因為uboot可以支援很多種晶片,需要將其配置為支援特定的晶片 解釋:這一步一般就是執行m

關於Fragment懶載入的學習使用+引數傳遞的方法

這兩天做專案時,遇到一個問題,就是在ViewPager + Fragment(兩個)的巢狀中,我的兩個Fragment都有網路請求,需求是要把AFragment執行網路請求以後得到的的一個字串傳遞到BFragment中,然後BFragment再執行網路請求。 然後,這就出現

uboot啟動uboot第二階段(BL2)

uboot第二階段分析主要是start_armboot的分析一、這個函式是uboot/lib_arm/board.c的444行開始到908行結束。    1、首先分析一下uboot第二階段應該做些什麼?        (1)、第一階段主要初始化SoC內部的一些部件(看門狗,時

TabNavigator作為元件巢狀到另外一個頁面中,處理TabNavigator中的跳轉props引數傳遞(ReactNative)

<View style={Stylecss.styles.container}> <ToolBar title={'檢視訂單'}isShowBack={true}backCli

移植U-BOOT裁剪修改預設引數(易用性)啟動核心,以及對uboot進行分割槽

今天我們來裁剪U-BOOT,使其更加易用,修改預設引數,以及製作最終修改好得補丁檔案方便以後的快速移植。 那麼如果想看之前的關於網絡卡以及flash等的移植,請點選連結檢視:點選連結檢視 在裁剪修改之前呢,我們先來了解一下U-BOOT的環境引數(環境變數):

《2.uboot系統移植-第2部分-2.2.補基礎shellMakefile》

《2.uboot和系統移植-第2部分-2.2.補基礎之shell和Makefile》 第一部分、章節目錄 2.2.1.shell介紹 2.2.2.動手寫第一個shell 2.2.3.shell程式設計學習1 2.2.4.shell程式設計學習2 2.2.5.shell中的迴圈結構 2.2