树莓派之uboot
2016-04-16 23:29
232 查看
树莓派之uboot
现在还完全不知道咋弄,只能先贴个大牛的博客,挖个坑留待后面填。http://blog.csdn.net/u010398378/article/category/2598693
/article/7710482.html
简要介绍:
目标平台采用树莓派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
/article/9137520.html
相关文章推荐
- 角色控制器之移动与飞行 [代码清单6-4]
- 类的静态变量访问
- 美国卫星撞月球 测试是否有水耗资7000多万美元
- JNDI定义tomcat资源
- ATF走进清华,阿里技术天团畅谈技术梦想
- 第3周 C语言及程序设计初步例程-42 将数据输出到文本文件
- [026]文本分类之SVM
- 解决vncserver看不到桌面的问题
- NOIP2008 普及组T2 排座椅 解题报告-S.B.S
- 初探JAVA中I/O流(二)
- 软件对存储性能的影响
- 软件对存储性能的影响
- 20145227 《Java程序设计》第7周学习总结
- OSChina 周日乱弹 ——老公 老公 我想吃糖!晚上带你吃
- 王高利:Redis入门
- PicketLink入门指南
- 中秋快乐
- 使用原生javascript实现ajax提交form表单
- 欢迎使用CSDN-markdown编辑器
- 配置 Apache 服务器支持 PHP 文件的解析