linux安装交叉编译链并共享文件

linux安装交叉编译链并共享文件

安装依赖包

yum clean all
yum update
yum install kernel-devel
yum install kernel-headers
yum install gcc
yum install make
【依赖包安装成功以后重启系统:reboot】
安装增强功能
【先要添加VBoxLinuxAdditions.iso,在vbox安装路径中选取】
mkdir /mnt/cdrom【创建cdrom文件】
mount /dev/cdrom /mnt/cdrom
【mount -o remount,rw /dev/cdrom /mnt/cdrom】如果上步执行不下去,添加这一步。
cd /mnt/cdrom【可以省略】
./VBoxLinuxAdditions.run
【这个地方大概一分钟,完成后重启,命令reboot】

设置共享文件夹

1.选择设备—>共享文件夹
2.在window下新建一个共享文件夹(进行新建共享文件夹,路径自定,如图所示,本例程共享文件名:vboxshare)
3.mkdir /mnt/share //新建挂载点(mountpoint)
4.mount -t vboxsf vboxshare【看自己设置共享文件夹的名字】 /mnt/share
// 挂载共享文件夹
cd /mnt/share 进入共享文件夹查看【可以忽略】
5.实现开机挂载
vi ~/.bashrc
在最后添加
mount -t vboxsf vboxshare【看自己设置共享文件夹的名字】 /mnt/share
【实现挂载共享文件夹,开机以后不用再设置】
【:wq退出,source .bashrc(重启)】

安装交叉编译

1.将【arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz】复制到windows下的共享文件夹,本教程windows下 共享文件名为【vboxshare】。
2.在【/】目录下创建一个文件夹,用来保存复制的【arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz】压缩文件。(注解:因为解压这个文件会产生很多子文件,所以复制出去)本教程在【/】目录下创建的文件夹名为:data。
3.进入共享文件夹:cd /mnt/share
4.复制:cp arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz /data
5.解压:tar -xvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz
6. 在usr/local/目录下创建arm文件夹,并将解压缩的文件夹/opt/FriendlyARM/toolschain/4.5.1/拷贝到/usr/local/arm/目录:
(1)mkdir /usr/local/arm
(2)cp /data/opt/FriendlyARM/toolschain/4.5.1/ /usr/local/arm/ -rf
【/data/opt:看自己的解压路径,本例程将压缩包解压到了/data】
7、修改环境变量
vim /root/.bashrc (或.bash_profile)
添加:
PATH=/usr/local/arm/4.5.1/bin/:$PATH
export PATH
注销用户,重新登录用户后生效
【source /root/.bashrc (或.bash_profile)】
8.查看是否安装成功

  1. arm-linux-gcc -v

烧写dnw,用EMMC启动开发板

一、解压 Linux内核源代码
tar xvzf linux-3.5-20151029.tgz
cd linux-3.5
cp tiny4412_linux_defconfig .config
make menuconfig
(如果提示有错,需要安装上面提示错误的命令—yum install ???devel)
编译Tiny4412提供的内核的时候,需要先将内核的TrustZone关闭,否则无法正常启动内核。位置在System Type -->中的取消选择Support TrustZone-enabled Trusted Execution Environment编译Make(如果提示有错需要安装上面提示错误的命令—yum install perl)最后查看是否在 arch/arm/boot 目录下生成了 zImage二、编写uboot***MMC功能在裸机调试时,Uboot要去掉。但是在做Linux系统时MMU功能要打开!
***将MMC功能去掉,include/configs/tiny4412.h(该文件需要下面运行make tiny4412_config之后才能出现)中的#define CONFIG_ENABLE_MMU改为#undef。
**然后将board/samsung/tiny4412/config.mk中的CONFIG_SYS_TEXT_BASE=0xc3e00000改为0x43e00000。改完之后再进行编译。
(本次实验不用更改,但是在做用SD卡启动开发板需要修改参数)
要解压zip文件,需要unzip:yum install unzip
tar–xzf充当0130729.tgz
如果是zip文件则采用下列命令。或者可在windows对应的虚拟文件下,直接解压后,在linux中使用。
unzip uboot_tiny4412_new.zip
cd uboot_tiny4412-mester
make tiny4412_config
make
编译 用于生成bl2 的工具
cd sd_fuse;
make
假设SD卡已被PC Linux识别为/dev/sdc, 以root用户运行以下命令即可:
cd sd_fuse/tiny4412
./sd_fusing.sh /dev/sdb
参考:
http://www.cnblogs.com/pengdonglin137/articles/4161084.htmlhttp://www.cnblogs.com/pengdonglin137/articles/4161084.html
http://www.arm9home.net/read.php?tid-83474.html
如果是完整的Linux安装,则此段Uboot一定要用MMC功能打开的版本!!
(1)之前我们已经将uboot下载到SD卡,现在从SD卡启动uboot,可以看到如下信息:
在这里插入图片描述
(2)查看设备的分区表信息
fdisk -p 0
fdisk -p 1

设备mmc1的分区信息,即eMMC分析,注意这个是superboot分区信息,我们就用这个分区。
分区1是FAE分区,分区2是给system的,分区3是user-data,分区4是 cache.
(3)格式化eMMC
u-boot模式下输入如下指令来格式化eMMC设备。
#uboot:fdisk -c 1 320 2057 520
执行后会返回分区信息,继续格式话分区1,2,3,4
#uboot:fatformat mmc 1:1
这句话意思是对mmc 1设备的第一分区格式作fat格式化。
#uboot:ext3format mmc 1:2
#uboot:ext3format mmc 1:3
#uboot:ext3format mmc 1:4
上面三个指令是分别对eMMC的分区2,3,4作ext3格式化。
到此我们完成了对eMMC的设备的格式化。
(4)如果提示如下错误:
Error: No MBR is found at SD/MMC.
Hint: use fdisk command to make partitions.
则先执行指令"fdisk -c 0",执行过程如下:
#fdisk -c 0
fdisk is completed
对emmc初始化后,我们开始使用dnw来下载uboot到emmc中。现在我们就需要装一下linux的dnw工具,注意dnw是下载到内存,把固件数据缓存起来,然后烧录到eMMC中。

三、dnw下载到内存,烧录到eMMC
cd /data/dnw-linux/src/driver
(下面命令在这个路径输入dnw压缩包和老师不一样所以命令不同)
(1)make -C /lib/modules/uname -r/build M=pwd modules
编译成功后在当前目录下可以看到secbulk.ko
(2)编译完成后,会生成 secbulk.ko文件:
ls
Makefile Module.symvers secbulk.ko secbulk.mod.o
modules.order secbulk.c secbulk.mod.c secbulk.o
(3)加载模块到Linux内核:
insmod ./secbulk.ko
(注意如果在root登录权限下,sudo命令不需要,以下同)
在写Linux驱动是 insmod .ko时出现错误:insmod: error inserting ‘memdev.ko’: -1 File exists
原因可能是你以前同名的驱动没有卸载干净。
解决方法:
如果存在
,则rmmod ***,卸载干净。

(4)dmesg (查看是否加载成功) secbulk:secbulk loaded
usbcore:registered new interface driversecbulk
(看到这样两行就说明成功了)
开机的时候不会自动加载.ko文件,这样每次都要先加载才可以使用,此时将其加入开机脚本,
使其得到自动加载,编辑/etc/ /rc.local 在最后加上 insmod /所在路径/secbulk.ko。

(5)下面开始编译dnw工具
cd …/dnw
gcc -o dnw dnw.c
(编译完成,会看到dnw可执行文件)
6.将文件copy到/usr/local/bin目录
sudo cp dnw /usr/local/bin
这样就可以在shell下面直接使用dnw命令了
但是问题出现了,当我使用这个dnw下载bl2.bin的时候,会出现校验错误。但是下载其他文件均没有问题,于是网上各种寻找DNW工具,看安装,最后通过和另一个版本的DNW结合,解决了这个问题,uboot也完整的下载到了emmc中。下载链接:http://download.csdn.net/detail/fengyuwuzu0519/9886362。
(6)DNW下载好了,我们可以把uboot下载到emmc了。
【这个时候要把拨码开关从SD卡启动拨动到EMMC启动,并复位开发板,串口显示开机运行界面,提示3…2…1…时,按回车键输入下面内容,并按操作进行】

千万别忘了先打开保存!!!
#uboot:emmc open 1
提示:eMMC OPEN Success.!!
上面提示emmc开启成功,注意说明,emmc一旦打开,需要连续烧录,烧录完成后可以关闭emmc
#uboot:dnw 40000000
提示:OTG cable Connected!
Now, Waiting forDNW to transmit data(等待DNW下载)
打开虚拟机,进入uboot所在目录
cd /data/uboot_tiny4412-tinster输入:
dnw -a 40000000 sd_fuse/tiny4412/E4412_N.bl1.bin
此时u-boot中断会提示传送校验完成,此时已经把bl1.bin通过USB传送到了memeory的0x40000000起始地址,大小8KB.
接下来我们烧录bl1.bin到eMMC中,u-boot下继续输入:
#uboot:mmc write 1 0x40000000 0 0x10
会提示写入信息,说明已经写入成功。这个是把刚才从PC端通过dnw下载下来的bl1.bin固件下载到emmc中,起始0, 16个block, 一个block是512B, 16512=81024=8KB. 这个是bl1.bin的存放位置。
以此类推,烧录bl2.bin. u-boot.bin, tzsw.bin
#uboot:dnw 40000000
#虚拟机:dnw -a 40000000 sd_fuse/tiny4412/bl2.bin
#uboot:mmc write 1 0x40000000 0x10 0x1C
#uboot:dnw 40000000
#虚拟机:dnw -a 40000000 u-boot.bin
#uboot:mmc write 1 0x40000000 0x30 0x21D
#uboot:dnw 40000000
#虚拟机:dnw -a 40000000 sd_fuse/tiny4412/E4412_tzsw.bin
#uboot:mmc write 1 0x40000000 0x2c0 0xB8
启动分区到此全部写入完成,注意一定要关闭emmc
u-boot下继续输入:
#uboot:emmc close 1
提示:eMMC CLOSE Success.!!
现在uboot已经完整的烧入到emmc,我们可以将开关波动到NAND一侧,从emmc启动,发现uboot输出已经变成了:

如果这一步没有顺利启动,请重复再做一遍,直到能够顺利启动,再进行下一步。一般至少需要做2遍。成功后,从emmc启动uboot,继续下面的操作。

四、下载内核到emmc
参考:http://blog.csdn.net/lizuobin2/article/details/52825033
内核下载我们采用fastboot下载,uboot已经支持了fastboot。
安装windows下fastboot工具
如果你已经安装了Android Studio,那么你已经有fastboot工具,在目录
F:\AndroidSDK\platform-tools下有fastboot.exe AdbWinApi.dll
我也提供一下fastboot下载链接:http://download.csdn.net/detail/fengyuwuzu0519/9886552
下载我们进入uboot,执行fastboot,并将单板的usb接到PC。提示如下:
在这里插入图片描述

在window下(win+R,输入cmd)f:表示进入那个盘符,dir:表示查看盘符下的文件。cd +文件名 表示进入文件
windows下cmd进入fastboot.exe所在目录
fastboot flash kernel zImage(内核)
fastboot flash ramdisk ramdisk-u.img(Busybox文件系统)
fastboot flash fat rootfs_qtopia_qt4.img (根文件结构)
fastboot reboot
此时,我们已经将uboot、内核下载到单板中。
复位:输入下面命令
如果不想打开NFS功能那么用下面的两个环境变量即可:
我的 bootargs:
如果不想打开NFS功能那么用下面的两个环境变量即可:
我的 bootargs:
setenv bootargs “root=/dev/mmcblk0p1 rootfstype=ext4 console=ttySAC0,115200 init=/linuxrc ctp=2 skipcali=y loglevel=7”
我的 boorcmd:
setenv bootcmd “movi read kernel 0 40008000;movi read rootfs 0 41000000 100000;bootm 40008000 41000000”
保存参数
saveenv

ftp传输的搭建

3.0 硬件连接与设置
设备连接:
交叉网线
串口线
usb线
电源线
网络设置:
假设
笔记本电脑地址设为:
inet/IP:192.168.20.110
掩码/Mask;255.255.255.0
开发板默认:192.168.1.230
1).首先需要设置两者在同一个网段:
修改开发板:
/etc/eth0-setting

将其IP地址改成你想要设置的IP
IP: 192.168.20.230 (你板子的IP地址)
Mask;255.255.255.0
GateWay: 192.168.20.110 (你电脑的以太网IP)
DNS: 192.168.20.110 (你电脑的以太网IP)
MAC;不变 硬件地址
2).重启开发板,使用ifconfig命令,就发现IP地址已经修改过来了。
互相ping一下即可ping通.

3.1 ftp程序的安装
在PC主机端输入:
yum install -y ftp*
安装ftp功能。
3.2 使用 ftp 登录目标板,把编译好的程序上传;然后修改上传后目标板上的程序的可执行属性,并执行。
首先,在连接实验板的串口连接窗口中输入:ftp
进入ftp状态。
其次,在PC 端执行,如图所示:
在这里插入图片描述
然后, 在连接目标实验板的串口连接窗口中执行,如图所示:
在这里插入图片描述
注:图中的 chmod命令为:chmod +x hello(我们用chmod 777)
因此,在进行linux驱动程序开发过程中,当主机完成驱动程序模块ko文件的编译后,可以通过FTP的方式将文件下载到实验板中进行调试验证。
在这里插入图片描述

【补充知识】:

1、如果你的操作系统文件是复制别入的,然后导入自己的虚拟机,当提示网络配置不成功是,你不能用eth0的设备地址,你需要用eth1的设备的地址。做网络桥接。配置方法如下;
1、vi /etc/udev/rules.d/70-persistent-netrules
2、记住eth1的ATTR{address}的地址号;
3、vi /etc/sysconfig/network-scripts/ifcfg-eth0
4、将DEVICE=“eth0”改成DEVICE=“eth1”.
5、将HWADDR的地址修改为上面所记住的地址号【第2步】。
网络配置:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
键盘点击i或者inset:将onboot=yes
退出当前编辑:esc
在命令提示点输入 :wq
重启输入: service network restart

[CentOS]安装软件:/lib/ld-linux.so.2: bad ELF interpreter解决
环境:
bash: /usr/local/bin/rar: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
是因为64位系统中安装了32位程序
解决方法:
执行如下命令:
yum install libstdc++.so.6

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值