C-SKY指导集体结构(ISA)是指第二代独立教学集体结构CK核心系列知识产权指导集体结构。CSKYISA具有高性能,高码密度,低功耗,低功耗和可扩展性的特征。
SMARTL_E802将E802处理器与C-SKY V2独立指令体系结构一起使用。这是由Pingtou ge emiconductor Co.,ltd.mong开发的低功率和低成本嵌入式CPU核心,SmartL平台用于E801/e802/e802/e803s/e804/e804/e804/e804/e805/e805/e902/e902/e906/e906/e906/e907集成和辩论仿真综合演示平台。
本文介绍了OpenHarmony Community Liteos-M项目中新的C-SKY指令的开发过程,以及适应与Liteos内核相关开发人员进行学习和交流的相应QEMU项目的方法和步骤。
SMARTL_E802需要使用官方的CSKY编译器和QEMU工程。下面介绍了安装步骤。
打开?/.bashrc文件
添加以下命令行并在最后保存
有效的环境变量
打开?/.bashrc文件
添加以下命令行并在最后保存
有效的环境变量
使用LDD指令查看缺乏依赖的库文件并下载。
注意:更多详细的安装和指导,请参阅官方指南:https://occ.thead.cn/community/download?ID = 636946310057951232
有关源代码采集教程,请参阅:https://gitee.com/openharmony/docs/blob/master/zh-device-dev/get-sourcecode-acquire.md
移植过程基于根据RISCV的QEMU开发委员会目录的实施,基于CSKY QEMU目录结构的实施,并在内核,设备和供应商中实施了CSKY指令集和与开发委员会相关的代码。
创建设备,供应商和内核中SMARTL_E802开发板所需的文件。
表1 smartl_e802文件夹目录
表2开发板文件夹目录
表3 CSKY文件夹目录
在内核/liteos_m/kernel/拱门下创建一个CSKY文件夹,并完成以下步骤。
在内核/build.gn下添加了CSKY架构的选择:
在内核/liteos_m/kernel/拱门中编写体系结构代码。
A。编写异常文件los_exc.s
前32位异常统一到handerEntry中,保存当前的堆栈和异常地址,并在halexchandleentry函数中进行参与。Abnortal类型和原因以及异常寄存器状态。
表4异常矢量分配(图片来源:Pingtou Ge Xuan Tie E802用户手册)
b。编写计划代码los_dispatch.s
在los_dispatch.s中编写halstarttorun函数和haltaskContextSwitch函数,以实现和恢复R0?R15,EPC,EPSR和PSR寄存器以实现任务的上下文开关。在LOS_CONTEXT.C中启动系统逻辑并调用文件中的调度函数。
表5常规寄存器(图片来源:Pingtou Ge Xuan Tie E802用户手册)
C。编写系统中断文件los_interrupt.c
VIC中断地址VIC_REG_BASE转换为结构,并且根据手动描述编写中断的优先级,该手册描述被屏蔽,启用和清晰。使用相关的中断组装指令,以实现中断开关并读取中断数字和其他功能。
表6紧密耦合IP的内存地址分配(图片来源:Pingtou Ge Xuan Tie E802用户手册)
d。编写计时器文件los_timer.c
以计时器地址core_tim_base并将其转换为相应的地址结构,并根据手册编译控件和过载功能。适应系统获得了循环的接口。
表7系统计时器寄存器定义(图来源:Pingtou Ge Xuan Tie E802用户手册)
e。添加用内核/Arch/csky/v2/gcc/build.gn编写的书面文件。
A。在组件/backtrace中添加相关的回溯代码。查看函数调用的LR地址通过堆栈返回跟踪并保存。最后,Osexcinfodisplay中的输出用于提供用于分析用户异常原因的参考。
b。在kernel/include/los_config.h的Loscfg_backtrace_type上的回溯描述不正确。
注意:有关体系结构的详细信息,请检查Pingtou Ge Xuan Tie E802用户手册。
在设备/QEMU下添加smartl_e802文件夹,并完成以下步骤。
A。将SmartL_E802 SDK驱动器代码复制到驱动程序目录,然后编写build.gn文件以编译驱动程序代码。
b。请参阅SDK中gcc_csky.ld中的寄存器以修改liteos.ld文件,并将代码分配给指定的间隔。
C。请参阅SDK中的启动。S文件,删除向量定义的定义并写入中断的总入口
请参阅SDK中的演示和printf的逻辑,编写dprintf.c/.h,并在main.c中调用串行端口初始化。
请参阅LITEOS代码以将FS适应层文件移植到Smartl_E802。
请参阅设备/QEMU/RISCV32_VIRT中的config.gni的格式,然后参考需要调用的SDK和接口中的编译选项,然后在LiteOS_M文件夹下编写config.gni文件。
参考设备/QEMU/RISCV32_VIRT编写测试代码。
编写构建。gn文件,编译由FS适应层,驱动程序开发板驱动器代码等编译的静态库。
在SMARTL_E802文件夹下编写中文和英语用户指南:readme_zh.md和readme.md,并在设备/QEMU目录中修改中文和英语文档,并添加CSKY开发委员会的介绍。
在供应商/ohemu下创建qemu_csky_mini_system_demo文件夹,并完成以下步骤。
参考供应商/ohemu/qemu_riscv32_mini_system_demo,在qemu_csky_mini_system_demo文件夹下添加一个新的HALS/UTILS文件夹。
参考供应商/ohemu/qemu_riscv32_mini_system_demo,编写build.gn文件并添加https://www.shouxicto.com/article/article/qemu-run脚本。
参考供应商/ohemu/qemu_riscv32_mini_system_demo将RISCV的内容修改为CSKY相关内容。
使用https://www.shouxicto.com/article/qemu-run对应架构脚本。/下载?ID = 636946310057951232)编写脚本。
A。启动GDB服务器并等待连接
b。新终端并使用GDB连接QEMU
笔记:
1.默认情况下,使用带有符号表的精灵文件;
2. QEMU退出方法是:按CTRL和键,然后释放X键。
QEMU操作结果的关键日志如下:
此移植适应的相关源代码路径是:
内核:https://gitee.com/openharmony/kernel_liteos_m/tree/master/master/kerch/csky/v2/gcc
QEMU:https://gitee.com/openharmony/device_qemu/tree/master/master/smartl_e802
供应商:https://gitee.com/openharmony/vendor_ohemu/tree/master/qemu_csky_system_demo
本文分享了华为云社区的“ OpenHarmonyliteos教学收集移植指南(C-SKY)”,作者:Lionlace。