GCC交叉编译环境的创建

写这篇文章,主要是为了记录一下工作中用到的一些技术、协议等等,随时填充一些细节,方便后续需要,不用再到处找资料了。如有错误的地方,希望各位大佬予以指教!

一、交叉开发模式介绍

在主机中编写代码、编译得到一个可执行文件,传输到ARM环境运行调试,出现bug返回linux修改代码编译再传输,这种在主机下开发,在开发板上运行的模式叫做交叉开发。

二、配置编译环境

设置交叉工具链 ,把下载好的工具链解压

tar -vxf gcc-4.6.4.tar.xz -C ~/usr/crosstools

设置环境变量

vim ~/.bashrc
export PATH=$PATH:/home/root/usr/crosstools/gcc-4.6.4/bin

更新脚本

source ~/.bashrc

三、运行开发板

一般做驱动开发(需要先将linux系统在开发板运行起来) 启动流程: 上电→BootLoader→内核→rootfs ,rootfs包括bin(命令)、sbin、etc(系统配置)、 lib(动态库)等。

1.通过tftp启动内核

将uImage(内核镜像文件)和dtb(设备树)文件放入linux中的/tftpboot

tftpboot目录的作用:将从tftp服务下载到开发板的程序存到这个目录下,当使用tftp服务下载程序时,tftp就会从tftpboot目录下查找你要下载的文件名。

在开发板上设置uboot参数,加载内核

set bootcmd tftp 0x83000000 uImage \; tftp 0x84000000 exynos4412-fs4412.dtb \; bootm 0x83000000 - 0x84000000
save
//tftp命令 将内核uImage下载到0x83000000 “;”为连续执行 将设备树dtb下载到0x84000000,
bootm在这个0x83000000启动内核,0x84000000读取数据,“-”表示预留一个ramdisk  目前没用到

bootm命令格式

bootm [image_addr] [ramdisk_addr] [dtb_addr]

set ipaddr    //开发板设置ip 
set serverip    //linux ip
save

2.通过nfs挂载rootfs

需要rootfs系统目录-- rootfs.tar.xz,解压到/opt/rootfs

配置nfs服务器,目的是让/opt/rootfs可以被挂载

vim  /etc/exports
/opt/rootfs    *(subtree_check,rw,no_root_squash,async) 
sudo service nfs-kernel-server restart    //重启nfs服务器

测试是否配置成功

sudo mount -t nfs 192.168.xx.xx:/opt/rootfs /mnt

mount命令格式

mount [-参数] [设备名称] [挂载点]

[-参数] -t 指定设备的文件系统类型,例如nfs 网络文件系统、ext2 linux目前常用的文件系统

[挂载点]必须是一个已经存在的目录,挂载后这个目录下以前的内容将不可用,umount以后会恢复正常。

卸载挂载:

umount /mnt

在开发板中指定内核挂载/opt/rootfs--切换到开发板操作

set bootargs console=ttySAC1,115200 init=/linuxrc root=/dev/nfs rw nfsroot=192.168.10.21:/opt/rootfs ip=192.168.10.22
save

bootargs命令参数

bootargs是uboot传递给内核的启动参数

console=

控制台信息声明,console=ttySAC1,115200 表示控制台使用串口1,波特率115200。内核启动后会根据console=来初始化硬件,这里的传参会影响后续是否能从串口终端上接收到内核打印的信息

init=

告诉内核linux第一个用户进程是什么,一般init=/linuxrc,/linuxrc指的是/目录下面的linuxrc脚本,一般指向busybox。

root=

指定rootfs的位置,如果是基于nfs,则root=/dev/nfs。后面还需要指定nfsroot=serverip:nfs_dir,表示指明文件系统存在哪个主机的哪个目录下面。

ip=

设置系统启动之后内核的ip地址,开发基于nfs的文件系统,必须要有这个参数设置。属于静态分配ip。

至此整个编译环境以及开发板运行linux就搭建好了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值