树莓派之uboot

来源:互联网 发布:linux 查看arp 编辑:程序博客网 时间:2024/06/05 18:53

树莓派之uboot

现在还完全不知道咋弄,只能先贴个大牛的博客,挖个坑留待后面填。

http://blog.csdn.net/u010398378/article/category/2598693

http://blog.csdn.net/xdw1985829/article/details/39077611

简要介绍:

目标平台采用树莓派2B,是树莓派基金会于2015年2月2号发布的产品。

树莓派2代的Model B采用Broadcom BCM2836 900MHz的四核SoC,1GB内存,是新一代开拓者,兼容1代B+。但相比之下,树莓派2的性能提升6倍,内存翻了一番。Raspberry Pi 2不仅能跑全系列ARM GNU/Linux发行版,而且支持Snappy Ubuntu Core及Windows 10。

其主要参数如下:

Broadcom BCM2836 900MHz 4核 ARM Cortex-A7 CPU 配备VideoCore IV 双核 GPU

GPU 支持 Open GL ES 2.0, OpenVG 硬件加速,1080p30 H.264 高清解码

GPU 带宽 1Gpixel/s, 1.5Gtexel/s or 24GFLOPs DMA 纹理解析

1GB 内存

带Micro SD 卡插槽(支持通过它启动 Linux 操作系统,如 Fedora)

10/100 自适应网卡

HDMI 接口

USB 2.0 接口 x 4

Micro SD 卡插槽

microUSB 接口供电

3.5 mm 音频输出接口

40PIN接口

摄像头接口

LCD接口

尺寸:85 x 56 x 17 mm

拿到板子后首先试一下怎么使用板子,因为是裸板所以使用的时候比较小心,手尽量接触板子边沿而不是板子,静电击穿就得不偿失了。

然后去官网下载操作系统,初次使用先试试推荐的raspbian,最好是用迅雷下载,最开始在ubuntu里用浏览器下载实在蜗牛速度。然后从官方下载烧镜像的软件,这个软件几个操作系统的版本都有,当前处于win10里图方便选择了exe。最后将下载好的镜像文件烧录到sd卡里就行了。

因为没有屏幕所以选择远程访问的形式在pc里显示烧进sd卡的操作系统,这里采用vnc server进行远程桌面访问,至此树莓派的上手阶段完成。

通过寻找发现有个小型服务器类的系统叫作snappy ubuntu core,Snappy Ubuntu是一个崭新的,具有事务性更新的为云及设备而建立的操作系统。简单说来,这就是一个专为物联网打造的一个操作系统,整个镜像只有200M左右。

既然要换系统,sd卡就需要被格式化,但是sd卡连到win10读取不到系统的存在,于是换到ubuntu系统(据说win系统上用烧录工具也是可以的,待验证)。在ubuntu里取消挂载,然后命令行格式化,覆盖重写。

然后参照官网手册进行操作系统的写入,官网写得很详细。再然后尝试ssh登陆,出问题了,之前ssh登陆过别的,按照错误提示删除文件know_hosts中的相应内容。再次登陆成功。这次这个系统是非图形化的了,所以vnc就没必要了。趁着这个系统试试交叉编译。安装直接按照ppt的来的,只是为了不加路径在PATH里增加交叉编译命令。然后用一个简单的hello world测试一下。只是自己一直习惯了使用cmake,对makefile不熟,所以试着以cmake的方式进行编译。顺利编译,将二进制文件scp到树莓派里,发现不能执行。查看文件,发现是64位的,而且是x86的。

再直接用编译器命令操作,发现就对了。检查发现是CMakeLists.txt里的编译器变量写成CXX(c++)了,修改后就能在树莓派里运行了。

内核编译(2016.04.01更新):

上个星期完成了树莓派的系统搭建,包括交叉编译器的使用,但是这些都是已经完成的系统,考虑到后期会对内核剪裁,所以这里完成内核编译。

首先获取相应源码(比较慢,网页下载相对快一些):

git clone –depth 1 git://github.com/raspberrypi/linux.git

git clone –depth 1 git://github.com/raspberrypi/firmware.git

git clone –depth 1 git://github.com/raspberrypi/tools.git

然后进入linux下执行:make mrproper,保证内核是干净的。因为当前只是试一下内核编译的过程,没有特殊需求,不需要对内核进行专门配置,直接将raspbian里的配置文件拿来使用。ssh到小派里去,进入/proc中。执行sudo modprobe configs 会获取到一个config.gz文件,解压然后拷回当前linux文件夹内。现在就配置已经完成,打开.config可以看到其配置非常复杂。5000行+的配置文件:

当然可以用命令:

make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- menuconfig

自行配置。

这里直接用的配置文件:

make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- oldconfig

然后直接进行编译:

make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-

时间会非常非常久。。。。。。

大概2个多小时后,编译完成。

下图中的zImage就是编译完成的内核了,将其改名为kernel7.img并覆盖sd卡中的相应文件即完成了内核烧写。

树莓派Bootloader加载过程:

通过查资料,树莓派的启动过程为:Boot ROM, SPL, Uboot, Kernel, RootFileSystem。系统上电后,ARM处理器在复位时从地址0x000000开始执行指令,把板上ROM或Flash映射到这一地址。然后进行启动设备选择,加载并执行bootloader程序。CPU通过拷贝或映射bootloader程序到内存,然后执行bootloader的第一条指令。实际上在正式进入bootloader之前,先加载了SPL进行启动引导。初始化ARM处理器, 初始化串口控制台,配置时钟和最基础的分频,初始化SDRAM,配置引脚多路复用功能,启动设备初始化,加载完整的uboot程序并转交控制权(这里才进入sd卡)。

参考资料:

http://www.tuicool.com/articles/muMRZnb

https://www.freemindworld.com/blog/2015/150312_complie_kernel_module_for_raspberry_pi_2.shtml
http://blog.csdn.net/lin772662623/article/details/50189399

0 0
原创粉丝点击