zoukankan      html  css  js  c++  java
  • 构建交叉开发环境

    一、目的

    1.1 充分了解开发板软硬件环境,为进一步的软件开发打下坚实的基础

    1.2 能够建立主机与目标机(板)之间的传递数据的基本方法

    1.3 能够烧写并运行启动代码(bootloader)

    1.4 能够下载安装Linux内核到开发板

    1.5 能够下载安装根文件夹系统到开发板

    1.6 学会使用交叉平台编译器编译自己的程序并能够下载到目标版运行

    二、内容

    2.1 针对所选择的目标平台,简要介绍其

    • 平台简介(主要功能)

    Raspberry Pi(中文名为“树莓派”,简写为RPi(或者RasPi / RPI)是为学 生计算机编程教育而设计,只有信用卡大小的卡片式电脑,其系统基于Linux。随着Windows 10 IoT的发布,我们也将可以用上运行Windows的树莓派。自问世以来,受众多计算机发烧友和创客的追捧,曾经一难求。别看其外表娇小,内却很强大,视频、音频等功能通通皆有,可谓是麻雀虽小,五脏俱全

    •  执行环境(硬件环境)

    Win7系统笔记本电脑,vmware中安装ubuntu,树莓派

    • 运行环境(软件环境)

    Ubuntu安装交叉编译链,ftp服务器,树莓派安装raspbian系统

    2.2 建立host-target连接

    2.3 烧写bootloader到目标系统(SD卡)

    2.4 下载安装Linux内核到开发板

    2.5 构建并测试开发板交叉编译器

    三、过程

    3.1 树莓派bootloader详解

        树莓派的系统启动流程不同于一般的arm cpu,一般的arm芯片都有一个内固的小程序在上电的时候加载bootloader,但是树莓派的BCM2836不同,BCM2836上电的时候首先初始化的是gpugpu设置好了系统的主频以及一些外设以后,再转到arm芯片模块的初始化.而树莓派所用的那个gpu是完全不开源的。即bcm2835内部固化了自己的bootloader来进行简单的初始化,相当于一个一级bootloader,而uboot是二级bootloader,直接由一级bootloader加载在内存中运行了,一级bootloader是在rom中,开发者无法修改。

        挂载SD卡后,调用我们放在sdboot分区里面的bootcode.bin到内存运行,再调用start.elf到内存,然后再启动GPU,GPU运行start.elf的程序,开始一系列的配置。再掉用kernel.imgLinux内核到内存。然后GPU再让这个arm11开始运行,也就是内核启动。

    3.2 实验过程

    Ubuntu安装git

     

    建立raspberrypi文件夹。下载交叉编译工具链。

     

    由于笔记本连无线网,两次尝试都在中间连接失败,导致无法下载完全,所以我直接从github下载好tools-master.zip,拷贝至Ubuntu解压安装(后来使用另一台式机使用git clone命令成功下载完tools)。

     

    修改配置文件,将编译器所在地址加入环境变量中。

     

    使用arm-linux-gnueabihf-gcc -v命令测试是否安装成功或配置成功。

     

    使用source .bashrc命令来让配置立即生效。

    由于树莓派本身固化了一级bootloader,我在网上未找到树莓派的单独的文件系统,加上烧写树莓牌bootloader资料偏少且本周部门去外地开年会个人时间较少,在这里直接将raspbian系统镜像烧至sd卡中。

     

    系统启动之后,通过ssh来连接树莓派,成功。

     

    编写一个简单的C程序,打印helloworld并测试浮点数功能。

     

    交叉编译helloworld.c并连接到树莓派。

     

    Ubuntu下安装ftp服务器,常用的是vsftpd。在这里搭建好ftp后,put命令拷贝到树莓派时出现一系列问题,导致没有成功。这里我也有个疑问,树莓派为什么不用安装ftpftp连接到树莓派再执行put,感觉方向是反的,网上搜索也并没得到相关答案,这一点我也将继续搞明白。所以,目前采用的方法是在win7下使用FileZilla这款ftp工具讲编译好的程序拷贝至树莓派中。

     

    执行helloworld提示没有权限,修改权限后执行成功,结果正常,表明交叉编译链正常。

     

  • 相关阅读:
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    72. Edit Distance
    583. Delete Operation for Two Strings
    582. Kill Process
    indexDB基本用法
    浏览器的渲染原理
    js实现txt/excel文件下载
    git 常用命令
    nginx进入 配置目录时
  • 原文地址:https://www.cnblogs.com/erbing/p/5518840.html
Copyright © 2011-2022 走看看