当前位置: 首页 > 网络应用技术

OpenHarmony Liteos C-Sky教学套装移植指南

时间:2023-03-07 16:07:04 网络应用技术

  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。