简介
开始raspi4b
的开发,先测试串口模块连线是否正常,串口功能是否正常
过程
实物图
实物图如下,这里用的是usb_to_ttl
的串口模块
跟硬件原理图对应的管脚如下
sd卡配置
首先要将sd
卡格式化为fat32
的格式,可以使用windows
下的工具SDFormatter
工具
格式化后,往sd
卡添加如下五个文件,文件的链接有
这里主要列举下config.txt
的配置,kernel_address=0x8000
表示需要执行的内存地址,这个地址就是裸机程序在链接时的入口地址
arm_64bit=1
kernel_address=0x80000
uart_2ndstage=1
enable_uart=1
kernel=kernel8.img
因为这次主要是为了通过查看romcode
是否能正常打印来检查串口功能是否正常,所以kernel8.img
就随便自己dd
一个文件即可
cmdline.txt
暂时还没搞清楚它的用法,不过在这次测试中并没有什么作用
console=serial10
启动
验证成功,串口功能正常,串口波特率是115200
配置文件解析
首先要先知道raspi4b
的启动逻辑,bootrom
先读取放在内部的SPI
连接的EEPROM(4MBits / 512KB)
里面的代码,我理解为second_stage_bootlaoder
。bootrom
把second_stage_bootlaoder
放到128K大小的二级缓存(L2 Cache)中,并执行这段代码
second_stage_bootlaoder
初始化ram,加载start4.elf,读取config.txt文件。这里second_stage_bootlaoder
应该是内部实现了识别fat32文件系统的代码,才能找得到sd卡中的start4.elf文件跟config.txt文件
start4.elf
文件是用来启动GPU
的固件,file
查看是32bit
的elf
文件
下一步计划
接下来主要还是先往裸机开发的方向做下去,下一步就是jtag
配置,裸机cpu
启动,裸机串口输出。以后还会移植uboot
跟kernel
,自己实现一遍bringup
的流程。