创立mini2440的模仿仿真遭受,刚接触开辟板的备选
分类:pc28.am神测网

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段相连。
图片 1
 JTAG最先是用来对微芯片实行测量试验的,JTAG测验允许四个零件通过JTAG接口串联在一起,变成二个JTAG链,能促成对各类零器件分别测验。这段日子,JTAG接口还常用于落到实处ISP(In-System Programmer,在系统一编写程卡塔尔,对FLASH等零件实行编制程序。在2440中,当供给对NO奥德赛Flash举办烧写时,就须要选取JTAG接口进行烧录软件,而当软件是要烧录到NAND Flash时,使用串口与USB接口就足以操作。这里介绍NOENVISION 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首要有二种NO昂Cora Flash和NADN Flash。NOCR-VFlash的读取和SDRAM的读取是千篇大器晚成律,顾客能够直接运营装载在NORAV4FLASH里面包车型地铁代码,那样能够减掉SRAM的体量进而省去了血本。NAND Flash未有运用内部存款和储蓄器的轻松读取手艺,它的读取是以贰遍读取一块的形式来进展的,平常是贰次读取511个字节,接收这种才具的Flash相比较廉价。客商不可能直接运营NAND Flash上的代码,因而不菲NAND Flash的开垦板除了选用NAND Flah以外,还应该有一块小的NO奥迪Q7 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代码就不得不上电就能够自行运营,常常将这几个代码烧录在NOTucsonFlash中,因为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 开首菜单->全部程序->SEGGESportage”里面。
3、选取菜单“File -> Open -> Open Project…”,展开光盘里的 s3c2440.jflash。
图片 2
4、选择菜单“Target -> Connect”
图片 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.

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
# 

图片 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

图片 5
1、PC机tftp端设置,将索要下载的基本与根文件系统放在服务器目录下。
图片 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、开垦板运营作效果能:
图片 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                     # 进入内核图形化配置界面

图片 8

此间写图片描述

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

图片 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 参数,查看其错误音信。

图片 10

此间写图片描述

谬误提示新闻已经写的很清楚了:Can't use 'defined(@array)' (Maybe you should just omit the defined()?) 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 = 二〇〇四0UL 不然会促成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 卡的 1057个块加载内核。

测验是或不是健康:

  1. 下载 linux kernel for mini2440

uboot 情状变量和根文件系统制作

qemu-system-arm --version

(下载步骤略去卡塔 尔(英语:State of Qatar)

生机勃勃 相关软件

 

步向源码目录

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(挂载)到其余叁个目录下,看好不佳打响。
假定 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),因而大家须要 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     # 进入图形配置菜单

图片 11

此间写图片描述

安排BUSYBOX的编写翻译器

Busybox Settings ---> Build Options ---> (arm-linux-) CrossCompiler prefix // 按下回车键就可以步向到编辑框

图片 12

那边写图片描述

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

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

图片 13

这里写图片描述

在安装 流年对比长(能够先用小编提供的安装文件放到buildroot-二零一一.05/dl目录下,那样省去下载时间卡塔 尔(英语:State of Qatar)

....................注意  /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后进行的代码)
  • bootdelay:保存UBOOT上电延时的秒数。
  • ethaddr :保存网卡MAC地址
  • gatewayip:保存网关地址
  • ipaddr :保存当前开采板的IP地址(UBOOT代码有效)。
  • netmask :保存子网掩码
  • serverip :保存服务器的地点

(若出现错误:浮点数例外运行不了qemu,请全屏最大化终端,再度试行,这是由于分辨率难点招致卡塔尔国

qemu-ifdown脚本

2.UBOOT 碰到变量操作命令

  • 打印境遇变量消息, 命令:printenv
    效能:将全体UBOOT的境况变量打字与印刷出来展现。

  • 封存遇到变量, 命令:saveenv
    功效:将意况变量保存到TF存款和储蓄卡也许EMMC钦命块地方。(设置时存放在DDOdyssey有些地方卡塔 尔(英语:State of Qatar)

  • 安装环境变量, 命令: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 

图片 14

加上大器晚成行

图片 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

图片 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

 

 好了 到此就能够愉悦的开张开荒了。

 

本文由pc28.am发布于pc28.am神测网,转载请注明出处:创立mini2440的模仿仿真遭受,刚接触开辟板的备选

上一篇:很有用的系统命令和一些技巧,Win8系统108个运行 下一篇:没有了
猜你喜欢
热门排行
精彩图文