www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號(hào)精選 > 嵌入式IoT

很多時(shí)候,做嵌入式往往需要大量的金錢來購買設(shè)備,并且?guī)е@些電路板非常的不方便,那么有沒有一種辦法可以解決這個(gè)問題呢?這時(shí)就可以利用QEMU來模擬一個(gè)設(shè)備進(jìn)行實(shí)驗(yàn)了。

1. 介紹

QEMU是一套由法布里斯·貝拉(Fabrice Bellard)所編寫的以GPL許可證分發(fā)源碼的模擬處理器,在GNU/Linux平臺(tái)上使用廣泛。Bochs,PearPC等與其類似,但不具備其許多特性,比如高速度及跨平臺(tái)的特性,通過KQEMU這個(gè)閉源的加速器,QEMU能模擬至接近真實(shí)電腦的速度。

簡單的說,通過這個(gè)模擬器,對于做嵌入式的人來說,可以在pc仿真開發(fā)板的運(yùn)行情況,不用每次都需要將程序下載到開發(fā)板,特別是調(diào)試驅(qū)動(dòng)與編譯內(nèi)核這將節(jié)省大量的時(shí)間!

2.準(zhǔn)備

首先下載2440的qemu

為什么要下載qemu,直接在ubuntu上apt-get install不行嗎?

不行!下載后的不帶這個(gè)2440

首先在git上下載代碼

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

下載完成后開始編譯配置

./configure--target-list=arm-softmmu --prefix=/usr/local/qemu/mini2440 make -j4
sudo make install

(其中--prefix=/usr/local/qemu/mini2440表示install的目錄;make -j4表示4個(gè)目標(biāo)同時(shí)構(gòu)建,jobs=4,一般來說編譯速度會(huì)更快些)

然后將bin路徑添加到環(huán)境變量中方便使用qemu-system-arm

在這個(gè)目錄中,有一個(gè)mini2440_start.sh的腳本

為了直接看到效果,這里直接采用韋東山老師的uboot,kernel和文件系統(tǒng)

關(guān)于文件系統(tǒng),可以采用nfs文件系統(tǒng)進(jìn)行相關(guān)的開發(fā),十分的容易,以后介紹

3.flashimg

所以目前的文件系統(tǒng)是在在這些基礎(chǔ)上進(jìn)行的。

接著,采用一個(gè)工具進(jìn)行制作,這個(gè)工具的就是flashimg工具

flashimg的官方網(wǎng)站訪問不進(jìn)去了!?。?

然后就只能使用github了。

git@github.com:cailiwei/flashimg.git

下載完成后就可以進(jìn)行編譯

./autogen.sh
./configure make sudo make install

將文件轉(zhuǎn)移到這里面,然后開始制作

現(xiàn)在采用的是nandflash,所以先采用這種方式

#!bin/bash ./flashimg -s 64M -t nand -f nand.bin -p uboot.part -w boot,u-boot.bin -w kernel,uImage -w root,rootfs.jffs2 -z 512

如果要采用nor flash

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

4.寫腳本

又到了寫腳本時(shí)間了

制作完成后,生成nand.bin 將生成的nand.bin轉(zhuǎn)移到我們編譯的2440的qemu之中

在這里面,我們最好不用自帶的mini2440_start.sh

自己寫一個(gè)start.sh

qemu-ifdown

#!/bin/sh echo "Close tap!" sudo ifconfig $1 192.168.31.196  down

qemu-ifup

#!/bin/sh echo "Excuting qemu-ifup" ifconfig $1 192.168.31.196

5. nfs文件系統(tǒng)

接下來開始搭建nfs方案了

sudo apt-get install nfs-kernel-server 

之后修改/etc/exports

/home/bigmagic/work/zfjqemu/rootfs *(rw,sync,no_root_squash)

重啟nfs

sudo /etc/init.d/nfs-kernel-server restart

6. 啟動(dòng)

編寫好啟動(dòng)腳本后,直接運(yùn)行

sudo sh start.sh 

接著,輸入nfs的啟動(dòng)參數(shù)

set bootargs noinitrd root=/dev/nfs rw nfsroot=192.168.31.196:/home/bigmagic/work/fs_qtopia/,proto=tcp,nfsvers=3,nolock ip=192.168.31.195:192.168.31.196::255.255.255.0 console=ttySAC0,115200 

然后保存參數(shù)

saveenv 

然后輸入nboot

nboot kernel

那么這個(gè)nboot命令是什么?

nboot是uboot指令--將nand flash中的內(nèi)容加載到sdram中,比如"nboot 0x30000000 0 0x60000\;bootm

0x30000000是拷到的sdram的地址,0是nand flash設(shè)備號(hào),0x60000是內(nèi)核在nand flash的地址。再通過bootm從0x30000000啟動(dòng)內(nèi)核。

由于uImage的前64個(gè)字節(jié)是zImage的描述信息,所以do_nandboot能知道需要加載的kernel的size。

輸入bootm開始啟動(dòng)內(nèi)核!

打印下面的語句則成功

注意,這里的有一個(gè)地方就是文件系統(tǒng)

在fs_qtopia/etc/init.d/rcS

#!/bin/sh ifconfig eth0 192.168.31.195

mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s if [ ! -e /etc/pointercal ] then /bin/ts_cal.sh fi /bin/qpe.sh &

這里的ifconfig eth0 192.168.31.195需要改成開發(fā)板的ip地址

還需要修改一下串口

mknod -m 660 console c 5 1 mknod -m 660 null c 1 3 

7.測試

剛進(jìn)來就要校驗(yàn)觸摸屏

啟動(dòng)完成后,輸入

qpe.sh -&

8. 總結(jié)

這個(gè)qemu真的好用!

以后表示調(diào)試Linux都方便多了!再也不用下載程序到開發(fā)板這么麻煩了!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉