系列目录:

开发资料https://blog.csdn/m0_47367420/article/details/144322804

创建64位系统SD卡,从SD卡启动操作系统https://blog.csdn/m0_47367420/article/details/144408714

BSP开发环境搭建https://blog.csdn/m0_47367420/article/details/144323578

粤嵌GEC6818 从内置EMMC启动64位Ubuntu Linux系统-CSDN博客文章浏览阅读2次。粤嵌GEC6818开发板摆脱SD卡,从EMMC启动64位ubuntu操作系统。https://blog.csdn/m0_47367420/article/details/144458443 

背景:

之前的帖子中也提到了,可以用FriendlyARM提供的sd_fuse工具制作可以给使用S5P6818 SOC设备使用的SD卡,由于GEC6818的配置和三星Nexell的Raptor,drone开发板以及友善的nanopi3系列本质是很相近的,所以他们的系统、uboot、甚至是bootloader小加修改就可以跑在粤嵌的GEC6818开发板上面,使用sd fuse工具制作在CSDN上面已经有详细的帖子教大家了,就不再赘述,现在我们使用Linux系统基本dd,fdisk,tar等命令来实现bl和uboot的写入,boot分区,rootfs分区,user分区的数据写入。这个掌握之后其实可以发现安装ArchLinux,Gentoo等系统是非常简单的。

开始之前照例先上两张效果图:

启动日志输出在屏幕:

系统登录:

系统启动流程:

之前24年8月修改开发了一个工具mk6818,用于调试bl1和u-boot,我补充了大致的启动流程在README,需要研究代码的同学可以去github查看:

https://github/celeron633/mk6818

这里介绍下大概:

下面介绍的bl1,bl2,bl33等名称全部按ATF的规范解释,即bl1为芯片上面的bootrom,bl2为bl1加载的一个类似于uboot-spl的程序,用于初始化DDR等外设,设置PLL频率。

上电之后,芯片内部的bootrom(bl1)会启动,这个是SOC出厂就写好的程序,无法修改,bootrom会根据引脚的选择,优先选择从内部MMC,或者外部SD,或者USB,串口启动。粤嵌GEC6818选择的优先启动位于SD0上面的SD卡。也就是下图中,蓝色排线对着那个槽。

另一个槽位是SD3,好像是不能被bootrom搜索到的,不过启动到uboot之后,插了卡照样是能启动里面的系统的。SD2粤嵌和FriendlyARM都没有引出卡槽,复用成其他接口了。

bootrom会搜索上面描述的那些设备的第1个扇区,里面有NISH信息描述bl2的位置,大小,加载在哪里,从哪个地址启动等信息,详情请看mk6818的README。读取bl2到内存后,然后跳转到了bl2,代码就进入到了bl2的领空了,这