透过qemu模拟mini2440费用条件,建立mini2440的依葫芦

1 编写翻译安装QEMU

  1. 首先下载qemu for mini2440

黄金时代. uboot 和 kernel 的编写翻译烧写

近期接受的条件为 Ubuntu 16.04 ,顾客名字为user,作者的习贯是在家目录下开创三个 workspace 目录, workspace 目录下各自有 exynos4412( 和蔼之臂 Cortex-A9 卡塔尔 、 i.MX283( 周立功 ARM9 卡塔尔、stm32( 秉火 Cortex-M 卡塔尔国 等目录,分别是对应的开销板类型。

意气风发、开垦板接口接线工具

 开拓板与PC机之间能够扩充连接的接口经常有四个:串口、JTAG、USB、网络接口。这段日子日在PC端是还没JTAG或许接口的,由此能够动用转接板转变为并口只怕USB口与PC段相连。
星彩网app下载 1
 JTAG最先是用来对微芯片进行测验的,JTAG测量检验允许三个零器件通过JTAG接口串联在一块,变成多少个JTAG链,能兑现对各样零器件分别测量检验。方今,JTAG接口还常用于贯彻ISP(In-System Programmer,在系统一编写程),对FLASH等构件实行编制程序。在2440中,当要求对NO陆风X8Flash实行烧写时,就要求选取JTAG接口进行烧录软件,而当软件是要烧录到NAND Flash时,使用串口与USB接口就足以操作。这里介绍NO宝马X5 Flash、NAND Flah与SDRAAM的区分。
 ROM和RAM指的都以本征半导体存款和储蓄器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统截止供电的时候还可以够保持数据,而RAM平常都是在掉电之后就放任数据,标准的RAM正是计算机的内部存款和储蓄器。

芯片 特点
静态RAM(Static RAM/SRAM),是目前读写最快的存储设备,但是它也非常昂贵;
RAM 动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,但从价格上来说DRAM相比SRAM要便宜很多;
DDR RAM(Date-Rate RAM)也称作DDR SDRAM(Synchronous Dynamic RAM),可以在一个时钟读写两次数据,这样就使得数据传输速度加倍。

 方今Flash主要有二种NORAV4 Flash和NADN Flash。NO奥迪Q5Flash的读取和SDRAM的读取是豆蔻梢头律,客户能够平素运转李装运载在NOOdysseyFLASH里面包车型客车代码,那样能够减掉SRAM的体积进而省去了基金。NAND Flash未有接纳内部存款和储蓄器的人身自由读取技艺,它的读取是以一次读取一块的格局来进展的,平常是一遍读取511个字节,接受这种技巧的Flash比较廉价。客户不能够一贯运转NAND Flash上的代码,由此不菲NAND Flash的开辟板除了使用NAND Flah以外,还应该有一块小的NOHaval Flash来运维运行代码。
 在2440开垦板中,平日将uboot烧写在nor flash上作为指引程序,而linux kernel与根文件系统烧录在nand flash上,而那几个代码会加载到SDRAM中运转。

先是下载qemu for mini2440,直接打包下载 

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

1.1 安装交叉编写翻译器 arm-linux-gcc

获取 arm-linux-gcc 软件包

软件包在温和之臂光盘A盘中,具体地点为:
A盘-2013-09/Linux/arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz
还是点击这里下载。

解压到钦命目录

$ tar -zxvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C ~/software/

布置相关口边遇到变量,将时断时续编写翻译器的 bin 目录追加到 PATH 境况变量以往。张开家目录下的 ~/.bashrc 文件,在其后扩充少年老成行

export PATH=~/software/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH

接下来实施更正过的文本,是安顿生效。

$ . .bashrc             # 执行 .bashrc 文件
$ arm-linux-gcc -v      # 输出版本信息,安装配置成功  

二、在TQ2440中开垦板程序的烧录

 贰个linux文件系统的结合可分为硬件、bootloader、内核、根文件系统八个档案的次序。首先要想硬件能够干活办事,必要有bootloader辅导程序,它设置硬件相关参数以至软件变量,如设置中断变量、关闭看门狗、初阶化串口、石英钟等硬件参数,设置仓库等。要水到渠成这么些操作,那么UBOOT代码就必得上电就会自行运维,平日将那一个代码烧录在NO本田CR-VFlash中,因为NAND Flash不可能运维代码,而linux kernel、 root filesystem则烧录到nand flash中等待bootloader引导造成加载到SDRAM中运维。
1. 使用J-link烧写u-boot到Nor Flash
 编写翻译uboot具体操作步骤为:
1、解压u-boot1.1.6,步入解压后的目录
2、打补丁
3、使用arm-linux-gcc3.4.5编写翻译器编写翻译

book/home/test/1_bare_metal/1_test$ tar xjf u-boot-1.1.6.tar.bz2 
book/home/test/1_bare_metal/1_test$ cd u-boot-1.1.6/
book/home/test/1_bare_metal/1_test/u-boot-1.1.6$ patch -p1 < ../u-boot-1.1.6_jz2440.patch
book/home/test/1_bare_metal/1_test/u-boot-1.1.6$ arm-linux-gcc -v
Reading specs from /work/tools/gcc-3.4.5-glibc-2.3.6/lib/gcc/arm-linux/3.4.5/specs
Configured with: /work/tools/create_crosstools/crosstool-0.43/build/arm-linux/gcc-3.4.5-glibc-2.3.6/gcc-3.4.5/configure --target=arm-linux --host=i686-host_pc-linux-gnu --prefix=/work/tools/gcc-3.4.5-glibc-2.3.6 --with-float=soft --with-headers=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/include --with-local-prefix=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c   --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 3.4.5
book/home/test/1_bare_metal/1_test/u-boot-1.1.6$ make 100ask24x0_config
book/home/test/1_bare_metal/1_test/u-boot-1.1.6$ make 

烧写uboot:
1、JLink 的 USB 口接到计算机上,JTAG 口用排线和开垦板的 JTAG 口相连, 开辟板设为 Nor Flash 运营并上电。
2、运营 J-Flash, 它在“Windows 开首菜单->全数程序->SEGGE奥迪Q5”里面。
3、接纳菜单“File -> Open -> Open Project…”,展开光盘里的 s3c2440.jflash。
星彩网app下载 2
4、选拔菜单“Target -> Connect”
星彩网app下载 3
5、选用菜单“File -> Open”,展开要烧写的二进制文件,举个例子u-boot.bin,况兼在“Start address”里输入 0。
6、接收菜单“Target -> Auto”即可自动烧写。
7、重启开拓板,运行uboot。

##### 100ask Bootloader for OpenJTAG #####
[n] Download u-boot to Nand Flash
[o] Download u-boot to Nor Flash
[c] Re-scan Nor Flash
[u] Copy bootloader from nand to nor
[v] Copy bootloader from nor to nand
[k] Download Linux kernel uImage
[j] Download root_jffs2 image
[y] Download root_yaffs image
[d] Download to SDRAM & Run
[z] Download zImage into RAM
[g] Boot linux from RAM
[f] Format the Nand Flash
[s] Set the boot parameters
[b] Boot the system
[r] Reboot u-boot
[q] Quit from menu
Enter your selection:

2. 采取DNW和串口工具CRT烧写Linux内核和根文件系统
编写翻译Linux内核的步骤为:
1、解压linux2.6.22,踏入解压后的目录
2、打补丁
3、使用arm-linux-gcc3.4.5编写翻译器编写翻译

book/home/test/1_bare_metal/1_test$ tar xjf linux-2.6.22.6.tar.bz2 
book/home/test/1_bare_metal/1_test$ cd linux-2.6.22.6/
book/home/test/1_bare_metal/1_test/linux-2.6.22.6$ patch -p1 < ../linux-2.6.22.6_jz2440.patch

4、这里本人是用的是TQ2440开拓板,由此韦先生的linux内核源码不可能向来运用在TQ2440开拓板上,需求对LCD和DM9000八个驱动程序进行改换。
将TQ2440源码drivers_and_test17th_dm9000c厘恰好的dm9dev9000c.c复制到linux-2.6.22.6/drivers/net目录下;
修改其Makefile:obj-$(CONFIG_DM9000) = dm9dev9000c.o #dm9000.o
将TQ2440源码drivers_and_test10th_lcd4thlcd.c复制到linux-2.6.22.6/drivers/video目录下,并校勘其Makefile:obj-$(CONFIG_FB_S3C2410) = lcd.o #s3c2410fb.o
5、修改config_ok为.config
book/home/test/1_bare_metal/1_test/linux-2.6.22.6$ cp config_ok .config
6、编写翻译make uImage,那一件事大概出现错误:

book/home/test/1_bare_metal/1_test/linux-2.6.22.6$ make uImage
Makefile:1449: *** mixed implicit and normal rules: deprecated syntax
/home/test/1_bare_metal/1_test/linux-2.6.22.6/Makefile:416: *** mixed implicit and normal rules: deprecated syntax
/home/test/1_bare_metal/1_test/linux-2.6.22.6/Makefile:1449: *** mixed implicit and normal rules: deprecated syntax
make[1]: *** No rule to make target 'silentoldconfig'。 停止。
  CHK     include/linux/version.h
make: *** No rule to make target 'include/config/auto.conf', needed by 'include/asm-arm/.arch'。 停止。

基于提醒校勘这两行Makefile:
在makefile中将416行代码:config %config: scripts_basic outputmakefile FORCE
改为:%config: scripts_basic outputmakefile FORCE
在makefile中将1449行代码:/ %/: prepare scripts FORCE
改为:%/: prepare scripts FORCE
再度编写翻译,编写翻译成功。

    ...
UIMAGE  arch/arm/boot/uImage
Image Name:   Linux-2.6.22.6
Created:      Fri Dec 29 20:05:44 2017
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    1845828 Bytes = 1802.57 kB = 1.76 MB
Load Address: 0x30008000
Entry Point:  0x30008000
  Image arch/arm/boot/uImage is ready
book/home/test/1_bare_metal/1_test/linux-2.6.22.6$ 

7、在串口分界面输入k命令下载uImage,使用dnw下载数据。

##### 100ask Bootloader for OpenJTAG #####
[n] Download u-boot to Nand Flash
[o] Download u-boot to Nor Flash
[c] Re-scan Nor Flash
[u] Copy bootloader from nand to nor
[v] Copy bootloader from nor to nand
[k] Download Linux kernel uImage
[j] Download root_jffs2 image
[y] Download root_yaffs image
[d] Download to SDRAM & Run
[z] Download zImage into RAM
[g] Boot linux from RAM
[f] Format the Nand Flash
[s] Set the boot parameters
[b] Boot the system
[r] Reboot u-boot
[q] Quit from menu
Enter your selection: k
USB host is connected. Waiting a download.

星彩网app下载,8、在串口分界面输入y命令下载根文件系统,使用dnw下载数据。

##### 100ask Bootloader for OpenJTAG #####
[n] Download u-boot to Nand Flash
[o] Download u-boot to Nor Flash
[c] Re-scan Nor Flash
[u] Copy bootloader from nand to nor
[v] Copy bootloader from nor to nand
[k] Download Linux kernel uImage
[j] Download root_jffs2 image
[y] Download root_yaffs image
[d] Download to SDRAM & Run
[z] Download zImage into RAM
[g] Boot linux from RAM
[f] Format the Nand Flash
[s] Set the boot parameters
[b] Boot the system
[r] Reboot u-boot
[q] Quit from menu
Enter your selection: y
USB host is connected. Waiting a download.

Now, Downloading [ADDRESS:30000000h,TOTAL:49769290]
RECEIVED FILE SIZE:49769290 (725KB/S, 67S)

NAND erase: device 0 offset 0x260000, size 0xfda0000
Erasing at 0xffa0000 --   3% complete.
OK

NAND write: device 0 offset 0x260000, size 0x2f76b40

Writing data at 0x3033800 --  13% complete.
 49769280 bytes written: OK

9、运营开垦板,查看效果。

Warning: firstuse finished 1
tsdev (compaq touchscreen emulation) is scheduled for removal.
See Documentation/feature-removal-schedule.txt for details.
Warning: TimeZone::data Can't create a valid data object for 'Europe/Oslo'
Warning: Unable to open /root/Settings/Categories.xml
Warning: could not register server

starting pid 772, tty '/dev/s3c2410_serial0': '/bin/sh'
# 
# ls
bin         lib         mnt         root        tmp
dev         linuxrc     opt         sbin        usr
etc         lost found  proc        sys
# 

星彩网app下载 4
3. 行使tftp网络烧写Linux内核和根文件系统
 当开采板中设置好uboot后,还足以行使互联网tftf下载linux内核与根文件系统,这时候当tftp服务器为win7时,要作保开拓板与PC机之间能够ping通。这里作者动用开辟板与PC机直接接受网线相连,PC机有线IP为192.168.2.20;开采板IP为192.168.2.10。

OpenJTAG> set ipaddr 192.168.2.10
OpenJTAG> set serverip 192.168.2.20
OpenJTAG> save
Saving Environment to NAND...
Erasing Nand...Writing to Nand... done
OpenJTAG> printenv
bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200
bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0
bootdelay=2
baudrate=115200
ethaddr=08:00:3e:26:0a:5b
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
mtdids=nand0=nandflash0
mtdparts=mtdparts=nandflash0:256k@0(bootloader),128k(params),2m(kernel),-(root)
partition=nand0,0
mtddevnum=0
mtddevname=bootloader
ipaddr=192.168.2.10
serverip=192.168.2.20

Environment size: 450/131068 bytes

星彩网app下载 5
1、PC机tftp端设置,将索要下载的水源与根文件系统放在服务器目录下。
星彩网app下载 6
2、开采板步入uboot命令行分界面下载kernel:
tftp 30000000 uImage
mtdpart 查看分区消息
nand erase kernel
nand write.jffs2 30000000 kernel
3、下载根文件系统
tftp 30000000 fs_qtopia.yaffs2
nand erase root
nand write.yaffs 30000000 260000(root分区地方卡塔尔国 2fb6b40(大小卡塔尔(قطر‎
4、开拓板运营成效:
星彩网app下载 7
4. 选用NFS服务器挂载内核和根文件系统
 使用NFS下载方法与tftp下载情势,大约相似,那个时候要保障开拓板能够和编造机ubuntu能ping通。同有时间要安装虚构机已经拉开了nfs服务,并设置了挂载点:

book~$  cat /etc/exports 
# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
/work/nfs_root  *(rw,sync,no_root_squash)      #挂载目录

1、下载内核
nfs 30000000 192.168.1.123:/work/nfs_root/uImage
nand erase kernel
nand write.jffs2 30000000 kernel
2、下载根文件系统
nfs 30000000 192.168.1.123:/work/nfs_root/fs_qtopia.yaffs2
nand erase root
nand write.yaffs 30000000 26000 2f76b40

 

若果感到速度慢,直接打包下载

1.2 安装串口终端 kermit

$ sudo apt-get install ckermit

编写配置文件

在顾客家目录下创办三个 kermit 的构造文件:~/.kermrc,其剧情为:

set line /dev/ttyS0      # 如果是 USB 转串口连接的开发板,修改为 ttyUSB0
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec  pack 1000
set send pack 1000
set window 5

直白进去终极

$ sudo kermit -c

此地 -c 表示 connect ,不加 -c 选项则跻身命令方式,命令形式输入 c 也得以进来终极。
极点方式下,先同临时间按住 Ctrl ,再按 c 能够回到命令格局。

解压后,步入源代码目录中:

1.2 烧写 uboot

获取 uboot 源码包

源码包在温和之臂光盘A盘中,具体地点为:
A盘-2013-09/uboot/uboot_tiny4412-20130729.tgz
要么点击这里下载。

解压 uboot 到钦点目录

步入到 uboot 源码所在目录,实行解压命令。

$ tar -zxvf uboot_tiny4412-20130729.tgz -C ~/workspace/exynos4412/source/

此间透过 -C 参数钦赐解压到 ~/workspace/exynos4412/source/ 目录下,解压后 ~/workspace/exynos4412/source/ 目录下现身 uboot_tiny4412 目录

sudo apt-get install zlib1g-dev
sudo apt-get install libsdl-dev

解压后,几日前源代码的主目录中,

1.3 配置 uboot

$ make clean                 # 清除编译生成的文件
$ make distclean             # 清除配置
$ make tiny4412_config       # 配置 uboot

(prefix指虞升卿装路线,这里是$HOME/work/mini2440卡塔尔国

  1. # ./configure --target-list=arm-softmmu # make -j4  

    # ./configure --target-list=arm-softmmu # make -j4

  2. 下载u-boot for mini2440

1.4 编译 uboot

$ make -j16                  # -j16 参数表示16线程编译, 可以加快编译速度
./configure --target-list=arm-softmmu --prefix=$HOME/work/mini2440
make -j4
make install 

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

1.5 烧写 uboot 到 SD 卡

和蔼之臂给大家提供了烧写 uboot 的台本程序:uboot_tiny4412/sd_fuse/tiny4412/sd_fusing.sh
实施该脚本可以将 uboot 烧写进 SD 卡中

$ sudo ./sd_fusing.sh /dev/sdb

 安装完后,增加景况变量:

大概打包下载

1.3 烧写 kernel

sudo vim /etc/bash.bashrc

1.拿到基本源码包

源码包在温和之臂光盘A盘中,具体地点为:
A盘-2013-09/Linux/linux-3.5-20150929.tgz

 增多生机勃勃行:

(注意 接收打包下载的时候那多少个包的公文名只怕雷同,注意区分)解压后,配置Makefile文件,打开Makefile文件,CROSS_COMPILE变量赋值,即自个儿所选拔的穿插编写翻译工具链,比方自身的是arm-none-linux-gnueabi-,保存退出,输入

2.解压内核到钦点目录下

跻身到底蕴源码所在目录,试行解压命令。

$ tar -zxvf linux-3.5-20150929.tgz -C ~/workspace/exynos4412/source/

此间透过 -C 参数内定解压到 ~/workspace/exynos4412/source/ 目录下,解压后 ~/workspace/exynos4412/source/ 目录下冒出 linux-3.5 目录

export PATH=$PATH:$HOME/work/mini2440/bin 
  1. # make mini2440_config # make -j4  

    # make mini2440_config # make -j4

3.配置 Linux 内核

进去到刚刚解压出来的 linux-3.5 目录下,依次实施下列步骤:

$ make clean                          # 清除编译生成的文件
$ make distclean                      # 清除配置
$ cp tiny4412_linux_defconfig .config # 拷贝官方的配置文件配置Linux内核
$ make menuconfig                     # 进入内核图形化配置界面

星彩网app下载 8

此地写图片描述

运动光标到 System Type ---> [*] Support TrustZone-enabled Trusted Execution Environment 这里

星彩网app下载 9

那边写图片描述

经过空格键,撤销其当选状态,不选中它,最终保存退出。

保存退出后,用source 生效或许吊销重复登入

稍等两分钟,即在当前目录下生成名称为 u-boot.bin 的文本,注意假诺想在现在接受u-boot 的nfs下载文件作用,要求纠正代码中的一片段,将net/nfs.c文件中的

4.编写翻译内核

$ make -j16

编写翻译成功后会生成 linux 内核印象文件,影象文件坐落于: linux-3.5/arch/arm/boot/zImage

万一未有生成 zImage 文件,接着 make 一次,不要加 -j16 参数,查看其错误消息。

星彩网app下载 10

此间写图片描述

谬误提醒消息已经写的很精晓了:Can't use 'defined(@array卡塔尔(قطر‎' (Maybe you should just omit the defined(卡塔尔(قطر‎?卡塔尔(英语:State of Qatar) at kernel/timeconst.pl line 373. 提醒大家说这里应我省略 defined(卡塔尔国 。

打开 linux-3.5/kernel/timeconst.pl 文件。

/* 372 */   @val = @{$canned_values{$hz}};
/* 373 */   if (!defined(@val)) {
/* 374 */       @val = compute_values($hz);
/* 375 */   }
/* 376 */   output($hz, @val);

我们相应改过第373行,将改为 if (!defined(@val)) 改为 if(!@val) 就足以了。

source /etc/bash.bashrc

NFS_TIMEOUT = 2UL 修改为 NFS_TIMEOUT = 20030UL 不然会促成nfs文件下载退步,假如不采用nfs下载功用,不改也可。

5.烧写内核到 SD 卡

进去到 zImage 所在目录,实践烧写命令。

$ sudo dd iflag=dsync oflag=dsync if=zImage of=/dev/sdb seek=1057

dd命令:向存款和储蓄器设备写入数据。

  • 参数:
    dd iflag=dsync oflag=dsync if=<就要烧写的文本> of=<烧写的靶子设备> seek=<跳过块数量>
  • 块的单位:512字节
  • dsync:表示带缓冲

此处跳过 1057 个块是因为友善之臂的 uboot 私下认可从 SD 卡的 1059个块加载内核。

测量试验是或不是健康:

  1. 下载 linux kernel for mini2440

uboot 境况变量和根文件系统制作

qemu-system-arm --version

(下载步骤略去)

黄金时代 相关软件

 

踏向源码目录

1.nfs-kernel-server 服务器

2 使用buildroot豆蔻梢头键生成uboot和linux内核及根文件系统

  1. # make mini2440_defconfig ARCH=arm #make -j4 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage  

    # make mini2440_defconfig ARCH=arm #make -j4 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

NFS 介绍

NFS 即网络文件系统(Network File-System卡塔尔(قطر‎,能够经过互连网让差异机器、差别种类里面能够达成文件分享。通过 NFS,能够访问远程分享目录,就好像访谈本地球磁性盘雷同。
在 ubuntu 主机上设置 nfs 服务器,开辟板便足以通过网络访谈 ubuntu 主机上的共享的文书。

先是下载buildroot的源代码,下载地址: 

然后会在arch/arm/boot/目录下生成uImage 文件,将此文件复制到qemu目录下的mini2440文本夹下,并将mini2440文本夹中的mini2440_start.sh作如下改善

安装 NFS 服务器

$ sudo apt-get install nfs-kernel-server       # 安装 NFS 服务器端
$ sudo apt-get install nfs-common              # 安装 NFS 客户端

 

将 kernel 风流倜傥行改为-kernel "$base/uImage" ,回到上层目录后运行

设置分享目录

设置完 NFS 服务器等连锁软件后,需求钦命用于分享的 NFS 目录,其艺术是在 /etc/exports 文件之中安装相应的目录及相应的寻访权限,每风流洒脱行对应二个安装。上面介绍怎么样增添NFS 分享目录。

$ sudo vi /etc/exports

/etc/exports 文件展开后,文件内容为

# /etc/exports: the access control list for filesystems which may be exported
#       to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/home/user/workspace/exynos4412/rootfs *(rw,sync,no_root_squash)

在终极生龙活虎行追加:

/home/user/workspace/exynos4412/rootfs *(rw,sync,no_root_squash)                              # 其中“*”表示允许任何网段 IP 的系统访问该 NFS 目录

解压后,步入源代码目录中:

  1. # sh mini2440/mini2440_start.sh  

    # sh mini2440/mini2440_start.sh

创办并安顿分享文件夹

校正实现后,保存并脱离 /etc/exports 文件。然后新建 /home/user/workspace/exynos4412/rootfs 目录,并为该目录
设置最宽松的权能:

$ sudo mkdir -p /home/user/workspace/exynos4412/rootfs
$ sudo chmod -R 777 /home/user/workspace/exynos4412/rootfs
$ sudo chown –R nobody /home/user/workspace/exynos4412/rootfs
sudo apt-get install libncurses5-dev
patch configure <../configure.patch    /* 需要修改源码 打补丁 */
make mini2440_defconfig
make menuconfig

那儿应该看见qemu运行后跻身了u-boot分界面下,输入指令

启动 NFS 服务

在终点中执行如下命令,能够运营 NFS 服务:

$ sudo /etc/init.d/nfs-kernel-server start

进行如下命令则足以重新开动 NFS 服务:

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

安装库:

  1. # bootm  

    # bootm

测试 NFS 服务器

NFS 服务运维后,能够在 ubuntu 主机上开展自测。测量试验的骨干方式为:将早就设定好NFS 分享目录 mount(挂载卡塔尔(英语:State of Qatar)到此外二个目录下,看好糟糕打响。
比如 Linux 主机 IP 为 192.168.12.123,NFS 共享目录为 /home/user/workspace/exynos4412/rootfs 可使用如下命令进行测量检验:

$ sudo mount -t nfs 192.168.12.123:/home/user/workspace/exynos4412/rootfs /mnt -o nolock

只要指令运维未有出错,则 NFS 挂载成功,在 /mnt 目录下相应能够看来 /home/user/workspace/exynos4412/rootfs 目录下的内容。

sudo apt-get install g  
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install gettext
sudo apt-get install patch
sudo apt-get install git-core
sudo apt-get install xz-utils
sudo apt-get install automake

就探问到linux内核运营的镜头,但此时还没根文件系统,大家稍候介绍选用nfs挂在根文件系统

2.busybox 工具

安装texinfo 4.13

4. 假若你用的操作系统为Ubuntu,首先安装 nfs服务器

busybox 介绍

BusyBox 是一个集成了一百三个最常用linux命令和工具的软件。BusyBox包涵了风流倜傥部分简易的工具,譬如ls、cat和echo等等,还含有了一些越来越大、更扑朔迷离的工具,例grep、find、mount以致telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士联邦军刀。一言以蔽之BusyBox就像是是个大工具箱,它集成压缩了 Linux 的重重工具和下令。
幸而因为我们的开拓板要索要有对应 ARM 结构的调节台,也要有调节台的一声令下(根文件系统必备文件夹:/bin , /etc, /lib/ , /dev卡塔尔(英语:State of Qatar),由此大家需求 busybox 制作开辟板的上命令的实施顺序。

tar -zxvf texinfo-4.13a.tar.gz
cd texinfo-4.13
./configure
make
sudo make install
  1. # sudo apt-get install nfs-kernel-server  

    # sudo apt-get install nfs-kernel-server

获取 busybox 源码包

能够一向去官方网址下载,也能够点击这里下载。

修正bug(注释下边文件中:_GL_WARN_ON_USE (gets,.......  那行代码):

从今未来改进/etc/exports文件,增加如下风流浪漫行

解压源码包到钦点文件夹

$ tar -jxvf busybox-1.23.2.tar.bz2 -C ~/workspace/exynos4412/source/
vim output/build/host-m4-1.4.16/lib/stdio.in.h
vim output/build/host-m4-1.4.16/lib/stdio.h

/home/username/nfs *(rw,sync,no_root_squash)

配置 busybox

步入到解压目录 ~/workspace/exynos4412/source/busybox-1.23.2

跻身图形配置菜单

$ make menuconfig     # 进入图形配置菜单

星彩网app下载 11

那边写图片描述

配置BUSYBOX的编写翻译器

Busybox Settings ---> Build Options ---> (arm-linux-卡塔尔国 CrossCompiler prefix // 按下回车键就能够步入到编辑框

星彩网app下载 12

此处写图片描述

布置busybox编写翻译安装的目录

Busybox Settings ---> Installation Options ("make install" behavior) ---> (/home/user/workspace/exynos4412/rootfs) BusyBox installation prefix

星彩网app下载 13

此间写图片描述

在安装 时刻比较长(能够先用作者提供的安装文件放到buildroot-二零一一.05/dl目录下,那样省去下载时间)

....................注意  /home/username/nfs 为您所要分享的目录

编写翻译安装 busybox

重回busybox顶层目录下

$ make                                         # 编译
$ make install                                 # 安装

安装成功后在 /home/user/workspace/exynos4412/rootfs 目录下会生成/bin/ 、/sbin目录等公事夹。

链接: 密码:2dkz

输入指令

二 制作根文件系统

瞩目:/home/user/workspace/exynos4412/rootfs 目录之后便是开采板的根目录。
在意:以下的有起先续除非分外表明,都以在rootfs目录下操作。

3 Flashimg制作nand.bin并运转系统

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

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

1. 全面Linux系统根目录下的目录

#mkdir -p lib dev etc/init.d home proc sys root opt tmp var

下载flashimg源码 

启动 nfs服务

2. 拷贝共享库到rootfs/lib目录下

表明:库在时有时无编写翻译器的安装目录下。

$ cp ~/software/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/* ./lib/ -rfdv

 

测量试验 nfs服务是还是不是成功运转

3. 拷贝分组和密码文件到rootfs/etc目录下

$ cp /etc/group etc/
$ cp /etc/passwd etc/

解压后,进入flashimg源码目录后

  1. # sudo mkdir /mnt/nfs # sudo mount -t nfs localhost:/home/username/nfs /mnt/nfs  

    # sudo mkdir /mnt/nfs # sudo mount -t nfs localhost:/home/username/nfs /mnt/nfs

4. 创建fstab文件

$ cp /etc/fstab etc/
./autogen.sh (要求autoconf版本大于2.67)
./configure 
make 
sudo make install 

翻看/mnt/nfs文件是或不是于/home/username/nfs 中雷同,若相像 ,OK

5. 创建inittab文件

$ cp  /work/busybox/busybox-1.23.2/examples/inittab etc/

修改inittab文件:

::sysinit:/etc/init.d/rcS                              # 定义系统上电执行的初始化文件。
console::respawn:-/bin/sh                              # 指定控制台的脚本解释器和进入控制台的模式
::ctrlaltdel:/sbin/reboot                              # 指定系统重启命令
::shutdown:/bin/umount -a -r                           # 指定系统关机前执行的命令

 然后把大家转移的多少个文件 : u-boot.bin, uImage和rootfs.jffs2 拷贝到 flashimg文件夹下运转 

  1. 将mini2440索引下的mini2440_start.sh修改为

  2. #!/bin/sh sudo ../arm-softmmu/qemu-system-arm    -M mini2440    -kernel mini2440/uImage -serial stdio    -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=./qemu-ifup,downscript=./qemu-ifdown    -show-cursor    -usb -usbdevice keyboard -usbdevice mouse  

    #!/bin/sh sudo ../arm-softmmu/qemu-system-arm   -M mini2440   -kernel mini2440/uImage -serial stdio   -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=./qemu-ifup,downscript=./qemu-ifdown   -show-cursor   -usb -usbdevice keyboard -usbdevice mouse

6. 创建etc/init.d/rcS文件

#vim etc/init.d/rcS

#!/bin/sh
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s                                                # 根据安装的驱动自动在dev目录下创建设备节点
/bin/hostname exynos

留意:rcS文件是八个本子文件,必需有可奉行权限。改革rcS文件的权能:

$ chmod 777 rcS
./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 

在创造八个本子,分别为qemu-ifup, qemu-ifdown

7.创建etc/profile文件

$ vim etc/profile

写入以下代码:

USER="id-un"
LOGNAME=$USER
PS1='[u@h w]# '                                     # 保存的是当前命令行终端提示符显示的格式
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH

就可以生成nand.bin。运维方法为:

qemu-ifup 脚本

三 设置 uboot 情状变量 运转水源

qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevice mouse 
  1. #!/bin/sh echo "Excuting qemu-ifup" ifconfig $1 10.0.0.1  

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

1.uboot 常用景况变量介绍

  • baudrate: 保存Porter率
  • bootargs: 保存基本的起步参数。
  • bootcmd: 保存UBOOT的开发银行命令(保存了UBOOT上电后自行试行的下令----正是3-2-1后进行的代码卡塔尔(英语:State of Qatar)
  • bootdelay:保存UBOOT上电延时的秒数。
  • ethaddr :保存网卡MAC地址
  • gatewayip:保存网关地址
  • ipaddr :保存当前开垦板的IP地址(UBOOT代码有效卡塔尔(英语:State of Qatar)。
  • netmask :保存子网掩码
  • serverip :保存服务器的地点

(若出现谬误:浮点数例外运营不了qemu,请全屏最大化终端,再度施行,那是出于分辨率难点产生)

qemu-ifdown脚本

2.UBOOT 碰到变量操作命令

  • 打字与印刷景况变量音信, 命令:printenv
    成效:将全方位UBOOT的遭遇变量打字与印刷出来显示。

  • 保留景况变量, 命令:saveenv
    效果与利益:将意况变量保存到SD闪存卡只怕EMMC钦点块地方。(设置时存放在DD索罗德某些地方)

  • 安装意况变量, 命令:setenv
    功能:用于安装碰到变量,也能够创设新的情况变量。命令格式为:

    TINY4412 # setenv <景况变量名称> <景况变量的值…即便有过多值使用空格隔开分离>

输入上边镇定自若加载内核和根文件系统:

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

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

  2. 当这么些都安排好后,大家就能够使用nfs根文件系统了

3.装置意况变量,使uboot准确辅导内核运行

为了指导内核运转需求安装 bootargs 情状变量。
在 uboot 下推行命令:

TINY4412 # setenv bootargs 'root=/dev/nfs nfsroot=192.168.1.110:/home/user/workspace/exynos4412/rootfs ip=192.168.1.111:192.168.1.110:192.168.1.255:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 lcd=s70'
  • root参数:决定了选拔什么办法读取文件系统。
  1. /dev/nfs :表示从网络NFS方式加载文件系统
  2. /dev/ mmcblk0p2 :表示从设备编号为0的道具的第四个的分区实行加载文件系统。
  • nfsroot参数:nfsroot参数唯有在运营格局设置NFS情势加载时才有意义。
    nfsroot语法格式:

      <服务器IP地址>:<服务器上的文件目录>  ip=<开发板IP地址>:<服务器IP地址>:<网关>:<子网掩码>::eth0:off
    
  • rootfstype参数:rootfstype参数唯有设置位地点加载文件系统才有功力。
    rootfstype用于安装加载文件系统的分区是什么文件系统格式。
    此处的格式只可以是Linux下的文件系统格式:比如:ext2、ext3、ext4

  • init参数:保存了操作系统上电后进行的率先个剧本代码。

  • console参数:调节台。决定了应用哪个串口充当当前Linux系统的调整台。

      console=ttySAC0,115200      # 表示使用串口0作为控制台,波特率是115200。
    
nboot kernel 
setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=ttySAC0,115200 
saveenv 
bootm 

这里大家的根文件系统为 /home/username/nfs

 运维后,输入私下认可密码root,就可以成功登入,那时候还还没安排网络。ifconfig开掘并未有网卡。

在qemu的目录中输入

 4 NFS挂在根文件系统

  1. # ./mini2440/mini2440_start.sh  

    # ./mini2440/mini2440_start.sh

 首先安装nfs服务

u-boot运维成功后输入设置linux kernel的指点参数

sudo apt-get install nfs-kernel-server 

set bootargs noinitrd root=/dev/nfs rw nfsroot=10.0.0.1:/home/lizhao/ARM-pro/nfs/rootfs ip=10.0.0.10:10.0.0.1::255.255.255.0 console=ttySAC0,115200

新建nfsroot文件夹

再输入指令

mkdir ~work/nfsroot 

bootm

接下来配置nfs目录 

OK ! kernel就从头加载了,文件系统挂在成功后,就足以扩充各样虚假专门的学问了,上边是自身挂载的由温和之臂提供的mini2440的qtopia文件系统的截图:

sudo vi /etc/exports 

星彩网app下载 14

累积朝气蓬勃行

星彩网app下载 15

/home/zwx/work/nfsroot *(rw,sync,no_root_squash,no_subtree_check

和蔼之臂提供的qtopia文件系统在挂载时会先河化网卡,但大家是由nfs挂载的文件系统,那会促成nfs连接中断,挂载退步,所以用nfs挂载此前要求把网卡的开头化进度撤消,对应的文件是/etc/init.d/if-config,只需把该文件内容清空就能够。Enjoy yourself!

然后施行:

一时,小编筹划让GPE情状在这里仿真意况中跑起来,近日还尚未成功,正在品尝中。

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

星彩网app下载 16

走入NFS分享目录:

cd /home/zwx/work/nfsroot/ 

 纠正权限

sudo chmod -R 777 ./ 

解压根文件系统

tar xvzf rootfs_qtopia_qt4-20140103.tar.gz

只顾:温和之臂提供的qtopia文件系统在挂载时会开始化网卡,但大家是由nfs挂载的文件系统,这会诱致nfs连接中断,挂载战败,所以用nfs挂载以前需求把网卡的开头化进程废除,对应的文本是/etc/init.d/if-config,只需把该公文内容剔除就能够(删除文件也得以)。

sudo chmod -R 777 ./ 
cd rootfs_qtopia_qt4
cd etc/init.d/
rm ifconfig-eth0

创建虚构网卡并计划ip

sudo apt-get install uml-utilities //运行tunctl必须的工具
sudo tunctl -u $USER -t tap0
sudo ifconfig tap0 192.168.42.1

带网络情势运行qemu

cd /home/zwx/work/qemu/flashimgflashimg-fb97139
qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevice mouse -kernel uImage -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=no,downscript=no

启航后跻身uboot形式,那时的qemu还不能够呈现,输入上边得意忘形加载内核和根文件系统。

set bootargs noinitrd root=/dev/nfs rw nfsroot=192.168.42.1:/home/zwx/work/nfsroot/rootfs_qtopia_qt4/,proto=tcp,nfsvers=3,nolock  ip=192.168.42.2:192.168.42.1::255.255.255.0 console=ttySAC0,115200
bootm

然后就足以运转了

 5 安装交叉编写翻译工具链:

arm-linux-gcc-4.4.3.tar.gz 

安装库:

sudo apt-get install lib32stdc  6
sudo apt-get install lib32z1

 

 好了 到此就能够欢畅的拓张开辟了。

 

本文由星彩网app下载发布于星彩网app下载,转载请注明出处:透过qemu模拟mini2440费用条件,建立mini2440的依葫芦

TAG标签: 星彩网app下载
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。