jjzjj

linux - U-boot 在不同的内核上加载两个图像

coder 2023-06-20 原文

我有 NXP/Free-scale Imx6 saber lite 开发板。我的任务是以这样的方式刷新两个操作系统内核(Linux 和 RTOS),即 linux 在 core0 上运行,RTOS 在 core1 上运行。我有 1GB DDR3,其中我必须先分配 128MB 给 RTOS,剩下的给 LINUX 镜像。

  1. 在这种情况下如何配置 U-boot?
  2. core-0 应该在 >128MB DDR3 区域加载 Linux 内核,而此时 core1 处于空闲状态。
  3. core-0 应该加载 RTOS 并将控制权转移到 core-1。

如何使用 u-boot 实现这种情况?

如果有人解决了这个问题,请告诉我!

提前致谢!

最佳答案

这是可能的,但我认为 uboot 不允许这样做,但有一些异常(exception)。一些供应商提供修改后的 uboot 二进制文件及其支持此类功能的板。例如,Xilinx 为 ZCU102 提供的 u-boot 允许从同一 SOC 中存在的 cortex-a53 内核加载和启动 cortex-R 内核。

著名的开源框架之一 OpenAMP 就完成了这项工作。它允许远程的生命周期管理,并在不同内核上运行的多个操作系统之间建立通信。但据我所知,目前不支持 saber-lite。

对您的情况很重要: 对于您的情况,您可以简单地按照这些步骤完成您的工作。

第一步:确保分配给RTOS的内存不能被Linux访问。为此,您需要修改 dts 文件,准确地说是内存节点。

Step2:从dts中移除你想要从RTOS访问的设备。不要删除像 GIC 这样重要的。 RTOS 会在 linux 不知情的情况下与它共享它。这是我所知道的在无人监督的环境中使用 GIC 的唯一方法。这也回答了@AndrejsCainikovs 在评论中提出的问题。

第三步:从dts修改bootargs。在 dts 的 bootargs 中添加 nosmp 标志。

Step4:构建dts,替换SD卡boot分区中已有的dts。

第 5 步:在您的 GIC 代码中注释我们的重置和初始化代码。让 GIC 处于它所处的任何状态。启用 cpu 接口(interface)和您将使用的那些外围中断,并将它们的 CPU 亲和性设置为仅 RTOS 内核。现在修改链接器文件,为您刚刚从 linux 内存区域中删除的内存区域构建和链接 RTOS 代码。

Step6:将RTOS二进制文件复制到SD卡的引导分区。

Step7:运行开发板并在自动启动时停止u-boot。运行以下命令将 RTOS 镜像加载到内存中。

    fatload mmc 0:1 0x10000000 rtos.bin;

显然,您需要根据您的 RTOS 地址更改加载地址,并且可能是 mmc 分区号。

第 8 步:使用 boot 命令运行 linux 内核,在 linux 内核中您需要使用一些寄存器。我会选择通过编写内核驱动程序并使用 ioremap 映射这些寄存器并访问它们来实现。但是如何操作取决于您,我在这里解释需要做什么。

将RTOS起始地址写入core1的SRC_GPR3寄存器或core2的SRC_GPR5或core3的SRC_GPR7。

现在使用 SRC_SCR 寄存器的第 22、23 和 24 位分别为 core1、core2 和 core3 启用核心,无论您打算在哪个上运行 RTOS。请注意,不能禁用或启用 core0。

现在使用 SRC_SCR 寄存器的第 13、14、15 和 16 位分别为 core0、core1、core2 和 core3 使内核脱离复位状态。您的 RTOS 将开始运行。

这种整体配置正式称为无监督系统,与运行管理程序进行严格资源分区的监督系统相对。在这里,每个操作系统都谨慎运行,不要触及分配给其他操作系统的任何资源。

您可以在 i.MX 6Dual/6Quad 应用处理器引用手册中找到这些寄存器内存地址。文献编号:IMX6DQRM

关于linux - U-boot 在不同的内核上加载两个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40592513/

有关linux - U-boot 在不同的内核上加载两个图像的更多相关文章

  1. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  2. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

  3. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  4. ruby - 这两个 Ruby 类初始化定义有什么区别? - 2

    我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:classTicketattr_accessor:venue,:datedefinitialize(venue,date)self.venue=venueself.date=dateendend在本书的前几节中,它的定义如下:classTicketattr_accessor:venue,:datedefinitialize(venue,date)@venue=venue@date=dateendend在第一个示例中使用setter方法与在第二个示例中使用实例变量之间是

  5. ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项? - 2

    我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co

  6. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

    我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

  7. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  8. ruby-on-rails - 在 Ruby (on Rails) 中使用 imgur API 获取图像 - 2

    我正在尝试使用Ruby2.0.0和Rails4.0.0提供的API从imgur中提取图像。我已尝试按照Ruby2.0.0文档中列出的各种方式构建http请求,但均无济于事。代码如下:require'net/http'require'net/https'defimgurheaders={"Authorization"=>"Client-ID"+my_client_id}path="/3/gallery/image/#{img_id}.json"uri=URI("https://api.imgur.com"+path)request,data=Net::HTTP::Get.new(path

  9. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  10. java - 为什么 ruby​​ modulo 与 java/other lang 不同? - 2

    我基本上来自Java背景并且努力理解Ruby中的模运算。(5%3)(-5%3)(5%-3)(-5%-3)Java中的上述操作产生,2个-22个-2但在Ruby中,相同的表达式会产生21个-1-2.Ruby在逻辑上有多擅长这个?模块操作在Ruby中是如何实现的?如果将同一个操作定义为一个web服务,两个服务如何匹配逻辑。 最佳答案 在Java中,模运算的结果与被除数的符号相同。在Ruby中,它与除数的符号相同。remainder()在Ruby中与被除数的符号相同。您可能还想引用modulooperation.

随机推荐