1. 程式人生 > >qemu 模擬-arm-mini2440開發板-啟動u-boot,kernel和nfs檔案系統

qemu 模擬-arm-mini2440開發板-啟動u-boot,kernel和nfs檔案系統

qemu

本文介紹瞭如何編譯u-boot、linux kernel,然後用qemu啟動u-boot和linux kernel,達到與開發板上一樣的學習效果!

雖然已經買了2440開發板,但是在實際學習開發過程中,還是覺得不方便,既然這樣,那就用qemu模擬2440開發板,讓學習來的更方便些吧!有些萬一模擬機上模擬不出來的或者有問題的,再到開發板上驗證!

下面是我5天正常上班工作之餘的時間的成果,很開心,因為我感覺又像linux大神邁進了一大步!10/12/20139:13:23 PM

qemu-mini2440

http://repo.or.cz/w/qemu/mini2440.git

這個可以在windows

下模擬mini2440,核心及全部外設,液晶包括其中。可以在程式視窗

中顯示。還可以模擬sd卡,以及DM9000網絡卡驅動,可以對映到本地虛擬網絡卡上。

Get a local copy of the mini2440 repository with this command:

git clone https://code.google.com/p/mini2440/

git clone git://repo.or.cz/qemu/mini2440.git

mini2440 u-boot

git clone git://repo.or.cz/u-boot-openmoko.git

使用qemu 建立mini2440的模擬模擬環境

http://www.cnblogs.com/jinmu190/archive/2011/03/21/1990698.html

1.    首先下載安裝qemu for mini2440

git clone git://repo.or.cz/qemu/mini2440.gitqemu

如果感覺速度慢,直接打包下載

http://repo.or.cz/w/qemu/mini2440.git/snapshot/HEAD.tar.gz

解壓後,原始碼的主目錄中:

./configure--target-list=arm-softmmu --prefix=/usr/local/qemu/mini2440

make -j4

sudo make install

(其中--prefix=/usr/local/qemu/mini2440表示install的目錄;make -j4表示4個目標同時構建,jobs=4,一般來說編譯速度會更快些)

然後將bin路徑新增到環境變數中方便使用qemu-system-arm

可能出現的錯誤:

Error: zlib checkfailedsudo apt-get install zlib1g-dev

ERROR: QEMU requiresSDL or Cocoa for graphical outputsudo apt-get -y installlibsdl-dev

下面兩種方法都可以實現mini2440qemu上執行,使用的qemu都是上面步驟1生成安裝的,不能apt-get install,自動安裝的對mini2440單板不支援。

測試安裝結果:

我們可以從QEMU下載頁面中下載arm-test-0.2.tar.gzhttp://wiki.qemu.org/download/arm-test-0.2.tar.gz這是ARM Linux 2.6的測試核心和initrd磁碟映象(感謝Paul Brook)

方法一:

2.   下載u-boot for mini2440

git clone git://repo.or.cz/u-boot-openmoko/mini2440.gitu-boot

或者打包下載

http://repo.or.cz/w/u-boot-openmoko/mini2440.git/snapshot/HEAD.tar.gz

(注意採用打包下載的時候這幾個包的檔名可能相同,注意區分)解壓後,配置Makefile檔案,開啟Makefile檔案,CROSS_COMPILE變數賦值,即自己所使用的交叉編譯工具鏈,比如我的是arm-linux-,儲存退出,找不到就不用改,另外(編譯uboot的時候,大家可以將設定初始IP的程式碼修改為自己想要的IP,比如和自己主機IP一個網段,以方便以後的實驗))輸入

$     make mini2440_config

$     make -j4

幾分鐘編譯完成後,即在當前目錄下生成名為 u-boot.bin 的檔案,注意如果想在之後使用u-boot nfs下載檔案功能,需要將net/nfs.c檔案中的NFS_TIMEOUT = 2UL修改為 NFS_TIMEOUT = 20000UL 否則會造成nfs檔案下載失敗。

然後將u-boot.bin檔案拷貝到qemu-mini2440/mini2440資料夾下。將tools/mkimage加到環境變數中,kernel生成uImage需要使用此工具。

3.   下載 linux kernelfor mini2440

git clone git://repo.or.cz/linux-2.6/mini2440.gitkernel

(可以使用原mini2440開發板的核心原始碼)

$     make mini2440_defconfig ARCH=arm

$     make -j4 ARCH=arm CROSS_COMPILE=arm-linux- uImage

之後會在arch/arm/boot/目錄下生成uImage 檔案,將此檔案複製到qemu目錄下的mini2440資料夾下,並將mini2440資料夾中的mini2440_start.sh作如下修改

新增cmd kernel 行為-kernel "$base/uImage" \,回到上層目錄後執行

$     sh mini2440/mini2440_start.sh

網上說這時應該看到qemu啟動後進入了u-boot介面下,輸入命令

#   bootm

就會看到linux核心啟動的畫面。

Bullshit!!!!!!!!

讓我一步步分析,最多進得去u-boot介面,但怎麼可能看得見核心啟動畫面??!!

但是根據實際情況是看不見linux啟動畫面的,下面我們看看mini2440_start.sh做了哪些工作?

首先建立一個dd if=/dev/zero of="$name_nand" bs=2112 count=65536128MBnand flash映象檔案(包含OOB),但是此nand flash根本沒有初始化,裡面為全0x00,根本無法執行起來,想要執行起來情況方法二的flashing工具。

後面就是啟動模擬器了:

qemu-system-arm-M mini2440 -serial stdio -mtdblock mini2440/ mini2440_nand128.bin -show-cursor-usb -usbdevice keyboard -usbdevice mouse -net nic,vlan=0 -net tap,vlan=0,ifname=tap0-monitor telnet::5555,server,nowait

此處經常報錯Could not initialize device 'tap',網上給了一堆無用答案,實際上是要初始化一個虛擬網絡卡,看方法二。

其他的就不想分析了,此處就提供方法二qemu-system-arm多種實用引數吧!

方法二:

QEMU模擬FriendlyArmMini2440開發板

本文基於的開發環境是Ubuntu10.04buildroot-2012.05.tar.gz。(其他版本的環境可能會出很多問題,所以編譯u-bootkernel時統一用此buildroot中的交叉編譯工具)

2.      下載編譯Buildroot (2012.05)

一般說來,我們需要三樣東西來正常啟動一個嵌入式作業系統:載入程式(bootloader),核心映象和根檔案系統映象。那我們是不是接下來需要下載一個bootloader(比如u-bootsupervivi之類),編譯之;下載任意版本的linux核心,編譯之(當然要適配mini2440);一點一點生成自己的根檔案系統,再製作成jffs2yaffs2之類的格式呢?編譯這三樣東西的交叉編譯工具鏈Cross-compiler toolchain 要製作。

交叉編譯工具鏈和根檔案系統都是一點一點製作。。。,很費時間()。雖然我們在製作根檔案系統時是可以偷懶使用Busybox這樣的“瑞士軍刀”,但是還不夠方便,Buildroot,一款超好用的開源軟體,能一次過幫我們把交叉編譯工具鏈和三樣東西都生成出來。

首先我們下載BuildrootBuildroot專案每三個月就有一個新版本,但是最好是使用buildroot-2012.05.tar.gz,其他較新版本會出很多錯,最後會說到。首先我們安裝wget這個小工具,便於下載Buildroot

$ sudo apt-get install wget

接著下載Buildroot

$ cd ~

$ tar zxvf buildroot-2012.05.tar.gz

在讓Buildroot為我們生成三個映象前,需要對其進行一些配置。Mini2440開發板的基本所需配置已經整合在Buildroot裡了(眾多defconfig檔案中的一個),省了不少功夫。在此基礎上,我們只需再進行少許配置,就可以讓Buildroot開工了。

我們選取mini2440_defconfig來生成我們的.config檔案,再用make menuconfig 進一步配置:

$ cd buildroot-2012.05

$ make mini2440_defconfig

$ make menuconfig

一個方便的配置視窗會跟著出現,是基於Kconfig的配置機制:

以下列出比較重要的幾個編譯選項,需要改動的幾項用紅色表示:

- Toolchains :在Toolchains目錄裡,Kernel Headers須要選取Linux核心版本的適配的編譯鏈版本。預設是設定為3.3.x。後面的Kernel(核心版本)我使用的是3.3.7,所以沒問題,這裡不用改也可以。當然也可以使用諸如3.0.x這樣的版本,只要跟之後的Kernel版本適配就好了。

- Bootloaders :預設是U-boot,也可以選用其他版本的Bootloader。本文就用預設的U-boot

- Kernel Kernel version預設是3.0.4,因為之前Toolchains目錄選擇的是3.3.x版本,所以這裡須要改選,比如3.3.7版本。

- Package Selection for the target Target packagesBusybox已經包含在裡面了,我們也可以選擇更多的專案,比如QtEFLdirectfb之類的圖形庫。在Graphic libraries and application子目錄裡選擇。

- Filesystem images :本文中使用的是jffs2格式的根檔案系統(也是Buildroot預設的),因為之後要製作NAND映象,所以需要配置成一個每頁512位元組和16位元組的ECCNAND型別。在Flash Type這項,改為NAND flash with 512B Page and 16 KB erasesize

這些都配置好之後,就可以請出我們最喜歡的命令了-- make

$ make

此時你可以倒杯茶,或者可以烤一隻雞。。。總之乾點別的,讓Buildroot忙活去吧。如果中間出現錯誤,一般是沒裝必要的東西,照錯誤提示安裝就好,然後接著make

如果一切順利,make 結束後,在buildroot-2012.05目錄的output/images/子目錄下可以找到生成的三個檔案

- u-boot.bin bootloader的映象

- uImage u-boot格式的(用mkimage命令生成的)Linux核心映象

- rootfs.jffs2 jffs2格式的根檔案系統映象(這個工程預設用的是jffs2根檔案系統)

至此,Buildroot完成了他艱鉅的任務,可以讓他一邊休息去了。我們進入下面的系統製作和啟動部分。

如果我們想用其中的工具,可以將/work/qemu/buildroot-2012.05/output/host/usr/bin加入到環境變數中。

另外,此工具中的linux原始碼解壓到了:buildroot-2012.05/output/build/linux-3.3.7目錄。

也可以用dl目錄中的linux-3.3.7.tar.bz2,然後用下面兩條命令對其進行編譯,是一樣的。

$       make mini2440_defconfigARCH=arm                                使用預設配置

$       make menuconfigARCH=arm                   配置核心的時候要帶選項

$       make -j4 ARCH=armCROSS_COMPILE=arm-linux- uImage                                編譯核心

待會兒就知道,這個目錄有多帥,預設就可以在qemu中正確執行^_^

3.      QEMU中執行編譯好的系統

a)        生成NAND映象並初始化

在開始前,先說一下:如果你想要比較快捷的話,可以直接去看d)、強大的工具-- FlashimgFlashimg是一個不錯的軟體,可以使用核心映象,bootloader映象和根檔案系統映象快速生成NANDNOR檔案。共享在git 上面,

如果在QEMU裡生成NAND的話,會花不少時間。所以我們可以利用閒置的記憶體(RAM--  tmpfs

$ mkdir nand

$ sudo mount -t tmpfs none nand/

我們接下來將從零開始生成一個NAND映象檔案。一般NAND的大小我們可以設定成64MB NOR映象檔案一般設為2MB)。我們來做一下簡單的計算:要生成一個64MBNAND,每個塊是512位元組,還要加上16位元組的ECC,所以每個塊是528位元組。總共需要的塊數是:(64 * 1024 * 1024 / 528 = 127100

dd 命令來生成一個NAND映象:

$ dd if=/dev/zero of=nand/nand.bin bs=528 count=127100

我們現在有了一個NAND映象檔案了,接下來要使用u-boot來初始化它。我們需要首先將Buildroot替我們生成的u-boot.bin 檔案拷貝到nand.bin 相同的資料夾下:

$ cp ~/buildroot-2012.05/output/images/u-boot.bin ~/nand/

啟動U-boot以便進行NAND的初始化:

$ qemu-system-arm -M mini2440 -serial stdio -mtdblocknand/nand.bin

U-boot啟動了,並且會顯示一些Warning資訊:

NAND: Bad block table not found for chip 0

Bad block table not found for chip 0

64 MiB

*** Warning - bad CRC or NAND, using default environment

別擔心,顯示這些資訊很正常,因為我們的NAND檔案還沒初始化呢。接下來初始化:

MINI2440 # nand scrub

MINI2440 # nand createbbt

MINI2440 # reset

至此,我們的NAND檔案已經準備好了。現在可以將其從tmpfs拷貝到電腦硬碟,然後解除安裝掉tmpfs

$ cp nand/nand.bin .

$ sudo umount nand/

$ rmdir nand

b)       基於NFS啟動

這裡插進一段用NFS啟動的實做。

在嵌入式開發階段,通常我們會操作一個掛載在NFS上的系統,這樣更加方便,快捷,無需每次都燒寫NANDNOR檔案。接下來我們用NFS啟動系統:

之前在~/buildroot-2012.05/output/images/  這個目錄裡,除了生成rootfs.jffs2檔案外,還生成了rootfs.tar檔案,是根檔案系統的壓縮檔案包。我們在/srv 資料夾下新建一個nfsroot資料夾以儲存解壓的根檔案系統:

$ sudo mkdir /srv/nfsroot/

$ cd /srv/nfsroot/

$ sudo tar xvf ~/buildroot-2012.05/output/images/rootfs.tar

接著需要在/etc/exportfs 檔案裡增加以下一行,使NFS能認識/srv/nfsroot/這個目錄:

/srv/nfsroot/ 192.168.42.0/24(rw,sync,no_root_squash,no_subtree_check)

使其生效:

$ sudo exportfs -r

然後,我們生成並配置一個 tap0 介面:

$ sudo tunctl -u $USER -t tap0

$ sudo ifconfig tap0 192.168.42.1

此時ifconfig發現多了一塊網絡卡。

(當啟動qemu使用了-net nic -nettap,ifname=tap0引數時,報錯warning: could not configure /dev/net/tun: no virtual network emulationCould not initialize device 'tap',就需要按照上面方法配置一下網絡卡,這才是正解,網上給出的答案又麻煩又無效;但是記住,經過此設定後,ubuntu是無法連線外網的,此設定重啟後無效)

現在我們已經可以來啟動QEMU了,不過在此之前,還要將uImage也拷貝到HOME目錄(nand.bin 已經在HOME目錄了):

$ cd ~

$ cp ~/buildroot-2012.05/output/images/uImage .

Ok,我們啟動QEMU+NFS

$ qemu-system-arm -M mini2440 -serial stdio -mtdblocknand.bin -kernel uImage -net nic -net tap,ifname=tap0,script=no,downscript=no

MINI2440 # setenv bootargs root=/dev/nfs rw nfsroot=192.168.42.1:/srv/nfsroot/ip=192.168.42.2

MINI2440 # bootm

輸入Buildroot的密碼,預設是root, 此時系統啟動了,可以看到QEMU的視窗和可愛的Linux小企鵝。

c)        基於NAND映象啟動

因為以之前的a)生成的nand.bin來繼續生成最終版的nand.bin(還要往裡面新增u-boot.binuImagerootfs.jffs2)過程太過繁瑣且容易出錯,在此我就不贅述了,可以參看網上的相關文章。我們直接用一個更強大的工具來生成最終版的nand.bin 。更方便,且不容易出錯。

d)       強大的工具 -- Flashimg

如前面時提到的,flashimg是一個由網友FabriceJouhaud 開發的軟體,可以很快捷地生成NANDNOR映象檔案。我們首先下載flashimg

$ git clone git://gitorious.org/flashimg/flashimg.git

編譯安裝

$ ./autogen.sh

$ ./configure

$ make

$ sudo make install

要生成NANDNOR映象檔案,可以先把之前Buildroot替我們生成的三個檔案:u-boot.bin, uImagerootfs.jffs2 拷貝到flashimg資料夾下,生成NANDNOR映象檔案:

$       flashimg-s 2M -t nor -f nor.bin -p uboot.part -w boot,u-boot.bin -w kernel,uImage -w root,rootfs.jffs2

最後,啟動系統,我們以NAND檔案為例:

啟動之後,還需要配置一下(其中mini2440=3tb 是為了使螢幕解析度成為320*240,橫向顯示。預設是240*320,是豎著的)

MINI2440 # nboot kernel

MINI2440 # setenv bootargs root=/dev/mtdblock3rootfstype=jffs2 console=ttySAC0,115200 mini2440=3tb

MINI2440 # saveenv

MINI2440 # bootm

輸入Buildroot的密碼,預設是    root

我們再一次看到了親切的小企鵝。

(用Vmware 6.5.2build-156735 | ubuntu-10.04.2-dvd-i386.iso | qemu-system-arm QEMU PC emulator version0.10.50 | buildroot-2012.05.tar.gz測試通過,如果不使用圖形介面執行正常,需要使用圖形介面就要用ssh登陸後啟動2440系統一次,然後虛擬機器中啟動2440系統,才能成功看見小企鵝,交替執行,否則報錯:Floating point exception

使用buildroot-2013.08.1.tar.bz2時,kernel中後不斷出錯:WARNING:at drivers/mtd/nand/nand_base.c:846 nand_wait+0x14c/0x16c()  [<c0148ff8>] (jffs2_flush_wbuf_gc+0xb8/0x13c)from [<c002a9b0>] (process_one_work+0x10c/0x350)

實際使用過程中的說明:

1qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevicemouse nand.bin中可以不需要u-boot.bin,在當前執行這條命令的資料夾下有u-boot.bin即可,一開始進入的u-boot是當前目錄下的u-boot.bin

2、用jz2440u-boot.bin可以在menuf選項格式化nandflash檔案nand.bin

3u-boot中可以使用tftp下載檔案到記憶體,使用tftp是隻需要設定伺服器IP即可,自己的ip設定後無法ping通。使用u-boot中的tftp前提是按照b)中設定網絡卡和啟動方式。

4、在啟動qemu時如果出現錯誤Floating point exception (core dumped),可以新增-nographic選項,在通常情況下,Qemu使用SDL來顯示VGA輸出.使用這個選項,我們可以禁止所有的圖形輸出,這樣Qemu只是一個簡單的命令列程式.模擬的串列埠將會重定向到命令列.所以,我們仍然可以在Qemu平臺上使用串列埠命令來除錯Linux核心.

我真發現我是個天才!!嘿嘿嘿嘿,qemu上模擬2440開發基本全部搞定,u-boot/kernel/nfs檔案系統10/12/2013 8:58:58 PM

6u-boot可以與主機tftp的設定為:ipaddr=10.0.0.111           serverip=10.27.100.117           tap0 10.27.100.200                   不在一個網段,不知道為什麼,現在能用就行了

7、開發板nfs訪問虛擬機器,ifconfig 10.0.0.111                    mount -t nfs -o nolock 10.27.100.117:/work/nfs/nfsroot/work                   如果mount:mounting 10.27.100.117:/work/nfs/nfsroot on /mnt failed: Permission denied       則修改伺服器的/work/nfs/nfsroot/10.27.100.117/24(rw,sync,no_root_squash,no_subtree_check)    ip地址為*即可。

8、進入u-boot後以nfs掛載跟檔案系統:setenv bootargs 'noinitrdmem=64M console=ttySAC0 root=/dev/nfs nfsroot=10.27.100.117:/work/nfs/nfsrootip=10.0.0.111'      以後開發應用程式或者驅動模組就方便了。

9

qemu 除錯

除錯U-Boot

當呼叫QEMU時新增 -s -S 選項

-s -gdbtcp::1234 的所寫

-S 在啟動時停止CPU (鍵入'c'才會開始執行)

$ qemu-system-arm -M versatilepb -nographic-kernel u-boot -s -S

除錯U-Boot時,載入檔案'u-boot'gdb(記住不是'u-boot.bin'),'u-boot'是一個ELF格式的檔案,它含有所有除錯時會用到的符號資訊,不像'u-boot.bin'是在執行"stripe"命令後,剔除了除錯資訊的檔案。另開一個控制檯視窗執行ARM的交叉除錯工具並載入檔案'u-boot'

$ arm-none-linux-gnueabi-gdb u-boot

(gdb) target remote :1234

(gdb) b do_printenv

Breakpoint 1 at 0x10080f4: file cmd_nvedit.c, line 147.

(gdb) c

Continuing.

此時在QEMU的控制檯視窗中, 將會有如下顯示:

         U-Boot 2010.06 (Aug 312010 - 16:23:16)

DRAM:  0 Bytes

Flash: 64 MiB

*** Warning - bad CRC, using default environment

In:    serial

Out:   serial

Err:   serial

Net:   SMC91111-0

VersatilePB #

在提示符"VersatilePB#"後輸入U-Boot命令"printenv",它的執行將會被gdb中斷:

VersatilePB # printenv

gdb的控制檯視窗中, 將會顯示:

Breakpoint 1, do_printenv (cmdtp=0x1015520, flag=0, argc=1,argv=0xfddee4)

at cmd_nvedit.c:147

147            if (argc == 1) {

(gdb)

從這兒開始我們就可以使用普通的gdb除錯命令進行除錯了, 不錯!

qemu-common

Linux下編譯安裝QEMULinux下編譯安裝QEMU

1.系統環境及版本

Linux發行版本:ubuntu 8.04

安裝QEMU-0.9.1

2.準備工作

建立編譯環境:

$       sudo apt-get install build-essential

編譯安裝QEMU,最重要的工具就是gcc。在大多數主機,特別是x86架構的PC機上,gcc 4.x是不被QEMU所支援的。build-essential中包含的是gcc 4.x,為了正確編譯,需要低版本的gcc 3.x(gcc32 gcc34),低版本安裝後,QEMU的配置指令碼(configure script)在配置時會自動搜尋到。我安裝的是gcc 3.4:

$       sudo apt-get install gcc-3.4cpp-3.4

安裝QEMU需要SDL開發庫的支援,可以在其下載頁面上下載原始碼編譯安裝,但是推薦在apt中安裝,不容易出問題:

$       sudo apt-get install libsdl1.2-dev

另外,還需要安裝zlibESD

sudo apt-get install zlib1g-dev zlib1g-dbg libesd0-dev

3       編譯安裝QEMU

$       ./configure --prefix=/usr/local/qemu

不加上prefix選項也是可以的。這個選項的作用是指定安裝目錄。如果不指定prefix,則可執行檔案預設放在/usr/local/bin,庫檔案預設放在/usr/local/lib,配置檔案預設放在/usr/local/etc。由於QEMU不能用make uninstall的方法解除安裝,指定安裝目錄可以便於解除安裝(其實就是刪掉整個安裝目錄)。

然後

$       make

$       sudo make install

至此,QEMU安裝完成。

4.設定環境變數

如果./configure時使用了prefix選項,還需要設定環境變數PATH,否則bash是找不到qemu的命令的(除非你輸入該命令的具體路徑,如/usr/local/qemu/bin/qemu)。編輯/etc/profile

$       sudo vim /etc/profile

在檔案中新增

PATH="$PATH:/usr/local/qemu/bin"export PATH

儲存,退出,並用Ctrl+Alt+Backspace重新啟動X Window

相關推薦

qemu 模擬-arm-mini2440開發-啟動u-bootkernelnfs檔案系統

qemu 本文介紹瞭如何編譯u-boot、linux kernel,然後用qemu啟動u-boot和linux kernel,達到與開發板上一樣的學習效果! 雖然已經買了2440開發板,但是在實際學習開發過程中,還是覺得不方便,既然這樣,那就用qemu模擬2440開發板,

第0課第5節 剛接觸開發u-boot kernel打補丁編譯

一. uboot打補丁、建source insight工程、編譯、燒寫 1. 解壓 u-boot-1.1.6.tar.gz2 tar xjf u-boot-1.1.6.tar.gz2 2. 打patch patch -p1 < ../u-boot-1.1.6_jz24

基於TQ2440開發U-boot-1.1.6的start.S程式碼分析

start.S彙編原始檔是U-boot執行的起始程式碼檔案,也是不容易理解的實現部分。執行流程如下: .globl _start//定義_start是全域性標籤,其他檔案也可以使用。.globl是GNU彙編語法。 _start:breset//跳轉到reset標籤出執行,由

移植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, 

u-bootkernelfilesystem 執行過程分析

標題:   Uboot -kerne-root 啟動流程 內容:   ※uboot啟動流程   ※Kernel啟動流程   ※Root啟動流程   ※構建根檔案系統   /********************************* *u-boot

【轉】U-BOOT支援燒寫yaffs2檔案系統

U-BOOT 支援yaffs2檔案系統的燒寫。 其實移植這步燒寫很簡單,只是將打包的檔案系統一次寫入NAND即可,以頁為單位,一次寫入2K+64B。 包含main和spare區,其中spare的ECC資料等在yaffs2檔案系統製作時就已經寫好了。是通過軟體ECC 每256B產生3B的規則進行的。所以必須保

CentOS 7 利用qemu模擬ARM vexpress A9開發

ogr install 進入 復制 不同 .html ini 依賴 roo 聽說qemu用於仿真arm很不錯,今日就來試了一把。由於剛剛開始,了解的並不多。本文僅僅記錄Qemu裝載Linux kernel和busybox根文件系統的過程。後續將會深入了解仿真的其他內容。 先

QEMU模擬Mini2440開發執行環境(二):NFS掛載根檔案系統

前言 原創文章歡迎轉載,請保留出處。 若有任何疑問建議,歡迎回復。 郵箱:[email protected] 緊接著第一篇(http://blog.csdn.net/maxwell_nc/article/details/44279553),我們使用網路檔案系統NFS掛載根檔案

QEMU模擬Mini2440開發執行環境

前言 原創文章歡迎轉載,請保留出處。 若有任何疑問建議,歡迎回復。 郵箱:[email protected] 手頭上只有一塊Smart210(Tiny210V2),無奈網上的資料多數是2440的資料,又不想再花錢買一塊2440,後來發現qemu可以模擬arm,參考各種文章後成

ARM-Linux開機自啟動設定-mini2440開發

    要在開發板上的Linux開機啟動自己的程式,想著簡單,卻改了很久,繞了一圈下來確實很簡單,只是自己一開始太過迂腐吧!    如果不想看完全文,這一段應該就夠了,從我使用的開發板的角度講,一般只要在/etc/init.d/rcS中加入你的程式或者指令碼命令就可以實現開機

Qemu搭建ARM vexpress開發環境(二)----通過u-boot啟動Linux核心

Qemu搭建ARM vexpress開發環境(二)----通過u-boot啟動Linux核心 標籤(空格分隔): Qemu ARM Linux 在上文《Qemu搭建ARM vexpress開發環境(一)》中已經簡單講述了通過Qemu模擬直接啟動Linux核心,並掛在SD卡根檔案系統的方法,這種方法是直接啟動

ARM開發掛載U

將U盤中的hello檔案複製到ARM開發板中(絕大多數作業系統是linux的開發板都適用)。將U盤插到開發板上,會打印出一段資訊: sda: sda1  sd 1:0:0:0: Attached scsi generic sg0 type 0 sd 1:0:0:0: [sda]

嵌入式ARM Linux開發啟動跳過輸入root使用者名稱密碼

1. 編譯autologin.c程式。autologin.c檔案內容#include <unistd.h>int main() {        execlp("login","login","-f","root",0);        return 0;}編譯#

mini2440開發jilnk使用

image flash color round aid spl -o 相關 display 1、安裝Setup_JLinkARM_V402d.exe軟件 安裝完成打開SEGGR J-FLASH ARM,界面如下: 2、用jlink將開發板與pc連接,打開開

ARM嵌入式開發學習路線指引

如何入門嵌入式?嵌入式開發學習方法步驟如何入門嵌入式?嵌入式開發學習路線指引 嵌入式開發就是指在嵌入式作業系統下進行開發,一般常用的系統有linux,android。平臺:Cortex-A9開發板 嵌入式技術學習如何入手,從何學起呢, 以下內容簡單介紹嵌入式開發的學習步驟及如何成為一位合格的嵌入式工程師,

【核心】四、搭建完整的mini2440開發驅動開發環境(仿照JZ2440驅動開發環境搭建)

一、mini2440開發板驅動環境搭建: 《mini2440使用者手冊》說明原文>>注意:本開發板提供的 linux 核心並不能直接用於 u-boot ,因為我們公司是不使用u-boot的,並且對其各個引數設定並不瞭解,關於 U-Boot 的使用方法使用者可以參考網上的資料。 我了個。。。鑑於

Omapl138開發啟動過程的列印資訊

NAND: 512 MiB MMC: davinci: 0 Bad block table not found for chip 0 Bad block table not found for chip 0 Bad block table written to 0x00001ffe0000,

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

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

移植OpenCV+QT到ARM S3C6818開發上(2)

續《移植OpenCV+QT到ARM S3C6818開發板上(1)》 安裝QT開發環境到宿主機 解壓qt5.7.0原始碼(時間稍稍有點長,為待會編譯捏了一把汗啊!) 解壓完之後進入原始碼根目錄,終端輸入: sudo ./configure -v -release

移植SSH到ARM Linux開發

編譯器arm-linux-gcc和arm-none-linux-gnueabi-gcc成功。         在移植到友善2440的時候很容易,因為他4.3.2交叉編譯器等庫檔案做等好。但是在移植到天漠devkit8000時,遇到非常多的問題。一個月之前遇到問題沒有找到