4635|2

1366

帖子

6

TA的资源

版主

楼主
 

[先楫HPM6750测评之三]双核应用启动分析 [复制链接]

 

   HPM6750支持双核,除了主从核心之分,其他的配置均一相同,这对于应用来说相当重要。

   官方SDK中有个双核的helloworld例子,在multicore\hello中,原先使用的mbx例子,core1跑在ram中,只有在调试的时候才会两核运行,手册中,core1复位启动需要core0加载并且copy到core1的ILM区域中,并且唤醒。见手册说明

 

   先看下core0的代码,主要核心在于需要把core1的flash镜像拷贝加载到core1的ILM区域,然后再启动core1

 

 

    在secondary_core_image_load_and_run这个函数中,sysctl_is_cpu1_released判断core1是否启动,判断是否启动主要看系统控制模块 SYSCTL 的HALT休眠位

 

    由官方文档可知,从核启动管理需要这么做。

 

    

 

   接下来看到的core_local_mem_to_sys_address,是core1根据SEC_CORE_IMG_START的定义地址去查找core1的ILM指令存储器的镜像地址,大小为256K,也就是说core1的指令程序空间可以达到256K。

 

   接下来就是把memcpy((void *)sec_core_img_sys_addr, sec_core_img, sec_core_img_size);   sec_core_img的flash镜像拷贝到sec_core_img_sys_addr  core1的ILM地址中,做好相关的cache,启动core1,这样双核就启动了。

   那么问题来了,sec_core_img这个C数组,也就是core1的程序代码是怎么生成的?

   这里需要做一个bin转c的批处理文件,刚好官方也做了,在脚本文件夹中

 

  E:/personal/software/risc-v/HPM6750EVKMINI/sdk_env_v0.9.0/tools/python3/python3.exe $(HPM_SDK_BASE)/scripts/bin2c.py $(OutDir)/$(ProjectName).bin sec_core_img > E:/personal/software/risc-v/HPM6750EVKMINI/sdk_env_v0.9.0/hpm_sdk/samples/multicore/hello/core0/src/sec_core_img.c"   

 

 

    

   

  如此,烧录core0代码就可以看到RGB闪烁和相关打印信息了。

 

 

 

最新回复

要是能SMP就爽了   详情 回复 发表于 2022-5-8 00:58
点赞(1) 关注(2)
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复
举报

40

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

要是能SMP就爽了

点评

是的,没有smp得自己好好规划外设资源,避免资源争用问题。  详情 回复 发表于 2022-5-8 09:22
个人签名

相互学习,共同进步。

 
 
 

回复

1366

帖子

6

TA的资源

版主

板凳
 
aozima 发表于 2022-5-8 00:58 要是能SMP就爽了

是的,没有smp得自己好好规划外设资源,避免资源争用问题。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表