完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
RK3399内部集成一个Cortex-M3,两个Cortex-M0;
其一PMU M0为ATF所用,其二Perilp M0开放给客户使用。 Cortex-M0采用ARMv6-M结构,基于一个高集成度、低功耗的32位处理器内核;它采用冯·诺伊曼结构,基于16位的Thumb指令集,并包含Thumb-2技术。 Cortex-M3采用ARMv7-M结构,为32位处理器内核。它采用哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。 我们要使用的就是Perilp M0,可以用于实现一些实时性较高的操作,比如GPIO的脉宽输出。 #启动说明 #打包设置 RK3399以miniloader + ATF + u-boot的方式启动,采用这种启动方式,通常将MCU代码编译生成的BIN和ATF的BIN一起打包为trust.img。 在修改rkbin/RKTRUST/RK3399TRUST.ini 文件 BL30: M0 bin固件 BL31: ATF固件 分别对照ini配置文件是目录,放置好各个固件。 需要保证miniloader和ATF支持M0的运行; 文件中的ADDR=0x00080000 就是M0固件会被搬运到DDR的地址。 #地址映射 M0的外设寄存器地址与3399的地址会有一定的偏移; 默认配置为 M0地址 = 原地址 - 0xB8000000; 比如GPIO3是0xFF788000,那M0的操作地址就是0x47788000。 #相关寄存器 时钟配置 CRU 0xFF760000 CRU_CLKSEL_CON24(偏移0x0160) 复位撤销 CRU_SOFTRST_CON11
=> md.b 0x0080000 300
#问题处理 #M0部分代码失效 使用中发现M0的部分代码失效了,没有执行,原因是被优化掉了。 makefile中将编译等级由O3调整为O1,否则过度优化,有些代码会失效。 #kernel中M0停止 原因是clk-rk3399.c中没有保持cm0的时钟常开;增加CLK_IGNORE_UNUSED后可以,修改如下: 同时可以将复位撤销操作移到最终的应用来,以免M0的相关初始化,经过kernel被重置而失效了。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
458 浏览 0 评论
716 浏览 1 评论
620 浏览 1 评论
1850 浏览 1 评论
3099 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 15:57 , Processed in 0.567234 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号