1. 程式人生 > >① 根檔案系統直接編譯進核心

① 根檔案系統直接編譯進核心

  直接用TQ2440提供的原始碼linux2.6.30.4, 然後用其提供的busybox.1.16.0

在(make menuconfig中)沒有選中Initial Ram... 時是這樣的

看到這裡,大約知道除了根檔案系統有問題外,其他沒有問題. 

將檔案系統編譯進去,遇見問題:

make zImage ARCH=arm後,下載zImage.bin到TQ2440,啟動系統後居然是這樣:

看來這個問題不小,直接bad gzip了

Question1: 該如何解決呢?  

不管它繼續用uboot的另一個功能 Test Linux Image(zImage) :


各類東西的初始化.....


不會吧,居然進入console了,這麼說就是zImage的壓縮頭部有問題而已 ??

但是沒有多久居然又重啟進入uboot了,看來這個還是個問題.

========================================================

Question2: 繼續輸入命令居然可以,那麼說明busybox和根檔案系統也是沒有問題的 ??

既然如此,那麼關閉看門狗試一試,就不會重啟了,這麼說是看門狗問題:


那好直接在命令列關閉它:

 $ echo V > /dev/watchdog  

可以參考下面這個Blog:

以及下面的這個:

我就簡單的處理一下,直接在編譯的時候close watchdog:


直接測試(zImage直接到記憶體)是沒有問題了.那麼下載到NandFlash有沒有問題呢:


copy linux kernel ... to 0x3000800... 

直接就是data abort,此時PC = 0x3000b424,那麼這個是屬於哪個區域呢? 是頭部(解壓縮部分) ? 還是? 

這裡是沒有用mkimage將zImage製作成uImage,沒有頭部(大小64B = 48H),直接用TQ2440光碟提供的工具即可.

其用法看:

基本如下摘抄:

1.首先檢視mkimage的命令引數[[email protected] tools]# ./mkimage Usage: ./mkimage -l image

-l ==> list image header information./mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image-A ==> set architecture to 'arch' //用於指定CPU型別,比如ARM-O ==> set operating system to 'os' //用於指定作業系統,比如Linux-T ==> set image type to 'type' //用於指定image型別,比如Kernel-C ==> set compression type 'comp' //指定壓縮型別-a ==> set load address to 'addr' (hex) //指定image的載入地址-e ==> set entry point to 'ep' (hex) //核心的入口地址,一般是:image的載入地址+0x40(資訊頭的大小)-n ==> set image name to 'name' //image在頭結構中的命名-d ==> use image data from 'datafile' //無頭資訊的image檔名-x ==> set XIP (execute in place) //設定執行位置2.製作新增頭的uImage[[email protected] boot]# ./mkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008040 -n linux-2.6.13 -d zImage uImageImage Name: linux-2.6.13Created: Sat Dec 20 19:42:38 2008Image Type: ARM Linux Kernel Image (uncompressed)Data Size: 1588584 Bytes = 1551.35 kB = 1.51 MBLoad Address: 0x30008000Entry Point: 0x30008040注意:大家可以根據建立的頭資訊來驗證個引數的含義。比如Image Name就是-n選項指定的內容,Load Address就是-a選項指定的內容,Entry Point就是-e選項指定的內容。

用mkimage製作好後,下載,boot system 即可.

Qusetion3: 這裡還是遇到了問題:  如何將uImage下載到TQ2440中?

這裡用u-boot選單無法完成,


沒有下載uImage的選項,當然可以將uImage  rename成zImage.bin,但是這樣的話,在下載後去啟動System(即選項8)的時候就不對了

那麼就用u-boot的命令:

 

  tftp Address(0x30008000) Filename(uImage)

這樣就可以了.

相關推薦

檔案系統直接編譯核心

  直接用TQ2440提供的原始碼linux2.6.30.4, 然後用其提供的busybox.1.16.0 在(make menuconfig中)沒有選中Initial Ram... 時是這樣的 看到這裡,大約知道除了根檔案系統有問題外,其他沒有問題.  將檔案系統編

對比直接編譯核心和模組形式

Compiling directly into a kernel vs. modules You have two options for adding functionality to the kernel: building functions into the ke

關於UBOOT,LINUX核心編譯檔案系統的15個弱智問題(轉)

(1)核心預設執行地址和載入地址在哪裡設定? (2)從FLASH什麼地址找核心和根檔案系統,UBOOT在哪裡設定? (3)啟動時UBOOT將根檔案系統和核心拷貝到RAM中何處在哪裡設定? (4)UBOOT 如何知道核心與根檔案系統的格式和大小? (5)核心啟動引數在編譯UBOOT時候哪裡指定? (6)核心

檔案系統編譯核心

1、利用busybox製作根檔案目錄。(需要有init 和 linuxrc)2、makemenuconfig 在general setup 中設定 initial ram filesystem and RAM disk 後指定檔案系統原始檔路徑.3、makemenuconfi

關於UBOOT,LINUX核心編譯檔案系統的15個弱智問題

(1)核心預設執行地址和載入地址在哪裡設定? (2)從FLASH什麼地址找核心和根檔案系統,UBOOT在哪裡設定? (3)啟動時UBOOT將根檔案系統和核心拷貝到RAM中何處在哪裡設定? (4)UBOOT 如何知道核心與根檔案系統的格式和大小? (5)核心啟動引數在編譯UBO

怎樣從網路上核心檔案系統啟動開發板

首先在ubuntu虛擬機器上要有nfs伺服器 1.啟動開發板uboot,輸入 下面的命令 set bootargs console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.19:/work/nfs_root/tmp/fs_mini

移植好uboot和基於initramfs檔案系統Linux核心的開發板的啟動過程

我們移植好uboot和Linux核心之後,當我們重啟之後,開發板首先做的事情就是將nandflash前4K的內容複製到SRAM中去,由於SRAM只有4K大小,所以我們必須將初始化CPU、記憶體、中斷、關閉開門狗以及nandflash中uboot拷貝到SDRAM中的的程式都放

《Linux啟動過程分析》核心掛載檔案系統

說明:本文基於Linux2.6.29核心分析;其他核心版本僅供參考。   前邊通過原始碼情景分析,看過了匯流排、裝置、驅動及其發現機制,Linux2.6核心udev裝置節點建立相關;對於檔案系統,一直望而生畏,但核心學習、這部分又不可能繞的過去。目前對VFS中使用的has

Linux核心移植和檔案系統製作(詳細步驟精講)

start_kernel是所有 Linux 平臺進入系統核心初始化後的入口函式,它主要完成剩餘的與硬體平臺相關的初始化工作,在進行一系列與核心相關的初始化後,呼叫第一個使用者程序-init 程序並等待使用者程序的執行,這樣整個 Linux 核心便啟動完畢。該函式所做的具體工作有:呼叫 setup_arch

開發板通過網路載入核心、裝置樹、檔案系統

開發板要通過網路載入核心、裝置樹、檔案系統,首先要搭建好tftp和nfs服務1.搭建tftp伺服器tftp服務安裝//----虛擬機器上安裝tftp服務$ sudo dpkg   -s   tftpd-hpa   //檢查是否安裝tftp server$ sudo apt-g

移植u-boot-2011.03到S3C2440(utu2440)的方法與步驟###8. u-boot引導啟動nand flash中核心檔案系統cramfs和使用者檔案系統yaffs2支援

rivers/rtc/hctosys.c: unable to open rtc device (rtc0)uncorrectable error : <3>uncorrectable error : <3>end_request: I/O error, dev mtdblock2, 

Linux核心驅動學習(二)----檔案系統的構成 (root filesystem)

1、建立根檔案系統目錄和檔案 1.1建立目錄 1.2建立裝置檔案(命令mknod);必須建立裝置檔案---consle\null 1.3建立配置檔案---複製已有的/etc目錄下的檔案

openwrt的編譯系統是如何製作檔案系統

答:分析以下makefile即可獲取整個過程 以nxp layerscape系統的編譯過程為例 1.分析target/linux/layerscape/image/Makefile的最後一句,這是一個好的開端 $(eval $(call BuildImage))   2.巨集Bu

嵌入式linux 核心檔案系統燒寫方式簡介

總體來說,嵌入式Linux核心和根檔案的引導與PC機差不多。嵌入式linux核心和根檔案系統可以存放在各種可能的儲存裝置中,一般情況下我們將核心和根檔案系統直接燒入到Flash中(包括NOR和NAND flash),這種方法的缺點是在核心和根檔案系統出現修改時我們就不得不得

移植核心學習筆記2-----修改分割槽及製作檔案系統

1、製作分割槽 (1)分析 在上節實驗中出現以下問題:無法掛載根檔案系統 在以前u-boot燒寫檔案系統時是燒寫到某個地方,以前的分割槽是下面那樣劃分的,劃分為4個分割槽,但是上面有8個分割槽 分割槽修改參考(分割槽是在程式碼裡面寫死的,u-boot怎麼設定不會影響核心

linux檔案系統核心合二為一

《ARM Linux開發-warewin 2G/3G無線傳輸(DTU)和路由器—筆記》 硬體平臺 :AT91SAM9260 核心版本:Linux-2.6.36 核心檔案和根檔案系統在Flash中一起壓縮放置可節省大量的Flash儲存空間,也便於韌體的存檔和升級,把根檔案系

嵌入式Linux-檔案系統2_(利用交叉編譯工具鏈,構建/lib目錄)

光有應用程式(命令)是不夠的,因為應用程式本身需要使用C庫的庫函式,因此還必需製作for ARM的C庫,並將其放置於/lib目錄。my god,要自己寫C庫的原始碼嗎?不用!還記得交叉編譯工具鏈的3個組成部分嗎?交叉編譯器、for ARM的C庫和二進位制工具。我們只需要把嵌入式的C庫拷貝過來就可

uboot、核心檔案系統啟動流程

  0.設定cpu為svc模式,關中斷  1. 為核心的解壓做準備(記憶體,中斷等等)  2.核心自解壓 (vmlinux.lds)  3.跳轉到入口地址執行(head.S--->main.c)start_kernel執行核心  4.硬體的初始化(初始mm  mmu  中斷(request_irq),軟

uboot中利用TFTP和NFS載入核心映象和檔案系統

origin: http://www.cnblogs.com/cjjnjust/articles/1754849.html 主機說明: 實驗板說明: MPC8349itx開發板: IP: 59.64.155.244  閘道器 59.64.155.1 開發板eth0為

如何把核心、uboot、和檔案系統下載到開發板中

1、首先準備好所需要的檔案:u-boot、uImage、rootfs.img。 2、下載u-boot: tftp   0x40000000   u-boot.bin nand   erase  0    0x60000 nand    write   ox40000000