raspberry简单介绍1

随声附和 提交于 2019-12-18 21:46:43

树莓派的介绍

树莓派是了解嵌入式产品开发的绝好工具。它充分考虑了想学习嵌入式硬件和软件相关从业者(开发,架构,产品,销售)的感受,屏蔽了器件选择和搭配的门槛,缩短了硬件获取的周期。

硬件

视频接口:视频输出,视频输入
音频接口:音频输出
网络接口(有线口:以太网;无限口:wifi,BLE)
串口
USB
存储接口:SD slot

软件

源码可得
成品镜像可得
搭载开源的linux系统,赢得了大批用户。

参考资料

资料多,使用者广,交流信息多。

有待改进处,

验证APP应用可以,软件还需要性能优化。硬件与真实可用产品有差距。
主芯片BCM837资料不开源。(定制款芯片),且芯片内置ROM资料也不开源。

使用心得

确认硬件版本

raspberry硬件版本多样,如何确认使用了哪个版本。树莓派硬件版本区分在于主芯片上,使用命令pinout可以显示使用的主芯片。
在这里插入图片描述
在这里插入图片描述

软件信息

OS信息

在这里插入图片描述

软件启动流程

在这里插入图片描述
这个分区里存放bootcode.bin、config.txt、start.elf和u-boot.bin
config.txt中 指定 kernel=kernel.img

bootcode.bin: 启动文件
start.elf : 类似U-Boot的BootLoader文件
kernel.img: Linux内核文件
config.txt: 配置文件

从linux 命令行角度看文件系统类型:
在这里插入图片描述
在这里插入图片描述

1st stage:

power on
-> GPU读取ROM内容
->GPU运行ROM中代码

2nd stage:

GPU读取SD卡第一个FAT分区根目录下bootcode.bin
-> GPU讲bootcode.bin复制到L2 cache
-> GPU执行bootcode.bin

3rd stage:

GPU读取SD卡第一个FAT分区根目录中start.elf
-> GPU将start.elf加载到内存中
->GPU开始执行start.elf

4th stage:

GPU读取SD卡第一个FAT分区根目录中的kernel.img(Linux 内核) 到内存
->唤醒CPU
->CPU 开始运行kernel.img

总结

至此启动完成(GPU搬代码,rom->bootcode.bin->start.elf->kernel.img),与通常CPU搬代码流程(rom->bootloader->os)不同。

博通的这个GPU叫做VideoCore IV,已经出到第四代了,可以独立执行代码。
博通这样做的原因,一方面:让启动管理完全掌握自己手里,GPU资料不公开;另一方面,加速启动过程中出现画面。
geek们,通过逆向工程,破解了VideoCore IV的机器码,总结出了GPU的指令集,制作了GPU编译器和一套二进制工具。
Herman Hermitage大神
(https://github.com/hermanhermitage/videocoreiv/tree/master/blinker01)
Christinna大神
(https://github.com/christinaa/rpi-open-firmware)(没错github上的路径名字和他本人名字不一样)

动态加载调试kernel

将uboot引入到SD card中,通过uboot加载网络版kernel。实现kernel动态加载和调试。
1)需要引入针对rpi的uboot代码 (https://github.com/gonzoua/u-boot-pi/tree/rpi)
2)构建编译平台 32位的arm-gcc

在这里插入图片描述
armv7l
在这里插入图片描述
3)uboot中打通ethernet (树莓派的Ethernet网络芯片是基于USB的)
4)通过tftp方式下载uImage
uboot命令行, 输入以下命令:
usb start
dhcp
bootm
用固定IP启动:
usb start
setenv serverip <tftp_server_ip>
setenv ipaddr <a_spare_ip_address>
tftpboot uImage
bootm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!