迁移学习(Deep CORAL)《Deep CORAL: Correlation Alignment for Deep Domain Adaptation》

论文信息

论文标题:Deep CORAL: Correlation Alignment for Deep Domain Adaptation
论文作者:Baochen Sun, Kate Saenko
论文来源:ECCV 2016
论文地址:download 
论文代码:download
引用次数:2203

1 介绍

  解决的问题:深度神经网络可以在大规模的标注数据中学校到特征,但是输入数据分布不同的时候泛化不是很好。因此提出了域适应来弥补性能。本文针对目标域没有标注数据情况,对 $\text{CORAL}$ 进行了改进。 

  $\text{CORAL}$ 方法用线性变换方法将源域和目标域分布的二阶统计特征进行对齐,对于无监督域适应效果很好。问题出在依赖的是线性变换,而且不是端到端训练。训练分为两步,首先提取特征,应用变换,然后训练 $\text{SVM}$ 分类。

2 方法

  模型框架:

  

  设源域训练样本 $D_{s}=\left\{\mathrm{x}_{\mathrm{i}}\right\}, \mathrm{x} \in \mathbb{R}^{\mathrm{d}}$ ,标签 $L_{s}=y_{i}, i \in\{1, \cdots, L\}$。无标签的目标域数据  $D_{T}=\left\{\mathrm{u}_{\mathrm{i}}\right\}, \mathrm{u} \in \mathbb{R}^{\mathrm{d}}$  。其中,$d$  为网络  $\mathrm{fc} 8$  的输出维度。令  $D_{S}^{i j}$、$D_{T}^{i j}$  分别表示第  $i$  个源域、目标域样本的第  $j$  维特征。$C_{S}\left(C_{T}\right)$  表示特征协方差矩阵。

  $\text{CORAL loss}$ 是源域和目标域特征的 协方差距离:

    $\ell_{C O R A L}=\frac{1}{4 d^{2}}\left\|C_{S}-C_{T}\right\|_{F}^{2}  \quad\quad\quad(1)$

  其中,

    $C_{S}=\frac{1}{n_{S}-1}\left(D_{S}^{\top} D_{S}-\frac{1}{n_{S}}\left(\mathbf{1}^{\top} D_{S}\right)^{\top}\left(\mathbf{1}^{\top} D_{S}\right)\right) \quad\quad\quad(2)$

    $C_{T}=\frac{1}{n_{T}-1}\left(D_{T}^{\top} D_{T}-\frac{1}{n_{T}}\left(\mathbf{1}^{\top} D_{T}\right)^{\top}\left(\mathbf{1}^{\top} D_{T}\right)\right)\quad\quad\quad(3)$

  其中,$\mathbf{1} $ 代表全 $1$ 的列向量。

  上述公式的梯度表达式:

    $\frac{\partial \ell_{C O R A L}}{\partial D_{S}^{i j}}=\frac{1}{d^{2}\left(n_{S}-1\right)}\left(\left(D_{S}^{\top}-\frac{1}{n_{S}}\left(\mathbf{1}^{\top} D_{S}\right)^{\top} \mathbf{1}^{\top}\right)^{\top}\left(C_{S}-C_{T}\right)\right)^{i j}\quad\quad\quad(4)$

    $\frac{\partial \ell_{C O R A L}}{\partial D_{T}^{i j}}=-\frac{1}{d^{2}\left(n_{T}-1\right)}\left(\left(D_{T}^{\top}-\frac{1}{n_{T}}\left(\mathbf{1}^{\top} D_{T}\right)^{\top} \mathbf{1}^{\top}\right)^{\top}\left(C_{S}-C_{T}\right)\right)^{i j}\quad\quad\quad(5)$

  损失函数:

    $\ell=\ell_{C L A S S .}+\sum\limits _{i=1}^{t} \lambda_{i} \ell_{C O R A L}\quad\quad\quad(6)$

 

 

DeepCORAL(
  (sharedNet): AlexNet(
    (features): Sequential(
      (0): Conv2d(3, 64, kernel_size=(11, 11), stride=(4, 4), padding=(2, 2))
      (1): ReLU(inplace=True)
      (2): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)
      (3): Conv2d(64, 192, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))
      (4): ReLU(inplace=True)
      (5): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)
      (6): Conv2d(192, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
      (7): ReLU(inplace=True)
      (8): Conv2d(384, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
      (9): ReLU(inplace=True)
      (10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
      (11): ReLU(inplace=True)
      (12): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)
    )
    (classifier): Sequential(
      (0): Dropout(p=0.5, inplace=False)
      (1): Linear(in_features=9216, out_features=4096, bias=True)
      (2): ReLU(inplace=True)
      (3): Dropout(p=0.5, inplace=False)
      (4): Linear(in_features=4096, out_features=4096, bias=True)
      (5): ReLU(inplace=True)
    )
  )
  (fc): Linear(in_features=4096, out_features=31, bias=True)
)

 

因上求缘,果上努力~~~~ 作者:加微信X466550探讨,转载请注明原文链接:http://www.cnblogs.com/BlairGrowing/p/17067133.html

本文转载于网络 如有侵权请联系删除

相关文章

  • 《重构》第三章 - 读后感(坏味道-“长类和长参数”)

    溜达一圈,据说公司又有同事利用工作时间考取了某某研究生。不知不觉中又开始焦虑,人比人累死人。本人一天写点笔记,从根本上就是为了克服毕业之后那种发自内心的恐惧之感,我可不是那种麻木的人,但同样不是那种对自己恨的人。究其恐惧的本质,还是边界不清导致的,我们无法做到精通所有行业,所以我们的对比对象必然要限定于自己所在的行业,跨行业比对是没有任何意义的,在自己所在的行业中,寻找同等背景和水平的伙伴才是真正属于自己的真正赛道,至于行业中厉害的人往往就是我们学习的榜样。相比自己比较弱的人往往是我们群众基础。所以明晰自己的定位是很重要的,那是我们不骄不躁,保持良好心态的基础。在此基础上才可能发生真正的提升。但总归一句话:见贤思齐!上次说的《重构》第三章代码中的坏味道第一就是重复的代码和过长的函数。其中重复的代码要根据条件进行抽离,对于过长的代码我们需要进行提炼。注释、条件语句以及循环语句都是重构的标志点。这次我们主要看一下过大的类和过长的参数。为什么过长的类和过长的参数是坏味道?假设我们的代码很长或者一个函数的参数很多,那么我们在穿参数的时候也许就会懵,假设我们这个函数还是一个多态的,那估计开发人员

  • JS 设计模式之抽象工厂模式(创建型)

    工厂模式·抽象工厂——理解“开放封闭”上一节提到工厂模式中的简单工厂,这节开始理解抽象工厂。1、从一个不简单的简单工厂开始在实际的业务中,我们往往面对的复杂度并非数个类、一个工厂可以解决,而是需要动用多个工厂。我们来看一个简单工厂函数:functionFactory(name,age,career){ letwork switch(career){ case'coder': work=['写代码','修Bug'] break case'productmanager': work=['写PRD','催更'] break case'boss': work=['喝茶','看报'] case'xxx': //其它工种的职责分配 ... returnnewUser(name,age,career,work) }复制乍一看没什么问题,但是经不起推敲呀。首先,我们把Boss这个角色和普通员工塞进了一个

  • 【Hooks】:[组]How to useReducer in React

    目录 Part1:WhatisareducerinJavaScript? Part2:HowtouseReducerinReact? 2.1.ReducerinReact 2.2.React'suseReducerHook Part3:WhataboutuseState?Can’tweusethatinstead?复制Part1:WhatisareducerinJavaScript?TheconceptofaReducerbecamepopularinJavaScriptwiththeriseofReduxasstatemanagementsolutionforReact.Butnoworries,youdon'tneedtolearnReduxtounderstandReducers.Basicallyreducersaretheretomanagestateinanapplication.Forinstance,ifauserwritessomethinginanHTMLinputfield,theapplicationhastomanagethisUIstat

  • 不想用 Swagger?可以试试这个神器!

    1.概述2.快速入门3.高级用法666.彩蛋1.概述在《芋道SpringBootAPI接口文档Swagger入门》一文中,我们一起学习了如何使用Swagger生成接口文档。但是狗芳嫌弃需要在Controller上添加一堆@ApiOperation、@ApiOperation注解,对代码有一定的侵入性,就抱着艿艿的大腿,跪求有没其它解决方案。抱大腿艿艿拍了拍狗芳的?头,当然没问题,我们可以使用JApiDocs工具,它可以基于Controller上的Java注释,直接生成接口文档。效果如下图所示:效果图友情提示:JApiDocs的GitHub地址是https://github.com/YeDaxia/JApiDocs。2.快速入门看完了JApiDocs生成的接口文档的效果,我们一起来快速入门下。完整的示例项目,可见https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-24/lab-24-apidoc-japidocs地址,代码如下图所示:项目代码下面,我们来瞅一瞅如何使用~2.1引入依赖在pom.xml文件中,引入japidoc

  • 【云+社区年度征文】云直播:你该如何关闭直播推流鉴权

    导读:使用腾讯云直播时,每次推流都需要生成推流地址,这么做虽然很安全,但不是很便利,关闭直播鉴权的话,又容易被盗用,产生高额的费用,而且还可能被盗用于违法违规活动,本文将从腾讯云提供的各种技术手段,分享实际运营过程中如何兼顾安全和便利;近期收到腾讯云的告警通知,内容如下:温馨的告警通知领导凌晨3点才看到这通知,表示很慌,给我发微信,我没有回,他觉得完了,我“死”了,然后他大概给我打了20多个电话吧,终于在他决定报警之前,把我给叫醒了,开口第一句话居然是“大半夜的,你怎么还睡觉了呢”这个段子出自李雪琴我觉得不行,这日子不能这么过了,第二天我就好好折腾一番腾讯云直播,居然发现有好多好用的东西;名词解读腾讯云直播:https://cloud.tencent.com/document/product/267鉴权:指云服务商针对客户的签名内容进行解密,验证内容合法性,对于无法解密或者内容不合法的请求拒绝服务,以此来确保合法客户的得到相应的服务。什么是直播推流鉴权安全防盗链是指推流和播放URL中的txSecret字段,它的作用是防止攻击者伪造您的后台生成推流URL或者非法盗取您的播放地址进行谋利。

  • 什么?C/C++面试过不了?因为你还没看过这个!

    const作用修饰变量,说明该变量不可以被改变;修饰指针,分为指向常量的指针(pointertoconst)和自身是常量的指针(常量指针,constpointer);修饰引用,指向常量的引用(referencetoconst),用于形参类型,即避免了拷贝,又避免了函数对值的修改;修饰成员函数,说明该成员函数内不能修改成员变量。const的指针与引用指针指向常量的指针(pointertoconst)自身是常量的指针(常量指针,constpointer)引用指向常量的引用(referencetoconst)没有constreference,因为引用本身就是constpointer(为了方便记忆可以想成)被const修饰(在const后面)的值不可改变,如下文使用例子中的p2、p3。使用//类 classA { private: constinta;//常对象成员,只能在初始化列表赋值 public: //构造函数 A():a(0){}; A(intx):a(x){};//初始化列表 //const可用于对重载函数的区分 intgetValue();//普通成员函数 intgetValu

  • 运营数据库系列之NoSQL和相关功能

    这篇博客文章概述了OpDB的NoSQL、组件集成和对象存储支持功能。这些详细信息将帮助应用程序架构师了解Cloudera的运营数据库的灵活NoSQL(NoSchema)功能,以及它们是否满足正在构建的应用程序的要求。文件存储Cloudera的运营数据库(OpDB)是一个多模型的系统,因为它原生支持系统内的许多不同类型的对象模型。用户可以选择键-值、宽列和关系、或提供自己的对象模型。JSON,XML和其他模型也可以通过例如Nifi、Hive进行转换和存储,或者以键-值对形式原生存储,并使用例如Hive进行查询。还可以通过JSONRest使用自定义实现来支持JSON和XML。对象库Cloudera的OpDB为一致的对象存储提供直接支持,例如AzureDataLakeStore和S3(AWS本机和Ceph等实现)。对象存储可用于存储大量数据所在的HBase存储文件或作为备份目标。支持的功能1.3.1.核心价值Cloudera的OpDB默认情况下存储未类型化的数据,这意味着任何对象都可以原生存储在键值中,而对存储值的数量和类型几乎没有限制。对象的最大大小是服务器的内存大小。1.3.2.表样式C

  • 测试从0到1 UI自动化培训分享(七)

    新年后第一期培训,拖了两个礼拜才开,不是疫情的关系,是因为懒。话不多说进入主题。本文主要从安卓UI自动化方面,从整体到局部,从实施到推广落地的一个概要讲解,这个是我们在组织讨论的培训的一个大概记录。从这些资料可以让你对安卓自动化会有一个很大见解以及让你的角度不在单一,总之既适合初学者也是多年经验的测试攻城狮~话不多说,分享下相关资料。主要是PPT,我希望你们看了以后,不清楚记录,然后百度下,毕竟不是当场讨论培训可以交流互动,领大家进门,我会提下。整体PPT内容如下: 对于自动化金字塔主要从要求技术,生命周期,投入产出,修复成本,专业性,稳定性来说金字塔最底层单元测试是最合适的,可以简称TDD(测试驱动开发)。为什么这么说?请看下以下观点:1.越下层投入应当越多,这是金字塔结构主要提出的观点,认为单元测试的稳定性和投入保证了产品质量;2.越下层效率会越高,因为软件的漏洞最终是落在具体的程序代码上的,所以底层的测试效率是最容易发现和修改错误(BUG)的;3.越下层成本会越低,因为低层代码测试进行的最早,此时发现错误修改起来较为容易,牵连的其他内容也很少,越向上再发现问题往往需要修改的代码量

  • iOS-UIButton设置高亮状态下的背景色

    UIButton一般分为高亮的普通两种状态,原生的方法可以设置这两种不同状态下的文字颜色,文字内容,背景图片,按钮图片。但是不能设置按钮的背景色。方法一:通过按钮的事件来设置背景色-(void)viewDidLoad{ [superviewDidLoad]; UIButton*button1=[[UIButtonalloc]initWithFrame:CGRectMake(50,200,100,50)]; [button1setTitle:@"button1"forState:UIControlStateNormal]; button1.backgroundColor=[UIColororangeColor]; [button1addTarget:selfaction:@selector(button1BackGroundHighlighted:)forControlEvents:UIControlEventTouchDown]; [button1addTarget:selfaction:@selector(button1BackGroundNormal:)for

  • Centos 配置eth0 提示Device does not seem to be present

    一.故障现象:[root@c1node01~]#servicenetworkrestartShuttingdownloopbackinsterface:[OK]Bringinguploopbackinsterface:[OK]Bringingupinterfaceeth0:Deviceeth0doesnotseemtobepresent,delayinginitialization.[FAILED]解决办法:[root@c1node01~]#rm-rf/etc/udev/rules.d/70-persistent-net.rules[root@c1node01~]#reboot………………[root@c1node01~]#servicenetworkrestartShuttingdownloopbackinsterface:[OK]Bringinguploopbackinsterface:[OK]Bringingupinterfaceeth0:[OK][root@c1node01~]#二.另一种方法造成这样的原因,是因为在虚拟机(Vmware)中移动了Centos系统对应的文件,导致重

  • iOS开发工具篇-AppStore统计工具 (转载)

    随着iOS开发的流行,针对iOS开发涉及的方方面面,早有一些公司提供了专门的解决方案或工具。这些解决方案或工具包括:用户行为统计工具(友盟,Flurry,GoogleAnalytics等),AppStore销售分析工具(例如Appannie),Appcrash收集工具(例如Crashlytics),App测试发布工具(TestFlight),AppPush服务等。AD:WOT2015互联网运维与开发者大会热销抢票随着iOS开发的流行,针对iOS开发涉及的方方面面,早有一些公司提供了专门的解决方案或工具。这些解决方案或工具包括:用户行为统计工具(友盟,Flurry,GoogleAnalytics等),AppStore销售分析工具(例如Appannie),Appcrash收集工具(例如Crashlytics),App测试发布工具(TestFlight),AppPush服务等。这些解决方案或工具节省了iOS开发者大量的开发时间,但是由于相关介绍文章的缺乏,许多开发者都在重复着自己一次又一次重新造轮子。所以我希望,将我自己使用和调研的相关的第三方服务使用经验,整理成一系列文章,以便广大开发者能

  • 获取MDI窗体的实例

    ViewCode   /// <summary>         ///          /// </summary>         /// <param name="mdiParent"></param>         /// <param name="frmtype"></param>         /// <returns></returns>         public static bool IsExistInstance(System.Windows.Forms.Form mdiParent, System.Type frmtype)         {             System.Windows.Forms.Form[] f = null;             int i = 0;             f = mdiParent.MdiChildren;             for (i = 0; i &l

  • 转 算法。

    1,.N(1<=N<=9)个小熊分一堆苹果,第一只小熊将苹果分成N份,多了一个,扔掉,然后拿走自己的那一份。第二只熊将剩余的苹果分成N份,又多了一个,扔掉,然后拿走自己的那一份,第三只.....,直到第N只熊;问最初的苹果有多少个?        public static int n =6;         static void Main(string[] args)         {             for (int i = 15550; i <= Int32.MaxValue; i++)             {                 if (solve(i*3+1))                 {                     Console.WriteLine(n + " " + (i * 3 + 1));                     break;                 }             }         }         public static bool s

  • 运维工程师养成实录:从确立目标到收获offer

    作为一名渣硕,找工作陆陆续续从今年的三月份开始断断续续的刷一些题,看基础到八月份的猛攻阶段,到此,算是得到了一个不错的收获,也拿到了几个offer,算是对自己的一个交代了。 首先,找工作的方向,运维研发或是运维,所以面经方向主要是针对运维或者运维研发 一.介绍岗位面试的时候很多面试官都会问,你为什么会选择这个方向?你对这个方向了解有多少?有没有看过相关方面的书籍等。在此,粘一段SREGoogle运维解密书中的一段话: SRE团队要承担以下几类职责:可用性改进、延迟优化、性能优化,效率优化,变更管理,监控,紧急事务处理以及容量规划与管理。 贴几个有代表性的公司对于这个岗位的要求: 1.网易游戏(运维工程师SRE) 您可以:-通过编写脚本、工具和平台,提升运维自动化水平,高效的完成业务在大规模集群上的部署、升级、扩容、缩容等,促进游戏的快速迭代,让玩家及时的体验到更好的游戏品质; -研究和优化服务器部署架构,包括操作系统选用、内核定制,系统优化,提高系统的运行效率,结合合理的容量规划,承载数百款游戏的流畅运转; -监控网络游戏业务的运行状况,及时处理游戏运行中出现的故障,保障网易游戏的正常

  • SDN与网络虚拟化

    网络虚拟化是一种重要的网络技术,该技术可在物理网络上虚拟多个相互隔离的虚拟网络,从而使得不同用户之间使用独立的网络资源切片,从而提高网络资源利用率,实现弹性的网络。SDN的出现使得网络虚拟化的实现更加灵活和高效,同时网络虚拟化也成为SDN应用中的重量级应用。本文将介绍SDN与网络虚拟化的关系以及通过SDN实现网络虚拟化的方法,其中第二部分内容将从虚拟化平台,网络资源虚拟化和网络隔离三个方面介绍。 SDN与网络虚拟化由于早期成功的的SDN方案中网络虚拟化案例较多,有的读者可能会认为SDN和网络虚拟化是同一个层面的,然而这是一个错误的说法。SDN不是网络虚拟化,网络虚拟化也不是SDN。SDN是一种集中控制的网络架构,可将网络划分为数据层面和控制层面。而网络虚拟化是一种网络技术,可以在物理拓扑上创建虚拟网络。传统的网络虚拟化部署需要手动逐跳部署,其效率低下,人力成本很高。而在数据中心等场景中,为实现快速部署和动态调整,必须使用自动化的业务部署。SDN的出现给网络虚拟化业务部署提供了新的解决方案。通过集中控制的方式,网络管理员可以通过控制器的API来编写程序,从而实现自动化的业务部署,大大缩短

  • Airbnb 的 React Native 历程(三):打造一个跨平台的移动开发团队

    转载请注明出处。请前往TigaonTech查看原文以及更多有趣的技术文章。原文链接:https://medium.com/airbnb-engineering/building-a-cross-platform-mobile-team-3e1837b40a88我们将在这个系列的5篇文章里,讲述Airbnb使用ReactNative进行移动端开发的历程,以及在放弃ReactNative之后的计划。这是这个系列文章的第3篇。ThisisthethirdinaseriesofblogpostsinwhichweoutlineourexperiencewithReactNativeandwhatisnextformobileatAirbnb.除了ReactNative在技术层面数不清的优缺点,我们也学到了很多ReactNative对于一个工程师团队组织的意义。相比在一个现在的平台上添加一个新的库或编码模式,采用ReactNative相对要复杂很多。这么做带来了很多团队组织上的挑战。和技术上的挑战不一样,技术问题通常能被解决,组织上的挑战更难被发现、纠正和恢复。庆幸的是,我们移动开发的文化很健康

  • loadrunner12使用手册_loadrunner脚本编写教程

    首先我们安装好loadrunner12之后,出现这三个图标,然后开始操作。 操作: 1.打开VirtualUserGenerator,新建脚本 2.选择脚本协议,对脚本名称位置可以进行编辑。此处以web-http/html为例。 3.点击创建后,选择录制脚本,填写好录制的地址,应用程序,然后选择开始录制,此处以测试登录为例 4.结束录制后,点击关联回放,确保脚本无误 5.对代码进行进一步完善,插入事务或集合点 6.对脚本进行执行回放,确保脚本无误,对脚本进行参数化 可以直接点击确定,或直接点击属性建立参数表,这里我直接点击属性,点击创建表 选择添加行逐个数据添加,或用记事本编辑,这里我用记事本编辑为例,点击关闭之后,选择确定,出现下图选择否,因为不同位置参数不一定相同。如果相同选择是。 相同步骤,对密码进行参数化 7.打开controller,或点击工具,创建场景,但是此方法打开运行会比较慢,所以我使用桌面图标直接打开。 或 8.选择刚刚建立的脚本,点击添加,点击确定. 9.对场景计划进行编辑,点击双击即可编辑,更改参数 10.设定好场景计划后,点击运行 11.点击开

  • 腾讯云容器服务卸载边缘日志采集组件api接口

    1.接口描述接口请求域名:tke.tencentcloudapi.com。 从tke@edge集群边缘节点上卸载日志采集组件 默认接口请求频率限制:20次/秒。 APIExplorer提供了在线调用、签名验证、SDK代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成SDK调用示例。 2.输入参数以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。 参数名称 必选 类型 描述 Action 是 String 公共参数,本接口取值:UninstallEdgeLogAgent。 Version 是 String 公共参数,本接口取值:2018-05-25。 Region 是 String 公共参数,详见产品支持的地域列表,本接口仅支持其中的:ap-beijing,ap-guangzhou,ap-nanjing,ap-singapore。 ClusterId 是 String 集群ID 3.输出参数 参数名称 类型 描述 RequestId String 唯一请求ID,每次请求

  • 多线程下的调用上下文 : CallContext

    最近在分析现在团队的项目代码(基于.NETFramework4.5),经常发现一个CallContext的调用,记得多年前的时候用到了它,但是印象已经不深刻了,于是现在来复习一下。 1CallContext是个啥? 如果说,一个对象保证全局唯一,大家肯定会想到一个经典的设计模式:单例模式。但是,如果要使用的对象必须是线程内唯一的呢? 在.NETFramework中,Microsoft给我们设计了一个CallContext类。 命名空间:System.Runtime.Remoting.Messaging 类型完全限定名称:System.Runtime.Remoting.Messaging.CallContext CallContext类似于方法调用的线程本地存储区的专用集合对象,并提供对每个逻辑执行线程都唯一的数据槽。数据槽不在其他逻辑线程上的调用上下文之间共享。当CallContext沿执行代码路径往返传播并且由该路径中的各个对象检查时,可将对象添加到其中。 简而言之,CallContext提供线程(多线程/单线程)代码执行路径中数据传递的能力。 方法 描述 线

  • ZYNQ7045 系统升级实现方法(multiboot)(转)

    1.实现原理框图 系统分为6个部分组成:fsbl:原始fsblgoogen_image:由3块组成分别为fsbl、bit、u-bootupdate_image:由3块组成分别为fsbl、bit、u-bootkernel_google:原始kernelkernel_update:更新kernelupdate_flag:更新标识2.实现原理flash存储格式及地址分配如上图所示位于0x0位置的fsbl启动判断update_flag标识是否有效,如果无效则跳转到位置为0x100000的googen_image处,依次执行fsbl、加载bit、启动boot后跳转到位置为0xf00000的原始kernel中;如果有效则跳转到位置为0x700000的update_image处,依次执行fsbl、加载bit、启动boot后跳转到位置为0x2200000的更新kernel中通过该方法可实现不断电更新bit和kernel功能3.操作方法a.板子初始状态通过jtag依次将fsbl、googen_image、kernel_google分别下载到地址0x0、0x100000、0xf00000处;b.启动系统

  • Total Commander

    关于TotalCommander文件备注(注释)的两个注意点   http://www.guyiren.com/archives/1952     软件与效率 互联网与兼职 娱乐与生活 机电技术与汽车 外语与记忆软件 登录 凌晨好! 2020年4月7日星期二 古意人 InnerPeace,PurePeace,EternalPeace                 现在的位置: 首页 > 软件世界 > total-commander >正文 RSS     关于TotalCommander文件备注(注释)的两个注意点 给文件(夹)添加备注(或称为注释)是古意人很喜欢的一个TotalCommander的功能,添加备注的快捷键ctrl+z也是我最常用的快捷键之一。很多朋友在使用TC的备注功能时,往

相关推荐

推荐阅读