树莓派的介绍
树莓派是了解嵌入式产品开发的绝好工具。它充分考虑了想学习嵌入式硬件和软件相关从业者(开发,架构,产品,销售)的感受,屏蔽了器件选择和搭配的门槛,缩短了硬件获取的周期。
硬件
视频接口:视频输出,视频输入
音频接口:音频输出
网络接口(有线口:以太网;无限口: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
来源:CSDN
作者:糟心的事太多,唯有写作可以解忧!
链接:https://blog.csdn.net/weixin_44124323/article/details/103598358