简介
开始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的流程。