UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Visitor yzfreedom
Visitor
471 次查看
注册日期: ‎12-26-2018

uc/os在xilinx SDK中使用OpenAMP

大家好,

           我想请问下,大家是否在xilinx SDK中使用过uc/os,我从micrium下载了uc/os的sdk,版本是1.43(之前的版本找不到下载地址),按照官网提供的方式,能够正常运行起来了,并且双核模式,在使用jtage进行调试的时候,双核能够正常运行。

           但是在使用openamp,SD卡启动的时候,遇到了问题,micrium官网说有两个例程,一个是openam master,另一个是openamp slave,但是再1.43里面没有找到这两个例程,并且官网的版本说明没有提到这两个例程,难道是uc/os不支持了吗?

           由于没有找到合适的例程,使用之前传统的AMP的方式进行启动(双核都是uc/os),但是在启动的时候发现了问题,在fsbl中,在loadbootimage之后,启动CPU1,但是这个时候发现,两个核都没有启动起来,于是将fsbl的调试开启(这里fsbl的创建也必须有顺序,必须先要创建fsbl,否则如果先创建uc/os的工程,后续就没有办法创建fsbl工程了,难道是兼容问题?),想看看是哪里的启动问题,但是,开启调试信息后,这个时候就可以正常启动了,这是什么原因导致的呢?有没有xilinx SDK和ucos使用的相关资料呢?

0 项奖励
5 条回复5
Highlighted
Xilinx Employee
Xilinx Employee
414 次查看
注册日期: ‎09-14-2018

回复: uc/os在xilinx SDK中使用OpenAMP

xilinx官方支持的rtos目前就是freertos, ucos应该没有官方资料。

“想看看是哪里的启动问题,但是,开启调试信息后,这个时候就可以正常启动了,”

--这个现象能复现吗,出了开启调试信息还有其它变化吗?

 

 

0 项奖励
Visitor yzfreedom
Visitor
406 次查看
注册日期: ‎12-26-2018

回复: uc/os在xilinx SDK中使用OpenAMP

hi, @chaoz

       这个现象基本是必现的,调试信息也就是添加了FSBL_DEBUG宏,增加了输出调试输出,其他没改动,后来经过测试发现两个核都延迟150毫秒启动就可以,但是两个核的启动时间必须很接近,否则也会出现问题,现在看来启动还是有问题的。

      起初怀疑是外设冲突造成的,后来采用core0跑ucos,core1跑裸核的方法尝试了下,不需要做延时也能够正常跑起来(两个都只是最简单的例程,没添加其他内容),所以现在怀疑是两个核的uc/os系统的初始化部分存在冲突,不知道这么判断对吗?

0 项奖励
Xilinx Employee
Xilinx Employee
358 次查看
注册日期: ‎09-14-2018

回复: uc/os在xilinx SDK中使用OpenAMP

感觉可能是外设初始化(比如中断控制器)造成冲突了。裸核不需要中断来支持任务调度,所以能正常跑起来。

供参考。

----------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
----------------------------------------------------------------------------------------------

0 项奖励
Visitor yzfreedom
Visitor
336 次查看
注册日期: ‎12-26-2018

回复: uc/os在xilinx SDK中使用OpenAMP

hi, @chaoz

    我进一步做了个验证,之前在core0上运行ucos,core1上运行裸核,是可以正常的;后来我在core1上运行ucos,core0上运行裸核,这样的情况下,ucos就会在初始化到一半的时候,打印信息的时候就挂了,加上延时也起不来,应该还是和core1上运行系统有关,稍微看了看ug1186的文档,上面好像说的是利用libmetal进行外设管理,给两个核提供虚拟接口。

    但是libmetal是怎么和系统进行连接的呢?我看到里面除了调用一些初始化函数外,printf函数,最终还是调用了xilinx的打印函数

0 项奖励
Xilinx Employee
Xilinx Employee
334 次查看
注册日期: ‎09-14-2018

回复: uc/os在xilinx SDK中使用OpenAMP

@yzfreedom

libmetal可以理解为提供一套外设管理的统一接口(API)。但是实现还是针对具体CPU和外设的寄存器操作。可以理解成包了一层,这样在不同CPU上应用代码可以复用,只需要移植libmetal.