1<!DOCTYPE html> 2<html lang="zh-CN"> 3<head> 4 <meta charset="UTF-8"> 5<meta name="viewport" content="width=device-width"> 6<meta name="theme-color" content="#222"><meta name="generator" content="Hexo 7.0.0"> 7<link rel="preconnect" href="https://fonts.googleapis.com" crossorigin> 8<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin> 9 <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png"> 10 <link rel="icon" type="image/png" sizes="32x32" href="/images/blog.svg"> 11 <link rel="icon" type="image/png" sizes="16x16" href="/images/blog.svg"> 12 <link rel="mask-icon" href="/images/logo.svg" color="#222"> 13 <meta name="google-site-verification" content="vuSkRYPVceK1DXhqZWm7wVxYV4YmmnI1Dv_C1M8rJJM"> 14 15<link rel="stylesheet" href="/css/main.css"> 16 17<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Georgia:300,300italic,400,400italic,700,700italic%7CCourier+New:300,300italic,400,400italic,700,700italic&display=swap&subset=latin,latin-ext"> 18 19<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha256-CTSx/A06dm1B063156EVh15m6Y67pAjZZaQc89LLSrU=" crossorigin="anonymous"> 20 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.1.1/animate.min.css" integrity="sha256-PR7ttpcvz8qrF57fur/yAx1qXMFJeJFiA6pSzWi0OIE=" crossorigin="anonymous"> 21
22<script class="next-config" data-name="main" type="application/json">{"hostname":"chasinglulu.github.io","root":"/","images":"/images","scheme":"Mist","darkmode":false,"version":"8.18.2","exturl":false,"sidebar":{"position":"right","display":"hide","padding":18,"offset":12},"copycode":{"enable":true,"style":"mac"},"fold":{"enable":true,"height":500},"bookmark":{"enable":true,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":true,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"æç´¢...","empty":"æ²¡ææ¾å°ä»»ä½æç´¢ç»æï¼${query}","hits_time":"æ¾å° ${hits} 个æç´¢ç»æï¼ç¨æ¶ ${time} 毫ç§ï¼","hits":"æ¾å° ${hits} 个æç´¢ç»æ"},"path":"/search.xml","localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false}}</script>
22<script src="/js/config.js"></script>
22 23 24 <meta name="description" content="å¨è¯çå¼åçåæï¼RTL代ç è¿å¨å¼åä¸ï¼FPGAååéªè¯å¹³å°ä¹æ²¡æå¯ç¨çç¯å¢ãè¿æ¶åæä»¬å¯ä»¥æ ¹æ®SoC specå¨Qemuä¸å¼åä¸ä¸ªæ°çVirtual Platformï¼é£ä¹BSP软件å¢éå°±å¯ä»¥æå宿ä¸äºè½¯ä»¶ç¯å¢çåå¤ï¼æ¯å¦æå°ç³»ç»ãè¿æ ·å½RTL0.1éæ¾åï¼æä»¬å¯ä»¥ç´æ¥å¤ç¨è¿äºè½¯ä»¶å¨FPGAéªè¯ï¼ä»èåå°æå»ºè½¯ä»¶ç¯å¢çååå缩å°éªè¯æ¶é´ãéçQemué颿¨¡æçå¤è®¾è¶æ¥è¶å¤ï¼æä»¬å¯ä»¥ææ´å¤ç软件"> 25<meta property="og:type" content="article"> 26<meta property="og:title" content="åºäºQemu LMTèæå¹³å°çbringup"> 27<meta property="og:url" content="https://chasinglulu.github.io/posts/61970ccf/index.html"> 28<meta property="og:site_name" content="ç¹æ»´æ±è"> 29<meta property="og:description" content="å¨è¯çå¼åçåæï¼RTL代ç è¿å¨å¼åä¸ï¼FPGAååéªè¯å¹³å°ä¹æ²¡æå¯ç¨çç¯å¢ãè¿æ¶åæä»¬å¯ä»¥æ ¹æ®SoC specå¨Qemuä¸å¼åä¸ä¸ªæ°çVirtual Platformï¼é£ä¹BSP软件å¢éå°±å¯ä»¥æå宿ä¸äºè½¯ä»¶ç¯å¢çåå¤ï¼æ¯å¦æå°ç³»ç»ãè¿æ ·å½RTL0.1éæ¾åï¼æä»¬å¯ä»¥ç´æ¥å¤ç¨è¿äºè½¯ä»¶å¨FPGAéªè¯ï¼ä»èåå°æå»ºè½¯ä»¶ç¯å¢çååå缩å°éªè¯æ¶é´ãéçQemué颿¨¡æçå¤è®¾è¶æ¥è¶å¤ï¼æä»¬å¯ä»¥ææ´å¤ç软件"> 30<meta property="og:locale" content="zh_CN"> 31<meta property="og:image" content="https://chasinglulu.github.io/images/29/lmt-arch.png"> 32<meta property="og:image" content="https://chasinglulu.github.io/images/29/mult-process-qemu.png"> 33<meta property="og:image" content="https://chasinglulu.github.io/images/29/lmt-bootflow.png"> 34<meta property="og:image" content="https://chasinglulu.github.io/images/29/uboot_kernel.gif"> 35<meta property="og:image" content="https://chasinglulu.github.io/images/29/spl_uboot_kernel.gif"> 36<meta property="og:image" content="https://chasinglulu.github.io/images/29/atf_uboot_kernel.gif"> 37<meta property="og:image" content="https://chasinglulu.github.io/images/29/spl_atf_uboot_kernel.gif"> 38<meta property="og:image" content="https://chasinglulu.github.io/images/29/atf_optee_uboot_kernel.gif"> 39<meta property="og:image" content="https://chasinglulu.github.io/images/29/spl_atf_optee_uboot_kernel.gif"> 40<meta property="og:image" content="https://chasinglulu.github.io/images/29/safety-virt.png"> 41<meta property="og:image" content="https://chasinglulu.github.io/images/29/both-virt.gif"> 42<meta property="article:published_time" content="2023-11-24T18:00:28.000Z"> 43<meta property="article:modified_time" content="2024-09-24T07:39:19.294Z"> 44<meta property="article:author" content="Xinlu Wang"> 45<meta property="article:tag" content="ITå® ãDIYææ¯"> 46<meta name="twitter:card" content="summary"> 47<meta name="twitter:image" content="https://chasinglulu.github.io/images/29/lmt-arch.png"> 48 49 50<link rel="canonical" href="https://chasinglulu.github.io/posts/61970ccf/"> 51 52 53
54<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"zh-CN","comments":true,"permalink":"https://chasinglulu.github.io/posts/61970ccf/","path":"posts/61970ccf/","title":"åºäºQemu LMTèæå¹³å°çbringup"}</script>
54 55
56<script class="next-config" data-name="calendar" type="application/json">""</script>
56 57<title>åºäºQemu LMTèæå¹³å°çbringup | ç¹æ»´æ±è</title> 58 59 60 61 62 63 64 65 66<link rel="dns-prefetch" href="www.chasinglulu.cn"><link rel="stylesheet" href="//cdn.jsdelivr.net/gh/theme-next/theme-next-needmoreshare2@1/needsharebutton.min.css"><style> 67#needsharebutton-postbottom { 68 cursor: pointer; 69 height: 26px; 70 margin-top: 10px; 71 position: relative; 72} 73#needsharebutton-postbottom .btn { 74 border: 1px solid $btn-default-border-color; 75 border-radius: 3px; 76 display: initial; 77 padding: 1px 4px; 78} 79</style><style> 80#needsharebutton-float { 81 bottom: 88px; 82 cursor: pointer; 83 left: -8px; 84 position: fixed; 85 z-index: 9999; 86} 87#needsharebutton-float .btn { 88 border: 1px solid $btn-default-border-color; 89 border-radius: 4px; 90 padding: 0 10px 0 14px; 91} 92</style> 93 <noscript> 94 <link rel="stylesheet" href="/css/noscript.css"> 95 </noscript> 96</head> 97 98<body itemscope itemtype="http://schema.org/WebPage" class="use-motion"> 99 <div class="headband"></div> 100 101 <main class="main"> 102 <div class="column"> 103 <header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="site-brand-container"> 104 <div class="site-nav-toggle"> 105 <div class="toggle" aria-label="åæ¢å¯¼èªæ " role="button"> 106 <span class="toggle-line"></span> 107 <span class="toggle-line"></span> 108 <span class="toggle-line"></span> 109 </div> 110 </div> 111 112 <div class="site-meta"> 113 114 <a href="/" class="brand" rel="start"> 115 <i class="logo-line"></i> 116 <p class="site-title">ç¹æ»´æ±è</p> 117 <i class="logo-line"></i> 118 </a> 119 <p class="site-subtitle" itemprop="description">ä¸ç§¯è·¬æ¥æ 以è³åéï¼ä¸ç§¯å°æµæ ä»¥ææ±æµ·</p> 120 </div> 121 122 <div class="site-nav-right"> 123 <div class="toggle popup-trigger" aria-label="æç´¢" role="button"> 124 <i class="fa fa-search fa-fw fa-lg"></i> 125 </div> 126 </div> 127</div> 128 129 130 131<nav class="site-nav"> 132 <ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>é¦é¡µ</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-address-card fa-fw"></i>å ³äº</a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>æ ç¾<span class="badge">70</span></a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>åç±»<span class="badge">9</span></a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>彿¡£<span class="badge">43</span></a></li> 133 <li class="menu-item menu-item-search"> 134 <a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>æç´¢ 135 </a> 136 </li> 137 </ul> 138</nav> 139 140 141 142 <div class="search-pop-overlay"> 143 <div class="popup search-popup"><div class="search-header"> 144 <span class="search-icon"> 145 <i class="fa fa-search"></i> 146 </span> 147 <div class="search-input-container"> 148 <input autocomplete="off" autocapitalize="off" maxlength="80" 149 placeholder="æç´¢..." spellcheck="false" 150 type="search" class="search-input"> 151 </div> 152 <span class="popup-btn-close" role="button"> 153 <i class="fa fa-times-circle"></i> 154 </span> 155</div> 156<div class="search-result-container no-result"> 157 <div class="search-result-icon"> 158 <i class="fa fa-spinner fa-pulse fa-5x"></i> 159 </div> 160</div> 161 162 </div> 163 </div> 164 165</header> 166 167 168 <aside class="sidebar"> 169 170 <div class="sidebar-inner sidebar-nav-active sidebar-toc-active"> 171 <ul class="sidebar-nav"> 172 <li class="sidebar-nav-toc"> 173 æç« ç®å½ 174 </li> 175 <li class="sidebar-nav-overview"> 176 ç«ç¹æ¦è§ 177 </li> 178 </ul> 179 180 <div class="sidebar-panel-container"> 181 <!--noindex--> 182 <div class="post-toc-wrap sidebar-panel"> 183 <div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%8A%AF%E7%89%87%E4%BB%8B%E7%BB%8D"><span class="nav-number">1.</span> <span class="nav-text">è¯çä»ç»</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%90%AF%E5%8A%A8%E4%BB%8B%E7%BB%8D"><span class="nav-number">2.</span> <span class="nav-text">å¯å¨ä»ç»</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%90%AF%E5%8A%A8%E9%A1%BA%E5%BA%8F"><span class="nav-number">2.1.</span> <span class="nav-text">å¯å¨é¡ºåº</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E9%95%9C%E5%83%8F%E6%9E%84%E5%BB%BA"><span class="nav-number">3.</span> <span class="nav-text">éåæå»º</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#ATF"><span class="nav-number">3.1.</span> <span class="nav-text">ATF</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#OPTEE"><span class="nav-number">3.2.</span> <span class="nav-text">OPTEE</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#U-Boot"><span class="nav-number">3.3.</span> <span class="nav-text">U-Boot</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Linux-Kernel"><span class="nav-number">
1833.4.</span> <span class="nav-text">Linux Kernel</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#lmt-virt%E8%BF%90%E8%A1%8C%E9%AA%8C%E8%AF%81"><span class="nav-number">4.</span> <span class="nav-text">lmt-virtè¿è¡éªè¯</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%90%AF%E5%8A%A8U-Boot-Kernel"><span class="nav-number">4.1.</span> <span class="nav-text">å¯å¨U-Boot+Kernel</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%90%AF%E5%8A%A8SPL-U-Boot-Kernel"><span class="nav-number">4.2.</span> <span class="nav-text">å¯å¨SPL+U-Boot+Kernel</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%90%AF%E5%8A%A8ATF-U-Boot-Kernel"><span class="nav-number">4.3.</span> <span class="nav-text">å¯å¨ATF+U-Boot+Kernel</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%90%AF%E5%8A%A8SPL-ATF-U-Boot-Kernel"><span class="nav-number">4.4.</span> <span class="nav-text">å¯å¨SPL+ATF+U-Boot+Kernel</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%90%AF%E5%8A%A8ATF-OPTEE-U-Boot-Kernel"><span class="nav-number">4.5.</span> <span class="nav-text">å¯å¨ATF+OPTEE+U-Boot+Kernel</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%90%AF%E5%8A%A8SPL-ATF-OPTEE-U-Boot-Kernel"><span class="nav-number">4.6.</span> <span class="nav-text">å¯å¨SPL+ATF+OPTEE+U-Boot+Kernel</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#lmt-safety-virt%E8%BF%90%E8%A1%8C%E9%AA%8C%E8%AF%81"><span class="nav-number">5.</span> <span class="nav-text">lmt-safety-virtè¿è¡éªè¯</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#lmt-virt%E5%92%8Clmt-safety-virt%E8%81%94%E5%90%88%E8%BF%90%E8%A1%8C"><span class="nav-number">6.</span> <span class="nav-text">lmt-virtålmt-safety-virtèåè¿è¡</span></a></li></ol></div> 184 </div> 185 <!--/noindex--> 186 187 <div class="site-overview-wrap sidebar-panel"> 188 <div class="site-author animated" itemprop="author" itemscope itemtype="http://schema.org/Person"> 189 <img class="site-author-image" itemprop="image" alt="Xinlu Wang" 190 src="/images/avatar.jpeg"> 191 <p class="site-author-name" itemprop="name">Xinlu Wang</p> 192 <div class="site-description" itemprop="description">ä¸ç§¯è·¬æ¥æ 以è³åé ä¸ç§¯å°æµæ ä»¥ææ±æµ·</div> 193</div> 194<div class="site-state-wrap animated"> 195 <nav class="site-state"> 196 <div class="site-state-item site-state-posts"> 197 <a href="/archives/"> 198 <span class="site-state-item-count">43</span> 199 <span class="site-state-item-name">æ¥å¿</span> 200 </a> 201 </div> 202 <div class="site-state-item site-state-categories"> 203 <a href="/categories/"> 204 <span class="site-state-item-count">9</span> 205 <span class="site-state-item-name">åç±»</span></a> 206 </div> 207 <div class="site-state-item site-state-tags"> 208 <a href="/tags/"> 209 <span class="site-state-item-count">70</span> 210 <span class="site-state-item-name">æ ç¾</span></a> 211 </div> 212 </nav> 213</div> 214 <div class="links-of-author animated"> 215 <span class="links-of-author-item"> 216 <a href="https://github.com/chasinglulu" title="GitHub â https://github.com/chasinglulu" rel="noopener me" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a> 217 </span> 218 <span class="links-of-author-item"> 219 <a href="mailto:[email protected]" title="E-Mail â mailto:[email protected]" rel="noopener me" target="_blank"><i class="fa fa-envelope fa-fw"></i>E-Mail</a> 220 </span> 221 <span class="links-of-author-item"> 222 <a href="https://weibo.com/5052275150" title="Weibo â https://weibo.com/5052275150" rel="noopener me" target="_blank"><i class="fab fa-weibo fa-fw"></i>Weibo</a> 223 </span> 224 </div> 225 226 </div> 227 </div> 228 </div> 229 230 231 <div class="sidebar-inner sidebar-blogroll"> 232 <div class="links-of-blogroll animated"> 233 <div class="links-of-blogroll-title"><i class="fa fa-globe fa-fw"></i> 234 龿¥ 235 </div> 236 <ul class="links-of-blogroll-list"> 237 <li class="links-of-blogroll-item"> 238 <a href="https://lore.kernel.org/qemu-devel/" title="https://lore.kernel.org/qemu-devel/" rel="noopener" target="_blank">Qemu</a> 239 </li> 240 <li class="links-of-blogroll-item"> 241 <a href="https://wiki.linuxfoundation.org/realtime/documentation/start" title="https://wiki.linuxfoundation.org/realtime/documentation/start" rel="noopener" target="_blank">RT_Linux</a> 242 </li> 243 </ul> 244 </div> 245 </div> 246 </aside> 247 248 249 </div> 250 251 <div class="main-inner post posts-expand"> 252 253 254 255 256 257<div class="post-block"> 258 259
260 261 <article itemscope itemtype="http://schema.org/Article" class="post-content" lang="zh-CN"> 262 <link itemprop="mainEntityOfPage" href="https://chasinglulu.github.io/posts/61970ccf/"> 263 264 <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"> 265 <meta itemprop="image" content="/images/avatar.jpeg"> 266 <meta itemprop="name" content="Xinlu Wang"> 267 </span> 268 269 <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"> 270 <meta itemprop="name" content="ç¹æ»´æ±è"> 271 <meta itemprop="description" content="ä¸ç§¯è·¬æ¥æ 以è³åé ä¸ç§¯å°æµæ ä»¥ææ±æµ·"> 272 </span> 273 274 <span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork"> 275 <meta itemprop="name" content="åºäºQemu LMTèæå¹³å°çbringup | ç¹æ»´æ±è"> 276 <meta itemprop="description" content=""> 277 </span> 278 <header class="post-header"> 279 <h1 class="post-title" itemprop="name headline"> 280 åºäºQemu LMTèæå¹³å°çbringup 281 </h1> 282 283 <div class="post-meta-container"> 284 <div class="post-meta"> 285 <span class="post-meta-item"> 286 <span class="post-meta-item-icon"> 287 <i class="far fa-calendar"></i> 288 </span> 289 <span class="post-meta-item-text">å表äº</span> 290 291 <time title="å建æ¶é´ï¼2023-11-25 02:00:28" itemprop="dateCreated datePublished" datetime="2023-11-25T02:00:28+08:00">2023-11-25</time> 292 </span> 293 <span class="post-meta-item"> 294 <span class="post-meta-item-icon"> 295 <i class="far fa-calendar-check"></i> 296 </span> 297 <span class="post-meta-item-text">æ´æ°äº</span> 298 <time title="ä¿®æ¹æ¶é´ï¼2024-09-24 15:39:19" itemprop="dateModified" datetime="2024-09-24T15:39:19+08:00">2024-09-24</time> 299 </span> 300 301 302 303 <span class="post-meta-item"> 304 305 <span class="post-meta-item-icon"> 306 <i class="far fa-comment"></i> 307 </span> 308 <span class="post-meta-item-text">Walineï¼</span> 309 310 <a title="waline" href="/posts/61970ccf/#waline" itemprop="discussionUrl"> 311 <span class="post-comments-count waline-comment-count" data-path="/posts/61970ccf/" itemprop="commentCount"></span> 312 </a> 313 </span> 314 315 316 <span class="post-meta-item" title="é 读次æ°"> 317 <span class="post-meta-item-icon"> 318 <i class="far fa-eye"></i> 319 </span> 320 <span class="post-meta-item-text">é 读次æ°ï¼</span> 321 <span class="waline-pageview-count" data-path="/posts/61970ccf/"></span> 322 </span> 323 324 <span class="post-meta-break"></span> 325 <span class="post-meta-item" title="æ¬æåæ°"> 326 <span class="post-meta-item-icon"> 327 <i class="far fa-file-word"></i> 328 </span> 329 <span class="post-meta-item-text">æ¬æåæ°ï¼</span> 330 <span>2.2k</span> 331 </span> 332 <span class="post-meta-item" title="é 读æ¶é¿"> 333 <span class="post-meta-item-icon"> 334 <i class="far fa-clock"></i> 335 </span> 336 <span class="post-meta-item-text">é 读æ¶é¿ ≈</span> 337 <span>8 åé</span> 338 </span> 339</div> 340 341 </div> 342 </header> 343 344 345 346 347 <div class="post-body" itemprop="articleBody"><p>å¨è¯çå¼åçåæï¼RTL代ç è¿å¨å¼åä¸ï¼FPGAååéªè¯å¹³å°ä¹æ²¡æå¯ç¨çç¯å¢ãè¿æ¶åæä»¬å¯ä»¥æ ¹æ®SoC specå¨Qemuä¸å¼åä¸ä¸ªæ°çVirtual Platformï¼é£ä¹BSP软件å¢éå°±å¯ä»¥æå宿ä¸äºè½¯ä»¶ç¯å¢çåå¤ï¼æ¯å¦æå°ç³»ç»ãè¿æ ·å½RTL0.1éæ¾åï¼æä»¬å¯ä»¥ç´æ¥å¤ç¨è¿äºè½¯ä»¶å¨FPGAéªè¯ï¼ä»èåå°æå»ºè½¯ä»¶ç¯å¢çååå缩å°éªè¯æ¶é´ãéçQemué颿¨¡æçå¤è®¾è¶æ¥è¶å¤ï¼æä»¬å¯ä»¥ææ´å¤ç软件functionå¨Qemuéé¢å®æå¼ååéªè¯ï¼ç¶ååè¿ç§»å°FPGAååå¹³å°ä¸è¿è¡éªè¯ï¼ä»èå®åè½¯ä»¶çæ¶åºæ¹é¢çé»è¾ãéè¿è¿æ ·çéªè¯ææ®µï¼è®©æä»¬è½¯ä»¶å夿åï¼ç¼©çFPGAçå ç¨æ¶é´ï¼åå°éªè¯ææ¬ã</p> 348<span id="more"></span> 349 350<hr> 351<ul> 352<li><strong>Qemu:</strong> v7.2.0</li> 353<li><strong>U-Boot:</strong> v2022.10</li> 354<li><strong>ATF:</strong> v2.10</li> 355<li><strong>OPTEE:</strong> v4.0.0</li> 356<li><strong>Linux Kernel:</strong> linux-6.1.12</li> 357<li><strong>aarch64-none-linux-gnu-gcc:</strong> 10.3.1 20210621</li> 358<li><strong>riscv32-unknown-linux-gnu-gcc:</strong> 12.2.0</li> 359</ul> 360<hr> 361<h3 id="è¯çä»ç»"><a href="#è¯çä»ç»" class="headerlink" title="è¯çä»ç»"></a>è¯çä»ç»</h3><p><img data-src="/images/29/lmt-arch.png" alt="lmt-arch"></p> 362<center>å¾1 lmtè¯ççæ¶æ</center> 363å¦ä¸å¾æç¤ºï¼å±ç¤ºäºè¯ç产åçæ¡å¾ï¼å·¦è¾¹æ¯åºäºARMç主åï¼å³è¾¹æ¯åºäºRISC-Vçä»åãè¿æ ·çè¯çæ¶ææ¯ç®åå¾å¤èªå¨é©¾é©¶ADASè¯ççè§£å³æ¹æ¡ï¼éè¿MCU Domainæ¥å®ç°è¯ççæ éè¯æãçè³æ¿æ¥ä¸é¨å车è§ç¸å ³çè§æ§åè½ã 364 365 366<p>è¯çæ¯å¼æç³»ç»æ¶æçï¼å å«ä¸¤ç§æä»¤éCPUï¼ARMåRISC-Vï¼ï¼å æ¤æä»¬å¨Qemué颿·»å äºä¸¤ä¸ªmachineï¼lmt-virtålmt-safety-virtï¼åè ç¨äºæ¨¡æARMç³»ç»é¨åï¼åé¢ç¨äºæ¨¡æRISC-Vç³»ç»é¨åï¼æåéè¿Qemuéé¢çå ±äº«å ååchardev socketå®ç°ä¸¤ä¸ªmachineçèå¨ï¼multi-process Qemuç交äºï¼ã</p> 367<p><img data-src="/images/29/mult-process-qemu.png" alt="mult-process-qemu"></p> 368<center>å¾2 multi-process QEMUçæ¶æ</center> 369 370 371<h3 id="å¯å¨ä»ç»"><a href="#å¯å¨ä»ç»" class="headerlink" title="å¯å¨ä»ç»"></a>å¯å¨ä»ç»</h3><p>å¨è¿è¡èµ·æ¥ä¹åï¼æä»¬å æç¡®æå°ç³»ç»æ¶åçç»ä»¶ä»¥åå®ä»¬çå¯å¨é¡ºåº</p> 372<ul> 373<li>ATFï¼æä¾EL3 runtime serviceï¼å ·ææ´ä¸ªç¡¬ä»¶ç³»ç»çå ¨é¨æé</li> 374<li>OPTEEï¼æä¾å¯ä¿¡æ§è¡ç¯å¢</li> 375<li>SPLï¼å®æBootloaderéåçå è½½ï¼ä»¥åDDRãClockçåå§å</li> 376<li>U-Bootï¼å è½½åå¯å¨ä¸åOSçéå</li> 377<li>Kernelï¼Linux kernel OSï¼å¸¸ç¨çOS</li> 378<li>initramfsï¼æå°çæä»¶ç³»ç»ï¼ç¨ä½ä¸´æ¶è·³è½¬</li> 379<li>Ubuntu Rootfsï¼æ ¹æä»¶ç³»ç»ï¼åæ¾å¨åå¨ä»è´¨ä¸ï¼éé¢å å«å¾å¤åºç¨ãåºåå·¥å ·</li> 380</ul> 381<h4 id="å¯å¨é¡ºåº"><a href="#å¯å¨é¡ºåº" class="headerlink" title="å¯å¨é¡ºåº"></a>å¯å¨é¡ºåº</h4><p><img data-src="/images/29/lmt-bootflow.png" alt="lmt-bootflow"></p> 382<center>å¾3 å¯å¨æµç¨</center> 383 384<ul> 385<li>SPLå°BL31 ATFãBL32 OPTEEåBL33 U-Bootä¸ä¸ªéåå è½½å°DDRï¼å°RISC-V Firmwareå è½½å°Safety SRAMä¸ï¼ç¶å跳转å°BL31 ATFæ§è¡</li> 386<li>
386ATFå®æåºæ¬çåå§åï¼ç¶å跳转å°BL32 OPTEEæ§è¡</li> 387<li>OPTEEå®æåºæ¬çåå§åï¼ç¶åè¿åå°ATFçæ§è¡ç¯å¢ä¸ï¼æåATFç´æ¥è·³è½¬å°U-Bootæ§è¡</li> 388<li>U-Boot宿åå§åï¼å¤è®¾çåå§åï¼ä»eMMC/Nor Flashçåªä»ä¸å è½½Kernelãinitramfsådtbçéåæä»¶ï¼ç¶å跳转å°Kernelå¼å§æ§è¡</li> 389<li>Kernel宿å¯å¨åå§åï¼æèµ·åºç¨ç¨åº</li> 390</ul> 391<h3 id="éåæå»º"><a href="#éåæå»º" class="headerlink" title="éåæå»º"></a>éåæå»º</h3><h4 id="ATF"><a href="#ATF" class="headerlink" title="ATF"></a>ATF</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">git clone -b atf-v2.10 https://github.com/chasinglulu/arm-trusted-firmware.git</span><br><span class="line">cd arm-trusted-firmware</span><br><span class="line">make PLAT=lmt CROSS_COMPILE=aarch64-none-linux-gnu-</span><br><span class="line"></span><br><span class="line">or</span><br><span class="line">make PLAT=lmt CROSS_COMPILE=aarch64-none-linux-gnu- DEBUG=1 #debug</span><br><span class="line"></span><br><span class="line">or</span><br><span class="line">make PLAT=lmt CROSS_COMPILE=aarch64-none-linux-gnu- DEBUG=1 LOG_LEVEL=50 #verbose mode</span><br><span class="line"></span><br><span class="line">or</span><br><span class="line">make PLAT=lmt CROSS_COMPILE=aarch64-none-linux-gnu- SPD=opteed #with BL32 optee</span><br><span class="line"></span><br></pre></td></tr></table></figure> 392 393<h4 id="OPTEE"><a href="#OPTEE" class="headerlink" title="OPTEE"></a>OPTEE</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">git clone -b optee_os-4.0.0 https://github.com/chasinglulu/optee_os.git</span><br><span class="line">cd optee_os</span><br><span class="line">export ARCH=arm</span><br><span class="line"></span><br><span class="line">make CROSS_COMPILE64=aarch64-none-linux-gnu- CROSS_COMPILE_ta_arm64=aarch64-none-linux-gnu- CROSS_COMPILE_ta_arm32=arm-linux-gnueabi- PLATFORM=ax-lmt</span><br><span class="line"></span><br><span class="line">or</span><br><span class="line">make CROSS_COMPILE64=aarch64-none-linux-gnu- CROSS_COMPILE_ta_arm64=aarch64-none-linux-gnu- CROSS_COMPILE_ta_arm32=arm-linux-gnueabi- PLATFORM=ax-lmt DEBUG=1 #debug</span><br></pre></td></tr></table></figure> 394 395<h4 id="U-Boot"><a href="#U-Boot" class="headerlink" title="U-Boot"></a>U-Boot</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">git clone -b uboot-2022.10 https://github.com/chasinglulu/u-boot.git</span><br><span class="line">cd u-boot</span><br><span class="line">make CROSS_COMPILE=aarch64-none-linux-gnu- ARCH=arm64 lmt-qemu-virt_defconfig</span><br><span class="line">make -j4</span><br></pre></td></tr></table></figure> 396 397<h4 id="Linux-Kernel"><a href="#Linux-Kernel" class="headerlink" title="Linux Kernel"></a>Linux Kernel</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">git clone -b linux-v6.1-rt https://github.com/chasinglulu/linux.git</span><br><span class="line">cd linux</span><br><span class="line">make CROSS_COMPILE=aarch64-none-linux-gnu- ARCH=arm64 lmt-tiny_defconfig</span><br><span class="line">make -j64</span><br></pre></td></tr></table></figure> 398 399 400<h3 id="lmt-virtè¿è¡éªè¯"><a href="#lmt-virtè¿è¡éªè¯" class="headerlink" title="lmt-virtè¿è¡éªè¯"></a>lmt-virtè¿è¡éªè¯</h3><h4 id="å¯å¨U-Boot-Kernel"><a href="#å¯å¨U-Boot-Kernel" class="headerlink" title="å¯å¨U-Boot+Kernel"></a>å¯å¨U-Boot+Kernel</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">qemu-system-aarch64 -M lmt-virt,virt=on,emmc=on -m 4G -display none -device loader,addr=0x400200000,file=/path/to/u-boot/u-boot.bin,cpu-num=0 -drive file=/path/to/emmc.img,format=raw,<span class="keyword">if</span>=emmc -serial stdio</span><br></pre></td></tr></table></figure> 401 402<p><code>virt=on</code>ï¼ä½¿è½CPUçEL2<br><code>secure=off</code>ï¼å ³éCPUçEL3<br><code>emmc=on</code>ï¼ä½¿è½eMMCæ¨¡ææ¯æ</p> 403<p>U-Bootæ¢å¯ä»¥è¿è¡å¨EL2ä¹å¯ä»¥è¿è¡å¨EL3ä¸ï¼ä½æ¯æå¼EL3çæ¶åï¼éè¦è¿è¡ATFï¼ä¸ç¶Kernelåèµ·PSCI访é®ä¼è§¦åpanicã</p> 404<p><img data-src="/images/29/uboot_kernel.gif" alt="uboot_kernel"></p> 405<p>å¯å¨æ¥å¿éä»¶ï¼<a href="/images/29/uboot_kernel.txt">U-Boot->kernel Booting</a></p>
406<h4 id="å¯å¨SPL-U-Boot-Kernel"><a href="#å¯å¨SPL-U-Boot-Kernel" class="headerlink" title="å¯å¨SPL+U-Boot+Kernel"></a>å¯å¨SPL+U-Boot+Kernel</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">qemu-system-aarch64 -M lmt-virt,virt=on,secure=on,emmc=on -m 4G -display none -device loader,addr=0x00,file=/path/to/u-boot/spl/u-boot-spl.bin,cpu-num=0 -device loader,addr=0x400200000,file=/path/to/u-boot/u-boot.img -drive file=/path/to/emmc.img,format=raw,<span class="keyword">if</span>=emmc -serial stdio</span><br></pre></td></tr></table></figure> 407<p><code>virt=on</code>ï¼ä½¿è½CPUçEL2<br><code>secure=on</code>ï¼ä½¿è½CPUçEL3<br><code>emmc=on</code>ï¼ä½¿è½eMMCæ¨¡ææ¯æ</p> 408<p>å 为SPLåU-Bootæ¢å¯ä»¥è¿è¡å¨EL2ä¹å¯ä»¥è¿è¡å¨EL3ï¼å æ¤<code>virt=</code>å<code>secure=</code>两个é项æ¢å¯ä»¥<code>on</code>ä¹å¯ä»¥<code>off</code>ï¼ä¸¤ä¸ªé项å¯ä»¥éæç»åï¼ç¨äºéªè¯ä¸åç使ç¨åºæ¯ã</p> 409<p><code>secure=off</code>ï¼å ³éCPUçEL3ï¼Kernelä¸çPSCI访é®è¯·æ±é½ç±Qemuæè·è¿è¡å¤çãå¦æä½¿è½EL3ï¼å¿ é¡»è¿è¡ATF软件ï¼ä¸ç¶KernelååºPSCI请æ±ä¼è§¦åpanicã</p> 410<p><img data-src="/images/29/spl_uboot_kernel.gif" alt="spl_uboot_kernel"></p> 411<p>å¯å¨æ¥å¿éä»¶ï¼<a href="/images/29/spl_uboot_kernel.txt">ATF->U-Boot->kernel Booting</a></p> 412<h4 id="å¯å¨ATF-U-Boot-Kernel"><a href="#å¯å¨ATF-U-Boot-Kernel" class="headerlink" title="å¯å¨ATF+U-Boot+Kernel"></a>å¯å¨ATF+U-Boot+Kernel</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">qemu-system-aarch64 -M lmt-virt,virt=on,secure=on,emmc=on -m 4G -display none -device loader,addr=0x400104000,file=/path/to/arm-trusted-firmware/build/lmt/release/bl31.bin,cpu-num=0 -device loader,addr=0x400200000,file=/path/to/u-boot/u-boot.bin -drive file=/path/to/emmc.img,format=raw,<span class="keyword">if</span>=emmc -serial stdio</span><br></pre></td></tr></table></figure> 413<p><code>virt=on</code>ï¼ä½¿è½CPUçEL2<br><code>secure=on</code>ï¼ä½¿è½CPUçEL3<br><code>emmc=on</code>ï¼ä½¿è½eMMCæ¨¡ææ¯æ</p> 414<p><img data-src="/images/29/atf_uboot_kernel.gif" alt="atf_uboot_kernel"></p> 415<p>å¯å¨æ¥å¿éä»¶ï¼<a href="/images/29/atf_uboot_kernel.txt">ATF->U-Boot->kernel Booting</a></p> 416<h4 id="å¯å¨SPL-ATF-U-Boot-Kernel"><a href="#å¯å¨SPL-ATF-U-Boot-Kernel" class="headerlink" title="å¯å¨SPL+ATF+U-Boot+Kernel"></a>å¯å¨SPL+ATF+U-Boot+Kernel</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">qemu-system-aarch64 -M lmt-virt,virt=on,secure=on,emmc=on -m 4G -display none -device loader,addr=0x0,file=/path/to/u-boot/spl/u-boot-spl.bin,cpu-num=0 -device loader,addr=0x400104000,file=/path/to/arm-trusted-firmware/build/lmt/release/bl31.bin -device loader,addr=0x400200000,file=/path/to/u-boot/u-boot.bin -drive file=/path/to/emmc.img,format=raw,<span class="keyword">if</span>=emmc -serial stdio</span><br></pre></td></tr></table></figure> 417 418<p><code>virt=on</code>ï¼ä½¿è½CPUçEL2<br><code>secure=on</code>ï¼ä½¿è½CPUçEL3<br><code>emmc=on</code>ï¼ä½¿è½eMMCæ¨¡ææ¯æ</p> 419<p><img data-src="/images/29/spl_atf_uboot_kernel.gif" alt="spl_atf_uboot_kernel"></p> 420<p>å¯å¨æ¥å¿éä»¶ï¼<a href="/images/29/spl_atf_uboot_kernel.txt">SPL->ATF->U-Boot->kernel Booting</a></p> 421<h4 id="å¯å¨ATF-OPTEE-U-Boot-Kernel"><a href="#å¯å¨ATF-OPTEE-U-Boot-Kernel" class="headerlink" title="å¯å¨ATF+OPTEE+U-Boot+Kernel"></a>å¯å¨ATF+OPTEE+U-Boot+Kernel</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">qemu-system-aarch64 -M lmt-virt,virt=on,secure=on,emmc=on -m 4G -display none -device loader,addr=0x400104000,file=/path/to/arm-trusted-firmware/build/lmt/release/bl31.bin,cpu-num=0 -device loader,addr=0x400200000,file=/path/to/u-boot/u-boot.bin -device loader,addr=0x404000000,file=/path/to/optee_os/out/arm-plat-ax/core/tee-pager_v2.bin -drive file=/path/to/emmc.img,format=raw,<span class="keyword">if</span>=emmc -serial stdio</span><br></pre></td></tr></table></figure> 422<p><code>virt=on</code>ï¼ä½¿è½CPUçEL2<br><code>secure=on</code>ï¼ä½¿è½CPUçEL3<br><code>emmc=on</code>ï¼ä½¿è½eMMCæ¨¡ææ¯æ</p> 423<p><img data-src="/images/29/atf_optee_uboot_kernel.gif" alt="atf_optee_uboot_kernel"></p> 424<p>å¯å¨æ¥å¿éä»¶ï¼<a href="/images/29/atf_optee_uboot_kernel.txt">ATF->OPTEE->U-Boot->kernel Booting</a></p> 425<h4 id="å¯å¨SPL-ATF-OPTEE-U-Boot-Kernel"><a href="#å¯å¨SPL-ATF-OPTEE-U-Boot-Kernel" class="headerlink" title="å¯å¨SPL+ATF+OPTEE+U-Boot+Kernel"></a>å¯å¨SPL+ATF+OPTEE+U-Boot+Kernel</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">qemu-system-aarch64 -M lmt-virt,virt=on,secure=on,emmc=on -m 4G -display none -device loader,addr=0x0,file=/path/to/u-boot/spl/u-boot-spl.bin,cpu-num=0 -device loader,addr=0x400104000,file=/path/to/arm-trusted-firmware/build/lmt/release/bl31.bin -device loader,addr=0x400200000,file=/path/to/u-boot/u-boot.bin -device loader,addr=0x404000000,file=/path/to/optee_os/out/arm-plat-ax/core/tee-pager_v2.bin -drive file=/path/to/emmc.img,format=raw,<span class="keyword">if</span>=emmc -serial stdio</span><br></pre></td></tr></table></figure> 426 427<p><code>virt=on</code>ï¼ä½¿è½CPUçEL2<br><code>secure=on</code>ï¼ä½¿è½CPUçEL3<br><code>emmc=on</code>ï¼ä½¿è½eMMCæ¨¡ææ¯æ</p> 428<p><img data-src="/images/29/spl_atf_optee_uboot_kernel.gif" alt="spl_atf_optee_uboot_kernel"></p> 429<p>å¯å¨æ¥å¿éä»¶ï¼<a href="/images/29/spl_atf_optee_uboot_kernel.txt">SPL->ATF->OPTEE->U-Boot->kernel Booting</a></p> 430<h3 id="lmt-safety-virtè¿è¡éªè¯"><a href="#lmt-safety-virtè¿è¡éªè¯" class="headerlink" title="lmt-safety-virtè¿è¡éªè¯"></a>lmt-safety-virtè¿è¡éªè¯</h3><p>lmt-safety-virtèæå¹³å°æ¯åºäºRISC-V 32-bitæ¶æå¼åçï¼å¨U-Booté颿·»å äºlmt-safety-virtå¹³å°çæ¯æãä¸é¢æ¯U-Bootç¼è¯æå»ºå½ä»¤ï¼</p> 431<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> u-boot</span><br><span class="line">make ARCH=riscv CROSS_COMPILE=riscv32-unknown-linux-gnu- lmt-qemu-riscv-without-dram_defconfig</span><br><span class="line">make ARCH=riscv CROSS_COMPILE=riscv32-unknown-linux-gnu- -j4</span><br></pre></td></tr></table></figure> 432 433<p>ä¸é¢æ¯è¿è¡éªè¯å½ä»¤ï¼</p> 434<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">
434qemu-system-riscv32 -M lmt-safety-virt -m 1M -display none -device loader,file=/path/to/u-boot/u-boot-with-spl.bin,addr=0x60c00000,cpu-num=0 -serial stdio</span><br></pre></td></tr></table></figure> 435 436<p><img data-src="/images/29/safety-virt.png" alt="lmt-safety-virt"></p> 437<h3 id="lmt-virtålmt-safety-virtèåè¿è¡"><a href="#lmt-virtålmt-safety-virtèåè¿è¡" class="headerlink" title="lmt-virtålmt-safety-virtèåè¿è¡"></a>lmt-virtålmt-safety-virtèåè¿è¡</h3><p>SoCæ¯å¼æçï¼éé¢å³éæäºARM Cortex-Aç³»åçCPUï¼ä¹éæäºRISC-Vç³»åçCPUãå æ¤ä¸ç§æ¶æçCPUå¼åä¸ä¸ªå¯¹åºçèæå¹³å°ï¼ä¸¤ä¸ªå以ä¸çèæå¹³å°å¯¹åºå¤ä¸ªQemuè¿ç¨ï¼å°±æ¶åå°å¤ä¸ªQemuä¹é´çèå¨ï¼ç¨äºä»¿çå¼ææ ¸ä¹é´ç交äºåæ§å¶é»è¾ã</p> 438<p>ä¸é¢æ¯å¯å¨lmt-virtçå½ä»¤ï¼</p> 439<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">qemu-system-aarch64 -M lmt-virt,riscv-memdev=iram-safety -m 4G -display none -device loader,addr=0x400200000,file=/path/to/u-boot/u-boot.bin,cpu-num=0 -object memory-backend-file,size=512K,id=iram-safety,share=on,mem-path=/path/to/qemu-shm,discard-data=on -rp-path /tmp/coemu -serial stdio -semihosting</span><br></pre></td></tr></table></figure> 440 441<p><code>/tmp/coemu</code>ï¼å¦æç®å½ä¸åå¨ï¼<em>mkdir</em>å建<br><code>riscv-memdev</code>ï¼æå®IRAMçå åå端IDï¼ç±machine使ç¨</p> 442<p>ä¸é¢æ¯å¯å¨lmt-safety-virtçå½ä»¤ï¼</p> 443<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">qemu-system-riscv32 -M lmt-safety-virt,standalone=off,memdev=iram-safety -m 2M -display none -chardev socket,id=coemu,path=/tmp/coemu/qemu_rport_machine_lmt_soc_cosim_rp -object memory-backend-file,size=512K,id=iram-safety,share=on,mem-path=/path/to/qemu-shm,discard-data=on -serial stdio</span><br></pre></td></tr></table></figure> 444 445<p><code>standalone=</code>ï¼æå®machineçè¿è¡æ¨¡å¼ï¼åç¬æè èå¨ï¼<br><code>memdev=</code>ï¼æå®machineæä½¿ç¨å åå端çID</p> 446<p><img data-src="/images/29/both-virt.gif" alt="both-virt"></p> 447<p>AArch64ä¾§çå¯å¨æ¥å¿éä»¶ï¼<a href="/images/29/aarch64_booting.txt">AArch64 Booting</a></p> 448<p>RISC-Vä¾§çå¯å¨æ¥å¿éä»¶ï¼<a href="/images/29/riscv_booting.txt">RISC-V Booting</a></p> 449<p>ç®ååªæ¯åå°äºAArch64ä¾§è½å¤æ§å¶RISC-Vä¾§çå¯å¨ï¼ä¸¤ä¾§çé信交äºè¿æ²¡æå¼åï¼æ¯å¦å¨Linuxå æ ¸ä¸AArch64ä¸RISC-Vè¿è¡äº¤äºè®¿é®çã</p> 450 451 </div> 452 453 454 455 456 457 <footer class="post-footer"><div class="post-widgets"> 458 <div id="needsharebutton-postbottom"> 459 <span class="btn"> 460 <i class="fa fa-share-alt" aria-hidden="true"></i> 461 </span> 462 </div> 463 </div> 464 <div class="reward-container"> 465 <div>请æä¸æ¯åå¡å§ï¼</div> 466 <button> 467 èµèµ 468 </button> 469 <div class="post-reward"> 470 <div> 471 <img src="/images/wechatpay.png" alt="Xinlu Wang 微信"> 472 <span>微信</span> 473 </div> 474 <div> 475 <img src="/images/alipay.jpg" alt="Xinlu Wang æ¯ä»å®"> 476 <span>æ¯ä»å®</span> 477 </div> 478 479 </div> 480</div> 481 482 483 484<div class="post-copyright"> 485<ul> 486 <li class="post-copyright-author"> 487 <strong>æ¬æä½è ï¼ </strong>Xinlu Wang 488 </li> 489 <li class="post-copyright-link"> 490 <strong>æ¬æé¾æ¥ï¼</strong> 491 <a href="https://chasinglulu.github.io/posts/61970ccf/" title="åºäºQemu LMTèæå¹³å°çbringup">https://chasinglulu.github.io/posts/61970ccf/</a> 492 </li> 493 <li class="post-copyright-license"> 494 <strong>çæå£°æï¼ </strong>æ¬åå®¢æææç« é¤ç¹å«å£°æå¤ï¼åéç¨ <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="noopener" target="_blank"><i class="fab fa-fw fa-creative-commons"></i>BY-NC-SA</a> 许å¯åè®®ã转载请注æåºå¤ï¼ 495 </li> 496</ul> 497</div> 498 499 500 501 502 <div class="post-nav"> 503 <div class="post-nav-item"> 504 <a href="/posts/8ef16649/" rel="prev" title="åºäºQemuæå»ºXen on ARMå¼åç¯å¢"> 505 <i class="fa fa-angle-left"></i> åºäºQemuæå»ºXen on ARMå¼åç¯å¢ 506 </a> 507 </div> 508 <div class="post-nav-item"> 509 </div> 510 </div> 511 </footer> 512 </article> 513</div> 514 515 516 517 518 519 520 <div class="comments" id="waline"></div> 521</div> 522 </main> 523 524 <footer class="footer"> 525 <div class="footer-inner"> 526 527 <div class="copyright"> 528 © 2018 â 529 <span itemprop="copyrightYear">2024</span> 530 <span class="with-love"> 531 <i class="fa fa-anchor"></i> 532 </span><a href="http://abitacc.com/about" rel="noopener" target="_blank">Xinlu Wang</a> 533 <!-- annotation 534 <span class="author" itemprop="copyrightHolder">Xinlu Wang</span> 535 --> 536 </div> 537<div class="wordcount"> 538 <span class="post-meta-item"> 539 <span class="post-meta-item-icon"> 540 <i class="fa fa-chart-line"></i> 541 </span>
542 <span>ç«ç¹æ»åæ°ï¼</span> 543 <span title="ç«ç¹æ»åæ°">82k</span> 544 </span> 545 <span class="post-meta-item"> 546 <span class="post-meta-item-icon"> 547 <i class="fa fa-coffee"></i> 548 </span> 549 <span>ç«ç¹é 读æ¶é¿ ≈</span> 550 <span title="ç«ç¹é 读æ¶é¿">4:57</span> 551 </span> 552</div> 553<div class="busuanzi-count"> 554 <span class="post-meta-item" id="busuanzi_container_site_uv"> 555 <span class="post-meta-item-icon"> 556 <i class="fa fa-user"></i> 557 </span> 558 <span class="site-uv" title="æ»è®¿å®¢é"> 559 <span id="busuanzi_value_site_uv"></span> 560 </span> 561 </span> 562 <span class="post-meta-item" id="busuanzi_container_site_pv"> 563 <span class="post-meta-item-icon"> 564 <i class="fa fa-eye"></i> 565 </span> 566 <span class="site-pv" title="æ»è®¿é®é"> 567 <span id="busuanzi_value_site_pv"></span> 568 </span> 569 </span> 570</div> 571 572 </div> 573 </footer> 574 575 576 <div class="toggle sidebar-toggle" role="button"> 577 <span class="toggle-line"></span> 578 <span class="toggle-line"></span> 579 <span class="toggle-line"></span> 580 </div> 581 <div class="sidebar-dimmer"></div> 582 <div class="back-to-top" role="button" aria-label="è¿åé¡¶é¨"> 583 <i class="fa fa-arrow-up fa-lg"></i> 584 <span>0%</span> 585 </div> 586 <div class="reading-progress-bar"></div> 587 <a role="button" class="book-mark-link book-mark-link-fixed"></a> 588 589 <a href="https://github.com/chasinglulu" class="github-corner" title="å¨ GitHub ä¸å ³æ³¨æ" aria-label="å¨ GitHub ä¸å ³æ³¨æ" rel="noopener" target="_blank"><svg width="80" height="80" viewBox="0 0 250 250" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a> 590 591<noscript> 592 <div class="noscript-warning">Theme NexT works best with JavaScript enabled</div> 593</noscript> 594 595 596 597
597<script size="300" alpha="0.6" zIndex="-1" src="https://cdnjs.cloudflare.com/ajax/libs/ribbon.js/1.0.2/ribbon.min.js"></script>
597 598
598<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous"></script>
598 599
599<script src="https://cdnjs.cloudflare.com/ajax/libs/lozad.js/1.16.0/lozad.min.js" integrity="sha256-mOFREFhqmHeQbXpK2lp4nA3qooVgACfh88fpJftLBbc=" crossorigin="anonymous"></script>
vendor: 1 bytes, line 599
599
600<script src="/js/comments.js"></script>
600<script src="/js/utils.js"></script>
600<script src="/js/motion.js"></script>
600<script src="/js/schemes/muse.js"></script>
600<script src="/js/next-boot.js"></script>
600<script src="/js/bookmark.js"></script>
600 601 602
602<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-generator-searchdb/1.4.1/search.js" integrity="sha256-1kfA5uHPf65M5cphT2dvymhkuyHPQp5A53EGZOnOLmc=" crossorigin="anonymous"></script>
vendor: 1 bytes, line 602
602
603<script src="/js/third-party/search/local-search.js"></script>
603 604 605 606 607 608 609 610 611 612
612<script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
612 613 614 615 616 617
617<script src="https://cdnjs.cloudflare.com/ajax/libs/quicklink/2.3.0/quicklink.umd.js" integrity="sha256-yvJQOINiH9fWemHn0vCA5lsHWJaHs6/ZmO+1Ft04SvM=" crossorigin="anonymous"></script>
617 618
618<script class="next-config" data-name="quicklink" type="application/json">{"enable":true,"home":false,"archive":false,"delay":true,"timeout":3000,"priority":true,"url":"https://chasinglulu.github.io/posts/61970ccf/"}</script>
618 619
619<script src="/js/third-party/quicklink.js"></script>
vendor: 1 bytes, line 619
619
620<script class="next-config" data-name="waline" type="application/json">{"lang":"zh-CN","enable":true,"serverURL":"www.chasinglulu.cn","cssUrl":"https://unpkg.com/@waline/client@v2/dist/waline.css","commentCount":true,"pageview":true,"placeholder":"请ææè¯è®ºå","avatar":"mm","meta":["nick","mail"],"pageSize":10,"comment_count":true,"requiredFields":["mail"],"libUrl":"https://cdn.jsdelivr.net/npm/@waline/[email protected]/dist/waline.js","emoji":["https://cdn.jsdelivr.net/gh/walinejs/[email protected]/tw-emoji/"],"el":"#waline","comment":true,"path":"/posts/61970ccf/"}</script>
620 621<link rel="stylesheet" href="https://unpkg.com/@waline/client@v2/dist/waline.css">
622<script> 623document.addEventListener('page:loaded', () => { 624 NexT.utils.loadComments(CONFIG.waline.el).then(() => 625 NexT.utils.getScript(CONFIG.waline.libUrl, { condition: window.Waline }) 626 ).then(() => 627 Waline.init(Object.assign({}, CONFIG.waline,{ el: document.querySelector(CONFIG.waline.el) })) 628 ); 629}); 630</script>
630 631<div id="needsharebutton-float"> 632 <span class="btn"> 633 <i class="fa fa-share-alt" aria-hidden="true"></i> 634 </span> 635 </div> 636
636<script src="//cdn.jsdelivr.net/gh/theme-next/theme-next-needmoreshare2@1/needsharebutton.min.js"></script>
636 637
637<script> 638 pbOptions = {}; 639 pbOptions.iconStyle = "default"; 640 pbOptions.boxForm = "horizontal"; 641 pbOptions.position = "bottomCenter"; 642 pbOptions.networks = "Weibo,Wechat,Douban,QQZone,Mailto"; 643 new needShareButton('#needsharebutton-postbottom', pbOptions); 644 flOptions = {}; 645 flOptions.iconStyle = "box"; 646 flOptions.boxForm = "vertical"; 647 flOptions.position = "topRight"; 648 flOptions.networks = "Weibo,Wechat,Douban,QQZone,Mailto"; 649 new needShareButton('#needsharebutton-float', flOptions); 650 </script>
650 651</body> 652</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.