【赛昉科技昉·星光RISC-V单板计算机试用体验】嵌入式系统开机流程(结合ohos)

描述

本文来源电子发烧友社区,作者:jf_58250416, 帖子地址:https://bbs.elecfans.com/jishu_2284990_1_1.html


上回说到最近申请到一块赛昉的RISCV架构开发板,想移植ohos系统在上面试一试,跟着一些已有的星星点点的教程边学边做弄了好几天也没有成功,不过也从中学到一点经验,不如总结一下再水一篇试用报告。



ohos全称是openharmony,它的整个架构很大,按照应用的设备可以分为轻量系统、小型系统和标准系统。个中区别各位看官可以自行百度,赛昉开发板这种能运行linxu的,假如说移植一般都是标准系统。移植整个系统的重中之重,便是移植内核,这里ohos对整个系统和内核的定义如下: 
RISC-V
RISC-V



所以是不是把在别的设备上能用的装有img镜像的SD卡插到赛昉开发板就可以了呢,当然不是。首先,芯片必须是相同的架构,所以ohos在DAYU开发板上好像还不错了,ohos_riscv还很初级。其次,系统在不同开发板上的引导,还和其它硬件有关系,赛昉正好在一个文件里有个流程图: 
RISC-V



我在开机时打印了一下几个关键log如下:


RISC-V
RISC-V

RISC-V


所以大概总结是这样,一个嵌入式板上电之后,会首先通过固件形式的bootloader(pc上是bios)引导,Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装载到内存中然后跳转到操作系统所在的空间,启动操作系统运行  。对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序   。

bootloader之后,ddrinit会对外部内存进行初始化,接下来就可以跑内存上的代码了。

而opensbi则是riscv架构下一个特有的产物,RISC-V指令集的SBI标准规定了类Unix平台下,操作系统运行环境的规范。这个规范拥有多种实现,OpenSBI是它的一种实现.RISC-V架构中,存在着定义于操作系统之下的运行环境。这个运行环境不仅将引导启动RISC-V下的操作系统, 还将常驻后台,为操作系统提供一系列二进制接口,以便其获取和操作硬件信息。 RISC-V给出了此类环境和二进制接口的规范,称为“操作系统二进制接口”,即“SBI”。SBI的实现是在M模式下运行的特定于平台的固件,它将管理S、U等特权上的程序或通用的操作系统。

下一步uboot就可以把代码引导到sd卡了,针对用户而言,可以是各个linux发行版,但是如果你的嵌入式开发板装载了好多个系统,这一步还需要一个引导工具,便是grub。

至此,赛昉的fedora应该就引导成功了。


那么话说回来,如果需要基于赛昉移植ohos_riscv的话,除了适配赛防的uboot,引导到ohos标准系统的linux内核上,还要实现ohos的系统特性,也是路漫漫其修远兮了。


期待赛昉在ohos上进一步的表现,可能我的观点比较浅薄,欢迎批评指正。


参考:
https://docs.openharmony.cn/pages/v3.1/zh-cn/device-dev/porting/porting-linux-kernel.md/
https://baike.baidu.com/item/U-Boot/10377075?fr=aladdin
https://rvspace.org/en/Product/VisionFive/Technical_Documents/VisionFive_Single_Board_Computer_Quick_Start_Guide

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分